/* =====================================================================
   THRONESHARD 0.2.23 — Mobile PWA shell / mandatory install / duel UX
   This stylesheet only changes the installed/mobile experience.
   Desktop browser layouts remain owned by their historical stylesheets.
   ===================================================================== */

/* 0.5.3 hotfix — l'installation est facultative. Neutralise également un
   ancien gate encore présent dans un document restauré depuis le cache. */
.ts-install-gate{display:none!important}

html.ts-install-required,
html.ts-install-required body{
    width:100%!important;
    height:100%!important;
    max-width:100%!important;
    max-height:100%!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
}

.ts-install-gate{
    position:fixed;
    z-index:2147483000;
    inset:0;
    display:grid;
    place-items:center;
    padding:
        max(18px,env(safe-area-inset-top))
        max(18px,env(safe-area-inset-right))
        max(18px,env(safe-area-inset-bottom))
        max(18px,env(safe-area-inset-left));
    overflow:hidden;
    background:
        radial-gradient(circle at 50% 34%,rgba(124,66,163,.19),transparent 28%),
        radial-gradient(circle at 50% 105%,rgba(217,130,43,.15),transparent 42%),
        linear-gradient(180deg,#120907 0%,#080504 100%);
    color:#efdfbd;
    font-family:Georgia,"Times New Roman",serif;
    text-align:center;
    isolation:isolate;
}
.ts-install-gate::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:-2;
    pointer-events:none;
    background:
        linear-gradient(90deg,rgba(0,0,0,.45),transparent 24% 76%,rgba(0,0,0,.45)),
        repeating-linear-gradient(90deg,rgba(255,255,255,.012) 0 1px,transparent 1px 54px);
}
.ts-install-gate-glow{
    position:absolute;
    z-index:-1;
    left:50%;
    top:48%;
    width:min(92vw,620px);
    aspect-ratio:1;
    transform:translate(-50%,-50%);
    border-radius:50%;
    background:radial-gradient(circle,rgba(228,188,102,.12),transparent 65%);
    filter:blur(20px);
    pointer-events:none;
}
.ts-install-card{
    width:min(460px,100%);
    display:grid;
    justify-items:center;
    gap:12px;
    padding:clamp(22px,6vw,38px);
    border:1px solid rgba(235,200,125,.29);
    border-radius:22px;
    background:linear-gradient(155deg,rgba(55,31,20,.96),rgba(20,12,10,.98));
    box-shadow:0 34px 90px rgba(0,0,0,.56),inset 0 1px rgba(255,255,255,.04);
}
.ts-install-icon{
    width:82px;
    height:82px;
    object-fit:contain;
    filter:drop-shadow(0 12px 22px rgba(0,0,0,.52));
}
.ts-install-kicker{
    color:#c99d53;
    font:900 .62rem/1 Arial,sans-serif;
    letter-spacing:.22em;
}
.ts-install-card h1{
    margin:0;
    color:#f2dfad;
    font-size:clamp(1.65rem,7vw,2.35rem);
    line-height:1.02;
    text-wrap:balance;
}
.ts-install-card p{
    max-width:390px;
    margin:2px 0 3px;
    color:#aa9a82;
    font:700 .78rem/1.5 Arial,sans-serif;
}
.ts-install-card button{
    width:min(320px,100%);
    min-height:48px;
    margin-top:3px;
    padding:11px 18px;
    border:1px solid #d3a455;
    border-radius:10px;
    background:linear-gradient(180deg,#a84453,#6e2231);
    box-shadow:0 12px 28px rgba(90,25,39,.36),inset 0 1px rgba(255,255,255,.10);
    color:#fff1ca;
    font:900 .83rem/1 Arial,sans-serif;
    letter-spacing:.03em;
}
.ts-install-card button:disabled{
    opacity:.58;
    filter:saturate(.55);
}
.ts-install-card small{
    color:#74695b;
    font:700 .64rem/1.4 Arial,sans-serif;
}
.ts-install-exit{
    margin-top:5px;
    color:#766b5b;
    font:700 .63rem/1 Arial,sans-serif;
    text-decoration:none;
}

/* Installed app shell: no accidental page-level overscroll, no browser-like margins. */
html.ts-pwa-standalone,
html.ts-pwa-standalone body{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:100%!important;
    margin:0!important;
    overscroll-behavior:none!important;
}
html.ts-mobile-device.ts-pwa-standalone body{
    height:100dvh!important;
    min-height:100dvh!important;
    overflow:hidden!important;
}
html.ts-mobile-device.ts-pwa-standalone body *{
    -webkit-tap-highlight-color:transparent;
}

/* Landing page: the page scrolls inside its own viewport, never sideways. */
html.ts-mobile-device.ts-pwa-standalone body.home-player .home-main{
    height:100dvh;
    max-height:100dvh;
    overflow-y:auto;
    overflow-x:hidden;
    overscroll-behavior-y:contain;
    -webkit-overflow-scrolling:touch;
    padding-bottom:max(18px,env(safe-area-inset-bottom));
}

/* Grand Hall: compact app-first layout. */
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page:not(.deck-builder-page):not(.launch-deck-page) .menu-scene{
    position:fixed!important;
    inset:0!important;
    height:100dvh!important;
    overflow:hidden!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page:not(.deck-builder-page):not(.launch-deck-page) .menu-layout{
    width:100%!important;
    height:100dvh!important;
    min-height:0!important;
    margin:0!important;
    grid-template-columns:1fr!important;
    grid-template-rows:auto minmax(0,1fr)!important;
    align-items:stretch!important;
    gap:7px!important;
    padding:
        max(7px,env(safe-area-inset-top))
        max(8px,env(safe-area-inset-right))
        max(7px,env(safe-area-inset-bottom))
        max(8px,env(safe-area-inset-left))!important;
    overflow:hidden!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-brand{
    min-height:0!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-brand .menu-logo{
    width:min(250px,56vw)!important;
    max-height:52px!important;
    object-fit:contain!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-brand>span,
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-brand h2,
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-brand p,
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-trust{
    display:none!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-panel{
    width:100%!important;
    max-width:760px!important;
    min-height:0!important;
    max-height:100%!important;
    margin:0 auto!important;
    padding:10px!important;
    border-radius:14px!important;
    overflow:hidden!important;
    display:flex!important;
    flex-direction:column!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-player{
    flex:0 0 auto!important;
    min-height:44px!important;
    margin:0 0 7px!important;
    padding:5px 8px!important;
    border-radius:9px!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-player img,
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-player-avatar{
    width:31px!important;
    height:31px!important;
    flex-basis:31px!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-player strong{font-size:.78rem!important}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-player small{font-size:.48rem!important}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-onboarding{
    flex:0 0 auto!important;
    margin:0 0 7px!important;
    padding:7px 9px!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-onboarding small{display:none!important}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-kicker{
    margin:0 0 2px!important;
    font-size:.49rem!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-panel>h1{
    margin:0 0 7px!important;
    font-size:1.12rem!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-actions{
    flex:1 1 auto!important;
    min-height:0!important;
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-auto-rows:minmax(39px,1fr)!important;
    gap:5px!important;
    overflow:hidden!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-action,
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-action:nth-child(-n+3),
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-action.primary{
    grid-column:auto!important;
    min-height:0!important;
    height:100%!important;
    padding:5px 8px!important;
    border-radius:8px!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-action strong{font-size:.75rem!important}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-action span{font-size:.46rem!important;letter-spacing:.04em!important}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-action.logout{margin-top:0!important}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-footer{
    flex:0 0 auto!important;
    min-height:28px!important;
    margin-top:6px!important;
    padding-top:5px!important;
    font-size:.49rem!important;
}
html.ts-mobile-device.ts-pwa-standalone body.game-menu-page .menu-options-btn{
    padding:5px 7px!important;
    font-size:.52rem!important;
}

/* Collection / deck builder: fixed shell with deliberate inner scrolling only. */
html.ts-mobile-device.ts-pwa-standalone body.deck-builder-page{
    display:grid!important;
    grid-template-rows:auto minmax(0,1fr)!important;
}
html.ts-mobile-device.ts-pwa-standalone body.deck-builder-page .deck-topbar{
    position:relative!important;
    inset:auto!important;
    width:100%!important;
    min-height:48px!important;
    padding:
        max(5px,env(safe-area-inset-top))
        max(8px,env(safe-area-inset-right))
        5px
        max(8px,env(safe-area-inset-left))!important;
}
html.ts-mobile-device.ts-pwa-standalone body.deck-builder-page .deck-topbar>img{
    max-width:150px!important;
    max-height:34px!important;
}
html.ts-mobile-device.ts-pwa-standalone body.deck-builder-page .deck-shell{
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:100%!important;
    margin:0!important;
    padding:6px max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))!important;
    overflow:auto!important;
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch!important;
}

/* Deck launch, profile, quests and store: viewport is fixed; content owns scrolling. */
html.ts-mobile-device.ts-pwa-standalone body.launch-deck-page,
html.ts-mobile-device.ts-pwa-standalone body.live-page{
    display:grid!important;
    grid-template-rows:auto minmax(0,1fr)!important;
}
html.ts-mobile-device.ts-pwa-standalone body.launch-deck-page .launch-shell,
html.ts-mobile-device.ts-pwa-standalone body.live-page .live-shell{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:100%!important;
    margin:0!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    overscroll-behavior-y:contain!important;
    -webkit-overflow-scrolling:touch!important;
    padding-left:max(8px,env(safe-area-inset-left))!important;
    padding-right:max(8px,env(safe-area-inset-right))!important;
    padding-bottom:max(10px,env(safe-area-inset-bottom))!important;
}
html.ts-mobile-device.ts-pwa-standalone body.live-page .live-topbar{
    position:relative!important;
    inset:auto!important;
    min-height:46px!important;
    padding:
        max(5px,env(safe-area-inset-top))
        max(8px,env(safe-area-inset-right))
        5px
        max(8px,env(safe-area-inset-left))!important;
}

/* =====================================================================
   Mobile duel — full-bleed landscape HUD.
   Focus: battlefield first, compact hero strips, bigger cards, no dead margin.
   ===================================================================== */
.ts-rotate-gate{display:none}

@media (pointer:coarse) and (orientation:portrait){
    html.ts-pwa-standalone.ts-mobile-duel .ts-rotate-gate{
        position:fixed;
        z-index:2147483200;
        inset:0;
        display:grid;
        place-items:center;
        align-content:center;
        gap:9px;
        padding:30px;
        background:radial-gradient(circle at 50% 45%,rgba(113,66,151,.15),transparent 28%),#0c0705;
        color:#efddb4;
        text-align:center;
        font-family:Georgia,"Times New Roman",serif;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ts-rotate-gate span{
        display:grid;
        place-items:center;
        width:70px;
        height:70px;
        border:1px solid rgba(227,190,109,.35);
        border-radius:50%;
        color:#d8ad62;
        font-size:2.4rem;
        animation:tsMobileRotate 1.9s ease-in-out infinite;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ts-rotate-gate strong{font-size:1.45rem}
    html.ts-pwa-standalone.ts-mobile-duel .ts-rotate-gate small{color:#857766;font:700 .72rem/1.4 Arial,sans-serif}
    @keyframes tsMobileRotate{50%{transform:rotate(90deg)}}
}

@media (pointer:coarse) and (orientation:landscape){
    html.ts-pwa-standalone.ts-mobile-duel{
        --tsm-edge:3px;
        --tsm-dock-h:42px;
        --tsm-opponent-h:38px;
        --tsm-player-h:78px;
        --tsm-divider-h:16px;
    }
    html.ts-pwa-standalone.ts-mobile-duel,
    html.ts-pwa-standalone.ts-mobile-duel body.duel-interface{
        width:100%!important;
        height:100dvh!important;
        min-height:0!important;
        max-height:100dvh!important;
        overflow:hidden!important;
        margin:0!important;
        background:#0b0605!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel body.duel-interface{
        position:fixed!important;
        inset:0!important;
        touch-action:none!important;
    }

    /* Header becomes a pair of unobtrusive overlay controls. */
    html.ts-pwa-standalone.ts-mobile-duel .entete-duel{
        position:fixed!important;
        z-index:5200!important;
        top:max(3px,env(safe-area-inset-top))!important;
        left:max(4px,env(safe-area-inset-left))!important;
        right:max(4px,env(safe-area-inset-right))!important;
        width:auto!important;
        height:30px!important;
        min-height:30px!important;
        margin:0!important;
        padding:0!important;
        display:flex!important;
        align-items:center!important;
        justify-content:space-between!important;
        gap:5px!important;
        pointer-events:none!important;
        background:transparent!important;
        border:0!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .titre-duel{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .retour,
    html.ts-pwa-standalone.ts-mobile-duel .duel-header-actions{
        pointer-events:auto!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .retour{
        display:grid!important;
        place-items:center!important;
        width:30px!important;
        min-width:30px!important;
        height:30px!important;
        padding:0!important;
        overflow:hidden!important;
        border:1px solid rgba(220,185,107,.24)!important;
        border-radius:9px!important;
        background:rgba(18,11,9,.88)!important;
        box-shadow:0 5px 15px rgba(0,0,0,.30)!important;
        color:transparent!important;
        font-size:0!important;
        text-decoration:none!important;
        backdrop-filter:blur(8px)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .retour::before{
        content:"‹";
        color:#e2c887;
        font:700 1.55rem/1 Georgia,serif;
    }
    html.ts-pwa-standalone.ts-mobile-duel .duel-header-actions{
        display:flex!important;
        gap:4px!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .duel-header-actions .bouton-discret{
        position:relative!important;
        display:grid!important;
        place-items:center!important;
        width:30px!important;
        min-width:30px!important;
        max-width:30px!important;
        height:30px!important;
        min-height:30px!important;
        padding:0!important;
        overflow:hidden!important;
        border:1px solid rgba(220,185,107,.24)!important;
        border-radius:9px!important;
        background:rgba(18,11,9,.88)!important;
        box-shadow:0 5px 15px rgba(0,0,0,.30)!important;
        color:transparent!important;
        font-size:0!important;
        backdrop-filter:blur(8px)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel #options-duel::before{
        content:"⚙";
        color:#d7c092;
        font:700 .86rem/1 Arial,sans-serif;
    }
    html.ts-pwa-standalone.ts-mobile-duel #nouvelle-partie::before{
        content:"×";
        color:#d39b90;
        font:700 1.15rem/1 Arial,sans-serif;
    }

    html.ts-pwa-standalone.ts-mobile-duel .table-duel{
        position:fixed!important;
        z-index:20!important;
        top:max(var(--tsm-edge),env(safe-area-inset-top))!important;
        left:max(var(--tsm-edge),env(safe-area-inset-left))!important;
        right:max(var(--tsm-edge),env(safe-area-inset-right))!important;
        bottom:calc(var(--tsm-dock-h) + max(var(--tsm-edge),env(safe-area-inset-bottom)) + var(--tsm-edge))!important;
        width:auto!important;
        height:auto!important;
        min-height:0!important;
        max-height:none!important;
        margin:0!important;
        display:grid!important;
        grid-template-rows:var(--tsm-opponent-h) minmax(0,1fr) var(--tsm-player-h)!important;
        border:1px solid rgba(213,171,91,.22)!important;
        border-radius:9px!important;
        overflow:hidden!important;
        background:
            radial-gradient(ellipse at 50% 52%,rgba(157,92,42,.14),transparent 42%),
            linear-gradient(180deg,rgba(31,19,13,.98),rgba(14,9,7,.99))!important;
        box-shadow:inset 0 0 44px rgba(0,0,0,.42)!important;
        contain:layout paint!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .table-duel::before{
        inset:2px!important;
        border-radius:7px!important;
        border-color:rgba(236,202,128,.05)!important;
    }

    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire,
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur{
        position:relative!important;
        width:100%!important;
        height:100%!important;
        min-height:0!important;
        max-height:none!important;
        padding:0!important;
        overflow:hidden!important;
        border-color:rgba(211,169,87,.08)!important;
        background:linear-gradient(90deg,rgba(82,40,28,.05),transparent 28% 72%,rgba(70,43,90,.04))!important;
    }

    /* Enemy identity lives in one slim strip instead of consuming the board. */
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .portrait-shardbearer{
        position:absolute!important;
        z-index:3!important;
        top:3px!important;
        left:38px!important;
        width:min(210px,34vw)!important;
        height:31px!important;
        min-height:31px!important;
        max-height:31px!important;
        margin:0!important;
        padding:2px 5px!important;
        display:grid!important;
        grid-template-columns:26px minmax(0,1fr) 46px!important;
        grid-template-areas:"avatar labels life"!important;
        align-items:center!important;
        gap:4px!important;
        border-radius:8px!important;
        background:linear-gradient(90deg,rgba(33,22,17,.94),rgba(23,15,13,.82))!important;
        border:1px solid rgba(213,175,103,.17)!important;
        box-shadow:none!important;
        overflow:hidden!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .portrait-interieur{
        width:24px!important;
        height:24px!important;
        min-width:24px!important;
        min-height:24px!important;
        margin:0!important;
        grid-area:avatar!important;
        border-width:1px!important;
        box-shadow:0 0 0 2px #26160d!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .icone-hero{font-size:.72rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .nom-hero{
        display:grid!important;
        grid-area:labels!important;
        min-width:0!important;
        gap:0!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .nom-hero strong{
        font-size:.56rem!important;
        line-height:1!important;
        white-space:nowrap!important;
        overflow:hidden!important;
        text-overflow:ellipsis!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .nom-hero span{
        font-size:.34rem!important;
        line-height:1!important;
        white-space:nowrap!important;
        overflow:hidden!important;
        text-overflow:ellipsis!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .vie-hero{
        position:relative!important;
        inset:auto!important;
        grid-area:life!important;
        justify-self:end!important;
        width:44px!important;
        min-width:44px!important;
        max-width:44px!important;
        height:23px!important;
        padding:0 4px!important;
        gap:3px!important;
        border-radius:8px!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .vie-hero b{font-size:.68rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .coeur{font-size:.52rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .ressource.adverse{
        position:absolute!important;
        z-index:3!important;
        top:3px!important;
        right:72px!important;
        width:43px!important;
        min-width:43px!important;
        height:31px!important;
        padding:2px 4px!important;
        display:flex!important;
        flex-direction:row!important;
        align-items:center!important;
        justify-content:center!important;
        gap:2px!important;
        border-radius:8px!important;
        font-size:.52rem!important;
        background:linear-gradient(180deg,rgba(47,45,96,.92),rgba(24,22,59,.96))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ressource.adverse .cristal{font-size:.45rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .ressource.adverse strong{font-size:.62rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .ressource.adverse small{font-size:.34rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .main-adversaire{
        position:absolute!important;
        z-index:2!important;
        top:2px!important;
        left:50%!important;
        right:auto!important;
        bottom:auto!important;
        width:min(200px,28vw)!important;
        height:33px!important;
        min-height:0!important;
        padding:0!important;
        display:flex!important;
        align-items:center!important;
        justify-content:center!important;
        transform:translateX(-50%)!important;
        overflow:hidden!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .dos-carte{
        width:22px!important;
        height:31px!important;
        flex:0 0 22px!important;
        margin-left:-7px!important;
        border-radius:3px!important;
        box-shadow:0 3px 7px rgba(0,0,0,.38)!important;
    }

    /* Battlefield owns most of the screen. */
    html.ts-pwa-standalone.ts-mobile-duel .champ{
        position:relative!important;
        width:100%!important;
        height:100%!important;
        min-height:0!important;
        padding:2px 3px!important;
        display:grid!important;
        grid-template-rows:minmax(0,1fr) var(--tsm-divider-h) minmax(0,1fr)!important;
        align-items:stretch!important;
        overflow:hidden!important;
        background:
            radial-gradient(ellipse at center,rgba(156,88,40,.13),transparent 61%),
            linear-gradient(180deg,rgba(80,45,27,.025),rgba(0,0,0,.08) 50%,rgba(89,48,28,.025))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ornement-central{
        font-size:min(16vh,5.6rem)!important;
        opacity:.65!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ligne-combat{
        width:100%!important;
        min-width:0!important;
        min-height:0!important;
        height:100%!important;
        max-height:none!important;
        padding:2px 34px!important;
        display:flex!important;
        align-items:center!important;
        justify-content:center!important;
        gap:clamp(4px,1.1vw,10px)!important;
        overflow-x:auto!important;
        overflow-y:hidden!important;
        scrollbar-width:none!important;
        -webkit-overflow-scrolling:touch!important;
        overscroll-behavior-x:contain!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ligne-combat::-webkit-scrollbar{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .indication-zone{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .separation-combat{
        min-height:var(--tsm-divider-h)!important;
        height:var(--tsm-divider-h)!important;
        gap:7px!important;
        font-size:.44rem!important;
        letter-spacing:.08em!important;
        color:#b99657!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .separation-combat span{opacity:.55!important}
    html.ts-pwa-standalone.ts-mobile-duel .carte-unite{
        width:auto!important;
        height:min(100%,clamp(63px,23vh,104px))!important;
        min-width:0!important;
        max-height:100%!important;
        aspect-ratio:150/212!important;
        flex:0 0 auto!important;
        border-radius:4px!important;
        filter:drop-shadow(0 6px 8px rgba(0,0,0,.48))!important;
    }

    /* Player strip = health at left + a centered, larger hand. */
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .portrait-shardbearer.joueur{
        position:absolute!important;
        z-index:5!important;
        top:4px!important;
        left:4px!important;
        right:auto!important;
        bottom:auto!important;
        width:74px!important;
        height:calc(100% - 8px)!important;
        min-height:0!important;
        max-height:none!important;
        margin:0!important;
        padding:4px!important;
        display:grid!important;
        grid-template-columns:1fr!important;
        grid-template-rows:32px 25px!important;
        grid-template-areas:"avatar" "life"!important;
        place-items:center!important;
        gap:3px!important;
        border-radius:9px!important;
        background:linear-gradient(180deg,rgba(45,24,20,.92),rgba(23,14,12,.94))!important;
        border:1px solid rgba(213,175,103,.17)!important;
        box-shadow:none!important;
        overflow:hidden!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .portrait-interieur{
        grid-area:avatar!important;
        width:30px!important;
        height:30px!important;
        min-width:30px!important;
        min-height:30px!important;
        margin:0!important;
        border-width:1px!important;
        box-shadow:0 0 0 2px #26160d!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .icone-hero{font-size:.82rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .nom-hero{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .vie-hero{
        position:relative!important;
        inset:auto!important;
        grid-area:life!important;
        width:58px!important;
        min-width:58px!important;
        max-width:58px!important;
        height:23px!important;
        padding:0 5px!important;
        gap:3px!important;
        border-radius:8px!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .vie-hero b{font-size:.72rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .coeur{font-size:.53rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .ressource.joueur,
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .commandes{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .main-joueur{
        position:absolute!important;
        z-index:4!important;
        top:2px!important;
        left:82px!important;
        right:3px!important;
        bottom:2px!important;
        width:auto!important;
        height:auto!important;
        min-height:0!important;
        max-height:none!important;
        margin:0!important;
        padding:0 6px 1px!important;
        display:flex!important;
        align-items:flex-end!important;
        justify-content:center!important;
        gap:0!important;
        overflow-x:auto!important;
        overflow-y:hidden!important;
        scrollbar-width:none!important;
        -webkit-overflow-scrolling:touch!important;
        overscroll-behavior-x:contain!important;
        touch-action:pan-x!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .main-joueur::-webkit-scrollbar{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .carte-main.reelle{
        width:auto!important;
        height:min(calc(100% - 1px),clamp(68px,21vh,92px))!important;
        min-width:0!important;
        min-height:0!important;
        max-height:100%!important;
        aspect-ratio:150/212!important;
        flex:0 0 auto!important;
        margin-left:0!important;
        transform:translateY(var(--descente-main,0px)) rotate(var(--angle-main,0deg))!important;
        transform-origin:50% 100%!important;
        touch-action:none!important;
        filter:drop-shadow(0 5px 7px rgba(0,0,0,.48))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .carte-main.reelle + .carte-main.reelle{
        margin-left:clamp(-24px,var(--chevauchement-main,0px),0px)!important;
    }

    /* Command dock: one thin bar, no giant blocks. */
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-dock{
        position:fixed!important;
        z-index:6000!important;
        left:max(var(--tsm-edge),env(safe-area-inset-left))!important;
        right:max(var(--tsm-edge),env(safe-area-inset-right))!important;
        bottom:max(var(--tsm-edge),env(safe-area-inset-bottom))!important;
        width:auto!important;
        height:var(--tsm-dock-h)!important;
        min-height:var(--tsm-dock-h)!important;
        margin:0!important;
        padding:3px!important;
        display:grid!important;
        grid-template-columns:38px minmax(0,1fr) 96px!important;
        align-items:stretch!important;
        gap:3px!important;
        border:1px solid rgba(222,183,101,.22)!important;
        border-radius:9px!important;
        background:linear-gradient(180deg,rgba(32,21,17,.97),rgba(17,11,9,.99))!important;
        box-shadow:0 -8px 24px rgba(0,0,0,.26),inset 0 1px rgba(255,255,255,.035)!important;
        visibility:visible!important;
        opacity:1!important;
        overflow:hidden!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-journal{
        min-width:0!important;
        min-height:0!important;
        padding:0!important;
        display:grid!important;
        place-items:center!important;
        border:1px solid rgba(225,190,111,.16)!important;
        border-radius:6px!important;
        background:rgba(255,255,255,.02)!important;
        color:#d4ba81!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-journal span{font-size:.92rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-journal small{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-stats{
        min-width:0!important;
        display:grid!important;
        grid-template-columns:repeat(3,minmax(0,1fr))!important;
        gap:3px!important;
        visibility:visible!important;
        opacity:1!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat{
        min-width:0!important;
        height:auto!important;
        min-height:0!important;
        margin:0!important;
        padding:0 3px!important;
        display:flex!important;
        align-items:center!important;
        justify-content:center!important;
        gap:3px!important;
        border:1px solid rgba(225,190,111,.12)!important;
        border-radius:6px!important;
        background:rgba(255,255,255,.018)!important;
        color:#e4d1a4!important;
        box-shadow:none!important;
        font-family:Arial,sans-serif!important;
        white-space:nowrap!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-mana{
        border-color:rgba(147,157,255,.22)!important;
        background:linear-gradient(180deg,rgba(51,50,103,.60),rgba(29,27,68,.62))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat i{font-size:.48rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat b{font-size:.68rem!important;line-height:1!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat small{font-size:.38rem!important;line-height:1!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-fin-tour{
        min-width:0!important;
        min-height:0!important;
        padding:0 7px!important;
        display:grid!important;
        place-items:center!important;
        border:1px solid rgba(225,184,95,.48)!important;
        border-radius:6px!important;
        background:linear-gradient(180deg,#6e4926,#3d2718)!important;
        color:#f0d79d!important;
        box-shadow:inset 0 1px rgba(255,255,255,.04)!important;
        font:900 .55rem/1.02 Arial,sans-serif!important;
        letter-spacing:.02em!important;
        text-align:center!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-fin-tour:not(:disabled){
        background:linear-gradient(180deg,#9a6a31,#5c391e)!important;
        border-color:rgba(240,203,120,.66)!important;
    }

    html.ts-pwa-standalone.ts-mobile-duel .aide{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .pvp-connection-pill{
        top:max(37px,calc(env(safe-area-inset-top) + 34px))!important;
        right:max(5px,env(safe-area-inset-right))!important;
        transform:scale(.72)!important;
        transform-origin:top right!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .training-vfx-console{
        bottom:calc(var(--tsm-dock-h) + max(7px,env(safe-area-inset-bottom)))!important;
        left:max(5px,env(safe-area-inset-left))!important;
        transform:scale(.58)!important;
        transform-origin:bottom left!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .journal.mobile-open{
        left:max(5px,env(safe-area-inset-left))!important;
        right:max(5px,env(safe-area-inset-right))!important;
        bottom:calc(var(--tsm-dock-h) + max(7px,env(safe-area-inset-bottom)))!important;
        max-height:min(58vh,320px)!important;
        border-radius:10px!important;
    }

    /* Card text is intentionally thumbnail-sized in battle; tap/hold opens inspection. */
    html.ts-pwa-standalone.ts-mobile-duel .carte-main.reelle .corner,
    html.ts-pwa-standalone.ts-mobile-duel .carte-unite .corner,
    html.ts-pwa-standalone.ts-mobile-duel .carte-main.reelle .stats-main.real span,
    html.ts-pwa-standalone.ts-mobile-duel .carte-unite .stats-main.real span{
        font-size:clamp(.70rem,2.7vh,1.02rem)!important;
    }
}

/* Very short landscape phones: preserve battlefield proportions rather than shrinking cards to postage stamps. */
@media (pointer:coarse) and (orientation:landscape) and (max-height:390px){
    html.ts-pwa-standalone.ts-mobile-duel{
        --tsm-dock-h:38px;
        --tsm-opponent-h:34px;
        --tsm-player-h:70px;
        --tsm-divider-h:14px;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .portrait-shardbearer{
        top:2px!important;height:29px!important;min-height:29px!important;max-height:29px!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ressource.adverse{top:2px!important;height:29px!important}
    html.ts-pwa-standalone.ts-mobile-duel .main-adversaire{height:31px!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .portrait-shardbearer.joueur{
        width:66px!important;grid-template-rows:28px 22px!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .main-joueur{left:73px!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .portrait-interieur{width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .vie-hero{height:21px!important;width:53px!important;min-width:53px!important;max-width:53px!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-dock{grid-template-columns:34px minmax(0,1fr) 88px!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-fin-tour{font-size:.50rem!important}
}

@media (prefers-reduced-motion:reduce){
    .ts-install-gate *,
    .ts-rotate-gate *{animation:none!important;transition:none!important}
}


/* =====================================================================
   THRONESHARD 0.2.24 — Mobile polish & hearthstone-inspired duel pass
   - Remove installation microcopy on mobile gate
   - Reframe mobile duel as a board-first experience
   ===================================================================== */

.ts-install-card p[data-ts-install-copy],
.ts-install-card small[data-ts-install-hint]{display:none!important}

@media (pointer:coarse) and (orientation:landscape){
    html.ts-pwa-standalone.ts-mobile-duel{
        --tsm-edge:4px;
        --tsm-dock-h:46px;
        --tsm-opponent-h:48px;
        --tsm-player-h:96px;
        --tsm-divider-h:18px;
    }

    /* Floating top controls: feel like game buttons, not page buttons. */
    html.ts-pwa-standalone.ts-mobile-duel .entete-duel{
        top:max(5px,env(safe-area-inset-top))!important;
        left:max(6px,env(safe-area-inset-left))!important;
        right:max(6px,env(safe-area-inset-right))!important;
        height:34px!important;
        min-height:34px!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .retour,
    html.ts-pwa-standalone.ts-mobile-duel .duel-header-actions .bouton-discret{
        width:34px!important;
        min-width:34px!important;
        max-width:34px!important;
        height:34px!important;
        min-height:34px!important;
        border-radius:50%!important;
        border:1px solid rgba(213,182,110,.34)!important;
        background:radial-gradient(circle at 35% 28%,rgba(81,59,38,.96),rgba(30,20,14,.96) 58%,rgba(14,10,8,.98))!important;
        box-shadow:0 8px 22px rgba(0,0,0,.40), inset 0 1px rgba(255,255,255,.10)!important;
        backdrop-filter:none!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .retour::before{font-size:1.7rem!important}

    /* Board-first composition. */
    html.ts-pwa-standalone.ts-mobile-duel .table-duel{
        top:max(8px,calc(env(safe-area-inset-top) + 2px))!important;
        left:max(5px,env(safe-area-inset-left))!important;
        right:max(5px,env(safe-area-inset-right))!important;
        bottom:calc(var(--tsm-dock-h) + max(8px,env(safe-area-inset-bottom)) + 4px)!important;
        border:1px solid rgba(169,120,56,.72)!important;
        border-radius:20px!important;
        background:
            radial-gradient(ellipse at 50% 50%,rgba(224,184,120,.25),transparent 42%),
            radial-gradient(ellipse at 50% 50%,rgba(91,59,28,.65),transparent 76%),
            linear-gradient(180deg,#5b3a22 0%,#3c2819 7%,#1c140f 16%,#140e0b 83%,#352517 94%,#59381f 100%)!important;
        box-shadow:
            inset 0 0 0 2px rgba(253,232,183,.07),
            inset 0 0 48px rgba(0,0,0,.48),
            0 18px 44px rgba(0,0,0,.38)!important;
        overflow:hidden!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .table-duel::before{
        content:""!important;
        position:absolute!important;
        inset:8px!important;
        border-radius:15px!important;
        border:1px solid rgba(239,198,125,.10)!important;
        pointer-events:none!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .table-duel::after{
        content:""!important;
        position:absolute!important;
        inset:18px 10px!important;
        border-radius:18px!important;
        background:
            radial-gradient(ellipse at 50% 50%,rgba(198,160,112,.14),transparent 52%),
            linear-gradient(180deg,rgba(0,0,0,.10),transparent 22%,transparent 78%,rgba(0,0,0,.12)),
            linear-gradient(90deg,rgba(0,0,0,.16),transparent 12%,transparent 88%,rgba(0,0,0,.16));
        pointer-events:none!important;
    }

    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire,
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur{
        background:transparent!important;
    }

    /* Top hero: centered like a real game board. */
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .portrait-shardbearer{
        top:4px!important;
        left:50%!important;
        width:min(258px,50vw)!important;
        height:40px!important;
        min-height:40px!important;
        max-height:40px!important;
        transform:translateX(-50%)!important;
        grid-template-columns:32px minmax(0,1fr) 56px!important;
        gap:6px!important;
        padding:3px 7px!important;
        border-radius:22px!important;
        background:linear-gradient(180deg,rgba(63,45,31,.97),rgba(27,20,15,.98))!important;
        border:1px solid rgba(207,174,104,.33)!important;
        box-shadow:0 8px 18px rgba(0,0,0,.28), inset 0 1px rgba(255,255,255,.08)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .portrait-interieur{
        width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;
        border-width:1px!important; box-shadow:0 0 0 2px #2f1e11!important;
        background:radial-gradient(circle at 35% 30%,rgba(119,86,56,.9),rgba(40,28,22,.94) 70%)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .icone-hero{font-size:.86rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .nom-hero strong{font-size:.66rem!important;color:#f0e0bd!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .nom-hero span{font-size:.41rem!important;color:#c6b08a!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .vie-hero{
        width:52px!important;min-width:52px!important;max-width:52px!important;height:26px!important;
        border-radius:999px!important;background:linear-gradient(180deg,#8d3742,#56212b)!important;
        box-shadow:inset 0 1px rgba(255,255,255,.12)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .vie-hero b{font-size:.78rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .coeur{font-size:.6rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .ressource.adverse{
        top:4px!important;
        right:8px!important;
        width:48px!important;
        height:40px!important;
        border-radius:18px!important;
        background:linear-gradient(180deg,rgba(65,67,136,.96),rgba(24,27,72,.97))!important;
        border:1px solid rgba(146,155,255,.45)!important;
        box-shadow:0 7px 16px rgba(0,0,0,.22), inset 0 1px rgba(255,255,255,.12)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ressource.adverse strong{font-size:.72rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .ressource.adverse small{font-size:.40rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .main-adversaire{
        top:7px!important;
        width:min(190px,28vw)!important;
        height:34px!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .dos-carte{
        width:24px!important;height:34px!important;flex-basis:24px!important;
        margin-left:-8px!important;border-radius:5px!important;
    }

    /* Battlefield expands and feels like a board, not an empty page. */
    html.ts-pwa-standalone.ts-mobile-duel .champ{
        padding:4px 4px 2px!important;
        background:
            radial-gradient(ellipse at 50% 50%,rgba(202,164,109,.18),transparent 52%),
            radial-gradient(ellipse at center,rgba(255,255,255,.03),transparent 72%),
            linear-gradient(180deg,rgba(71,45,24,.18),rgba(18,13,10,.08) 46%,rgba(69,44,24,.18))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ornement-central{
        font-size:min(22vh,8rem)!important;
        opacity:.22!important;
        filter:drop-shadow(0 6px 12px rgba(0,0,0,.38))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ligne-combat{
        padding:4px 18px!important;
        gap:clamp(6px,1.5vw,12px)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .separation-combat{
        min-height:var(--tsm-divider-h)!important;
        height:var(--tsm-divider-h)!important;
        gap:10px!important;
        font-size:.48rem!important;
        letter-spacing:.16em!important;
        color:#d6b277!important;
        text-shadow:0 1px 2px rgba(0,0,0,.5)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .separation-combat::before,
    html.ts-pwa-standalone.ts-mobile-duel .separation-combat::after{
        content:"";
        flex:1 1 auto;
        max-width:200px;
        height:1px;
        background:linear-gradient(90deg,transparent,rgba(229,198,132,.55),transparent);
    }
    html.ts-pwa-standalone.ts-mobile-duel .carte-unite{
        height:min(100%,clamp(82px,29vh,132px))!important;
        border-radius:8px!important;
        filter:drop-shadow(0 10px 12px rgba(0,0,0,.45))!important;
    }

    /* Bottom zone: larger hero pod + bigger hand. */
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .portrait-shardbearer.joueur{
        top:8px!important;
        left:8px!important;
        width:86px!important;
        height:calc(100% - 16px)!important;
        padding:6px 5px!important;
        grid-template-rows:40px 29px!important;
        border-radius:18px!important;
        background:linear-gradient(180deg,rgba(58,40,28,.96),rgba(22,16,13,.98))!important;
        border:1px solid rgba(206,173,105,.30)!important;
        box-shadow:0 8px 18px rgba(0,0,0,.28), inset 0 1px rgba(255,255,255,.07)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .portrait-interieur{
        width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;
        background:radial-gradient(circle at 35% 30%,rgba(120,86,56,.9),rgba(41,29,22,.94) 70%)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .icone-hero{font-size:1rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .vie-hero{
        width:64px!important;min-width:64px!important;max-width:64px!important;height:27px!important;
        border-radius:999px!important;background:linear-gradient(180deg,#8d3742,#56212b)!important;
        box-shadow:inset 0 1px rgba(255,255,255,.12)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .vie-hero b{font-size:.8rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .main-joueur{
        top:0!important;
        left:100px!important;
        right:8px!important;
        bottom:4px!important;
        padding:0 12px 2px 0!important;
        align-items:flex-end!important;
        justify-content:center!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .carte-main.reelle{
        height:min(calc(100% - 2px),clamp(94px,29vh,128px))!important;
        border-radius:8px!important;
        filter:drop-shadow(0 12px 12px rgba(0,0,0,.42))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .carte-main.reelle + .carte-main.reelle{
        margin-left:clamp(-36px,-4.2vw,-18px)!important;
    }

    /* Float the action dock like a game control tray. */
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-dock{
        left:50%!important;
        right:auto!important;
        transform:translateX(-50%)!important;
        width:min(420px,calc(100vw - 14px))!important;
        height:var(--tsm-dock-h)!important;
        padding:4px!important;
        grid-template-columns:40px minmax(0,1fr) 106px!important;
        gap:4px!important;
        border-radius:18px!important;
        border:1px solid rgba(206,172,101,.34)!important;
        background:linear-gradient(180deg,rgba(64,43,28,.96),rgba(23,16,13,.98))!important;
        box-shadow:0 14px 28px rgba(0,0,0,.34), inset 0 1px rgba(255,255,255,.08)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-journal,
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat,
    html.ts-pwa-standalone.ts-mobile-duel .mobile-fin-tour{
        border-radius:12px!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-journal{
        border-color:rgba(226,190,112,.26)!important;
        background:linear-gradient(180deg,rgba(53,36,24,.88),rgba(28,20,15,.92))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-stats{gap:4px!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat{
        padding:0 5px!important;
        border:1px solid rgba(226,190,112,.18)!important;
        background:linear-gradient(180deg,rgba(39,28,20,.86),rgba(26,18,14,.92))!important;
        color:#f0dfbe!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat i{font-size:.54rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat b{font-size:.78rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat small{font-size:.41rem!important;color:#c9b186!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-mana{
        background:linear-gradient(180deg,rgba(59,59,118,.82),rgba(28,29,72,.92))!important;
        border-color:rgba(149,159,255,.34)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-fin-tour{
        padding:0 8px!important;
        border:1px solid rgba(233,194,115,.62)!important;
        background:linear-gradient(180deg,#a27a3b,#6a4723)!important;
        color:#fff0c7!important;
        text-shadow:0 1px 1px rgba(0,0,0,.35)!important;
        font:900 .63rem/1.02 Arial,sans-serif!important;
        letter-spacing:.04em!important;
        box-shadow:inset 0 1px rgba(255,255,255,.12)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-fin-tour:not(:disabled){
        background:linear-gradient(180deg,#d0a351,#886028)!important;
    }

    /* Connection / overlays stay readable but discreet. */
    html.ts-pwa-standalone.ts-mobile-duel .pvp-connection-pill{
        top:max(44px,calc(env(safe-area-inset-top) + 42px))!important;
        right:max(7px,env(safe-area-inset-right))!important;
        transform:scale(.76)!important;
    }
}

@media (pointer:coarse) and (orientation:landscape) and (max-height:420px){
    html.ts-pwa-standalone.ts-mobile-duel{
        --tsm-dock-h:42px;
        --tsm-opponent-h:42px;
        --tsm-player-h:86px;
        --tsm-divider-h:16px;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-adversaire .portrait-shardbearer{height:36px!important;min-height:36px!important;max-height:36px!important}
    html.ts-pwa-standalone.ts-mobile-duel .ressource.adverse{height:36px!important}
    html.ts-pwa-standalone.ts-mobile-duel .carte-unite{height:min(100%,clamp(76px,27vh,118px))!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .portrait-shardbearer.joueur{width:80px!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .main-joueur{left:94px!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .carte-main.reelle{height:min(calc(100% - 2px),clamp(86px,27vh,118px))!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-dock{width:min(400px,calc(100vw - 12px))!important}
}

/* =====================================================================
   THRONESHARD 0.2.25 — MOBILE DUEL STABILITY & UX
   Landscape-first shell, horizontal modal ergonomics, integrated HUD.
   ===================================================================== */

/* Installed mobile app is landscape-only and never behaves like a web page. */
html.ts-mobile-landscape-app,
html.ts-mobile-landscape-app body{
    width:100%!important;
    height:100dvh!important;
    min-width:0!important;
    min-height:0!important;
    max-width:100%!important;
    max-height:100dvh!important;
    margin:0!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
    overscroll-behavior-x:none!important;
}
html.ts-mobile-landscape-app body{touch-action:pan-y pinch-zoom}

/* Grand Hall: a true landscape dashboard rather than a cropped portrait page. */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-mobile-landscape-app body.game-menu-page:not(.deck-builder-page):not(.launch-deck-page) .menu-layout{
        grid-template-columns:minmax(104px,22vw) minmax(0,1fr)!important;
        grid-template-rows:minmax(0,1fr)!important;
        align-items:stretch!important;
        gap:8px!important;
        padding:
            max(5px,env(safe-area-inset-top))
            max(7px,env(safe-area-inset-right))
            max(5px,env(safe-area-inset-bottom))
            max(7px,env(safe-area-inset-left))!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-brand{
        min-width:0!important;
        min-height:0!important;
        padding:5px!important;
        display:grid!important;
        place-items:center!important;
        overflow:hidden!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-brand .menu-logo{
        width:min(96%,190px)!important;
        max-width:100%!important;
        max-height:72px!important;
        object-fit:contain!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-panel{
        height:100%!important;
        max-height:100%!important;
        min-height:0!important;
        padding:7px 9px!important;
        overflow:hidden!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-player{
        min-height:38px!important;
        margin-bottom:4px!important;
        padding:3px 7px!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-onboarding{margin-bottom:4px!important;padding:5px 8px!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-kicker{display:none!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-panel>h1{
        margin:0 0 4px!important;
        font-size:.92rem!important;
        line-height:1!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-actions{
        grid-template-columns:repeat(3,minmax(0,1fr))!important;
        grid-auto-rows:minmax(34px,1fr)!important;
        gap:4px!important;
        min-height:0!important;
        overflow-y:auto!important;
        overflow-x:hidden!important;
        overscroll-behavior-y:contain!important;
        scrollbar-width:none!important;
        -webkit-overflow-scrolling:touch!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-actions::-webkit-scrollbar{display:none!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-action,
    html.ts-mobile-landscape-app body.game-menu-page .menu-action:nth-child(-n+3),
    html.ts-mobile-landscape-app body.game-menu-page .menu-action.primary{
        min-height:34px!important;
        padding:4px 7px!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-action strong{font-size:.68rem!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-action span{font-size:.39rem!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-footer{
        min-height:23px!important;
        margin-top:3px!important;
        padding-top:3px!important;
    }
}

/* Mulligan: one landscape screen, no scrolling required. */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-mobile-duel .mulligan-overlay{
        padding:max(5px,env(safe-area-inset-top)) max(7px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left))!important;
        overflow:hidden!important;
        backdrop-filter:none!important;
        -webkit-backdrop-filter:none!important;
    }
    html.ts-mobile-duel .mulligan-panel{
        width:100%!important;
        height:100%!important;
        max-width:none!important;
        max-height:none!important;
        min-height:0!important;
        margin:0!important;
        padding:10px 12px!important;
        display:grid!important;
        grid-template-columns:minmax(128px,21vw) minmax(0,1fr) minmax(118px,18vw)!important;
        grid-template-rows:auto auto auto minmax(0,1fr)!important;
        align-items:center!important;
        column-gap:10px!important;
        row-gap:3px!important;
        overflow:hidden!important;
        border-radius:17px!important;
    }
    html.ts-mobile-duel .mulligan-crown{grid-column:1!important;grid-row:1!important;font-size:1.1rem!important}
    html.ts-mobile-duel .mulligan-kicker{grid-column:1!important;grid-row:2!important;margin:0!important;font-size:.46rem!important}
    html.ts-mobile-duel .mulligan-panel h2{
        grid-column:1!important;grid-row:3!important;
        margin:3px 0!important;
        font-size:clamp(1.15rem,3.4vw,1.75rem)!important;
        line-height:.95!important;
    }
    html.ts-mobile-duel .mulligan-panel>p{
        grid-column:1!important;grid-row:4!important;
        align-self:start!important;
        margin:2px 0 0!important;
        padding:0!important;
        font-size:.56rem!important;
        line-height:1.32!important;
    }
    html.ts-mobile-duel .mulligan-cards{
        grid-column:2!important;grid-row:1 / 5!important;
        width:100%!important;height:100%!important;min-height:0!important;
        margin:0!important;padding:4px 0 9px!important;
        display:flex!important;align-items:center!important;justify-content:center!important;
        gap:clamp(5px,1.2vw,10px)!important;
        overflow:visible!important;
    }
    html.ts-mobile-duel .mulligan-card{
        width:auto!important;
        height:min(63dvh,235px)!important;
        max-height:100%!important;
        aspect-ratio:150/212!important;
        border-radius:9px!important;
    }
    html.ts-mobile-duel .mulligan-card.selected{transform:translateY(-6px)!important}
    html.ts-mobile-duel .mulligan-card-choice{bottom:-6px!important;min-width:64px!important;padding:3px 5px!important;font-size:.39rem!important}
    html.ts-mobile-duel .mulligan-summary{
        grid-column:3!important;grid-row:2!important;
        margin:0!important;
        font-size:.55rem!important;
        line-height:1.3!important;
    }
    html.ts-mobile-duel .mulligan-confirm{
        grid-column:3!important;grid-row:3 / 5!important;
        align-self:center!important;
        width:100%!important;min-width:0!important;min-height:42px!important;
        padding:7px 9px!important;
        border-radius:11px!important;
        font-size:.68rem!important;
    }
    html.ts-mobile-duel .mulligan-waiting{
        grid-column:3!important;grid-row:2 / 5!important;
        margin:0!important;
        gap:3px!important;
    }
    html.ts-mobile-duel .mulligan-waiting-gem{font-size:1rem!important}
    html.ts-mobile-duel .mulligan-waiting b{font-size:.8rem!important}
    html.ts-mobile-duel .mulligan-waiting small{font-size:.5rem!important}
}

/* Card inspection: horizontal card + state panel, all inside the viewport. */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-mobile-duel .apercu-carte-overlay{
        padding:max(5px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))!important;
        overflow:hidden!important;
        backdrop-filter:none!important;
        -webkit-backdrop-filter:none!important;
    }
    html.ts-mobile-duel .apercu-carte-dialog{
        position:relative!important;
        width:min(920px,96vw)!important;
        height:min(460px,94dvh)!important;
        max-width:96vw!important;
        max-height:94dvh!important;
        margin:auto!important;
        padding:8px 50px 8px 10px!important;
        display:grid!important;
        grid-template-columns:minmax(150px,32%) minmax(0,1fr)!important;
        grid-template-rows:minmax(0,1fr) auto!important;
        grid-template-areas:"card state" "actions actions"!important;
        column-gap:13px!important;
        row-gap:5px!important;
        align-items:center!important;
        overflow:hidden!important;
        border-radius:18px!important;
    }
    html.ts-mobile-duel .carte-apercu-zoom{
        grid-area:card!important;
        width:auto!important;
        height:min(76dvh,390px)!important;
        max-width:100%!important;
        max-height:100%!important;
        margin:auto!important;
        aspect-ratio:150/212!important;
    }
    html.ts-mobile-duel .apercu-etat-dynamique{
        grid-area:state!important;
        width:100%!important;
        height:100%!important;
        max-height:100%!important;
        min-height:0!important;
        margin:0!important;
        padding:9px 10px!important;
        overflow:auto!important;
        overscroll-behavior:contain!important;
        border-radius:12px!important;
    }
    html.ts-mobile-duel .apercu-etat-entete{padding-bottom:6px!important;margin-bottom:6px!important}
    html.ts-mobile-duel .apercu-etat-entete span{font-size:.43rem!important}
    html.ts-mobile-duel .apercu-etat-entete strong{font-size:.82rem!important}
    html.ts-mobile-duel .apercu-etat-contenu{gap:7px!important}
    html.ts-mobile-duel .inspection-section{gap:4px!important}
    html.ts-mobile-duel .inspection-section h4{font-size:.45rem!important}
    html.ts-mobile-duel .inspection-keyword{min-height:23px!important;padding:3px 6px!important;font-size:.52rem!important}
    html.ts-mobile-duel .inspection-list{gap:3px!important}
    html.ts-mobile-duel .inspection-list li{padding:4px 6px!important;font-size:.52rem!important}
    html.ts-mobile-duel .inspection-effect{padding:5px 6px!important;font-size:.53rem!important;line-height:1.25!important}
    html.ts-mobile-duel .apercu-actions{
        grid-area:actions!important;
        position:static!important;
        width:100%!important;
        min-height:34px!important;
        padding:3px 0 0!important;
        display:flex!important;
        align-items:center!important;
        justify-content:center!important;
        gap:8px!important;
        background:none!important;
    }
    html.ts-mobile-duel .apercu-indication{display:none!important}
    html.ts-mobile-duel .apercu-action-principale{min-height:34px!important;padding:5px 11px!important;font-size:.66rem!important}
    html.ts-mobile-duel .apercu-close{
        position:absolute!important;
        top:7px!important;right:7px!important;
        width:36px!important;height:36px!important;
        z-index:20!important;
    }
}

/* Targeting instructions sit on the neutral middle line, never over enemy units. */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-mobile-duel .plateau-targeting-prompt{
        top:50%!important;
        bottom:auto!important;
        left:50%!important;
        width:auto!important;
        max-width:min(58vw,470px)!important;
        min-width:180px!important;
        min-height:28px!important;
        transform:translate(-50%,-50%)!important;
        display:flex!important;
        align-items:center!important;
        justify-content:center!important;
        gap:7px!important;
        padding:5px 11px!important;
        border-radius:999px!important;
        background:rgba(22,15,11,.94)!important;
        border:1px solid rgba(229,196,124,.34)!important;
        box-shadow:0 7px 18px rgba(0,0,0,.32)!important;
        animation:none!important;
        white-space:nowrap!important;
    }
    html.ts-mobile-duel .plateau-targeting-kicker{font-size:.40rem!important;letter-spacing:.12em!important}
    html.ts-mobile-duel .plateau-targeting-prompt strong{font-size:.68rem!important}
    html.ts-mobile-duel .plateau-targeting-description{display:none!important}
    html.ts-mobile-duel .plateau-targeting-cancel{margin:0!important;min-width:auto!important;min-height:24px!important;padding:4px 8px!important;border-radius:999px!important;font-size:.48rem!important}
}

/* Board rows: centered, no left-stacking. Six units always fit in landscape. */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-pwa-standalone.ts-mobile-duel{--tsm-player-h:128px}
    html.ts-pwa-standalone.ts-mobile-duel .table-duel{
        bottom:max(5px,env(safe-area-inset-bottom))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .ligne-combat{
        justify-content:center!important;
        overflow:visible!important;
        padding:4px 12px!important;
        gap:clamp(7px,1.4vw,13px)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .carte-unite{
        height:min(100%,clamp(84px,27vh,126px))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .main-joueur{
        left:99px!important;
        right:96px!important;
        bottom:35px!important;
        padding-bottom:0!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .carte-main.reelle{
        height:min(calc(100% - 1px),clamp(86px,25vh,116px))!important;
    }
}

/* Exact drop insertion indicator between board cards. */
.ts-board-insert-marker{
    position:absolute;
    z-index:120;
    top:12%;
    bottom:12%;
    width:3px;
    border-radius:999px;
    transform:translateX(-50%);
    background:linear-gradient(180deg,transparent,#ffe7a0 16% 84%,transparent);
    box-shadow:0 0 7px #f7ce65,0 0 18px rgba(246,196,83,.65);
    pointer-events:none;
    animation:tsBoardInsertPulse .72s ease-in-out infinite alternate;
}
@keyframes tsBoardInsertPulse{from{opacity:.58;transform:translateX(-50%) scaleY(.88)}to{opacity:1;transform:translateX(-50%) scaleY(1)}}

/* Strong, unmistakable legal-target feedback, including the enemy Shardbearer. */
html.ts-mobile-duel .portrait-shardbearer.adversaire.cible-attaque-selectionnee,
html.ts-mobile-duel .portrait-shardbearer.adversaire.zone-depot-valide.cible-valide-ennemie{
    border-color:rgba(255,93,72,.88)!important;
    box-shadow:0 0 0 2px rgba(255,83,62,.24),0 0 24px rgba(255,71,48,.62),inset 0 0 18px rgba(255,71,48,.12)!important;
    filter:brightness(1.14) saturate(1.08)!important;
}
html.ts-mobile-duel .carte-unite.cible-attaque-selectionnee{
    filter:brightness(1.12) drop-shadow(0 0 10px rgba(255,81,55,.64))!important;
}

/* HUD: no status bar/card frame; controls float as part of the board. */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-dock{
        left:0!important;right:0!important;bottom:max(6px,env(safe-area-inset-bottom))!important;
        width:100%!important;height:34px!important;min-height:34px!important;
        transform:none!important;
        display:block!important;
        padding:0!important;
        border:0!important;border-radius:0!important;
        background:transparent!important;
        box-shadow:none!important;
        overflow:visible!important;
        pointer-events:none!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-journal{
        position:absolute!important;left:max(9px,env(safe-area-inset-left))!important;bottom:0!important;
        width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;
        padding:0!important;border-radius:50%!important;
        border:1px solid rgba(224,191,119,.28)!important;
        background:radial-gradient(circle at 35% 30%,rgba(71,48,29,.92),rgba(26,18,13,.96))!important;
        box-shadow:0 6px 14px rgba(0,0,0,.28)!important;
        pointer-events:auto!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-journal>span{font-size:.78rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-stats{
        position:absolute!important;left:50%!important;bottom:1px!important;
        width:auto!important;height:31px!important;
        transform:translateX(-50%)!important;
        display:flex!important;align-items:center!important;gap:10px!important;
        pointer-events:none!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat{
        width:auto!important;height:30px!important;min-width:0!important;
        padding:0 2px!important;
        border:0!important;border-radius:0!important;
        background:transparent!important;
        box-shadow:none!important;
        text-shadow:0 2px 4px rgba(0,0,0,.72)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-mana{
        border:0!important;background:transparent!important;
        color:#e9eaff!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat i{font-size:.57rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat b{font-size:.78rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-stat small{font-size:.39rem!important;color:#c7b48c!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-fin-tour{
        position:absolute!important;right:max(8px,env(safe-area-inset-right))!important;bottom:0!important;
        width:94px!important;height:32px!important;min-height:32px!important;
        padding:0 8px!important;
        border-radius:16px!important;
        border:1px solid rgba(233,194,115,.62)!important;
        background:linear-gradient(180deg,#b78840,#725027)!important;
        box-shadow:0 7px 17px rgba(0,0,0,.30),inset 0 1px rgba(255,255,255,.12)!important;
        pointer-events:auto!important;
        font-size:.56rem!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .journal.mobile-open{
        bottom:44px!important;
    }
}

/* Production training mode no longer exposes the internal VFX lab. */
.training-vfx-console{display:none!important}

/* Protect the running match from accidental Android/browser back gestures. */
.duel-navigation-toast{
    position:fixed;
    z-index:9800;
    left:50%;
    bottom:max(48px,calc(env(safe-area-inset-bottom) + 42px));
    width:max-content;
    max-width:min(82vw,520px);
    padding:7px 12px;
    border:1px solid rgba(232,197,121,.32);
    border-radius:999px;
    background:rgba(24,16,12,.96);
    color:#f0dfb9;
    box-shadow:0 9px 24px rgba(0,0,0,.40);
    font:800 .62rem/1.25 Arial,sans-serif;
    text-align:center;
    opacity:0;
    transform:translate(-50%,8px);
    transition:opacity .16s ease,transform .16s ease;
    pointer-events:none;
}
.duel-navigation-toast.visible{opacity:1;transform:translate(-50%,0)}

/* Mobile cinematic compositing: eliminate image decode flashes / costly filters. */
@media (pointer:coarse){
    .ts-signature-cinematic,
    .ts-landscape-signature-stage,
    .ts-legendary-fullart-stage,
    .ts-versus-intro-stage{
        contain:layout paint style!important;
        backface-visibility:hidden!important;
        -webkit-backface-visibility:hidden!important;
        isolation:isolate!important;
    }
    .ts-signature-cinematic *,
    .ts-landscape-signature-stage *,
    .ts-legendary-fullart-stage *,
    .ts-versus-intro-stage *{
        backface-visibility:hidden!important;
        -webkit-backface-visibility:hidden!important;
    }
    .ts-signature-character,
    .ts-landscape-signature-art,
    .ts-legendary-fullart-frame,
    .ts-versus-intro-side{
        will-change:transform,opacity!important;
    }
    .ts-signature-character,
    .ts-legendary-fullart-bg,
    .ts-landscape-signature-backdrop,
    .ts-versus-intro-bg{
        -webkit-backdrop-filter:none!important;
        backdrop-filter:none!important;
    }
}

/* =====================================================================
   THRONESHARD 0.2.26 — Landscape Native UX
   Le smartphone paysage est une plateforme de jeu, pas un desktop réduit.
   ===================================================================== */

/* Orientation fallback global : ultra léger, aucune UI portrait compressée. */
.ts-global-rotate-gate{display:none}
@media (pointer:coarse) and (orientation:portrait){
    html.ts-mobile-landscape-app,
    html.ts-mobile-landscape-app body{
        overflow:hidden!important;
        overscroll-behavior:none!important;
    }
    html.ts-mobile-landscape-app .ts-global-rotate-gate{
        position:fixed!important;
        z-index:2147483500!important;
        inset:0!important;
        display:grid!important;
        place-content:center!important;
        justify-items:center!important;
        gap:13px!important;
        padding:max(22px,env(safe-area-inset-top)) max(22px,env(safe-area-inset-right)) max(22px,env(safe-area-inset-bottom)) max(22px,env(safe-area-inset-left))!important;
        background:radial-gradient(circle at 50% 42%,rgba(111,59,151,.18),transparent 32%),linear-gradient(180deg,#130b08,#080504)!important;
        color:#f2dfb6!important;
        text-align:center!important;
        font-family:Georgia,"Times New Roman",serif!important;
    }
    .ts-global-rotate-phone{
        position:relative;width:42px;height:70px;border:2px solid rgba(235,201,128,.72);border-radius:9px;
        box-shadow:0 0 25px rgba(129,75,170,.24);animation:ts026RotatePhone 1.65s ease-in-out infinite;
    }
    .ts-global-rotate-phone::before{content:"";position:absolute;left:50%;top:5px;width:12px;height:2px;border-radius:2px;background:#d7bd84;transform:translateX(-50%)}
    .ts-global-rotate-phone i{position:absolute;left:50%;bottom:5px;width:5px;height:5px;border-radius:50%;background:#d7bd84;transform:translateX(-50%)}
    .ts-global-rotate-gate strong{font-size:clamp(1.15rem,6vw,1.7rem);line-height:1}
    .ts-global-rotate-gate small{font:700 .72rem/1.3 Arial,sans-serif;color:#9e8e77}
    @keyframes ts026RotatePhone{0%,20%,100%{transform:rotate(0)}55%,85%{transform:rotate(90deg)}}
}
@media (prefers-reduced-motion:reduce){.ts-global-rotate-phone{animation:none!important;transform:rotate(90deg)}}

/* Mobile : plus aucun portail artificiel "Entrer dans la Cour". */
@media (pointer:coarse){
    body.game-menu-page .menu-entry-gate{display:none!important}
}

/* Grand Hall = un seul écran paysage, y compris les téléphones très bas. */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-mobile-landscape-app body.game-menu-page,
    html.ts-mobile-landscape-app body.game-menu-page .menu-scene{
        width:100%!important;height:100dvh!important;min-height:0!important;max-height:100dvh!important;
        overflow:hidden!important;overscroll-behavior:none!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-layout{
        width:100%!important;height:100dvh!important;min-height:0!important;max-height:100dvh!important;
        display:block!important;margin:0!important;
        padding:max(5px,env(safe-area-inset-top)) max(7px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left))!important;
        overflow:hidden!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-brand{display:none!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-panel{
        width:min(1180px,100%)!important;height:100%!important;min-height:0!important;max-height:100%!important;
        margin:0 auto!important;padding:7px 9px!important;
        display:grid!important;
        grid-template-rows:44px 13px 28px minmax(0,1fr) 23px!important;
        gap:3px!important;
        border-radius:14px!important;
        overflow:hidden!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-player{
        min-height:0!important;height:44px!important;margin:0!important;padding:4px 8px!important;border-radius:10px!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-player img,
    html.ts-mobile-landscape-app body.game-menu-page .menu-player-avatar{width:32px!important;height:32px!important;flex-basis:32px!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-player strong{font-size:.73rem!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-player small{font-size:.43rem!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-onboarding{display:none!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-kicker{align-self:end;margin:0!important;font-size:.40rem!important;line-height:1!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-panel>h1{margin:0!important;font-size:clamp(.98rem,2.4vw,1.25rem)!important;line-height:1.05!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-actions{
        min-height:0!important;height:100%!important;
        display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-template-rows:repeat(3,minmax(0,1fr))!important;
        grid-auto-flow:row!important;gap:5px!important;overflow:hidden!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-action,
    html.ts-mobile-landscape-app body.game-menu-page .menu-action:nth-child(-n+3),
    html.ts-mobile-landscape-app body.game-menu-page .menu-action.primary{
        grid-column:auto!important;grid-row:auto!important;
        width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;
        margin:0!important;padding:5px 8px!important;border-radius:8px!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-action strong{font-size:clamp(.61rem,1.65vw,.77rem)!important;line-height:1!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-action span{font-size:clamp(.33rem,.82vw,.42rem)!important;line-height:1!important;letter-spacing:.025em!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-action.logout{margin:0!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-footer{
        min-height:0!important;height:23px!important;margin:0!important;padding:3px 0 0!important;font-size:.39rem!important;
    }
    html.ts-mobile-landscape-app body.game-menu-page .menu-options-btn{height:20px!important;padding:2px 7px!important;font-size:.43rem!important}
}

/* Ultra-short landscape (667x375 / 740x360 class). */
@media (pointer:coarse) and (orientation:landscape) and (max-height:380px){
    html.ts-mobile-landscape-app body.game-menu-page .menu-panel{grid-template-rows:38px 10px 23px minmax(0,1fr) 20px!important;padding:5px 7px!important;gap:2px!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-player{height:38px!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-player img,
    html.ts-mobile-landscape-app body.game-menu-page .menu-player-avatar{width:27px!important;height:27px!important;flex-basis:27px!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-panel>h1{font-size:.92rem!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-actions{gap:4px!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-action{padding:3px 6px!important}
    html.ts-mobile-landscape-app body.game-menu-page .menu-footer{height:20px!important}
}

/* Mulligan : un seul écran, cartes proportionnelles, aucune zone scrollable. */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-mobile-duel .mulligan-overlay{overflow:hidden!important}
    html.ts-mobile-duel .mulligan-panel{
        width:calc(100vw - max(12px,env(safe-area-inset-left)) - max(12px,env(safe-area-inset-right)))!important;
        height:calc(100dvh - max(10px,env(safe-area-inset-top)) - max(10px,env(safe-area-inset-bottom)))!important;
        max-width:none!important;max-height:none!important;
        padding:8px 10px!important;
        grid-template-columns:minmax(115px,19vw) minmax(0,1fr) minmax(118px,18vw)!important;
        grid-template-rows:auto auto minmax(0,1fr)!important;
        column-gap:9px!important;row-gap:2px!important;
        overflow:hidden!important;
    }
    html.ts-mobile-duel .mulligan-crown{grid-column:1!important;grid-row:1!important;width:38px!important;height:38px!important}
    html.ts-mobile-duel .mulligan-kicker{grid-column:1!important;grid-row:1!important;align-self:end!important;margin-left:48px!important;font-size:.40rem!important}
    html.ts-mobile-duel .mulligan-panel h2{grid-column:1!important;grid-row:2!important;margin:3px 0!important;font-size:clamp(1rem,3vw,1.55rem)!important}
    html.ts-mobile-duel .mulligan-panel>p{grid-column:1!important;grid-row:3!important;margin:0!important;font-size:.50rem!important;line-height:1.25!important}
    html.ts-mobile-duel .mulligan-cards{grid-column:2!important;grid-row:1 / 4!important;height:100%!important;min-height:0!important;margin:0!important;padding:2px 0 6px!important;overflow:hidden!important}
    html.ts-mobile-duel .mulligan-card{height:min(66dvh,calc(100% - 12px))!important;max-height:100%!important;width:auto!important;aspect-ratio:150/212!important}
    html.ts-mobile-duel .mulligan-summary{grid-column:3!important;grid-row:1!important;align-self:end!important;margin:0!important;font-size:.49rem!important;line-height:1.22!important}
    html.ts-mobile-duel .mulligan-confirm{grid-column:3!important;grid-row:2 / 4!important;align-self:center!important;min-height:44px!important;font-size:.63rem!important}
    html.ts-mobile-duel .mulligan-waiting{grid-column:3!important;grid-row:1 / 4!important}
}

/* Inspection duel : horizontale, sans formulaire vertical et sans débordement. */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-mobile-duel .apercu-carte-overlay{overflow:hidden!important}
    html.ts-mobile-duel .apercu-carte-dialog{
        width:min(960px,calc(100vw - 14px))!important;
        height:calc(100dvh - 12px)!important;
        max-width:none!important;max-height:none!important;
        grid-template-columns:minmax(170px,34%) minmax(0,1fr)!important;
        grid-template-rows:minmax(0,1fr) 36px!important;
        grid-template-areas:"card state" "card actions"!important;
        gap:8px 12px!important;padding:8px 12px 8px 8px!important;overflow:hidden!important;
    }
    html.ts-mobile-duel .carte-apercu-zoom{grid-area:card!important;height:min(92dvh,100%)!important;width:auto!important;max-width:100%!important;max-height:100%!important;align-self:center!important}
    html.ts-mobile-duel .apercu-etat-dynamique{grid-area:state!important;overflow:auto!important;min-height:0!important;padding:8px 10px!important}
    html.ts-mobile-duel .apercu-actions{grid-area:actions!important;height:36px!important;min-height:36px!important}
}

/* =====================================================================
   DUEL MOBILE — board first, HUD intégré, aucune barre inférieure.
   ===================================================================== */
@media (pointer:coarse) and (orientation:landscape){
    html.ts-pwa-standalone.ts-mobile-duel{
        --ts026-player-h:132px;
        --ts026-opponent-h:48px;
        --ts026-edge:5px;
    }
    html.ts-pwa-standalone.ts-mobile-duel,
    html.ts-pwa-standalone.ts-mobile-duel body.duel-interface{
        width:100%!important;height:100dvh!important;min-height:0!important;max-height:100dvh!important;
        overflow:hidden!important;overscroll-behavior:none!important;touch-action:manipulation!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .table-duel{
        top:max(var(--ts026-edge),env(safe-area-inset-top))!important;
        left:max(var(--ts026-edge),env(safe-area-inset-left))!important;
        right:max(var(--ts026-edge),env(safe-area-inset-right))!important;
        bottom:max(var(--ts026-edge),env(safe-area-inset-bottom))!important;
        grid-template-rows:var(--ts026-opponent-h) minmax(0,1fr) var(--ts026-player-h)!important;
        border-radius:18px!important;overflow:hidden!important;touch-action:none!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .champ,
    html.ts-pwa-standalone.ts-mobile-duel .ligne-combat,
    html.ts-pwa-standalone.ts-mobile-duel .main-joueur{touch-action:none!important}
    html.ts-mobile-duel .apercu-etat-dynamique,
    html.ts-mobile-duel .duel-options-overlay .options-panel{touch-action:pan-y!important}

    /* En duel mobile : engrenage uniquement. Aucun retour direct / aucun X d'abandon. */
    html.ts-pwa-standalone.ts-mobile-duel .retour,
    html.ts-pwa-standalone.ts-mobile-duel #nouvelle-partie{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .entete-duel{
        top:max(8px,env(safe-area-inset-top))!important;left:auto!important;right:max(9px,env(safe-area-inset-right))!important;
        width:38px!important;height:38px!important;min-height:38px!important;justify-content:flex-end!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .duel-header-actions{width:38px!important}
    html.ts-pwa-standalone.ts-mobile-duel #options-duel{
        width:38px!important;min-width:38px!important;max-width:38px!important;height:38px!important;min-height:38px!important;
        border-radius:50%!important;
    }

    /* Zone joueur : espaces réservés explicites hero/deck/mana/main/fin-tour. */
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .portrait-shardbearer.joueur{
        top:7px!important;left:8px!important;width:78px!important;height:calc(100% - 14px)!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .main-joueur{
        left:210px!important;right:132px!important;top:4px!important;bottom:4px!important;
        padding:0 3px 1px!important;overflow:visible!important;justify-content:center!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .carte-main.reelle{
        height:min(calc(100% - 2px),clamp(92px,29vh,126px))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .carte-main.reelle + .carte-main.reelle{
        margin-left:var(--chevauchement-main,-24px)!important;
    }

    /* Vraie pioche physique : la pile desktop revient, en format mobile. */
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .commandes{display:contents!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .commandes>.fin-tour{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .pioche{
        display:block!important;position:absolute!important;z-index:62!important;
        left:94px!important;right:auto!important;top:auto!important;bottom:8px!important;
        width:54px!important;height:78px!important;margin:0!important;
        filter:none!important;transform:none!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .pile-cartes{inset:3px 2px 3px 2px!important;perspective:350px!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .couche-pioche{
        left:calc(var(--pile-index) * 1.05px)!important;
        top:calc((6 - var(--pile-index)) * 1.05px)!important;
        width:45px!important;height:64px!important;border-radius:6px!important;
        filter:drop-shadow(0 3px 4px rgba(0,0,0,.44))!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .pioche-compteur{
        inset:auto -3px -2px auto!important;width:25px!important;height:25px!important;
        display:grid!important;place-items:center!important;border-radius:50%!important;
        background:radial-gradient(circle at 35% 30%,#3b2b1d,#17100c 72%)!important;
        border:1px solid rgba(225,192,119,.38)!important;
        box-shadow:0 4px 10px rgba(0,0,0,.38)!important;text-shadow:0 1px 3px #000!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .pioche-compteur span{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .pioche-compteur b{font-size:.72rem!important;line-height:1!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .pioche-vide .pile-cartes::before{width:45px!important;height:64px!important;left:2px!important;top:3px!important}

    /* L'ancien dock ne dessine plus rien : ses données deviennent des widgets. */
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-dock{
        display:contents!important;position:static!important;width:0!important;height:0!important;border:0!important;background:none!important;box-shadow:none!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-journal,
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-deck{display:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-duel-stats{display:contents!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-mana{
        position:fixed!important;z-index:5700!important;
        left:max(153px,calc(env(safe-area-inset-left) + 153px))!important;
        bottom:max(14px,calc(env(safe-area-inset-bottom) + 9px))!important;
        width:auto!important;height:30px!important;min-width:50px!important;
        display:flex!important;align-items:center!important;justify-content:center!important;gap:3px!important;
        padding:0 5px!important;border:0!important;background:transparent!important;box-shadow:none!important;
        color:#e6e8ff!important;text-shadow:0 2px 5px #000!important;pointer-events:none!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-mana i{font-size:.72rem!important;color:#c9a6ff!important;filter:drop-shadow(0 0 5px rgba(126,100,255,.7))}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-mana b{font-size:.91rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-mana small{font-size:.46rem!important;color:#bbb6d6!important}

    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-timer{
        position:fixed!important;z-index:5700!important;
        right:max(119px,calc(env(safe-area-inset-right) + 119px))!important;
        bottom:max(15px,calc(env(safe-area-inset-bottom) + 10px))!important;
        width:44px!important;height:30px!important;min-width:44px!important;
        display:flex!important;align-items:center!important;justify-content:center!important;gap:2px!important;
        padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important;
        color:#e9dcbf!important;text-shadow:0 2px 5px #000!important;pointer-events:none!important;
    }
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-timer i{font-size:.52rem!important;color:#c5a76e!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-timer b{font-size:.77rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-timer small{font-size:.40rem!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-timer.urgent{
        color:#ffd6bc!important;filter:drop-shadow(0 0 7px rgba(255,76,50,.65))!important;
    }

    html.ts-pwa-standalone.ts-mobile-duel .mobile-fin-tour{
        position:fixed!important;z-index:5750!important;
        right:max(10px,calc(env(safe-area-inset-right) + 6px))!important;
        bottom:max(9px,calc(env(safe-area-inset-bottom) + 5px))!important;
        width:104px!important;height:42px!important;min-height:42px!important;
        padding:0 9px!important;border-radius:21px!important;
        font-size:.60rem!important;line-height:.98!important;pointer-events:auto!important;
    }

    /* Ciblage contextuel : petit, latéral, jamais au centre du plateau. */
    html.ts-mobile-duel .plateau-targeting-prompt[hidden]{display:none!important}
    html.ts-mobile-duel .plateau-targeting-prompt:not([hidden]){
        position:fixed!important;z-index:5600!important;
        top:max(51px,calc(env(safe-area-inset-top) + 47px))!important;
        right:max(10px,calc(env(safe-area-inset-right) + 7px))!important;
        left:auto!important;bottom:auto!important;transform:none!important;
        width:auto!important;min-width:0!important;max-width:190px!important;min-height:24px!important;
        display:flex!important;align-items:center!important;justify-content:center!important;
        padding:4px 9px!important;gap:0!important;border-radius:999px!important;
        background:rgba(24,16,12,.90)!important;border:1px solid rgba(224,190,112,.25)!important;
        box-shadow:0 5px 13px rgba(0,0,0,.27)!important;white-space:nowrap!important;
    }
    html.ts-mobile-duel .plateau-targeting-kicker,
    html.ts-mobile-duel .plateau-targeting-description{display:none!important}
    html.ts-mobile-duel .plateau-targeting-prompt strong{font:800 .55rem/1 Arial,sans-serif!important;color:#ead8af!important}

    /* Les cibles parlent visuellement : halo héro très net pendant un drag/target. */
    html.ts-mobile-duel .portrait-shardbearer.adversaire.zone-depot-valide.cible-valide-ennemie,
    html.ts-mobile-duel .portrait-shardbearer.adversaire.plateau-target-option.cible-valide-ennemie,
    html.ts-mobile-duel body.glisser-carte-actif .portrait-shardbearer.adversaire.zone-depot-valide{
        border-color:#ff8b6e!important;
        box-shadow:0 0 0 2px rgba(255,113,80,.42),0 0 17px 5px rgba(255,77,47,.54),inset 0 0 16px rgba(255,81,52,.15)!important;
        filter:brightness(1.20) saturate(1.18)!important;
    }

    /* Le journal n'est plus un contrôle permanent du HUD mobile. */
    html.ts-pwa-standalone.ts-mobile-duel .journal{display:none!important}

    /* Aucun scroll/overscroll dans la scène de duel. */
    html.ts-pwa-standalone.ts-mobile-duel .ligne-combat,
    html.ts-pwa-standalone.ts-mobile-duel .main-joueur{scrollbar-width:none!important;overscroll-behavior:none!important}
    html.ts-pwa-standalone.ts-mobile-duel .ligne-combat::-webkit-scrollbar,
    html.ts-pwa-standalone.ts-mobile-duel .main-joueur::-webkit-scrollbar{display:none!important}

    /* Overlay options/abandon dimensionné pour la hauteur paysage. */
    html.ts-mobile-duel .duel-options-overlay,
    html.ts-mobile-duel .duel-abandon-overlay{
        padding:max(7px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(7px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))!important;
        backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
    }
    html.ts-mobile-duel .duel-options-overlay .options-panel{
        width:min(620px,92vw)!important;max-height:94dvh!important;overflow:auto!important;padding:12px 16px!important;
    }
    html.ts-mobile-duel .duel-options-overlay .options-panel h2{margin:0 0 7px!important;font-size:1rem!important}
    html.ts-mobile-duel .duel-options-overlay .option-row{grid-template-columns:110px minmax(0,1fr)!important;margin:6px 0!important;font-size:.65rem!important}
    html.ts-mobile-duel .duel-options-actions{justify-content:space-between!important;gap:8px!important;margin-top:9px!important}
    html.ts-mobile-duel .duel-abandon-action{border-color:rgba(208,94,85,.38)!important;color:#e7a39b!important}
}

/* Fenêtre de confirmation d'abandon, tous layouts. */
.duel-abandon-overlay{position:fixed;inset:0;z-index:12000;display:grid;place-items:center;padding:18px;background:rgba(6,4,3,.78);backdrop-filter:blur(7px)}
.duel-abandon-overlay[hidden]{display:none!important}
.duel-abandon-dialog{width:min(430px,100%);padding:22px;border:1px solid rgba(230,194,116,.28);border-radius:18px;background:linear-gradient(150deg,#342018,#140d0a);box-shadow:0 28px 80px rgba(0,0,0,.65);text-align:center;color:#e6d4ae}
.duel-abandon-kicker{display:block;margin-bottom:6px;color:#bb7d6e;font:900 .54rem/1 Arial,sans-serif;letter-spacing:.18em}
.duel-abandon-dialog h2{margin:0;color:#f1dfb8;font-size:1.45rem}
.duel-abandon-dialog p{margin:9px auto 17px;max-width:330px;color:#a99a80;font:.74rem/1.45 Arial,sans-serif}
.duel-abandon-buttons{display:flex;justify-content:center;gap:8px}
.duel-abandon-buttons button{min-height:38px;padding:8px 13px;border:1px solid rgba(230,197,126,.28);border-radius:9px;background:#24170f;color:#dfcba2;font-weight:800;cursor:pointer}
.duel-abandon-buttons button.danger{border-color:rgba(215,92,82,.46);background:linear-gradient(180deg,#71362f,#46231f);color:#ffd8d0}

@media (pointer:coarse) and (orientation:landscape) and (max-height:390px){
    html.ts-pwa-standalone.ts-mobile-duel{--ts026-player-h:116px;--ts026-opponent-h:43px}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .portrait-shardbearer.joueur{width:72px!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .pioche{left:86px!important;width:49px!important;height:70px!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .couche-pioche{width:41px!important;height:58px!important}
    html.ts-pwa-standalone.ts-mobile-duel .zone-joueur .main-joueur{left:194px!important;right:124px!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-mana{left:max(140px,calc(env(safe-area-inset-left) + 140px))!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-fin-tour{width:96px!important;height:38px!important;min-height:38px!important}
    html.ts-pwa-standalone.ts-mobile-duel .mobile-dock-timer{right:max(108px,calc(env(safe-area-inset-right) + 108px))!important}
}

/* Mobile cinematic compositing : couches stables, zéro filtre plein écran coûteux. */
@media (pointer:coarse){
    .ts-signature-cinematic,.ts-landscape-signature-stage,.ts-legendary-fullart-stage,.ts-versus-intro-stage,
    .ts-signature-cinematic img,.ts-landscape-signature-stage img,.ts-legendary-fullart-stage img,.ts-versus-intro-stage img{
        backface-visibility:hidden!important;-webkit-backface-visibility:hidden!important;
        transform:translateZ(0);will-change:transform,opacity;contain:paint;
    }
    .ts-signature-cinematic,.ts-landscape-signature-stage,.ts-legendary-fullart-stage,.ts-versus-intro-stage{
        backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
    }
}
@media (pointer:coarse){
    .ts-landscape-signature-backdrop img{filter:brightness(.42) saturate(.86)!important;transform:scale(1.04) translateZ(0)!important}
    .ts-signature-background-energy{filter:none!important;opacity:.30!important}
    .ts-landscape-signature-wash{mix-blend-mode:normal!important;opacity:.48!important}
    .ts-signature-character img,.ts-landscape-signature-art img,.ts-legendary-fullart-frame img{image-rendering:auto;transform:translateZ(0)}
}
.pwa-install-action[hidden]{display:none!important}
@media (pointer:coarse){
    .ts-signature-cinematic,.ts-landscape-signature-stage,.ts-legendary-fullart-stage,.ts-versus-intro-stage{filter:none!important}
}

/* Dernière priorité : une ancienne page mise en cache ne peut plus bloquer le
   jeu avec le gate d'installation obligatoire. */
.ts-install-gate{display:none!important;pointer-events:none!important}
html.ts-install-required body:not(.duel-interface){overflow:auto!important;overscroll-behavior:auto!important}
