:root{color-scheme:dark;--bg:#0c1517;--pane:#172528;--pane2:#1f3033;--gold:#dfbd82;--line:#8eaa9839;--text:#f3e9d5;--muted:#aec1be;--mint:#78bca8;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(ellipse at 50% 0%,#26413c,#0c1517 60%);color:var(--text);min-width:0}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}a{color:inherit;text-decoration:none}a:hover{color:var(--gold)}:focus-visible{outline:3px solid var(--gold);outline-offset:3px}[hidden]{display:none!important}.skip{position:absolute;left:-9999px}.skip:focus{left:8px;top:8px;background:white;color:black;padding:10px;z-index:999}.bar,.shell,.footer{width:min(1240px,100%);margin:auto;padding-left:clamp(14px,3vw,28px);padding-right:clamp(14px,3vw,28px)}.bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:18px;padding-bottom:18px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;letter-spacing:.15em;font:700 .75rem Georgia,serif}.brand strong{display:block;color:var(--gold);font-size:.98rem}.emblem{font-size:2.2rem;color:var(--gold)}.bar-actions{display:flex;gap:16px;align-items:center}.test-stamp,.back{font-weight:800;font-size:.65rem;letter-spacing:.12em}.test-stamp{color:var(--gold);border:1px solid var(--line);padding:8px 10px;border-radius:99px}.hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:44px 0 28px;border-bottom:1px solid var(--line)}.overline{font-size:.65rem;font-weight:850;letter-spacing:.19em;color:var(--gold);margin:0 0 8px}.hero h1{font:normal clamp(3.4rem,8vw,6.5rem)/.94 Georgia,serif;letter-spacing:-.055em;margin:0 0 14px}.hero em{color:var(--gold)}.hero .tagline{font:normal clamp(1.12rem,2.5vw,1.55rem) Georgia,serif;margin:0 0 9px}.muted{color:var(--muted);line-height:1.55}.hero .muted{max-width:640px;margin:0;font-size:.88rem}.crest{width:150px;aspect-ratio:1;flex-shrink:0;border:1px solid #c9ac7566;border-radius:50%;display:grid;place-items:center;box-shadow:inset 0 0 0 11px #d9c18c0b,0 0 54px #d7bd6d14}.crest span{font-size:5rem;color:var(--gold)}.chapter-top{display:flex;align-items:end;justify-content:space-between;margin:25px 0 10px;gap:10px}.chapter-top h2{font:normal 1.5rem Georgia,serif;margin:0}.chapter-top h2 small{font:700 .7rem system-ui;color:var(--muted)}.campaign-total{font-size:.66rem;font-weight:850;letter-spacing:.12em;color:var(--gold)}.chapter-picker{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:26px}.vault-choice{border:1px solid var(--line);border-radius:8px;text-align:left;background:#152629;padding:12px;display:grid;gap:4px;min-width:0;min-height:99px;transition:background .15s,transform .15s}.vault-choice:hover{background:#27403f;transform:translateY(-2px)}.vault-choice[aria-pressed=true]{border-color:var(--gold);background:#304037}.vault-choice .number{font:normal 1.55rem Georgia,serif;color:var(--gold)}.vault-choice .name{font-size:.7rem;font-weight:850;overflow-wrap:anywhere}.vault-choice .record{color:var(--muted);font-size:.59rem;letter-spacing:.06em}.vault-choice[data-rank="5"]{border-color:#b987573d}.play-grid{display:grid;grid-template-columns:minmax(0,1.42fr) minmax(280px,.75fr);gap:15px;align-items:start}.play-column,.side{display:grid;gap:14px;min-width:0}.vault-card,.table-card,.side-box{border:1px solid var(--line);background:linear-gradient(135deg,#192b2c,#122023);border-radius:12px;box-shadow:0 18px 42px #030a0a40;padding:clamp(14px,2vw,22px);min-width:0}.vault-topline{display:flex;align-items:center;justify-content:space-between;gap:8px}.difficulty{font-size:.62rem;font-weight:800;letter-spacing:.14em;color:#f1d6a0;border:1px solid var(--line);border-radius:15px;padding:5px 8px}.vault-card>h2{font:normal clamp(1.8rem,4vw,2.7rem) Georgia,serif;margin:7px 0}.briefing{color:var(--muted);line-height:1.5;font-size:.84rem;min-height:38px;margin:8px 0 15px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:10px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.stats>div{min-width:0;padding:4px 9px;border-right:1px solid var(--line)}.stats>div:last-child{border-right:0}.stats small{display:block;letter-spacing:.13em;font-size:.6rem;color:var(--muted);font-weight:800;margin-bottom:5px}.stats strong{display:block;font-size:clamp(.74rem,1.8vw,1.05rem);color:var(--gold);overflow-wrap:anywhere}.vault-stage{display:grid;grid-template-columns:160px minmax(0,1fr);align-items:center;gap:18px;margin:18px 0 12px;padding:20px;background:radial-gradient(ellipse at 0% 40%,#355047,#17282c 75%);border:1px solid var(--line);border-radius:9px}.lock-ring{aspect-ratio:1;border-radius:50%;border:2px solid #c9ae7866;box-shadow:0 0 0 9px #bda57b0c,inset 0 0 28px #e4d7a81a;display:grid;place-content:center;justify-items:center;position:relative}.lock-ring:before{content:'';position:absolute;inset:12px;border:1px dashed #cfb88666;border-radius:50%}.lock-glyph{font:normal 5rem Georgia,serif;color:var(--gold);line-height:1;text-shadow:0 0 22px #b6bd9555}.ring-text{font-size:.58rem;letter-spacing:.14em;color:var(--gold);font-weight:800}.ward-info h3{font:normal 1.52rem Georgia,serif;margin:6px 0 12px}.mana-cost{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0}.mana-glyph{width:33px;height:33px;border-radius:50%;display:grid;place-items:center;border:2px solid #eff0dd88;background:var(--coin);color:#fff;text-shadow:0 1px 2px #1b171a;font:bold .96rem Georgia,serif;box-shadow:inset 0 0 10px #ffffff16}.mana-glyph.W{color:#352914}.mana-glyph.C,.mana-glyph.N{color:#223039}.small{font-size:.76rem}.primary{background:var(--gold);color:#192322;border:0;border-radius:6px;font-weight:900;letter-spacing:.055em;padding:13px 15px;min-height:46px}.primary:not(:disabled):hover{background:#ffe0a6}.primary span{margin-left:5px}.ward-info .primary{margin-top:6px;display:block;width:100%;font-size:.73rem}.stage-list{display:flex;flex-wrap:wrap;gap:7px}.stage-marker{font-size:.68rem;border:1px solid var(--line);border-radius:99px;padding:7px 10px;color:var(--muted)}.stage-marker.active{color:var(--gold);border-color:var(--gold)}.stage-marker.done{color:#93d1b8}.section-label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.section-label h2{margin:0;font:normal 1.5rem Georgia,serif}.section-label h2 small{font:.7rem system-ui;color:var(--muted);margin-left:6px}.count{font:.65rem system-ui;color:var(--gold);letter-spacing:.1em;font-weight:800;white-space:nowrap}.hint-line{font-size:.76rem;color:var(--muted);line-height:1.4;margin:-2px 0 14px}.land-grid{display:flex;align-items:stretch;flex-wrap:wrap;gap:10px;min-height:88px}.land-card{width:clamp(103px,17vw,133px);height:177px;flex:none;border:2px solid #b6ac89a3;border-radius:10px;background:#253331;padding:6px;display:flex;flex-direction:column;text-align:left;gap:5px;color:var(--text);transition:transform .22s,filter .2s,box-shadow .18s;position:relative;min-width:0;box-shadow:0 7px 12px #0005;transform-origin:50% 50%}.land-card:hover:not(:disabled){box-shadow:0 0 0 2px var(--gold);transform:translateY(-3px)}.land-card.is-tapped{transform:rotate(90deg) scale(.83);filter:brightness(.6) saturate(.62);margin:0 8px}.land-card.is-tapped:hover{transform:rotate(90deg) scale(.83)}.land-card .land-name{font:bold .68rem Georgia,serif;color:#fff5d5;line-height:1.2;min-height:18px}.land-card .land-art{flex:1;min-height:60px;border:1px solid #f5edda44;background:linear-gradient(155deg,#071d2a,#326374 42%,#4f3a27 70%,#141c24);display:grid;place-items:center;position:relative;overflow:hidden}.land-art:before,.land-art:after{content:'';position:absolute;border-radius:50%;width:75px;height:75px;border:1px solid #ffffff33;transform:translate(21px,-14px)}.land-art:after{width:42px;height:42px;transform:translate(-24px,15px);background:#bdc3a615}.land-art span{position:relative;z-index:1;font:normal 2rem Georgia,serif;color:#efe2af;text-shadow:0 0 14px #fef1bf}.land-card[data-kind=shock] .land-art{background:linear-gradient(130deg,#164273,#6b344c 55%,#e7845044)}.land-card[data-kind=dual] .land-art{background:linear-gradient(135deg,#31556c,#28433f 56%,#966b44)}.land-card[data-kind=pain] .land-art{background:linear-gradient(120deg,#302843,#a6464866 60%,#1a353e)}.land-card[data-kind=fetch] .land-art{background:linear-gradient(110deg,#244657,#557b67 55%,#907d50)}.land-card[data-kind=bounce] .land-art{background:linear-gradient(130deg,#244c68,#324845,#986f50)}.land-card .type-line{font-size:.54rem;color:#fff8df;line-height:1.3;min-height:26px}.land-card .mana-line{display:flex;gap:3px;flex-wrap:wrap}.land-card .mana-line .mana-glyph{width:19px;height:19px;font-size:.66rem;border-width:1px}.land-card .tap-stamp{position:absolute;right:5px;bottom:6px;font-size:.59rem;font-weight:900;color:#edc789;background:#101c1ab9;padding:2px 4px}.land-card .land-kind{position:absolute;right:5px;top:26px;z-index:2;font-size:.49rem;font-weight:900;background:#0b1b1bc7;color:var(--gold);padding:3px 4px;letter-spacing:.02em}.empty{color:var(--muted);padding:16px 3px;font-size:.81rem}.controlbar{display:grid;grid-template-columns:1.3fr 1fr 1fr 1.2fr;gap:8px}.controlbar button:not(.primary){border:1px solid var(--line);border-radius:6px;min-height:46px;background:#26383a;font-weight:850;font-size:.71rem}.controlbar button:not(:disabled):hover{filter:brightness(1.3)}.feedback{margin:0;border-left:3px solid var(--gold);background:#233b397f;color:var(--text);padding:12px;font-size:.84rem;line-height:1.45}.feedback.bad{border-color:#ee9d9d;color:#f9bdba}.side-box .section-label h2{font-size:1.4rem}.pool{display:flex;gap:8px;flex-wrap:wrap;min-height:50px}.pool-cell{display:flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:20px;padding:5px 8px;font-size:.78rem}.pool-cell .mana-glyph{width:27px;height:27px}.pool-cell strong{font-size:.9rem}.choices{display:grid;gap:9px}.choices p{margin:0}.choice-button{border:1px solid #c6ad746c;border-radius:7px;padding:11px;background:#30433d;text-align:left;min-height:45px;font-size:.8rem;font-weight:750;line-height:1.3}.choice-button:hover{background:#425a4e}.choice-button b{color:var(--gold)}.choice-button[disabled]{opacity:.4}.action-box{border-color:#a7b48a66}.legend{display:grid;grid-template-columns:12px 64px 1fr;gap:7px;align-items:center;margin:10px 0;font-size:.71rem}.legend b{color:var(--gold)}.legend span:last-child{font-size:.7rem}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#a4cfae}.dot.dual{background:#6fa0da}.dot.shock{background:#e9786d}.dot.pain{background:#c38fce}.dot.check{background:#d2c07c}.dot.fetch{background:#75bbc5}.dot.bounce{background:#bd8d62}hr{border:0;border-top:1px solid var(--line);margin:14px 0}.guide details{font-size:.8rem;color:var(--gold)}.guide details summary{cursor:pointer;font-weight:850}.win{display:flex;gap:12px;align-items:center;border:1px solid var(--gold);border-radius:9px;background:#304338;margin-top:15px;padding:12px}.win>span{font-size:2rem;color:var(--gold)}.win p{margin:4px 0 0;color:var(--muted);font-size:.75rem}.win b{font:normal 1.15rem Georgia,serif}.win button{margin-left:auto;border:0;border-radius:4px;padding:10px;background:var(--gold);color:#12201c;font-size:.7rem;font-weight:900}.library-panel{font-size:.75rem;color:var(--gold);margin:10px 0}.footer{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);font-size:.64rem;letter-spacing:.06em;color:var(--muted);padding-top:20px;padding-bottom:30px;margin-top:30px}.footer a{color:var(--gold)}@media(max-width:940px){.play-grid{grid-template-columns:1fr}.side{grid-template-columns:repeat(2,minmax(0,1fr))}.guide{grid-column:1/-1}.chapter-picker{grid-template-columns:repeat(6,minmax(0,1fr))}.land-card{width:122px}}@media(max-width:650px){.hero{padding:25px 0}.crest{display:none}.test-stamp{display:none}.chapter-picker{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.vault-choice{min-height:80px;padding:8px}.vault-choice .number{font-size:1.3rem}.vault-choice .name{font-size:.65rem}.vault-card,.table-card,.side-box{padding:13px}.vault-stage{grid-template-columns:90px minmax(0,1fr);gap:12px;padding:11px}.lock-ring{width:90px;height:90px}.lock-glyph{font-size:3rem}.ring-text{font-size:.49rem}.ward-info h3{font-size:1.1rem}.mana-glyph{height:27px;width:27px}.ward-info .primary{font-size:.62rem;padding:9px;min-height:43px}.stats{gap:0}.stats>div{padding:3px 5px}.stats strong{font-size:.74rem}.stats small{font-size:.51rem}.side{grid-template-columns:1fr}.guide{grid-column:auto}.controlbar{grid-template-columns:repeat(2,minmax(0,1fr))}.land-card{width:calc((100vw - 66px)/3);min-width:90px;max-width:122px;height:159px}.land-card.is-tapped{margin:0 5px}.land-card .land-art{min-height:50px}.brand strong{font-size:.8rem}}@media(max-width:350px){.land-grid{gap:5px}.land-card{width:calc((100vw - 49px)/3);min-width:0;height:142px;padding:4px}.land-card .land-name{font-size:.59rem}.land-card .land-art{min-height:39px}.vault-choice .record{font-size:.52rem}.stats strong{font-size:.66rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.land-card,.vault-choice{transition:none!important}}

/* v0.3 overworld: small, focused act path instead of 18 exposed puzzle buttons */
.campaign-screen{margin:26px 0 34px;border:1px solid #a58f664a;border-radius:18px;background:radial-gradient(circle at 60% -10%,#314d46,#18292a 68%,#101f21);padding:clamp(17px,3vw,30px);box-shadow:0 22px 60px #0007;position:relative;overflow:hidden}
.campaign-screen:before{content:"";position:absolute;inset:9px;pointer-events:none;border:1px solid #d2b77922;border-radius:12px}
.campaign-top{display:flex;gap:16px;justify-content:space-between;align-items:start;position:relative}
.campaign-top h2{font:normal clamp(1.8rem,3.6vw,2.6rem) Georgia,serif;margin:0;letter-spacing:-.02em}
.campaign-top p.muted{font-size:.83rem;margin:9px 0 0}
.world-navigation{display:grid;grid-template-columns:125px 1fr 125px;gap:10px;align-items:center;margin:26px 0 8px}
.world-navigation>button,.game-titlebar button{border:1px solid var(--line);background:#1b3032;color:var(--gold);border-radius:7px;padding:11px 9px;font-size:.67rem;letter-spacing:.075em;font-weight:850;min-height:44px}
.world-navigation>button:not(:disabled):hover,.game-titlebar button:hover{background:#38504b}
.world-nameplate{text-align:center}
.world-nameplate h3{font:normal clamp(1.7rem,4vw,2.8rem) Georgia,serif;color:#f2d7a5;margin:0 0 3px}
.world-nameplate p.muted{font-size:.75rem;margin:0}
.campaign-track{position:relative;background:linear-gradient(140deg,#12252a 5%,#27403875 60%,#14292a);border:1px solid var(--line);border-radius:14px;padding:30px 18px;min-height:225px;display:grid;align-items:center}
.path-line{height:4px;position:absolute;left:8%;right:8%;top:50%;background:repeating-linear-gradient(90deg,#aa9265 0 12px,#415d54 12px 21px);border-radius:8px;opacity:.62;box-shadow:0 0 12px #c9b67f55}
.campaign-track .chapter-picker{position:relative;z-index:1;margin:0;display:flex;align-items:center;justify-content:space-evenly;gap:12px;width:100%}
.overworld-stage{width:min(25%,185px);min-width:110px;min-height:171px;border:1px solid #8d987369;border-radius:12px;background:linear-gradient(160deg,#2c423b,#182d30);color:var(--cream,var(--text));padding:15px 8px;display:flex;flex-direction:column;gap:7px;align-items:center;justify-content:center;text-align:center;box-shadow:0 8px 16px #040d0eaa;position:relative}
.overworld-stage .stage-node{border:2px solid #d2b681;background:radial-gradient(circle,#465c51,#1c302e);width:52px;height:52px;border-radius:50%;display:grid;place-items:center;color:var(--gold);font:normal 2rem Georgia,serif;box-shadow:0 0 0 6px #102222,0 0 22px #d3b67755}
.overworld-stage .stage-code{font:bold .87rem Georgia,serif;letter-spacing:.14em;color:var(--gold)}
.overworld-stage strong{font-size:.73rem;line-height:1.3}
.overworld-stage .stage-detail{font-size:.57rem;letter-spacing:.07em;color:var(--muted);font-weight:850}
.overworld-stage.current{border-color:#dfbd82;box-shadow:0 0 0 2px #d8b17d51,0 0 30px #d2ad6866}
.overworld-stage.current .stage-node{animation:currentStagePulse 2.5s ease-in-out infinite}
.overworld-stage.finished .stage-node{background:#315c4a;color:#c9ffc9;border-color:#9ac99a}
.overworld-stage:disabled{filter:grayscale(.7);opacity:.55;background:#172728;border-style:dashed}
.overworld-stage:disabled .stage-node{border-color:#61706b;box-shadow:0 0 0 6px #102222;color:#8d9e96}
.overworld-stage:not(:disabled):hover{background:#3d584b;transform:translateY(-2px)}
.overworld-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px}
.overworld-footer p{font-size:.78rem;margin:0}
.world-pips{display:flex;gap:7px;flex-wrap:wrap}
.world-pip{border:1px solid var(--line);border-radius:50%;background:#27413b;width:31px;height:31px;color:var(--gold);font:bold .75rem Georgia,serif}
.world-pip.active{background:var(--gold);color:#1b2a2c}
.world-pip:disabled{opacity:.32}
.game-titlebar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:16px 0}
.stage-label{color:var(--gold);font:normal 1.4rem Georgia,serif;letter-spacing:.1em}
@keyframes currentStagePulse{0%,100%{box-shadow:0 0 0 6px #102222,0 0 20px #d8b87e44}50%{box-shadow:0 0 0 8px #102222,0 0 34px #d8b87eaa}}
/* Original panoramic paintings on land card windows */
.land-card .land-art{overflow:hidden;padding:0;display:block}
.land-card .land-art:before,.land-card .land-art:after{display:none}
.land-card .art-painting{display:block;width:100%;height:100%;position:relative;z-index:1}
.land-card .land-name{z-index:2}
.land-card .land-kind{z-index:3}
.land-card.is-tapped{animation:turnLand .32s cubic-bezier(.17,.85,.27,1.2) both}
@keyframes turnLand{from{transform:rotate(0deg) scale(1);filter:brightness(1)}to{transform:rotate(90deg) scale(.83);filter:brightness(.6) saturate(.62)}}
/* The reservoir's empty sockets fill one by one from the land's animation. */
.pool-console{border:1px solid #e0c98756;border-radius:12px;padding:13px;background:radial-gradient(ellipse at 40% 20%,#29463d,#101f25 80%);box-shadow:inset 0 0 26px #d4bc7840,0 9px 23px #0005}
.pool-console-top{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--gold);font-size:.55rem;font-weight:800;letter-spacing:.13em;margin:0 0 13px}
.pool.mana-sockets{display:flex;flex-wrap:wrap;gap:9px;align-items:center;justify-content:center;min-height:88px}
.mana-socket{height:42px;width:42px;flex:none;border:2px solid #e2c68a66;border-radius:50%;background:radial-gradient(circle at 40% 30%,#314b47,#101b23 74%);display:grid;place-items:center;box-shadow:inset 0 1px 9px #030a0c,0 2px 10px #040f0fa8;position:relative}
.mana-socket.empty{border-style:dashed;opacity:.7}
.socket-outline{font:normal 1.25rem Georgia,serif;color:#c5b38c66}
.socket-glow{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 32% 24%,#ffffffc9,var(--mana-color) 38%,#1a2631 95%);box-shadow:0 0 16px var(--mana-color),inset 0 -2px 7px #0014;color:#122328;text-shadow:0 1px 1px #ffffff65}
.socket-core{font:bold 1rem Georgia,serif}
.mana-socket.filled{border-color:#efd49bb9}
.mana-socket.awaiting-orb .socket-glow{opacity:0}
.mana-socket.filled:not(.awaiting-orb){animation:manaArrive .31s cubic-bezier(.2,1.6,.5,1)}
.mana-travel-layer{position:fixed;inset:0;z-index:999;pointer-events:none}
.mana-flight{position:fixed;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font:bold 1rem Georgia,serif;color:#19252a;background:radial-gradient(circle at 27% 23%,#fff,var(--orb-color) 42%,#142a30 98%);box-shadow:0 0 20px 8px var(--orb-color),0 0 40px var(--orb-color);pointer-events:none}
@keyframes manaArrive{from{transform:scale(.45);filter:brightness(2)}to{transform:scale(1);filter:brightness(1)}}
.can-cast{box-shadow:0 0 0 2px #e1cc9d88,0 0 24px #d8bd7966}
@media(max-width:650px){.campaign-top{flex-wrap:wrap}.campaign-top h2{font-size:1.65rem}.world-navigation{grid-template-columns:70px minmax(0,1fr) 70px;gap:5px;margin-top:18px}.world-navigation>button{font-size:.52rem;padding:8px 3px;line-height:1.3}.world-nameplate h3{font-size:1.6rem}.campaign-track{padding:24px 7px;min-height:184px}.campaign-track .chapter-picker{gap:5px;justify-content:space-evenly}.overworld-stage{min-width:0;width:calc(25% - 3px);padding:11px 4px;min-height:145px}.overworld-stage .stage-node{width:36px;height:36px;font-size:1.35rem}.overworld-stage .stage-code{font-size:.74rem}.overworld-stage strong{font-size:.61rem;overflow-wrap:anywhere}.overworld-stage .stage-detail{font-size:.52rem}.overworld-footer{flex-wrap:wrap}.pool.mana-sockets{gap:7px}.mana-socket{height:37px;width:37px}.socket-glow{width:29px;height:29px}}
@media(max-width:350px){.overworld-stage{min-height:135px}.overworld-stage .stage-node{width:32px;height:32px}.world-nameplate h3{font-size:1.15rem}.mana-socket{height:34px;width:34px}.socket-glow{width:27px;height:27px}}
@media(prefers-reduced-motion:reduce){.overworld-stage.current .stage-node,.mana-socket.filled,.land-card.is-tapped{animation:none!important}.land-card.is-tapped{transform:rotate(90deg) scale(.83)}}


/* 0.4: The heist is a single viewport. Long-form help and Magic references live BELOW it. */
.bar{padding-top:8px;padding-bottom:8px;min-height:55px}
.hero{display:none}
.in-heist .shell{max-width:1560px}
#gameScreen{position:relative}
.in-heist #gameScreen{height:calc(100dvh - 58px);min-height:0;display:flex;flex-direction:column;gap:5px;padding:2px 0 3px}
.in-heist .game-titlebar{flex:0 0 32px;margin:0;gap:10px;min-height:32px}
.in-heist .game-titlebar button{min-height:32px;padding:6px 12px;font-size:.63rem}
.in-heist .stage-label{font-size:.95rem}
.in-heist #heist{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,270px);gap:8px;flex:1;min-height:0;align-items:stretch}
.in-heist .play-column{display:grid;grid-template-rows:minmax(174px,1.2fr) minmax(130px,1fr) minmax(105px,.8fr) 42px;gap:7px;min-height:0;position:relative}
.in-heist .side{display:block;min-height:0}
.in-heist .vault-card,.in-heist .table-card,.in-heist .pool-box{padding:9px 11px;min-height:0;overflow:hidden}
.in-heist .vault-card{display:flex;flex-direction:column;position:relative}
.in-heist .vault-topline .overline{font-size:.55rem;margin:0}
.in-heist .difficulty{font-size:.53rem;padding:3px 6px}
.in-heist .vault-card>h2{font-size:clamp(1.22rem,2.4vw,1.9rem);line-height:1.12;margin:2px 0 5px}
.in-heist .stats{padding:4px 0}
.in-heist .stats small{margin:0 0 2px;font-size:.51rem}
.in-heist .stats strong{font-size:.78rem}
.in-heist .vault-stage{display:grid;grid-template-columns:minmax(67px,110px) minmax(0,1fr);flex:1;min-height:90px;gap:12px;margin:7px 0 0;padding:9px}
.in-heist .lock-ring{width:min(100%,100px);height:auto;aspect-ratio:1}
.in-heist .lock-ring:before{inset:7px}
.in-heist .lock-glyph{font-size:clamp(2rem,5vw,3.7rem)}
.in-heist .ring-text{font-size:.44rem;letter-spacing:.055em;text-align:center}
.in-heist .ward-info{min-width:0;display:flex;flex-direction:column;justify-content:center}
.in-heist .ward-info .overline{font-size:.51rem;margin:0}
.in-heist .ward-info h3{font-size:clamp(.97rem,2vw,1.3rem);line-height:1.2;margin:4px 0}
.in-heist .mana-cost{margin:3px 0;gap:3px}
.in-heist .mana-cost .mana-glyph{width:25px;height:25px;font-size:.82rem}
.in-heist .ward-info .primary{font-size:.62rem;padding:8px;min-height:34px;margin-top:5px}
.in-heist .stage-list{display:none}
.in-heist .table-card{display:flex;flex-direction:column}
.in-heist .table-card .section-label{margin:0 0 4px}
.in-heist .table-card .section-label .overline{font-size:.48rem;margin:0 0 2px}
.in-heist .table-card .section-label h2{font-size:1rem}
.in-heist .table-card .section-label h2 small{font-size:.59rem}
.in-heist .table-card .count{font-size:.52rem}
.in-heist .land-grid{flex:1;display:flex;align-items:center;flex-wrap:nowrap;gap:11px;overflow-x:auto;overflow-y:hidden;min-height:0;min-width:0;padding:4px 6px 4px 2px;scrollbar-width:thin;scrollbar-color:#ab9671 transparent}
.in-heist .land-card{height:clamp(78px,16.5dvh,150px);width:clamp(61px,11.75dvh,106px);min-width:0;max-width:none;flex:0 0 auto;padding:4px;gap:2px;border-radius:7px}
.in-heist .land-card .land-name{font-size:clamp(.52rem,.95dvh,.7rem);min-height:0}
.in-heist .land-card .land-art{min-height:26px}
.in-heist .land-card .land-kind{font-size:.43rem;top:17px;right:2px}
.in-heist .land-card .type-line{font-size:.44rem;min-height:0;line-height:1.1}
.in-heist .land-card .mana-line{gap:2px}
.in-heist .land-card .mana-line .mana-glyph{height:14px;width:14px;font-size:.52rem}
.in-heist .land-card .tap-stamp{font-size:.46rem}
.in-heist .land-card.is-tapped{margin:0 10px;animation:none;transform:rotate(90deg) scale(.83)}
.in-heist .land-card.is-tapped:hover{transform:rotate(90deg) scale(.83)}
.in-heist .empty{padding:7px 2px;font-size:.72rem}
.in-heist .library-panel{margin:3px 0;font-size:.56rem}
.in-heist .controlbar{grid-template-columns:1.3fr .95fr .95fr 1fr;height:42px;gap:5px}
.in-heist .controlbar button,.in-heist .controlbar button:not(.primary){font-size:.65rem;min-height:40px;padding:5px}
.in-heist .feedback{position:fixed;bottom:9px;left:50%;transform:translateX(-50%);z-index:8;max-width:min(75vw,550px);font-size:.67rem;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding:5px 10px;box-shadow:0 5px 18px #000a;pointer-events:none}
.in-heist .pool-box .section-label{margin-bottom:9px}
.in-heist .pool-box .section-label h2{font-size:1.1rem}
.in-heist .pool-console{padding:9px 7px}
.in-heist .pool-console-top{margin-bottom:7px;font-size:.48rem}
.in-heist .pool.mana-sockets{min-height:76px;gap:6px}
.in-heist .mana-socket{width:34px;height:34px}
.in-heist .socket-glow{width:27px;height:27px}
.in-heist .action-box{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(400px,calc(100vw - 24px));max-height:72dvh;overflow-y:auto;z-index:45;border:1px solid var(--gold);box-shadow:0 0 0 120vmax #020c10ba,0 24px 70px #000e;padding:15px}
.choice-close{border:1px solid var(--line);border-radius:99px;width:33px;height:33px;background:#30453e;font-size:.8rem}
.in-heist .win{position:absolute;inset:9px;z-index:10;margin:0;justify-content:center;flex-wrap:wrap;background:#203e35f0;box-shadow:0 10px 30px #000b;border-width:2px}
.in-heist .win>div{max-width:210px}
.in-heist .win button{margin-left:0}
.in-heist .footer,.in-heist footer{display:none}
.game-notes{padding:24px 0 70px;margin-top:25px;border-top:1px solid var(--line)}
.game-notes .notes-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.game-notes .notes-heading h2{font:normal 1.9rem Georgia,serif;margin:0 0 10px}
.game-notes .notes-heading>a{font-size:.72rem;font-weight:800;color:var(--gold);letter-spacing:.07em}
.game-notes>p.muted{font-size:.87rem;max-width:820px;margin:8px 0}
.game-notes .notes-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:16px 0 24px}
.game-notes .notes-grid h3{font:normal 1.18rem Georgia,serif;color:var(--gold)}
.game-notes .notes-grid p{font-size:.82rem}
#realCardReference{border-top:1px solid var(--line);padding-top:22px}
.reference-gallery{display:flex;flex-wrap:wrap;gap:16px;margin-top:20px}
.reference-card{display:flex;flex-direction:column;gap:7px;width:min(152px,calc((100vw - 54px)/2));font-size:.76rem;align-items:center;text-align:center}
.reference-card img{display:block;width:100%;height:auto;aspect-ratio:488/680;object-fit:contain;border-radius:6px;box-shadow:0 10px 22px #0006}
.reference-card span{font-weight:750;color:var(--gold)}
.reference-card.image-missing{border:1px dashed var(--line);border-radius:10px;justify-content:center;min-height:70px}
.copyright-note{color:var(--muted);font-size:.72rem;margin:20px 0 0}
.campaign-screen{margin:10px 0 20px}
@media(max-width:800px){
 .in-heist #gameScreen{height:calc(100dvh - 56px)}
 .in-heist #heist{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr);gap:0}
 .in-heist .play-column,.in-heist .side{display:contents}
 .in-heist #heist{grid-template-rows:minmax(165px,1.25fr) minmax(83px,.57fr) minmax(115px,1fr) minmax(90px,.83fr) 39px;row-gap:5px}
 .in-heist .vault-card{grid-row:1;min-height:0}
 .in-heist .side .pool-box{grid-row:2;min-height:0}
 .in-heist .table-card{grid-row:3;min-height:0}
 .in-heist .hand-card{grid-row:4;min-height:0}
 .in-heist .controlbar{grid-row:5;height:39px}
 .in-heist .feedback{max-width:calc(100vw - 35px);bottom:3px}
 .in-heist .vault-card{padding:6px 10px}
 .in-heist .vault-card>h2{font-size:1.2rem;margin:1px 0 3px}
 .in-heist .vault-stage{margin-top:5px;padding:5px 8px;min-height:60px;grid-template-columns:minmax(50px,70px) minmax(0,1fr);gap:9px}
 .in-heist .lock-ring{width:min(100%,68px)}
 .in-heist .lock-glyph{font-size:2.4rem}
 .in-heist .ring-text{font-size:.35rem}
 .in-heist .ward-info h3{font-size:1rem;margin:1px 0}
 .in-heist .ward-info .overline{font-size:.42rem}
 .in-heist .ward-info .primary{padding:6px;min-height:30px;font-size:.6rem;margin-top:2px}
 .in-heist .mana-cost .mana-glyph{width:20px;height:20px;font-size:.66rem}
 .in-heist .stats{padding:2px 0}
 .in-heist .stats small{font-size:.48rem}
 .in-heist .stats strong{font-size:.69rem}
 .in-heist .pool-box{padding:4px 9px}
 .in-heist .pool-box .section-label{margin:0 0 3px}
 .in-heist .pool-box .section-label .overline{display:none}
 .in-heist .pool-box .section-label h2{font-size:.91rem}
 .in-heist .pool-console{padding:3px 8px}
 .in-heist .pool-console-top{display:none}
 .in-heist .pool.mana-sockets{min-height:44px}
 .in-heist .mana-socket{height:29px;width:29px}
 .in-heist .socket-glow{height:23px;width:23px}
 .in-heist .table-card{padding:5px 8px}
 .in-heist .table-card .section-label .overline{display:none}
 .in-heist .table-card .section-label h2{font-size:.91rem}
 .in-heist .land-card{height:clamp(72px,13.4dvh,126px);width:clamp(53px,9.6dvh,88px)}
 .in-heist .hand-card .land-card{height:clamp(67px,11dvh,105px);width:clamp(49px,8.5dvh,78px)}
 .in-heist .controlbar{height:39px}
 .in-heist .controlbar button,.in-heist .controlbar button:not(.primary){min-height:38px;font-size:.57rem}
 .game-notes .notes-grid{grid-template-columns:1fr}
}
@media(max-width:390px){
 .in-heist .vault-topline .overline{font-size:.44rem}
 .in-heist .vault-card>h2{font-size:1.05rem}
 .in-heist .stats>div{padding:2px 3px}
 .in-heist .stats small{font-size:.41rem}
 .in-heist .stats strong{font-size:.59rem}
 .in-heist .land-card .land-name{font-size:.48rem}
 .in-heist .land-card .type-line{font-size:.38rem}
 .in-heist .controlbar button,.in-heist .controlbar button:not(.primary){font-size:.49rem}
}
@media(max-height:670px) and (max-width:800px){
 .in-heist #heist{grid-template-rows:minmax(135px,1.22fr) minmax(63px,.57fr) minmax(90px,1fr) minmax(68px,.75fr) 34px;row-gap:3px}
 .in-heist .land-card{height:clamp(57px,10dvh,85px);width:clamp(43px,7.2dvh,63px)}
 .in-heist .hand-card .land-card{height:clamp(53px,9dvh,77px);width:clamp(40px,6.9dvh,57px)}
 .in-heist .stats{padding:0}
 .in-heist .vault-stage{margin-top:2px;padding:3px 5px}
 .in-heist .pool.mana-sockets{min-height:32px}
 .in-heist .mana-socket{height:25px;width:25px}
 .in-heist .socket-glow{height:19px;width:19px}
 .in-heist .game-titlebar{flex-basis:28px;min-height:28px}
 .in-heist .game-titlebar button{min-height:26px;padding:3px 7px}
 .in-heist .controlbar button,.in-heist .controlbar button:not(.primary){min-height:31px}
}
@media(prefers-reduced-motion:reduce){.in-heist .land-card.is-tapped{animation:none}}

/* Keep the entire interactive table exactly one visual viewport; the reading section begins after the fold. */
.in-heist #gameScreen{height:100dvh}
@media(max-width:800px){.in-heist #gameScreen{height:100dvh}}

.in-heist .game-titlebar{justify-content:space-between}
.in-heist .game-titlebar .info-link{font-size:.65rem;color:var(--gold);letter-spacing:.04em;font-weight:800;border:1px solid var(--line);border-radius:7px;padding:8px}
@media(max-width:390px){.in-heist .game-titlebar .info-link{font-size:.55rem;padding:7px 4px}}

/* v0.5: controls live under the mana ledger, while land drops are tangible gestures. */
.in-heist .play-column{grid-template-rows:minmax(174px,1.2fr) minmax(130px,1fr) minmax(105px,.8fr)}
.in-heist .side>.controlbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(42px,auto);height:auto;gap:7px;margin-top:9px}
.in-heist .side>.controlbar button,.in-heist .side>.controlbar button:not(.primary){height:42px;min-height:42px;font-size:.66rem;padding:5px}
.in-heist #hand .land-card{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.in-heist #hand .land-card:active{cursor:grabbing}
.in-heist #hand .land-card .art-painting{pointer-events:none}
.in-heist .hand-card{position:relative}
.in-heist #battlefield{border:1px dashed #a6b9aa55;border-radius:8px;transition:border-color .15s,background .15s}
.in-heist .table-card:has(#battlefield).drop-target{position:relative;outline:3px solid #9de1b7;outline-offset:-4px;background:linear-gradient(125deg,#376b5055,#193536)}
.in-heist .table-card:has(#battlefield).drop-target:after{content:"RELEASE TO PLAY LAND";position:absolute;bottom:10px;right:12px;z-index:3;background:#133929e8;color:#d5ffe1;border:1px solid #aee8b2;padding:7px 9px;border-radius:7px;font-size:.62rem;font-weight:900;letter-spacing:.08em;pointer-events:none}
.in-heist .table-card:has(#battlefield).keyboard-armed{outline:3px dashed #d6c086}
.in-heist #hand .drag-origin{opacity:.32;filter:saturate(.4)}
.in-heist #hand .keyboard-picked{outline:3px solid #d9c28c}
.land-drag-ghost{position:fixed;pointer-events:none;z-index:100;transform:translate(-50%,-84%) rotate(-7deg) scale(1.04);opacity:.96;box-shadow:0 15px 32px #000d,0 0 0 3px #a1ddbb!important;user-select:none;will-change:top,left;transition:none!important}
@media(max-width:800px){
 .in-heist .side>.controlbar{grid-column:1;grid-row:5;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:auto;gap:5px;height:39px;margin-top:0}
 .in-heist .side>.controlbar button,.in-heist .side>.controlbar button:not(.primary){min-height:38px;height:38px;font-size:.57rem}
}
@media(max-width:390px){
 .in-heist .side>.controlbar button,.in-heist .side>.controlbar button:not(.primary){font-size:.49rem}
}
@media(max-height:670px) and (max-width:800px){
 .in-heist .side>.controlbar{height:34px}
 .in-heist .side>.controlbar button,.in-heist .side>.controlbar button:not(.primary){min-height:31px;height:31px}
}
@media(prefers-reduced-motion:reduce){
 .in-heist #battlefield{transition:none}
}

/* The touch layout keeps actions immediately beneath the reservoir, before the land rows. */
@media(max-width:800px){
 .in-heist #heist{grid-template-rows:minmax(165px,1.25fr) minmax(83px,.57fr) 39px minmax(115px,1fr) minmax(90px,.83fr)}
 .in-heist .side>.controlbar{grid-row:3}
 .in-heist #heist .table-card:not(.hand-card){grid-row:4}
 .in-heist #heist .hand-card{grid-row:5}
}
@media(max-height:670px) and (max-width:800px){
 .in-heist #heist{grid-template-rows:minmax(135px,1.22fr) minmax(63px,.57fr) 34px minmax(90px,1fr) minmax(68px,.75fr)}
}


/* v0.6: Scryfall learning reference inspector — original game pieces remain untouched. */
.in-heist .game-titlebar #inspectLand{background:#24403a;border:1px solid #d4bc8366;border-radius:7px;color:var(--gold);cursor:pointer;font:800 .64rem system-ui;letter-spacing:.04em;padding:8px 6px;min-height:31px;white-space:nowrap}
.in-heist .game-titlebar #inspectLand:hover{background:#355c4f}
.reference-inspector{position:fixed;inset:0;z-index:160;display:flex;align-items:center;justify-content:center;padding:12px;background:#051110d9;backdrop-filter:blur(8px);overflow:auto}
.reference-inspector[hidden]{display:none}
.reference-inspector-panel{border:1px solid #c9ad795c;background:linear-gradient(145deg,#213a36,#111c20);border-radius:14px;width:min(400px,100%);max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;padding:15px 18px;box-shadow:0 20px 80px #000c;text-align:center;display:flex;flex-direction:column;align-items:center}
.reference-inspector-header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;margin:0 0 6px}
.reference-inspector-header .overline{font-size:.55rem;margin:0 0 3px}
.reference-inspector-header h2{font:normal 1.6rem Georgia,serif;color:var(--gold);margin:0}
.reference-inspector #inspectorGameCard{margin:3px 0 10px;font-size:.69rem;line-height:1.35}
.reference-inspector .inspector-full-card{max-width:100%;width:auto;height:auto;max-height:min(54dvh,420px);aspect-ratio:488/680;object-fit:contain;border-radius:9px;display:block;box-shadow:0 12px 28px #0009}
.reference-inspector .inspector-full-card[hidden]{display:none}
.inspector-link{display:block;width:100%;border:1px solid #ddc08c;color:#edcf98;background:#354b3d;text-align:center;padding:9px 12px;border-radius:7px;font-size:.76rem;font-weight:850;letter-spacing:.06em;margin-top:12px}
.inspector-link:hover{background:#50624a}
.inspector-legal{font-size:.61rem;color:var(--muted);line-height:1.45;margin:10px 0 0;text-align:left}
@media(max-width:390px){.in-heist .game-titlebar #inspectLand{font-size:.52rem;padding:7px 4px}.reference-inspector-panel{padding:10px 12px}.reference-inspector-header h2{font-size:1.26rem}}
@media(max-height:620px){.reference-inspector{align-items:flex-start}.reference-inspector .inspector-full-card{max-height:42dvh}.reference-inspector-legal{font-size:.57rem}}

/* v0.7: Unmodified full Scryfall MTG scans are the actual drag/tap land pieces. */
.land-card.mtg-real-land,
.in-heist .land-card.mtg-real-land,
.in-heist .hand-card .land-card.mtg-real-land{
 padding:0!important;
 background:#050909!important;
 border:1px solid #d6c49b!important;
 border-radius:5px!important;
 overflow:hidden!important;
 display:block!important;
 box-shadow:0 3px 8px #0009;
 color:inherit;
 aspect-ratio:488 / 680;
 text-align:center;
 transition:transform .24s ease,box-shadow .2s ease;
}
.land-card.mtg-real-land .mtg-card-image{
 display:block!important;
 position:absolute;
 inset:0;
 width:100%!important;
 height:100%!important;
 object-fit:contain!important;
 border:0!important;
 margin:0!important;
 padding:0!important;
 border-radius:0!important;
 max-height:none!important;
 filter:none!important;
 transform:none!important;
 opacity:1;
 pointer-events:none;
 user-select:none;
}
.land-card.mtg-real-land .mtg-fallback{display:none}
.land-card.mtg-real-land.image-failed .mtg-card-image{display:none!important}
.land-card.mtg-real-land.image-failed .mtg-fallback{
 display:flex;
 flex-direction:column;
 gap:5px;
 width:100%;
 height:100%;
 padding:4px;
 overflow:hidden;
 font-size:.65rem;
 color:var(--gold);
}
.land-card.mtg-real-land.image-failed .mtg-fallback .art-painting{width:100%;flex:1;min-height:0}
.in-heist .land-card.mtg-real-land.is-tapped,
.in-heist .land-card.mtg-real-land.is-tapped:hover{
 animation:none!important;
 transform:rotate(90deg) scale(.82)!important;
 filter:none!important;
 opacity:1!important;
}
.land-card.mtg-real-land.is-tapped .mtg-card-image{filter:none!important;opacity:1!important}
.in-heist #hand .land-card.mtg-real-land{touch-action:none;cursor:grab}
.in-heist #hand .land-card.mtg-real-land.drag-origin{opacity:.32!important}
.in-heist #hand .land-card.mtg-real-land.keyboard-picked{outline:3px solid #ffd278}
.land-drag-ghost.land-card.mtg-real-land{
 transform:translate(-50%,-84%) rotate(-7deg) scale(1.04)!important;
 filter:none!important;
 border:0!important;
 overflow:visible!important;
}
@media(prefers-reduced-motion:reduce){
 .land-card.mtg-real-land{transition:none!important}
}


/* v0.8 — Larger legible Scryfall land cards.
   A sideways card gets a landscape hitbox, with the scan rotated INSIDE it:
   the full copyright/artist frame stays visible and never clips at the edge.
   Hand and battlefield scale independently to stay in the one-screen table. */
.in-heist #battlefield{--mh-land-width:clamp(128px,13vw,168px)}
.in-heist #hand{--mh-land-width:clamp(105px,11vw,140px)}
.in-heist #battlefield .land-card.mtg-real-land:not(.is-tapped),
.in-heist #hand .land-card.mtg-real-land:not(.is-tapped){
 width:var(--mh-land-width)!important;
 height:calc(var(--mh-land-width) * 680 / 488)!important;
 min-width:0!important;
 max-width:none!important;
 flex:0 0 auto!important;
 aspect-ratio:488/680!important;
 margin:0 2px!important;
}
.in-heist #battlefield .land-card.mtg-real-land.is-tapped{
 width:calc(var(--mh-land-width) * 680 / 488)!important;
 height:var(--mh-land-width)!important;
 min-width:0!important;
 max-width:none!important;
 flex:0 0 auto!important;
 aspect-ratio:680/488!important;
 margin:0 3px!important;
 transform:none!important;
 overflow:hidden!important;
 filter:none!important;
}
.in-heist #battlefield .land-card.mtg-real-land.is-tapped .mtg-card-image{
 inset:auto!important;
 top:50%!important;
 left:50%!important;
 width:var(--mh-land-width)!important;
 height:calc(var(--mh-land-width) * 680 / 488)!important;
 max-height:none!important;
 transform:translate(-50%,-50%) rotate(90deg)!important;
 transform-origin:center!important;
 object-fit:contain!important;
 filter:none!important;
}
.in-heist #battlefield .land-card.mtg-real-land.is-tapped .mtg-fallback{
 width:var(--mh-land-width)!important;
 height:calc(var(--mh-land-width) * 680 / 488)!important;
 position:absolute!important;
 top:50%!important;
 left:50%!important;
 transform:translate(-50%,-50%) rotate(90deg)!important;
}
.in-heist #battlefield .land-card.mtg-real-land{
 flex-shrink:0!important;
}
.in-heist #battlefield .land-card.mtg-real-land:hover,
.in-heist #hand .land-card.mtg-real-land:hover{
 box-shadow:0 0 0 2px #e7d59d,0 0 23px #d9c28d77!important;
}
.in-heist .land-grid{scrollbar-width:thin}
.in-heist #battlefield,.in-heist #hand{
 align-items:center!important;
 justify-content:flex-start!important;
}

/* Ward denial: temporary red aura, tremor and glowing missing mana glyphs.
   JS applies/restarts animation on each invalid cast, including repeat attempts. */
.in-heist #wardCost .mana-glyph.mana-error-glyph{
 border-color:#ff6174!important;
 color:#fff!important;
 background:#bc293d!important;
 text-shadow:0 1px 7px #fff;
}
.in-heist .feedback.bad{
 background:linear-gradient(100deg,#521b28ee,#852938ee,#481e2bee)!important;
 border:1px solid #ff6d82!important;
 color:#ffe4e3!important;
 box-shadow:0 0 18px #ed445480,0 6px 25px #000a!important;
 font-weight:800;
}
.in-heist .vault-card{isolation:isolate}
@media(max-width:800px){
 .in-heist #battlefield{--mh-land-width:clamp(67px,11.7dvh,102px)}
 .in-heist #hand{--mh-land-width:clamp(59px,10.5dvh,94px)}
 .in-heist #battlefield,.in-heist #hand{gap:8px!important}
}
@media(max-height:670px) and (max-width:800px){
 .in-heist #battlefield{--mh-land-width:clamp(58px,10.6dvh,75px)}
 .in-heist #hand{--mh-land-width:clamp(52px,9.2dvh,65px)}
 .in-heist #battlefield,.in-heist #hand{gap:5px!important}
}
@media(prefers-reduced-motion:reduce){
 .in-heist #battlefield .land-card.mtg-real-land.is-tapped .mtg-card-image{
  transform:translate(-50%,-50%) rotate(90deg)!important;
 }
}

/* Give the cards the space that was formerly wasted beneath the ward header. */
@media(min-width:801px){
 .in-heist .play-column{
  grid-template-rows:minmax(212px,.88fr) minmax(186px,1.21fr) minmax(142px,1fr)!important;
 }
}
@media(min-width:801px) and (max-height:760px){
 .in-heist #battlefield{--mh-land-width:clamp(115px,11vw,137px)}
 .in-heist #hand{--mh-land-width:clamp(96px,9.6vw,122px)}
}


/* 0.9 · A ward that physically charges as mana flies into it. */
.lock-ring{isolation:isolate}
.ward-mana-ring{
 position:absolute;inset:0;width:100%;height:100%;z-index:2;
 overflow:visible;pointer-events:none;
 filter:drop-shadow(0 0 5px #203d39);
}
.ward-charge-back{fill:none;stroke:rgba(207,184,123,.1);stroke-width:11}
.ward-charge-track{fill:none;stroke:rgba(185,200,185,.17);stroke-width:9;stroke-linecap:round}
.ward-charge-arc{
 fill:none;stroke-width:9;stroke-linecap:round;
 filter:drop-shadow(0 0 3px currentColor);
 transition:filter .16s ease;
}
.lock-ring .lock-glyph{position:relative;z-index:3;line-height:.9}
.lock-ring .ward-charge-count{
 position:relative;z-index:3;margin-top:3px;
 font:bold clamp(.45rem,.8vw,.63rem) system-ui,sans-serif;
 color:#e9d6a8;letter-spacing:.1em;
 text-shadow:0 2px 9px #051215;
}
.lock-ring .ring-text{position:relative;z-index:3}
.lock-ring:has(.ward-charge-arc) .lock-glyph{text-shadow:0 0 15px #c8d7bcbb}
.pool-console.ledger-console{
 padding:11px 12px;border-radius:10px;
 background:linear-gradient(165deg,#162a2c,#0f1c20);
 box-shadow:inset 0 0 14px #07191c,0 6px 16px #0005;
}
.mana-ledger-grid{
 display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
 grid-auto-rows:minmax(54px,1fr);
 gap:7px;align-items:center;justify-items:stretch;
 min-height:121px;
}
.mana-ledger-entry{
 min-width:0;min-height:53px;
 display:flex;flex-direction:column;gap:3px;align-items:center;justify-content:center;
 border:1px solid #889e8a35;border-radius:7px;
 background:linear-gradient(180deg,#1b3131,#142327);
 font-weight:850;letter-spacing:.055em;color:#d6ddd3;
}
.mana-ledger-entry.vacant{opacity:.35;background:#112227;border-style:dashed}
.mana-ledger-entry .ledger-dot{
 display:grid;place-items:center;
 width:27px;height:27px;flex-shrink:0;border-radius:50%;
 font:bold .78rem Georgia,serif;
 color:#172227;text-shadow:0 1px 2px #fff8;
 border:1.5px solid #f6f4dc77;
 background:radial-gradient(circle at 30% 25%,#fff,var(--mana-color) 55%,#233438);
 box-shadow:0 0 10px color-mix(in srgb,var(--mana-color),transparent 48%);
}
.mana-ledger-entry .ledger-dot.ledger-blank{
 color:#8fa6a2;background:#23343a;border:1px dashed #859a9966;
 box-shadow:none;text-shadow:none;
}
.mana-ledger-entry .ledger-word{font-size:.57rem;line-height:1;color:#c6d5cd}
.mana-ledger-entry.occupied.in-flight{opacity:.56}
.mana-ledger-entry.occupied:not(.in-flight){animation:ledgerManaAppear .28s ease-out}
@keyframes ledgerManaAppear{from{filter:brightness(1.7);transform:scale(.88)}to{filter:brightness(1);transform:scale(1)}}
.mana-flight{border:2px solid #ffffff8c;z-index:999}
@media(max-width:800px){
 .pool-console.ledger-console{padding:3px 6px}
 .mana-ledger-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(29px,1fr);min-height:51px;gap:3px}
 .mana-ledger-entry{min-height:27px;flex-direction:row;gap:3px;padding:2px}
 .mana-ledger-entry .ledger-dot{width:18px;height:18px;font-size:.58rem}
 .mana-ledger-entry .ledger-word{font-size:.44rem;letter-spacing:0}
 .lock-ring .ward-charge-count{font-size:.43rem;margin-top:1px}
 .lock-ring .ring-text{font-size:.35rem}
}
@media(max-height:670px) and (max-width:800px){
 .mana-ledger-grid{grid-auto-rows:minmax(20px,1fr);min-height:39px;gap:2px}
 .mana-ledger-entry{min-height:19px;padding:0}
 .mana-ledger-entry .ledger-dot{width:15px;height:15px;font-size:.45rem}
 .mana-ledger-entry .ledger-word{font-size:.39rem}
}
@media(prefers-reduced-motion:reduce){
 .ward-charge-arc{transition:none}
 .mana-ledger-entry.occupied:not(.in-flight){animation:none}
}

/* Translucent pie slices fill the *inside* of the ward circle in equal thirds. */
.ward-mana-sector{
 opacity:.43;stroke:none;
 transform-box:fill-box;transform-origin:center;
 filter:drop-shadow(0 0 3px #f5e8e777);
}
.lock-ring:has(.ward-mana-sector) .lock-glyph{
 color:#fff4d9;text-shadow:0 0 12px #050f12,0 0 5px #030707;
}
.ward-charge-arc{stroke-width:9}
@media(prefers-reduced-motion:reduce){.ward-mana-sector{animation:none;transition:none}}


/* Shared Lab navigation, preserved from the concurrent standalone-games release. */
.bar .lab-home-link{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 11px;border:1px solid #c7ac7255;border-radius:5px;background:#243c39;color:#edce92;white-space:nowrap;line-height:1.4}
.bar .lab-home-link:hover{background:#2f5049;color:#ffe6ab}
.bar .lab-home-link:focus-visible{outline:3px solid #e7ca90;outline-offset:2px}
@media(max-width:580px){
 .bar{gap:7px}
 .bar-actions{gap:6px;min-width:0}
 .bar .test-stamp{display:none}
 .bar .lab-home-link{padding:7px 8px;min-height:38px;font-size:.62rem;letter-spacing:.025em}
 .bar .brand{font-size:.63rem;letter-spacing:.06em}
}


/* 1.0 — No sidebar and no mana ledger: full-width playtable. */
.in-heist #heist{
 display:grid!important;
 grid-template-columns:minmax(0,1fr)!important;
 grid-template-rows:minmax(0,1fr)!important;
 gap:0!important;
 flex:1;
 min-height:0;
}
.in-heist #heist .play-column{
 display:grid!important;
 grid-template-columns:minmax(0,1fr)!important;
 grid-template-rows:minmax(162px,.85fr) 42px minmax(176px,1.3fr) minmax(120px,1fr)!important;
 gap:7px!important;
 min-height:0;
}
.in-heist #heist .vault-card{grid-column:1!important;grid-row:1!important}
.in-heist #heist .play-column>.controlbar{
 grid-column:1!important;grid-row:2!important;
 display:grid!important;
 grid-template-columns:repeat(4,minmax(0,1fr))!important;
 gap:7px!important;height:42px!important;margin:0!important;
}
.in-heist #heist .play-column>.controlbar button,
.in-heist #heist .play-column>.controlbar button:not(.primary){
 width:100%;height:42px;min-height:42px!important;
 padding:5px 8px;font-size:.69rem!important;
}
.in-heist #heist .table-card:not(.hand-card){grid-column:1!important;grid-row:3!important}
.in-heist #heist .table-card.hand-card{grid-column:1!important;grid-row:4!important}
.in-heist #heist .play-column>.feedback{grid-column:1;grid-row:5}
.in-heist #heist .action-box{z-index:60}
.auto-cast-status{
 display:flex;align-items:center;justify-content:center;gap:9px;
 width:100%;margin-top:9px;
 padding:9px 12px;min-height:37px;
 border:1px solid #9bc8a16c;border-radius:6px;
 background:linear-gradient(110deg,#24453f,#183733);
 color:#c3ebce;font-size:.65rem;font-weight:900;letter-spacing:.08em;
 box-shadow:inset 0 0 18px #97bd8826;
}
.auto-cast-pip{color:#bcefd2;font:normal 1.1rem Georgia,serif;text-shadow:0 0 10px #94efce}
.lock-ring.auto-primed{
 box-shadow:inset 0 0 45px #e5ba6980,0 0 0 4px #ecc67b80,0 0 28px #e8cd7f9c;
 border-color:#ffe4a8;
 animation:wardPrimePulse .56s ease-in-out infinite alternate;
}
.lock-ring.auto-primed .lock-glyph{color:#fff3cd;text-shadow:0 0 20px #f6d28c}
@keyframes wardPrimePulse{
 from{filter:brightness(1)}
 to{filter:brightness(1.35)}
}
.in-heist .lock-ring.auto-primed+.ward-info .auto-cast-status{border-color:#edcc8c}
@media(max-width:800px){
 .in-heist #heist{grid-template-rows:minmax(0,1fr)!important}
 .in-heist #heist .play-column{
  grid-template-rows:minmax(150px,1.03fr) 39px minmax(130px,1fr) minmax(105px,.78fr)!important;
  gap:5px!important;
 }
 .in-heist #heist .play-column>.controlbar{height:39px!important;gap:4px!important}
 .in-heist #heist .play-column>.controlbar button,
 .in-heist #heist .play-column>.controlbar button:not(.primary){
  height:38px!important;min-height:38px!important;font-size:.59rem!important;padding:4px!important;
 }
 .in-heist .auto-cast-status{min-height:27px;padding:5px;font-size:.52rem;margin-top:4px;gap:5px}
 .in-heist .auto-cast-pip{font-size:.8rem}
}
@media(max-width:390px){
 .in-heist #heist .play-column>.controlbar button,
 .in-heist #heist .play-column>.controlbar button:not(.primary){font-size:.5rem!important}
}
@media(max-width:800px) and (max-height:670px){
 .in-heist #heist .play-column{
  grid-template-rows:minmax(124px,1fr) 33px minmax(104px,1fr) minmax(75px,.73fr)!important;
  gap:3px!important;
 }
 .in-heist #heist .play-column>.controlbar{height:33px!important}
 .in-heist #heist .play-column>.controlbar button,
 .in-heist #heist .play-column>.controlbar button:not(.primary){
  min-height:32px!important;height:32px!important;
 }
}
@media(prefers-reduced-motion:reduce){.lock-ring.auto-primed{animation:none!important}}


/* 1.1: Desktop and mobile clip repair. The vault owns its intrinsic height;
   the battlefield and hand share the rest of the single-screen play area.
   Earlier fixed fractional grid tracks could clip the ward circle and cards. */
.in-heist #heist .play-column{
 grid-template-rows:minmax(max-content, 226px) 42px minmax(0,1fr) minmax(0,1fr)!important;
 gap:7px!important;
 min-height:0!important;
}
.in-heist #heist .vault-card{
 min-height:0!important;
 height:auto!important;
 overflow:visible!important;
}
.in-heist #heist .vault-stage{
 flex:0 0 auto!important;
 min-height:112px!important;
 margin:5px 0 0!important;
 padding:8px 10px!important;
}
.in-heist #heist .lock-ring{
 width:100px!important;
 height:100px!important;
 max-width:100%!important;
}
.in-heist #heist .ward-info{
 min-height:0!important;
 gap:1px!important;
}
.in-heist #heist .auto-cast-status{
 min-height:30px!important;
 margin-top:4px!important;
 padding:6px 10px!important;
}
.in-heist #heist .table-card{overflow:hidden!important;min-height:0!important}
.in-heist #heist .table-card .land-grid{
 min-height:0!important;
 overflow-x:auto!important;
 overflow-y:hidden!important;
}
.in-heist #battlefield{
 --mh-land-width:clamp(94px,calc((100dvh - 425px)*.39),166px);
}
.in-heist #hand{
 --mh-land-width:clamp(85px,calc((100dvh - 445px)*.30),138px);
}
.in-heist #battlefield .land-card.mtg-real-land:not(.is-tapped),
.in-heist #hand .land-card.mtg-real-land:not(.is-tapped){
 width:auto!important;
 height:min(calc(var(--mh-land-width)*680/488),calc(100% - 8px))!important;
 aspect-ratio:488/680!important;
 flex:0 0 auto!important;
}
.in-heist #battlefield .land-card.mtg-real-land.is-tapped{
 height:min(var(--mh-land-width),calc(100% - 8px))!important;
 width:auto!important;
 aspect-ratio:680/488!important;
 flex:0 0 auto!important;
}
.in-heist #battlefield .land-card.mtg-real-land.is-tapped .mtg-card-image{
 width:var(--mh-land-width)!important;
 height:calc(var(--mh-land-width)*680/488)!important;
}
.in-heist #heist .play-column>.controlbar{position:relative;z-index:1}
.in-heist .game-titlebar{justify-content:space-between}
.in-heist .game-titlebar .stage-label{margin:auto}
@media(max-width:800px){
 .in-heist #heist .play-column{
  grid-template-rows:minmax(147px,max-content) 39px minmax(0,1fr) minmax(0,1fr)!important;
  gap:5px!important;
 }
 .in-heist #heist .vault-stage{
  min-height:77px!important;padding:4px 7px!important;margin-top:3px!important;
 }
 .in-heist #heist .lock-ring{width:66px!important;height:66px!important}
 .in-heist #heist .auto-cast-status{min-height:23px!important;margin-top:2px!important;padding:3px 6px!important}
 .in-heist #battlefield{--mh-land-width:clamp(64px,11.1dvh,104px)}
 .in-heist #hand{--mh-land-width:clamp(58px,10.0dvh,95px)}
}
@media(max-width:800px) and (max-height:670px){
 .in-heist #heist .play-column{
  grid-template-rows:minmax(127px,max-content) 33px minmax(0,1fr) minmax(0,1fr)!important;
  gap:3px!important;
 }
 .in-heist #heist .vault-stage{min-height:70px!important;margin-top:2px!important;padding:2px 5px!important}
 .in-heist #heist .lock-ring{width:57px!important;height:57px!important}
 .in-heist #heist .auto-cast-status{min-height:20px!important}
 .in-heist #battlefield{--mh-land-width:clamp(54px,10dvh,76px)}
 .in-heist #hand{--mh-land-width:clamp(49px,9dvh,68px)}
}
@media(prefers-reduced-motion:reduce){
 .in-heist .game-titlebar .stage-label{animation:none}
}


/* 2.0: five galaxies, five worlds each, ten challenge nodes per world. */
.galaxy-navigation{
 position:relative;z-index:2;
 display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
 gap:8px;margin:22px 0 4px;
}
.galaxy-tab{
 display:flex;align-items:center;gap:10px;min-width:0;
 border:1px solid #c7b47a44;border-radius:10px;
 background:linear-gradient(150deg,#233934,#14282d);
 padding:12px 9px;color:#cddbd1;cursor:pointer;text-align:left;
 transition:background .18s,border-color .18s,transform .18s;
}
.galaxy-tab .galaxy-symbol{
 flex:0 0 34px;width:34px;height:34px;border:1px solid #c8b87f65;
 display:grid;place-items:center;border-radius:50%;
 color:#eed39a;font:normal 1.6rem Georgia,serif;
 background:radial-gradient(circle,#69735448,#122626);
}
.galaxy-tab span:nth-child(2){display:flex;flex-direction:column;gap:4px;min-width:0}
.galaxy-tab b{font-size:.62rem;letter-spacing:.08em;color:#eed6a7}
.galaxy-tab small{font-size:.54rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#b9c7b9}
.galaxy-tab em{font:normal .57rem system-ui;color:#c7ad77}
.galaxy-tab.active{background:linear-gradient(135deg,#436659,#2b4547);border-color:#efce8f;box-shadow:0 0 22px #c4aa6734}
.galaxy-tab:not(:disabled):hover{transform:translateY(-2px);border-color:#e6c78e}
.galaxy-tab:disabled{opacity:.38;cursor:not-allowed}
.campaign-track .chapter-picker{
 display:grid!important;
 grid-template-columns:repeat(5,minmax(0,1fr))!important;
 gap:10px!important;align-items:stretch!important;
 justify-content:stretch!important;
}
.campaign-track .overworld-stage{
 width:100%!important;min-width:0!important;max-width:none!important;
 min-height:135px!important;padding:11px 7px!important;
 display:flex;flex-direction:column;align-items:center;justify-content:center;
}
.campaign-track .path-line{top:50%;left:4%;right:4%;opacity:.45}
.campaign-top .campaign-total{white-space:nowrap}
@media(max-width:840px){
 .galaxy-navigation{gap:5px;margin-top:14px}
 .galaxy-tab{padding:8px 5px;gap:4px;justify-content:center}
 .galaxy-tab .galaxy-symbol{display:none}
 .galaxy-tab b{font-size:.53rem}
 .galaxy-tab small{font-size:.44rem}
 .galaxy-tab em{font-size:.49rem}
 .campaign-track .chapter-picker{gap:6px!important}
 .campaign-track .overworld-stage{min-height:120px!important;padding:7px 3px!important}
 .campaign-track .overworld-stage strong{font-size:.57rem}
 .campaign-track .overworld-stage .stage-node{width:30px;height:30px;font-size:1rem}
}
@media(max-width:520px){
 .galaxy-navigation{grid-template-columns:repeat(5,minmax(0,1fr));gap:3px}
 .galaxy-tab{padding:7px 2px;border-radius:6px}
 .galaxy-tab b{font-size:.47rem;letter-spacing:0}
 .galaxy-tab small{display:none}
 .galaxy-tab em{font-size:.44rem}
 .campaign-track .chapter-picker{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
 .campaign-track .overworld-stage{min-height:105px!important}
 .campaign-track .overworld-stage .stage-detail{font-size:.51rem}
 .campaign-track{padding:15px 8px!important}
 .world-navigation{grid-template-columns:75px minmax(0,1fr) 75px}
 .world-navigation>button{font-size:.48rem}
}
/* Full-card hover/focus magnifier shows the SAME image (canvas drawing),
   so a random reprint cannot change or trigger another network request. */
.card-magnifier{
 position:fixed;z-index:450;pointer-events:none;
 width:min(320px,calc(100vw - 24px));
 padding:9px 11px 11px;
 border:2px solid #dbbf81;border-radius:12px;
 background:linear-gradient(160deg,#223a37,#0a1b21);
 box-shadow:0 28px 80px #000e,0 0 30px #d8ae6350;
 color:#eadab4;
}
.card-magnifier[hidden]{display:none}
.card-magnifier .magnifier-header{
 display:flex;align-items:center;justify-content:space-between;
 gap:8px;margin-bottom:7px;font-size:.59rem;letter-spacing:.08em;
}
.card-magnifier .magnifier-header span{font-size:.5rem;color:#a9b7b0}
.card-magnifier canvas{
 display:block;width:100%;height:auto;
 max-height:calc(100dvh - 91px);
 aspect-ratio:488/680;object-fit:contain;
 border:1px solid #c8c0a666;border-radius:9px;
}
.card-magnifier p{margin:8px 2px 0;font-size:.57rem;color:#b4cac1}
.in-heist .land-card.mtg-real-land:hover,
.in-heist .land-card.mtg-real-land:focus-visible{
 outline:2px solid #f4dfad!important;outline-offset:2px;
 box-shadow:0 0 0 3px #d6b57966,0 0 20px #d3b37966!important;
}
@media(hover:none) and (pointer:coarse){.card-magnifier{display:none!important}}
@media(prefers-reduced-motion:reduce){
 .galaxy-tab{transition:none}
}


/* 2.1: top-down enchanted water with physically stirred dye — not rim particles. */
.lock-ring.fluid-enabled{--fusion-color:#32616d;position:relative;isolation:isolate;cursor:grab;transition:box-shadow .28s,border-color .28s}
.lock-ring.fluid-enabled.is-stirring{cursor:grabbing;box-shadow:inset 0 0 26px #71b0bd77,0 0 26px var(--fusion-color)!important}
.lock-ring.fluid-enabled .ward-fluid-canvas{
 display:block;position:absolute;inset:0;z-index:1;width:100%;height:100%;
 border-radius:50%;touch-action:none;cursor:grab;pointer-events:auto;
 user-select:none;-webkit-user-select:none;
 box-shadow:inset 0 0 11px #050d13,0 0 14px var(--fusion-color);
}
.lock-ring.fluid-enabled.is-stirring .ward-fluid-canvas{cursor:grabbing}
.lock-ring.fluid-enabled .ward-mana-ring{
 z-index:2;pointer-events:none;
 filter:drop-shadow(0 0 7px var(--fusion-color));
}
.lock-ring.fluid-enabled .ward-charge-back{stroke:#f0dba188;stroke-width:5;fill:none}
.lock-ring.fluid-enabled .ward-water-rim{fill:none;stroke:#f8eac3bb;stroke-width:2.4}
.lock-ring.fluid-enabled .lock-glyph,
.lock-ring.fluid-enabled .ward-charge-count,
.lock-ring.fluid-enabled .ring-text{z-index:3;pointer-events:none;position:relative}
.lock-ring.fluid-enabled .lock-glyph{color:#fff5df;text-shadow:0 2px 7px #0c1e24,0 0 10px var(--fusion-color)}
.lock-ring.fluid-enabled .ward-charge-count{
 color:#ffffff;text-shadow:0 2px 7px #0a111b,0 0 10px #04070b;
 background:#0e223366;border-radius:9px;padding:1px 5px
}
.lock-ring.fluid-enabled .ring-text{color:#fff3d9;text-shadow:0 1px 6px #08141a}
.lock-ring.fluid-enabled.auto-primed{
 border-color:#f8e6bd!important;
 box-shadow:inset 0 0 28px var(--fusion-color),0 0 0 3px #edcf9280,0 0 30px var(--fusion-color)!important;
 animation:waterPrimePulse .6s ease-in-out infinite alternate
}
@keyframes waterPrimePulse{from{filter:brightness(1)}to{filter:brightness(1.24)}}
@media(prefers-reduced-motion:reduce){
 .lock-ring.fluid-enabled,.lock-ring.fluid-enabled.auto-primed{animation:none!important;transition:none!important}
}

/* Give the stirred pool a little more working room without resizing the board.
   The temporary hover enlargement never changes document height or card rows. */
@media(hover:hover) and (min-width:801px){
 .in-heist .lock-ring.fluid-enabled:hover,
 .in-heist .lock-ring.fluid-enabled.is-stirring{
  transform:scale(1.38);transform-origin:center;z-index:30;
  transition:transform .17s cubic-bezier(.2,.85,.25,1),box-shadow .2s;
 }
}
@media(prefers-reduced-motion:reduce){
 .in-heist .lock-ring.fluid-enabled:hover{transform:none!important}
}


/* Mana Heist 2.2 — the cauldron is the focal point, not a tiny status icon.
   Preserve the one-screen play table with battlefield and hand beneath it. */
.in-heist #heist .play-column{
 grid-template-rows:minmax(0,1fr) 40px minmax(85px,.28fr) minmax(78px,.23fr)!important;
 gap:6px!important;
}
.in-heist #heist .vault-card{
 display:flex!important;flex-direction:column!important;align-items:center!important;
 gap:0!important;padding:8px 14px!important;overflow:hidden!important;
}
.in-heist #heist .vault-topline,
.in-heist #heist .vault-card>h2,
.in-heist #heist .stats{width:100%;flex:0 0 auto!important}
.in-heist #heist .vault-card>h2{margin:2px 0!important;text-align:center;font-size:clamp(1rem,1.75vw,1.45rem)}
.in-heist #heist .stats{padding:3px 0!important;margin:2px 0 4px!important;max-width:540px}
.in-heist #heist .stats>div{padding:2px 8px!important;text-align:center}
.in-heist #heist .stats small{font-size:.46rem!important;margin-bottom:1px}
.in-heist #heist .stats strong{font-size:.71rem!important}
.in-heist #heist .vault-stage{
 flex:1 1 0!important;display:flex!important;flex-direction:column!important;
 align-items:center!important;justify-content:center!important;
 width:100%!important;min-height:0!important;
 gap:7px!important;padding:5px 8px!important;margin:2px 0!important;
 background:radial-gradient(ellipse at 50% 40%,#31524c 0%,#192f34 42%,#0b2026 100%);
 border-color:#c3a77650;overflow:hidden!important;
}
.in-heist #heist #wardTarget.lock-ring{
 width:min(35dvh,360px)!important;height:min(35dvh,360px)!important;
 min-width:0!important;min-height:0!important;max-width:100%!important;
 aspect-ratio:1!important;flex:0 1 auto!important;transform:none!important;
 border-width:3px!important;border-color:#d8ba7d!important;
 box-shadow:0 0 0 7px #d6b87c17,0 0 40px var(--fusion-color),inset 0 0 19px #0008!important;
 transition:box-shadow .24s ease,filter .24s ease!important;
}
.in-heist #heist #wardTarget.lock-ring:hover,
.in-heist #heist #wardTarget.lock-ring.is-stirring{
 transform:none!important;
 box-shadow:0 0 0 8px #d6b87c23,0 0 53px var(--fusion-color),inset 0 0 14px #0007!important;
}
.in-heist #heist #wardTarget.lock-ring .lock-glyph{
 font-size:clamp(1.6rem,3.2dvh,2.3rem)!important;
 opacity:.65;text-shadow:0 2px 8px #06141f;
}
.in-heist #heist #wardTarget.lock-ring .ward-charge-count{
 font-size:clamp(.61rem,1.15dvh,.81rem)!important;
 padding:2px 8px!important;border:1px solid #fff5;
}
.in-heist #heist #wardTarget.lock-ring .ring-text{
 font-size:clamp(.42rem,.83dvh,.61rem)!important;letter-spacing:.09em!important;
}
.in-heist #heist .ward-info{
 flex:0 0 auto!important;display:flex!important;flex-direction:row!important;
 justify-content:center!important;align-items:center!important;
 width:100%!important;gap:6px 14px!important;min-height:0!important;
 text-align:center!important;
}
.in-heist #heist .ward-info>.overline{display:none!important}
.in-heist #heist .ward-info h3{font-size:clamp(.85rem,1.45vw,1.12rem)!important;margin:0!important}
.in-heist #heist .ward-info .mana-cost{margin:0!important}
.in-heist #heist .ward-info .auto-cast-status{
 width:auto!important;min-height:27px!important;padding:5px 12px!important;
 margin:0!important;font-size:.54rem!important;
}
.in-heist #heist .table-card{padding:5px 11px!important}
.in-heist #heist .table-card .section-label{margin-bottom:2px!important}
.in-heist #heist .table-card .section-label h2{font-size:.92rem!important}
.in-heist #battlefield{--mh-land-width:clamp(80px,12.3dvh,150px)}
.in-heist #hand{--mh-land-width:clamp(72px,10.7dvh,131px)}
.in-heist #heist #wardTarget .ward-fluid-canvas{cursor:crosshair!important}
.in-heist #heist #wardTarget.is-stirring .ward-fluid-canvas{cursor:grabbing!important}
@media(max-width:800px){
 .in-heist #heist .play-column{
  grid-template-rows:minmax(0,1fr) 36px minmax(69px,.25fr) minmax(63px,.22fr)!important;
  gap:4px!important;
 }
 .in-heist #heist .vault-card{padding:5px 8px!important}
 .in-heist #heist .vault-card>h2{font-size:1.05rem!important}
 .in-heist #heist .stats{margin:1px 0 2px!important;padding:1px 0!important}
 .in-heist #heist .stats strong{font-size:.65rem!important}
 .in-heist #heist .stats small{font-size:.40rem!important}
 .in-heist #heist .vault-stage{gap:5px!important;padding:3px!important}
 .in-heist #heist #wardTarget.lock-ring{
  width:min(34dvh,262px)!important;height:min(34dvh,262px)!important;
 }
 .in-heist #heist .ward-info{gap:4px 8px!important}
 .in-heist #heist .ward-info h3{font-size:.78rem!important}
 .in-heist #heist .ward-info .auto-cast-status{font-size:.47rem!important;padding:3px 7px!important;min-height:23px!important}
 .in-heist #heist .play-column>.controlbar{height:36px!important}
 .in-heist #heist .play-column>.controlbar button,
 .in-heist #heist .play-column>.controlbar button:not(.primary){height:35px!important;min-height:35px!important}
 .in-heist #battlefield{--mh-land-width:clamp(56px,10.5dvh,94px)}
 .in-heist #hand{--mh-land-width:clamp(52px,9dvh,83px)}
}
@media(max-width:800px) and (max-height:670px){
 .in-heist #heist .play-column{
  grid-template-rows:minmax(0,1fr) 32px minmax(59px,.22fr) minmax(57px,.20fr)!important;
  gap:3px!important;
 }
 .in-heist #heist #wardTarget.lock-ring{
  width:min(30dvh,215px)!important;height:min(30dvh,215px)!important;
 }
 .in-heist #heist .vault-topline .overline{font-size:.44rem!important}
 .in-heist #heist .vault-card>h2{font-size:.90rem!important}
 .in-heist #heist .stats{margin:0!important}
 .in-heist #heist .stats strong{font-size:.57rem!important}
 .in-heist #heist .stats small{font-size:.36rem!important}
 .in-heist #heist .ward-info .auto-cast-status{font-size:.39rem!important;min-height:19px!important}
 .in-heist #heist .ward-info h3{font-size:.72rem!important}
 .in-heist #heist .play-column>.controlbar{height:32px!important}
 .in-heist #heist .play-column>.controlbar button,
 .in-heist #heist .play-column>.controlbar button:not(.primary){height:31px!important;min-height:31px!important}
 .in-heist #battlefield{--mh-land-width:clamp(52px,10dvh,74px)}
 .in-heist #hand{--mh-land-width:clamp(48px,8.9dvh,65px)}
}
@media(prefers-reduced-motion:reduce){
 .in-heist #heist #wardTarget.lock-ring{transition:none!important}
}

/* Finale: a quick expanding magical shockwave after the inward swirl. */
.in-heist #heist #wardTarget.ward-breaking::after{
 content:"";position:absolute;inset:8%;z-index:5;
 border:3px solid #fff4d4;pointer-events:none;border-radius:50%;
 box-shadow:0 0 24px #fff7c9,0 0 50px var(--fusion-color);
 animation:chromaticBreak .57s cubic-bezier(.11,.75,.3,1) both;
}
@keyframes chromaticBreak{
 0%{transform:scale(.12);opacity:1}
 55%{transform:scale(1.2);opacity:.95}
 100%{transform:scale(1.5);opacity:0}
}
@media(prefers-reduced-motion:reduce){
 .in-heist #heist #wardTarget.ward-breaking::after{animation:none;opacity:0}
}
