/* Tower Run has its own composition. The battle camera and printed card ratio are shared. */
[hidden]{display:none!important}
:root{--ascent-paper:#f5eedb;--ascent-gold:#ebbd74;--ascent-ink:#0b151b}
#tower-screen{max-width:1440px;margin:auto;padding:32px 0 60px;color:var(--ascent-paper)}
.ascent-header{display:flex;justify-content:space-between;align-items:flex-end;gap:28px;border-bottom:1px solid #394847;padding:0 0 24px;margin-bottom:26px}
.ascent-header .back-link{margin-bottom:22px;display:block}.ascent-header h1{font:clamp(24px,3vw,42px)/1.12 Silkscreen;color:var(--ascent-paper);margin:12px 0}.ascent-header p{font:22px/1.25 VT323;color:#a5bdbb;margin:8px 0 0}.ascent-header .eyebrow{color:var(--ascent-gold)}
.ascent-seed{font:15px VT323;color:#aac0bf;white-space:nowrap;text-align:right}.ascent-seed span{display:block;color:#8a9d8b;margin-top:8px}
.ascent-path{display:flex;justify-content:space-between;list-style:none;padding:0;position:relative;margin:0 0 32px}.ascent-path:before{content:'';position:absolute;left:5%;right:5%;height:1px;top:24px;background:#425250;z-index:-1}.ascent-path li{display:grid;justify-items:center;gap:9px;color:#60797b;min-width:84px}.ascent-path li>span{display:grid;place-items:center;background:#0e1a22;border:1px solid #3e545c;width:48px;height:48px;font:25px VT323;box-shadow:0 0 0 7px #06080d}.ascent-path li>b{font:13px VT323;letter-spacing:1px}.ascent-path .current{color:#ffdfa0}.ascent-path .current>span{color:#201e17;background:#e6bc71;box-shadow:0 0 0 7px #06080d,0 0 32px #ffc96528;border-color:#ffe8b6}.ascent-path .cleared{color:#95d8b5}.ascent-path .cleared>span{background:#193931;border-color:#628c71}
.ascent-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:28px}.ascent-layout>main{min-width:0}.ascent-layout>aside{display:flex;flex-direction:column;gap:16px}
.ascent-stats{display:grid;grid-template-columns:1fr 1fr;background:linear-gradient(135deg,#192f31,#111c25);border:1px solid #51655c;padding:18px;gap:18px}.ascent-stats>span:last-child{grid-column:1/-1}.ascent-stats small{display:block;font:14px VT323;color:#acc1bc;letter-spacing:1px}.ascent-stats b{display:block;font:32px VT323;color:#f4dfb7;margin-top:5px}.ascent-stats i{font:20px VT323;font-style:normal;color:#91aba7}
.ascent-pair{background:linear-gradient(150deg,#203137,#101923);border:1px solid #42575a;border-top:2px solid var(--pair-color);padding:18px}.ascent-pair h3{font:25px Silkscreen;color:var(--pair-color);margin:12px 0}.ascent-pair p{font:20px/1.2 VT323;color:#c0d2ca;margin:0 0 16px}.ascent-totems{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ascent-totems>span{background:#0b191d;text-align:center;padding:8px;border:1px solid #42574e}.ascent-totems .totem-art{height:88px;max-width:96px;margin:auto}.ascent-totems b{display:block;font:17px VT323;color:#d9d7bd}.ascent-totems em{font-style:normal;display:block;font-size:12px;color:#a9ed9b;margin-top:4px}
.ascent-relics{border:1px solid #33464b;padding:16px}.ascent-relics p{font:20px VT323;color:#d5dacc}.ascent-relics small{font:17px/1.15 VT323;color:#99adae;display:block;margin:5px 0 0}.ascent-layout aside>.text-button{text-align:left;font-size:14px;line-height:1.3;padding:6px 0}
.route-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.route-grid:has(.route-card:only-child){grid-template-columns:minmax(0,1fr)}.route-card{padding:0;text-align:left;background:linear-gradient(145deg,#1b292e,#111a24);border:1px solid #526b66;box-shadow:0 14px 40px #0005;overflow:hidden;transition:transform .2s,border-color .2s,box-shadow .2s;position:relative;cursor:pointer}.route-card:hover,.route-card:focus-visible{transform:translateY(-5px);border-color:var(--route-color);box-shadow:0 14px 36px #0009,0 0 22px #edce6c19}.route-scene{height:220px;position:relative;overflow:hidden;background:radial-gradient(ellipse,#54794e,#0d1e21);border-bottom:1px solid #4d6259}.route-scene img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated;transform:scale(.98);transition:transform .5s}.route-card:hover .route-scene img{transform:scale(1.03)}.route-scene:after{content:'';position:absolute;inset:0;box-shadow:inset 0 -25px 35px #0f1b21;pointer-events:none}.route-scene.biome-foundry{background:radial-gradient(ellipse,#997444,#201b26)}.route-scene.biome-foundry img{filter:sepia(.2)hue-rotate(-12deg)}.route-scene.biome-canopy{background:radial-gradient(ellipse,#6d527e,#111b25)}.route-scene.biome-canopy img{filter:hue-rotate(16deg)}.route-scene>span{position:absolute;right:16px;top:15px;width:42px;height:42px;border:1px solid var(--route-color);background:#0c1a1ecf;color:var(--route-color);display:grid;place-items:center;font:26px VT323}.route-copy{padding:22px}.route-copy .eyebrow{font-size:15px;color:var(--route-color)}.route-copy h2{font:clamp(18px,1.9vw,25px)/1.25 Silkscreen;margin:10px 0 14px;color:#fff1d6}.route-copy>strong{font:15px VT323;color:#86a39e;letter-spacing:1px}.route-copy p{font:21px/1.2 VT323;color:#c3cecb;min-height:76px;margin:8px 0 18px}.route-zones{display:flex;gap:12px;flex-wrap:wrap;font:16px VT323;padding:12px 0;border-top:1px solid #344844;border-bottom:1px solid #344844}.route-copy footer{display:flex;justify-content:space-between;align-items:center;margin-top:18px;gap:10px}.route-copy footer span{font:13px VT323;color:#9cad9d}.route-copy footer b{font:20px VT323;color:var(--route-color)}
.reward-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.reward-card{padding:28px 20px;background:linear-gradient(150deg,#253234,#111c24);border:1px solid #66745b;text-align:left;transition:transform .2s,border .2s;display:flex;flex-direction:column;align-items:flex-start;cursor:pointer}.reward-card:hover{transform:translateY(-5px);border-color:#ffe49c}.reward-glyph{display:grid;place-items:center;width:74px;height:74px;background:#394235;border:1px solid #baa36a;color:#f1d292;font:48px VT323;margin-bottom:30px;box-shadow:0 0 24px #efc76017}.reward-card h2{font:20px/1.3 Silkscreen;color:#f5e7ca;margin:13px 0}.reward-card p{font:21px/1.25 VT323;color:#c4d2c5;flex:1}.reward-card strong{font:19px VT323;color:#ffd595;margin-top:20px}
.draft-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;max-width:760px;margin:0 auto 22px}.draft-option{padding:9px;position:relative;border:1px solid transparent;background:#15242877}.draft-option.chosen{border-color:#eac17a;background:#7d74452a}.draft-option>.outline-button{margin:14px 0 0;width:100%;font-size:16px;padding:10px 5px}.draft-option .collection-card{width:100%;max-width:none}.draft-option .collection-inspect{width:100%}.draft-swap{display:grid;grid-template-columns:1fr auto;gap:10px;padding:20px;background:#11242b;border:1px solid #516855;margin:20px 0}.draft-swap label{grid-column:1/-1;font:16px VT323;color:#b4d6c0}.draft-swap select{min-width:0;padding:10px;background:#09141b;border:1px solid #668c75;color:#eee2c9;font:20px VT323}.draft-swap .end-turn{font-size:16px;padding:9px 10px}
.ascent-resume,.ascent-finish{padding:40px;background:radial-gradient(ellipse at 50% 0,#345145,#0d1c25 75%);border:1px solid #597b62;text-align:center}.ascent-resume h2,.ascent-finish h2{font:25px/1.3 Silkscreen;color:#f4daa4}.ascent-finish p,.ascent-resume p{font:23px VT323;color:#aac7bc}.crown-glyph{font:100px VT323;color:#f1c472;text-shadow:0 0 50px #f7c36348}.ascent-finish.defeat{background:radial-gradient(ellipse at 50% 0,#503b44,#101c28 75%)}.ascent-finish>button{margin:10px 4px}.mastery-row{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;border-block:1px solid #506150;padding:16px 0;font:15px VT323;color:#ceba90;margin:24px 0}
.ascent-empty{max-width:850px;padding:70px 0}.ascent-empty h1{font:clamp(30px,5vw,62px)/1.25 Silkscreen;color:#f6edd8}.ascent-empty h1 em{font-style:normal;color:#e5b971}.ascent-empty p{font:25px/1.35 VT323;color:#9dbfb3;margin-bottom:30px}.ascent-empty>button{margin:6px}.workshop-resonance{border-top:1px solid #586950;padding-top:10px;margin-top:12px}.workshop-resonance>b{font:19px VT323;color:#edcf95}
/* The arena always uses a contained 1280 × 875 world. These controls take their own row. */
#battle-screen .game-layout{grid-template-rows:50px auto minmax(0,1fr)}
#battle-screen #arena{width:100%;height:100%;object-fit:contain;transform:none!important;max-width:100%;max-height:100%}
#battle-screen .stage-wrap{min-width:0;min-height:0;overflow:hidden}
.tactical-hud{display:grid;grid-template-columns:minmax(110px,.8fr) auto 122px minmax(100px,1fr);gap:4px 12px;align-items:center;padding:5px 18px;background:linear-gradient(100deg,#10282b,#141e29);border-bottom:1px solid #627663;z-index:5}
.tactical-location>span{display:block;font:18px VT323;color:#e6d6b5}.tactical-location>small{font:12px VT323;color:#91b4b0}.zone-controls{display:flex;gap:5px}.zone-control{display:grid;gap:2px;min-width:92px;padding:4px 7px;background:#0b171c;border:1px solid #405d60;color:var(--zone-color);cursor:pointer}.zone-control b{font:17px VT323}.zone-control small{font:11px VT323;color:#b2c4bd}.zone-control.chosen{border-color:var(--zone-color);background:#293c3a;box-shadow:inset 0 -2px var(--zone-color)}.zone-control:hover:not(:disabled){filter:brightness(1.3);border-color:var(--zone-color)}.zone-control.danger{border-color:#ff8769;background:#512c2a}.zone-control.danger b:after{content:' !';color:#ffc0a5}.zone-control:disabled{cursor:default;opacity:.7}.reposition-button{font:15px VT323;color:#f0cf8f;background:#1f302f;border:1px solid #647b69;padding:5px;cursor:pointer}.reposition-button small{display:block;font:11px VT323;color:#bdc7a9;margin-top:2px}.reposition-button:disabled{opacity:.35;cursor:default}.reposition-button.active,.reposition-button:hover:not(:disabled){border-color:#f4d699;background:#445543}
.resonance-chip{text-align:right;background:transparent;border:0;padding:4px;color:var(--pair-color);cursor:pointer}.resonance-chip small{display:block;font:10px Silkscreen;color:#86aca8}.resonance-chip b{font:20px VT323}.resonance-chip:hover{filter:brightness(1.3)}.tactical-intent{grid-column:1/-1;font:13px VT323;color:#b1c6bf;text-align:center;min-height:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tactical-intent>span{color:#f0d391;margin-right:10px}.tactical-intent.boss-intent{color:#ffd2bb}.tactical-intent.boss-intent>span{color:#ff8d70}
#battle-screen .slot-target,#battle-screen .slot-target:hover,#battle-screen .slot-target:focus-visible{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;box-shadow:none;filter:none;outline:none;padding:0;pointer-events:auto;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);cursor:pointer;z-index:1}
.rival-action{position:absolute;left:18px;bottom:16px;z-index:4;max-width:300px;display:flex;gap:10px;align-items:center;background:#0a1722ef;border:1px solid #bc9160;box-shadow:0 8px 28px #0009;padding:10px;pointer-events:none;opacity:0;transform:translateY(8px);transition:opacity .22s,transform .22s}.rival-action.show{opacity:1;transform:translateY(0)}.rival-action canvas{width:48px;height:64px;object-fit:contain;image-rendering:pixelated;background:#e7bc66}.rival-action small{display:block;font:12px VT323;color:#e7b679}.rival-action b{display:block;font:20px VT323;color:#f3e1c1}.rival-action p{font:15px/1.1 VT323;color:#b9ccc1;margin:3px 0 0}.effect-callout{position:absolute;left:50%;top:9%;transform:translateX(-50%) translateY(-6px);color:#fff1c5;text-shadow:0 2px 4px #000;font:20px Silkscreen;letter-spacing:1px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:4;white-space:nowrap}.effect-callout.show{opacity:1;transform:translateX(-50%) translateY(0)}
#battle-screen:has(#replay-controls:not([hidden])){grid-template-rows:minmax(0,1fr) auto auto auto auto}.replay-controls{display:flex;align-items:center;gap:8px;padding:8px 18px;flex-wrap:wrap;background:#172e33;border-block:1px solid #678c7d;z-index:5}.replay-controls input{flex:1;min-width:70px;accent-color:#edca86}.replay-controls>button{font-size:14px;padding:4px 8px}.replay-controls>span{font:16px VT323;color:#eddbb5}.replay-controls p{width:100%;font:16px VT323;color:#c2d4c8;margin:0}.zone-manual{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.zone-manual p{font:20px/1.2 VT323}
#home-screen:not([hidden]){grid-template-columns:370px minmax(0,1fr);grid-template-rows:minmax(650px,1fr) auto auto;padding-top:20px}.menu-console{background:linear-gradient(145deg,#20373a,#111b28)}.menu-world{border:1px solid #3f5955;background:radial-gradient(ellipse at 50% 45%,#46674c,#0a151e 70%);box-shadow:inset 0 0 75px #020910}.menu-world:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#80c5a00b,transparent 40%,#090f18a6);border-bottom:2px solid #ccaa72}.world-caption{bottom:28px;right:26px;z-index:2}.world-caption b{color:#edc47c;max-width:330px;line-height:1.5}.home-bottom>div{display:flex;gap:14px}.home-bottom .text-button{font-size:14px}.menu-actions{gap:9px}#home-screen .secondary-play{min-height:44px;padding:8px 12px}#home-screen .secondary-play>span{font-size:18px}#home-screen .secondary-play small{font-size:12px}.menu-intro{margin:13px 0 19px}
@media(min-width:1600px){.route-scene{height:260px}}
@media(max-width:1000px){.ascent-layout{grid-template-columns:minmax(0,1fr) 240px;gap:18px}.route-grid{gap:12px}.route-copy{padding:15px}.route-scene{height:170px}.reward-grid{grid-template-columns:1fr}.reward-card{display:grid;grid-template-columns:60px 1fr;padding:18px;gap:5px 15px}.reward-glyph{grid-row:1/5;width:52px;height:60px;font-size:35px;margin:0}.reward-card h2{font-size:16px;margin:0}.reward-card p{font-size:18px;margin:5px 0}.reward-card strong{margin:4px 0;font-size:16px}.tactical-hud{grid-template-columns:100px auto 100px minmax(75px,1fr);gap:4px 6px;padding:5px 8px}.zone-control{min-width:78px;padding:4px}.zone-control b{font-size:15px}.zone-control small{font-size:10px}.resonance-chip small{font:10px VT323}.resonance-chip b{font-size:17px}.tactical-location>span{font-size:16px}}
@media(max-width:760px){body:not([data-screen='battle']) #app{padding:0 16px}#home-screen:not([hidden]){grid-template-columns:1fr;grid-template-rows:auto auto auto auto}.main-menu{grid-column:1;grid-row:1;max-width:480px;justify-self:center}.menu-logo{max-width:320px;margin:auto}.menu-world{grid-column:1;grid-row:2;min-height:300px}.ascent-header{display:block}.ascent-header h1{font-size:25px}.ascent-seed{text-align:left;margin-top:18px}.ascent-layout{grid-template-columns:1fr}.ascent-layout>aside{display:grid;grid-template-columns:1fr 1fr}.ascent-stats{grid-column:1/-1;grid-template-columns:repeat(3,1fr)}.ascent-stats>span:last-child{grid-column:auto}.route-copy h2{font-size:18px}.ascent-path li{min-width:50px}.ascent-path li>b{font-size:11px}.tactical-location{display:none}.tactical-hud{grid-template-columns:1fr 98px 94px}.zone-controls{gap:3px}.zone-control{min-width:0;flex:1}.tactical-intent{font-size:12px}.tactical-intent>span{margin-right:5px}.resonance-chip small{font-size:9px}.rival-action{left:7px;bottom:6px;max-width:240px;padding:6px}.rival-action p{font-size:12px}.rival-action b{font-size:16px}.rival-action canvas{width:35px;height:45px}.draft-grid{gap:5px}.draft-option{padding:4px}.draft-option>.outline-button{font-size:13px}.effect-callout{font-size:13px}.ascent-finish{padding:22px}.home-bottom{flex-wrap:wrap}}
@media(max-width:480px){.tactical-hud{grid-template-columns:1fr 88px;gap:3px}.resonance-chip{display:none}.zone-control b{font-size:13px}.zone-control small{font-size:8px}.reposition-button{font-size:13px}.reposition-button small{font-size:9px}.tactical-intent{font-size:10px;min-height:11px}.route-grid{grid-template-columns:1fr}.route-scene{height:170px}.route-copy p{min-height:0}.ascent-layout>aside{display:flex}.ascent-header h1{font-size:20px}.ascent-path li>b{font-size:9px;letter-spacing:0}.ascent-path li>span{width:38px;height:38px}.ascent-path:before{top:19px}.draft-swap{grid-template-columns:1fr}.draft-swap label{grid-column:auto}.zone-manual{grid-template-columns:1fr;gap:0}.replay-controls{gap:3px;padding:5px}.replay-controls>button{font-size:11px;padding:4px}.replay-controls p{font-size:12px}.topbar .studio-menu-link{display:none}}
@media(prefers-reduced-motion:reduce){.route-card,.route-scene img,.reward-card,.rival-action,.effect-callout{transition:none!important;transform:none!important}}
#tower-screen{width:100%}
.draft-card-shell{position:relative;width:100%;aspect-ratio:212/306}
.draft-card-shell>.collection-card{position:absolute;inset:0;height:100%;margin:0}
.draft-card-shell .collection-inspect{height:100%}
.draft-model{position:absolute;inset:0;touch-action:none}
.draft-model .game-card-3d-canvas{width:100%;height:100%;display:block;filter:drop-shadow(0 6px 6px #0008)}
.draft-card-shell.model-ready>.collection-card{visibility:hidden}
#tower-screen .draft-option .collection-inspect>p{font:clamp(10px,1.2vw,15px)/1 VT323}
#tower-screen .draft-option .collection-card h3{font:clamp(10px,1.5vw,18px)/1 VT323}

/* Availability is a border/cost cue; the artist's printed faces stay in full colour. */
#battle-screen .hand-card.unplayable { filter:none; opacity:1; cursor:pointer; }
#battle-screen .hand-card.unplayable .card-cost { color:#ffe0ad; }
/* Mobile inspection occupies the hand tray, never the contained battlefield. */
@media (max-width:800px), (hover:none) and (max-height:600px) {
  #battle-screen .card-side {
    position:absolute; top:38px; bottom:2px; left:5px; right:5px;
    width:auto; height:auto; max-height:none; transform:none; padding:6px 10px;
    display:grid; grid-template-columns:calc((var(--hand-row-height) - 16px) * 212 / 306) minmax(0,1fr);
    grid-template-rows:32px minmax(0,1fr) auto; gap:4px 12px; align-items:start;
    overflow:hidden; z-index:60; box-shadow:0 5px 20px #0008;
  }
  #battle-screen .card-side-head { grid-column:2; grid-row:1; height:32px; font-size:12px; }
  #battle-screen .card-side-head button { width:36px; height:32px; flex:none; font-size:24px; }
  #battle-screen .card-side .side-card-flip,
  #battle-screen .card-side.long-copy .side-card-flip {
    grid-column:1; grid-row:1 / -1; align-self:center; width:100%; height:auto; max-height:100%; aspect-ratio:212/306;
  }
  #battle-screen .card-side .side-card-description,
  #battle-screen .card-side.long-copy .side-card-description {
    grid-column:2; grid-row:2; max-height:none; margin:0; font:16px/1.08 VT323; overflow:auto;
  }
  #battle-screen .card-side #side-card-tip { grid-column:2; grid-row:3; margin:0; font:13px/1.1 VT323; }
  #battle-screen .player-dock:has(.card-side:not([hidden])) .hand-workspace { visibility:hidden; }
  #battle-screen .card-side.showing-totem .totem-side-display { height:100%; }
}
/* Short landscape screens put the hand beside the arena instead of squeezing it out. */
@media (max-height:500px) and (min-width:561px) and (max-width:1100px) {
  #battle-screen:not([hidden]) {
    --hand-height:clamp(110px,38dvh,170px); --hand-row-height:calc(var(--hand-height) + 8px);
    grid-template-columns:minmax(0,1fr) 240px; grid-template-rows:minmax(0,1fr) 48px;
  }
  #battle-screen .game-layout { grid-column:1; grid-row:1; grid-template-rows:38px auto minmax(0,1fr); }
  #battle-screen .battle-hud { height:38px; padding:2px 8px; }
  #battle-screen .opponent-hand { height:32px; }
  #battle-screen .opponent-hand i { height:30px; flex-basis:21px; }
  #battle-screen .tactical-hud { grid-template-columns:1fr 90px; gap:3px; padding:3px 5px; }
  #battle-screen .tactical-location,#battle-screen .resonance-chip { display:none; }
  #battle-screen .zone-control { min-width:0; flex:1; padding:2px; }
  #battle-screen .zone-control b,#battle-screen .reposition-button { font-size:13px; }
  #battle-screen .zone-control small,#battle-screen .reposition-button small { font-size:9px; }
  #battle-screen .tactical-intent { font-size:10px; min-height:11px; }
  #battle-screen .player-dock { grid-column:2; grid-row:1; padding:0 4px; grid-template-rows:38px minmax(0,1fr); overflow:hidden; border-left:1px solid #bd9958; }
  #battle-screen .player-hud { gap:4px; padding:2px; height:36px; flex-wrap:wrap; }
  #battle-screen .player-profile { display:none; }
  #battle-screen .deck-indicator,#battle-screen .crystals,#battle-screen .hero-power>span { display:none; }
  #battle-screen .battle-totems { margin-left:auto; }
  #battle-screen .hero-power { min-height:28px; }
  #battle-screen .hand-workspace,#battle-screen .hand { height:100%; }
  #battle-screen .battle-controls { grid-column:1/-1; grid-row:2; margin:0; }
  #battle-screen .battle-history { display:none; }
  #battle-screen .card-side {
    position:absolute; inset:38px 3px 3px; width:auto; height:auto; max-height:none; transform:none;
    display:grid; grid-template-columns:minmax(85px,.9fr) minmax(0,1fr); grid-template-rows:32px minmax(0,1fr) auto;
    gap:4px 6px; padding:5px; overflow:hidden; z-index:60;
  }
  #battle-screen .card-side-head { grid-column:2; grid-row:1; height:32px; font-size:10px; }
  #battle-screen .card-side-head button { width:32px; height:32px; flex:none; font-size:22px; }
  #battle-screen .card-side .side-card-flip,#battle-screen .card-side.long-copy .side-card-flip { grid-column:1; grid-row:1/-1; align-self:center; width:100%; height:auto; max-height:100%; }
  #battle-screen .card-side .side-card-description,#battle-screen .card-side.long-copy .side-card-description { grid-column:2; grid-row:2; font:14px/1.05 VT323; max-height:none; margin:0; overflow:auto; }
  #battle-screen .card-side #side-card-tip { grid-column:2; grid-row:3; font:12px/1.05 VT323; margin:0; }
  #battle-screen .player-dock:has(.card-side:not([hidden])) .hand-workspace { visibility:hidden; }
}
