@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=Inter:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#0b121e;--panel:#14202f;--line:#2e3f52;--muted:#9dadc0;--gold:#efc471;--blue:#73bcec;--red:#ee9291}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#edf3fa;font:14px Inter,Arial,sans-serif}button,input,select{font:inherit;color:inherit;border:1px solid var(--line);border-radius:6px;padding:10px 13px;background:#1a2a3c}button{cursor:pointer}button:hover{filter:brightness(1.15)}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:3px}a{color:var(--blue)}[hidden]{display:none!important}header{height:76px;display:flex;align-items:center;gap:25px;padding:0 4%;border-bottom:1px solid var(--line);background:#101b29}.brand{font:700 26px 'Barlow Condensed',Arial;text-decoration:none;color:white}.brand b{color:var(--gold)}header>span{font-size:12px;letter-spacing:2px;color:var(--muted)}header>button{margin-left:auto}main{max-width:1600px;margin:auto;padding:30px 4%}.heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}.eyebrow{font-size:12px;color:var(--gold);letter-spacing:2px;margin:0 0 7px}h1{font:600 clamp(28px,3vw,40px) 'Barlow Condensed',Arial;margin:0}h2{font:600 25px 'Barlow Condensed',Arial;margin:0 0 15px}.primary{background:var(--gold);color:#17202a;border-color:var(--gold);font-weight:700}.setup{display:flex;gap:15px;flex-wrap:wrap;align-items:end;padding:18px;background:var(--panel);border:1px solid var(--line);border-radius:8px}.setup label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:12px}.setup label:nth-child(3){flex:1;min-width:230px}.setup select{color:white}.notice{color:var(--muted);font-size:13px;line-height:1.65;margin:18px 0}.teamcolumns{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:20px 0}.teamcolumns>section{padding:18px;border:1px solid var(--line);border-top:3px solid var(--blue);border-radius:7px;background:var(--panel)}.teamcolumns>section+section{border-top-color:var(--red)}.teamtitle{display:flex;align-items:center;justify-content:space-between}.teamtitle h2{margin:0}.teamtitle h2 span{font:12px Inter;color:var(--muted);margin-left:7px}.teamtitle strong{color:var(--gold)}.chosenlist{display:flex;flex-wrap:wrap;gap:7px;min-height:42px;margin-top:15px}.chosenlist button{font-size:12px;padding:7px;background:#203148}.chosenlist p{color:var(--muted);font-size:12px}.rosterbar{display:flex;align-items:center;gap:20px;margin:26px 0 20px}.tabs{display:flex;gap:6px}.tabs .active{border-color:var(--gold);color:var(--gold)}.search{margin-left:auto}.search span{display:none}.search input{width:270px}#count{color:var(--muted);font-size:12px}.catalog{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:15px}.figure{background:var(--panel);border:1px solid var(--line);border-radius:9px;overflow:hidden;position:relative}.figure.selected{border-color:var(--gold)}.figureimage{background:#fff;height:180px;display:flex;align-items:center;justify-content:center;width:100%;border:0;border-radius:0;padding:10px}.figureimage img{width:100%;height:100%;object-fit:contain}.figurebody{padding:14px}.figurebody h3{font:600 25px 'Barlow Condensed',Arial;margin:0 0 5px}.meta{font-size:12px;color:var(--muted);line-height:1.6}.figurepoints{display:flex;align-items:center;justify-content:space-between;margin:15px 0}.figurepoints strong{font:600 25px 'Barlow Condensed',Arial;color:var(--gold)}.figurepoints span{font-size:12px;color:var(--muted)}.figurebody>button{width:100%;font-size:13px}.figurebody>button.added{border-color:var(--gold);color:var(--gold)}.gamegrid{display:grid;grid-template-columns:210px minmax(350px,1fr) 280px;gap:20px}.playarea{min-width:0}.battlebar{display:flex;justify-content:space-between;align-items:center;padding:12px;background:var(--panel);font-size:12px;border:1px solid var(--line)}.battlebar button{padding:6px 10px}#viewport{height:570px;background:#101b29;touch-action:manipulation;border:1px solid var(--line);overflow:hidden}#viewport canvas{width:100%;height:100%;display:block}#hint{min-height:40px;line-height:1.5;color:var(--gold);font-size:14px}#actionbar{display:flex;gap:7px;flex-wrap:wrap}#actionbar button{font-size:12px}#actionbar button.armed{background:var(--gold);color:#111}.squad{width:100%;display:flex;gap:10px;align-items:center;text-align:left;padding:8px;margin-bottom:8px;background:var(--panel)}.squad.selected{border-color:var(--gold)}.squad.ko{opacity:.4}.squad img{width:39px;height:49px;object-fit:contain;background:white;border-radius:3px}.squad b{display:block;font-size:13px}.squad small{display:block;font-size:11px;color:var(--muted);margin-top:4px}.squadteam{color:var(--blue);font-size:12px;letter-spacing:2px;margin:18px 0 10px}.squadteam.enemy{color:var(--red)}.detailhero{padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:8px}.detailhero>img{display:block;width:100%;height:150px;object-fit:contain;background:white;border-radius:6px;margin-bottom:14px}.detailhero h2{margin:0 0 5px}.dial{width:148px;height:148px;border-radius:50%;border:12px solid #314b63;outline:2px solid var(--gold);display:flex;align-items:center;justify-content:center;flex-direction:column;margin:23px auto;background:#0b1320;box-shadow:0 5px 0 #050912}.dial strong{font:700 45px 'Barlow Condensed',Arial;color:var(--gold)}.dial span{font-size:11px;color:var(--muted)}.dialsteps{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:15px}.dialsteps button{font-size:12px;padding:5px 8px}.dialsteps .selected{background:var(--gold);color:#111}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.stat{padding:7px 1px;text-align:center;border-radius:4px;border-top:5px solid var(--power);background:#0c1725}.stat b{display:block;font:700 25px 'Barlow Condensed',Arial}.stat small{font-size:10px;color:var(--muted)}.powers{margin:16px 0}.powerrow{padding:9px 0;border-bottom:1px solid var(--line)}.powerrow b{display:block;font-size:13px}.powerrow em{font-style:normal;font-size:11px;color:var(--gold)}.powerrow p{font-size:12px;color:var(--muted);line-height:1.5;margin:5px 0}.source{display:block;margin-top:14px;font-size:12px}.rollbox{display:flex;align-items:center;gap:18px;margin:20px 0;padding:12px;background:var(--panel)}#dice{font:700 30px 'Barlow Condensed',Arial;color:var(--gold)}#rollresult{font-size:13px;color:var(--muted)}#log{height:170px;overflow:auto;color:var(--muted);font-size:12px;line-height:1.7}.entry{padding:8px 0;border-bottom:1px solid var(--line)}.entry:first-child{color:white}details{margin-top:20px;border:1px solid var(--line);padding:14px;font-size:12px;line-height:1.7;color:var(--muted)}details button{font-size:12px;margin:3px}summary{cursor:pointer;color:var(--gold)}dialog{background:#14202f;color:#edf3fa;border:1px solid #536c85;border-radius:12px;max-width:870px;width:calc(100% - 25px);max-height:90vh;padding:26px;line-height:1.6}dialog::backdrop{background:#000b}.close{float:right;font-size:22px;padding:3px 12px}.inspecthead{display:flex;gap:25px;align-items:center;margin-bottom:25px}.inspecthead img{width:140px;height:180px;object-fit:contain;background:white;border-radius:6px}.dialtablewrap{overflow:auto}.dialtable{border-collapse:separate;border-spacing:4px;width:100%;font-size:14px}.dialtable th{text-align:left;font-size:12px}.dialtable td{min-width:47px;padding:9px 5px;text-align:center;color:var(--ink);background:var(--power);border:1px solid #5f7185}.dialtable td small{display:block;font-size:9px}.inspectpowers{display:grid;grid-template-columns:1fr 1fr;gap:10px}.inspectpowers>div{padding:10px;border:1px solid var(--line);font-size:12px}.inspectpowers p{margin:5px 0;color:var(--muted)}.empty{padding:40px;color:var(--muted)}.error{padding:30px;color:#f6a5a5;line-height:1.7}.fallbackgrid{display:grid;width:100%;height:100%;gap:1px}.fallbackgrid button{padding:0;min-width:0;font-size:9px;border-radius:0}.fallbackgrid img{width:100%;height:100%;object-fit:contain}.fallbackgrid .movable{background:#31749d}.fallbackgrid .targetable{background:#a74d59}@media(max-width:1200px){.catalog{grid-template-columns:repeat(4,1fr)}.gamegrid{grid-template-columns:170px minmax(320px,1fr) 240px}#viewport{height:500px}}@media(max-width:980px){.catalog{grid-template-columns:repeat(3,1fr)}.gamegrid{grid-template-columns:1fr 260px}.gamegrid>aside:first-child{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}.gamegrid>aside:first-child h2,.squadteam{display:none}.squad{width:150px;margin:0}.gamegrid .playarea{grid-column:1}.heading{align-items:start}#viewport{height:470px}}@media(max-width:650px){header{height:64px;padding:0 15px}header>span{display:none}main{padding:22px 12px}.heading{flex-direction:column;align-items:stretch;gap:16px}.heading .primary{width:100%}.heading>div:last-child{display:flex;gap:7px}.setup{padding:12px;gap:10px}.setup label{flex:1;min-width:120px}.setup select{max-width:100%;font-size:13px}.teamcolumns{grid-template-columns:1fr;gap:10px}.teamcolumns>section{padding:12px}.rosterbar{flex-wrap:wrap;gap:10px}.search{order:2;width:100%}.search input{width:100%}#count{margin-left:auto}.catalog{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.figureimage{height:145px}.figurebody{padding:11px}.figurebody h3{font-size:22px}.figurebody .meta{font-size:11px}.gamegrid{display:flex;flex-direction:column}.gamegrid>aside:first-child{display:flex;flex-wrap:nowrap;overflow:auto}.squad{flex:0 0 150px}#viewport{height:410px}.detailhero>img{height:180px}.detailhero .powers{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dialsteps{justify-content:center}.inspecthead{gap:14px}.inspecthead img{width:95px;height:130px}.inspectpowers{grid-template-columns:1fr}dialog{padding:18px}.notice{font-size:12px}.stat small{font-size:12px}}
/* Guided play and comfortable touch controls. */
body{font-size:16px}button,input,select{min-height:44px;font-size:14px}button:active{transform:translateY(1px)}.meta,.notice,.setup label,.chosenlist button,.chosenlist p,.figurebody .meta,.figurepoints span,.figurebody>button,.squad b,.squad small,.powerrow b,.powerrow p,.source,#actionbar button,.entry,.inspectpowers>div,details,details button,.battlebar,.setup select{font-size:14px}.powerrow em,.stat small,.dial span,.dialtable td small{font-size:12px}.figureimage,.squad img,.detailhero>img,.inspecthead img{background:transparent}.figureimage{background:radial-gradient(ellipse at bottom,#304f68,transparent 70%);height:200px}.figureimage img,.detailhero>img,.quickportraits img{filter:drop-shadow(0 8px 7px #0007)}.figure.selected{box-shadow:inset 0 0 0 1px var(--gold)}.quickstart{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:28px;border:1px solid #527289;border-radius:12px;background:linear-gradient(110deg,#203e56,#14202f 72%);margin-bottom:24px}.quickstart h2{font-size:32px;margin:12px 0}.quickstart p{max-width:620px;line-height:1.65;color:#c1cfdd}.quickbuttons{min-width:220px;display:grid;gap:12px}.quickbuttons .primary{min-height:56px;font-size:18px}.quickbuttons small{color:var(--muted);font-size:12px;text-align:center}.quickportraits{display:flex;gap:16px;height:135px}.quickportraits img{width:85px;max-width:22%;object-fit:contain}.presets{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:20px 0}.presets>span{color:var(--muted);margin-right:8px}#customsetup{padding:20px;border-radius:10px}#customsetup>summary{font-size:20px;font-weight:600}#customsetup>summary span{font-size:14px;color:var(--muted);font-weight:400;margin-left:12px}#customsetup[open]>summary{margin-bottom:20px}.sortlabel{font-size:14px;display:flex;align-items:center;gap:8px}.rosterbar{flex-wrap:wrap;gap:12px}.coach{display:flex;align-items:center;gap:14px;background:#1b3347;border-left:3px solid var(--gold);padding:14px 18px;margin-bottom:20px;border-radius:6px}.coach p{font-size:14px;color:#c6d3df;margin:5px 0;line-height:1.5}.coach>button{margin-left:auto}.stepnumber{border-radius:50%;background:var(--gold);color:#122032;width:34px;height:34px;display:grid;place-items:center;flex-shrink:0;font-weight:bold}.maplegend{display:flex;flex-wrap:wrap;gap:14px;color:var(--muted);font-size:12px;margin-top:12px}.maplegend span{display:flex;align-items:center;gap:6px}.maplegend i{width:10px;height:10px;border-radius:3px}.blue-dot{background:#287ab3}.red-dot{background:#b7535a}.gold-dot{background:var(--gold)}#camerahelp{margin-left:auto}.actionpreview{display:flex;align-items:center;gap:10px;padding:16px;background:#253c50;border:1px solid var(--gold);border-radius:8px;margin-top:14px}.actionpreview>div{flex:1}.actionpreview p{font-size:14px;line-height:1.5;color:#cedce7;margin:7px 0 0}.turntools{display:flex;align-items:center;gap:15px;margin:16px 0}.turntools span{font-size:13px;color:var(--muted);line-height:1.5}.history{margin:10px 0}.squad img{width:44px;height:55px}.squad small{font-size:12px}.squadteam{font-size:13px}.battlebar{gap:10px;flex-wrap:wrap}.battlebar>div{display:flex;gap:4px}.battlebar button{min-width:40px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:20;max-width:90%;padding:16px 22px;background:#f0c471;color:#15212f;border-radius:8px;box-shadow:0 10px 35px #0008}#victory{text-align:center;max-width:500px;padding:40px}#victory h2{font-size:42px}.heading>div:first-child{display:block}.dialsteps button{min-width:38px}.search{margin-left:0;flex:1}.search input{width:100%;min-width:160px}.figurepoints{flex-wrap:wrap;gap:6px}.gamegrid{grid-template-columns:190px minmax(320px,1fr) 280px}.teamtitle{gap:10px;flex-wrap:wrap}.teamtitle h2 span{font-size:12px}#start{min-height:50px}.fallbackgrid button{min-height:0}
@media(max-width:1100px){.gamegrid{grid-template-columns:minmax(0,1fr) 270px}.gamegrid>aside:first-child{grid-column:1/-1}.gamegrid>aside:first-child h2{display:none}#squads{display:flex;gap:8px;overflow:auto;padding:3px 0 10px}.squadteam{display:none}.squad{flex:0 0 165px;margin:0}.gamegrid .playarea{grid-column:1}.quickstart{padding:22px}.catalog{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.quickstart{display:block;padding:20px}.quickbuttons{margin-top:20px}.quickstart h2{font-size:28px}.quickportraits{height:115px}.gamegrid{display:flex;flex-direction:column}.gamegrid>aside:first-child{display:block;width:100%}#squads{width:100%}.catalog{grid-template-columns:repeat(2,minmax(0,1fr))}#customsetup{padding:12px}#customsetup>summary span{display:block;margin:0}.presets{gap:5px}.actionpreview{flex-wrap:wrap;position:sticky;bottom:10px;z-index:4;box-shadow:0 8px 25px #0008}.actionpreview>div{flex-basis:100%}.actionpreview>button{flex:1}.turntools{align-items:start;flex-direction:column;gap:8px}.coach{padding:12px;align-items:start}.battlebar{font-size:13px}.battlebar>div{width:100%;justify-content:space-between}.battlebar>div button{flex:1}#viewport{height:420px}.heading>div:last-child{flex-wrap:wrap}.heading #end{width:auto;flex:1}.figureimage{height:150px}.figurebody{padding:10px}.figurebody h3{font-size:23px}.figurebody .meta{font-size:12px}.figurepoints span{font-size:12px}#camerahelp{width:100%;margin:0}.inspecthead{align-items:start}.inspecthead h2{font-size:26px}.inspecthead img{width:75px}.quickstart .eyebrow{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
/* Direct board manipulation: drag to orbit, Alt/middle/right-drag to pan,
   wheel or pinch to zoom. */
#viewport{touch-action:none;user-select:none}
#actionbar #normal{min-width:132px;font-weight:700}
#actionbar #normal.armed{box-shadow:0 0 0 2px #76ceff,0 0 18px #237eb988}
.expansionlabel{display:flex;align-items:center;gap:8px;font-size:14px}.expansionlabel select{max-width:245px}.rollbox{display:flex;flex-direction:column;justify-content:center;gap:20px;min-height:190px;border:1px solid #49617a;border-radius:12px;background:radial-gradient(ellipse at center,#26415a,#101e2e 80%);overflow:visible}.dice-label{font-size:13px;color:var(--gold);letter-spacing:1px;text-align:center}.dice-stage{display:flex;justify-content:center;gap:44px;perspective:650px;padding:12px 45px}.die-seat{width:60px;height:60px;position:relative}.die{width:60px;height:60px;position:relative;transform-style:preserve-3d}.die-face{position:absolute;inset:0;display:grid;grid-template:repeat(3,1fr)/repeat(3,1fr);gap:4px;padding:10px;background:#f4ead8;border:1px solid #c5b9a4;border-radius:10px;backface-visibility:hidden;box-shadow:inset 0 0 9px #a18e6f55}.die-seat:nth-child(2) .die-face{background:#a4cee9;border-color:#79a9c9}.die-face span{border-radius:50%}.die-face .pip{background:#182c40;box-shadow:inset 0 2px 2px #0008}.dice-summary{display:flex;align-items:center;justify-content:center;gap:15px;flex-wrap:wrap;text-align:center}.dice-summary #rollresult{max-width:320px}.rollbox.is-rolling{position:fixed;z-index:40;left:50%;top:50%;transform:translate(-50%,-50%);width:min(460px,90vw);min-height:260px;margin:0;padding:30px 15px;box-shadow:0 0 0 100vmax #07111ee8,0 20px 90px #000b;border-color:var(--gold)}.dice-playing .gamegrid,.dice-playing>.heading,.dice-playing>.coach{pointer-events:none}.dice-playing .rollbox{pointer-events:auto}.dice-playing .dice-summary{flex-direction:column;gap:6px}.teamtitle h2 span span{font:inherit;margin:0}.dice-stage [hidden]{display:none!important}@media(max-width:700px){.expansionlabel{width:100%;justify-content:space-between}.expansionlabel select{flex:1;max-width:none}.dice-stage{gap:40px}.rollbox{min-height:205px}.dice-summary{flex-direction:column;gap:5px}}
.rollbox.is-rolling .dice-stage{margin-top:40px;margin-bottom:12px}.rollbox.is-rolling{min-height:320px}.dice-label{position:relative;z-index:1}
/* Action tokens remain visible on dials, squad cards and board pieces. */
.tokenmarks{display:inline-flex;align-items:center;gap:7px}.actiontoken{width:19px;height:19px;display:grid;place-items:center;border:2px solid #607386;border-radius:50%;background:#10202e;color:#93a6b7;font:700 11px Inter,Arial;font-style:normal;box-shadow:0 2px 0 #0007}.actiontoken.filled{background:#edaa42;border-color:#ffe1a0;color:#152433}.actiontoken.filled:nth-child(2){background:#e8736d;border-color:#ffc6b9}.squad .tokenmarks{margin-top:7px}.squad .actiontoken{width:14px;height:14px;font-size:9px;border-width:1px}.dial{position:relative;margin-bottom:40px}.dialtokens{position:absolute;bottom:-37px;left:50%;transform:translateX(-50%);padding:6px 10px;background:#0c1725;border:1px solid #607386;border-radius:22px}.dialtokens .actiontoken{width:27px;height:27px;font-size:13px}.token-caption{text-align:center;font-size:13px;color:var(--gold);margin:5px 0 15px}#expanddial{width:100%;margin-bottom:12px}#dialfocus{width:calc(100vw - 24px);height:calc(100dvh - 24px);max-width:none;max-height:none;padding:20px}#closedial{position:sticky;top:0;z-index:2;float:right}#dialfocus #detail{max-width:1000px;margin:0 auto}#dialfocus .detailhero{display:grid;grid-template-columns:minmax(220px,1fr) minmax(280px,1fr);gap:10px 35px;border:0}#dialfocus .detailhero>img{grid-column:1;height:220px}#dialfocus .detailhero h2,#dialfocus .detailhero>.meta{grid-column:1}#dialfocus .dial{grid-column:1;width:210px;height:210px;grid-row:4 / span 2}#dialfocus .dial strong{font-size:70px}#dialfocus .powers{grid-column:2;grid-row:1 / span 6}#dialfocus .stats{grid-column:2}#dialfocus #expanddial{display:none}#dialfocus .token-caption{grid-column:1}#dialfocus .dialsteps{justify-content:center}.expertchoice{display:flex;align-items:center;gap:8px;font-size:14px}.expertchoice select{max-width:210px}.layoutpicker{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted)}header>button{margin-left:0}header{gap:18px}#game.expanded{position:fixed;inset:0;background:var(--bg);z-index:20;overflow:auto;padding:16px 24px;padding-bottom:env(safe-area-inset-bottom,16px)}body.battle-expanded{overflow:hidden}#game.expanded .heading{position:sticky;top:-16px;z-index:6;background:var(--bg);padding:12px 0;margin-bottom:10px}#game.expanded #viewport{height:65dvh;min-height:330px}#game.expanded .coach{padding:8px 14px;margin-bottom:12px}#game.expanded h1{font-size:28px}.fallbackgrid button{position:relative;overflow:visible}.fallbackgrid .selected-square{outline:2px solid var(--gold);outline-offset:-2px;z-index:1}.boardtokens{position:absolute;bottom:0;left:50%;transform:translateX(-50%);display:flex;gap:2px;pointer-events:none}.boardtokens i{width:7px;height:7px;border-radius:50%;background:#f5bd58;box-shadow:0 0 0 1px #192b3d}.boardtokens i:nth-child(2){background:#fa8881}.fallbackgrid{background-position:center;background-size:100% 100%}.fallbackgrid.sourcemap button{background:transparent}.fallbackgrid.sourcemap .movable{background:#287ab388}.fallbackgrid.sourcemap .targetable{background:#b7535a88}
/* Explicit modes also adapt to the available width. */
body[data-layout="desktop"] main{max-width:1700px}body[data-layout="tablet"] main{max-width:1120px;padding:22px 20px}body[data-layout="tablet"] .gamegrid{display:grid;grid-template-columns:minmax(0,1fr) 270px}body[data-layout="tablet"] .gamegrid>aside:first-child{grid-column:1/-1;display:block;min-width:0}body[data-layout="tablet"] .gamegrid>aside:first-child h2,body[data-layout="tablet"] .squadteam{display:none}body[data-layout="tablet"] #squads{display:flex;gap:8px;overflow:auto;padding-bottom:8px}body[data-layout="tablet"] .squad{flex:0 0 170px;margin:0}body[data-layout="tablet"] .playarea{grid-column:1}body[data-layout="tablet"] .catalog{grid-template-columns:repeat(3,minmax(0,1fr))}body[data-layout="tablet"] #viewport{height:520px}body[data-layout="mobile"] main{max-width:540px;padding:16px 12px}body[data-layout="mobile"] .gamegrid{display:flex;flex-direction:column;gap:14px}body[data-layout="mobile"] .gamegrid>aside:first-child{display:block;width:100%}body[data-layout="mobile"] .gamegrid>aside:first-child h2,body[data-layout="mobile"] .squadteam{display:none}body[data-layout="mobile"] #squads{display:flex;gap:8px;overflow:auto;padding-bottom:8px}body[data-layout="mobile"] .squad{flex:0 0 160px;margin:0}body[data-layout="mobile"] .catalog{grid-template-columns:repeat(2,minmax(0,1fr))}body[data-layout="mobile"] #viewport{height:420px}body[data-layout="mobile"] .teamcolumns{grid-template-columns:1fr}body[data-layout="mobile"] .quickstart{display:block;padding:18px}body[data-layout="mobile"] .quickbuttons{margin-top:18px}body[data-layout="mobile"] .heading{flex-direction:column;align-items:stretch;gap:12px}body[data-layout="mobile"] .heading>div:last-child{display:flex;flex-wrap:wrap;gap:8px}body[data-layout="mobile"] .heading>div:last-child button{flex:1;white-space:nowrap}body[data-layout="mobile"] .battlebar>div{display:flex;width:100%;justify-content:space-between}body[data-layout="mobile"] .battlebar>div button{flex:1}body[data-layout="mobile"] .turntools{flex-direction:column;align-items:start;gap:8px}body[data-layout="mobile"] .actionpreview{flex-wrap:wrap;position:sticky;bottom:8px;z-index:5}body[data-layout="mobile"] .actionpreview>div{flex-basis:100%}body[data-layout="mobile"] .actionpreview>button{flex:1}body[data-layout="mobile"] .expansionlabel{width:100%;justify-content:space-between}body[data-layout="mobile"] .expansionlabel select{max-width:none;min-width:0;flex:1}body[data-layout="mobile"] #game.expanded{padding:12px;max-width:none}body[data-layout="mobile"] #game.expanded #viewport{height:55dvh}body[data-layout="mobile"] #game.expanded .gamegrid{max-width:640px;margin:auto}body[data-layout="mobile"] .setup label{min-width:0}body[data-layout="mobile"] #customsetup{padding:12px}
@media(max-width:700px){header{height:auto;min-height:72px;gap:8px;flex-wrap:wrap;padding:12px}.brand{font-size:23px}.layoutpicker{font-size:12px;gap:5px}.layoutpicker select{max-width:106px;padding:8px}header>button{font-size:12px;padding:8px}header>span{display:none}#game.expanded{padding:12px}#game.expanded .heading{top:-12px}#dialfocus .detailhero{display:block}#dialfocus .detailhero>img{height:150px}#dialfocus .dial{width:180px;height:180px}#dialfocus .powers{display:block}#dialfocus{padding:14px}body[data-layout] .gamegrid{display:flex;flex-direction:column}body[data-layout] .catalog{grid-template-columns:repeat(2,minmax(0,1fr))}body[data-layout] .gamegrid>aside:first-child{width:100%;display:block}body[data-layout] #squads{display:flex;overflow:auto;gap:8px}body[data-layout] .squad{flex:0 0 160px}body[data-layout] #viewport{height:420px}}
/* Keep presentation above the board in every layout. */
#viewport{position:relative;isolation:isolate}.battle-fx{position:absolute;inset:0;width:100%;height:100%;z-index:8;pointer-events:none}.travel-piece{position:absolute;left:0;top:0;object-fit:contain;z-index:7;pointer-events:none;filter:drop-shadow(0 7px 4px #000a)}.power-banner{position:absolute;top:15px;left:50%;transform:translateX(-50%);z-index:9;padding:10px 18px;background:#0b172bea;border:1px solid;border-radius:30px;font-size:16px;text-transform:capitalize;white-space:nowrap;pointer-events:none}.click-burst{position:absolute;z-index:10;transform:translate(-50%,-130%);padding:8px 12px;border-radius:7px;background:#132137ee;color:#ffcf91;border:1px solid #f1be75;font-weight:700;font-size:16px;white-space:nowrap;pointer-events:none}.action-playing .gamegrid,.action-playing>.heading{pointer-events:none}.powerrow>button{font-size:12px;padding:6px 10px;margin:0 0 10px;color:#a9dafa}.fallbackgrid .terrain-wall{background:linear-gradient(135deg,#bdc5cb,#697d8d)!important;box-shadow:inset -4px -5px 0 #283e51,3px 4px 0 #091725;color:transparent;z-index:2}.fallbackgrid .terrain-cover{background:#426f4c!important;box-shadow:inset -3px -3px 0 #2e4f3b;color:#b9dcb9}.fallbackgrid .route-step,.fallbackgrid .route-end{background:#d49b18!important;box-shadow:inset 0 0 0 3px #fff06a,0 0 10px #ffd92f;z-index:3}.fallbackgrid .route-step:after,.fallbackgrid .route-end:after{content:attr(data-step);position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-weight:800;font-size:13px;text-shadow:0 2px 3px #17202a,0 0 3px #17202a;pointer-events:none}.fallbackgrid .route-end{outline:4px solid #fff06a;outline-offset:-4px}.fallbackgrid{box-shadow:inset 0 -10px 0 #0005;background-color:#344e5b}.maplegend .gold-dot{box-shadow:0 0 5px #ffdb80}header #sound{font-size:13px;white-space:nowrap}
.end-inline{margin-left:8px}.battlebar>div{align-items:center}.battlebar .end-inline{font-size:13px;padding:7px 12px}
/* Battlefield-only focus view, independent of selected device layout. */
#battlearea.maximized{position:fixed;inset:0;z-index:40;background:var(--bg);width:100%;height:100dvh;display:flex;flex-direction:column;gap:6px;padding:8px max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));overflow:hidden}
body[data-layout] #battlearea.maximized #viewport{flex:1 1 0;height:auto!important;min-height:100px;width:100%}
#battlearea.maximized>.battlebar{flex:0 0 auto;padding:6px 10px;gap:6px;border-radius:8px 8px 0 0}
#battlearea.maximized>.battlebar>div{flex-wrap:wrap;justify-content:flex-end}
#battlearea.maximized>.maplegend,#battlearea.maximized>.history,#battlearea.maximized>#manual{display:none}
#battlearea.maximized>#hint{min-height:0;margin:0;padding:0 8px;font-size:13px;max-height:42px;overflow:auto}
#battlearea.maximized>#actionbar{flex-wrap:nowrap;overflow-x:auto;flex-shrink:0;padding:2px 4px}
#battlearea.maximized>#actionbar>*{flex-shrink:0;white-space:nowrap}
#battlearea.maximized>.actionpreview{position:static;flex-shrink:0;padding:8px;margin:0;max-height:24dvh;overflow:auto;box-shadow:none}
#battlearea.maximized>.turntools{flex-direction:row;align-items:center;margin:0;gap:8px;flex-shrink:0}
#battlearea.maximized>.turntools #turntip{display:none}
#battlearea.maximized>#dicetray{display:none;position:absolute;bottom:150px;left:50%;transform:translateX(-50%);z-index:8;max-width:95%;width:370px;pointer-events:none;background:#14202ff2;box-shadow:0 8px 40px #000a}
#battlearea.maximized>#dicetray[aria-busy="true"]{display:flex}
#battlearea.maximized .battlebar .end-inline{margin-left:0;white-space:nowrap}
#battlearea.maximized #fullscreen{border-color:var(--gold);color:var(--gold)}
#audiosettings{max-width:580px}.audio-control{display:grid;grid-template-columns:100px 1fr 42px;gap:12px;align-items:center;margin:20px 0}.audio-control input{width:100%;padding:0;accent-color:var(--gold)}.audio-control output{font-size:13px;text-align:right}.audio-note,#nowplaying{color:var(--muted);font-size:14px}#audiosettings details{font-size:12px}#audiosettings details p{line-height:1.6}
@media(max-width:700px){#battlearea.maximized>.battlebar{font-size:11px;padding:4px}#battlearea.maximized .battlebar>div{width:100%;gap:3px}#battlearea.maximized .battlebar button{padding:5px;min-width:30px;font-size:11px}#battlearea.maximized .turntools{display:none}#battlearea.maximized .actionpreview>div{flex-basis:100%}#battlearea.maximized #hint{font-size:12px}#battlearea.maximized>#dicetray{bottom:180px}}
@media(max-height:500px){#battlearea.maximized>.battlebar>div{width:auto}#battlearea.maximized>.turntools{display:none}#battlearea.maximized>#hint{max-height:20px}#battlearea.maximized .battlebar button{min-height:32px}#battlearea.maximized #actionbar button{min-height:34px;padding:5px 10px}}
.camera-controls{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#172638;border:1px solid var(--line);border-top:0;flex-wrap:wrap}.camera-controls label{display:flex;align-items:center;gap:8px;font-size:14px}.camera-controls input{width:115px;min-height:32px;padding:0;accent-color:var(--gold)}.camera-controls output{width:32px;font-size:13px;color:var(--gold)}.camera-controls button{font-size:13px;padding:6px 10px;min-height:36px}.camera-controls>span{font-size:12px;color:var(--muted);margin-left:auto}.battlebar>div{flex-wrap:wrap}#viewport:has(canvas){touch-action:none}.quickbuttons small{line-height:1.5}#battlearea.maximized>.camera-controls{flex-shrink:0;padding:3px 8px}#battlearea.maximized>.camera-controls>span{display:none}#battlearea.maximized #battledial{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:700px){.camera-controls{gap:5px}.camera-controls>span{width:100%;margin:0}.camera-controls input{width:85px}.camera-controls button{font-size:12px}#battlearea.maximized>.camera-controls label{font-size:12px}#battlearea.maximized .battlebar>div button{flex:0 1 auto}#battlearea.maximized .battlebar>div{justify-content:space-between}}

.quickopponent{display:flex;flex-direction:column;gap:7px;font-size:14px;color:var(--muted)}.quickopponent select{width:100%}
#battlehud{padding:12px;background:#142333;border:1px solid #3b5267;border-radius:8px;margin-top:8px}#hudfigure{display:flex;gap:12px;justify-content:space-between;align-items:center;font-size:14px}#hudfigure span{color:var(--gold);font-size:13px}#battlehud #hint{margin:8px 0;min-height:0}#passivepowers{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}#passivepowers button{font-size:12px;min-height:32px;padding:5px 8px;color:#b9cadb}#quickdial{max-width:600px}#quickdial .powers{max-height:48dvh;overflow:auto}#quickdial [data-dialpreview]{display:none}
#battlearea.maximized{display:grid;grid-template-columns:minmax(0,1fr) 310px;grid-template-rows:auto auto minmax(0,1fr);gap:6px}#battlearea.maximized>.battlebar,#battlearea.maximized>.camera-controls{grid-column:1/-1}body[data-layout] #battlearea.maximized #viewport{grid-column:1;grid-row:3;height:100%!important;min-height:0}#battlearea.maximized>#battlehud{grid-column:2;grid-row:3;overflow-y:auto;margin:0;min-height:0;padding:12px}#battlearea.maximized #actionbar{display:grid;grid-template-columns:1fr;gap:8px}#battlearea.maximized #actionbar button{width:100%;min-height:44px;white-space:normal;text-align:left;font-size:14px}#battlearea.maximized #actionpreview{position:static;display:flex;flex-wrap:wrap;margin-top:12px;padding:10px}#battlearea.maximized #actionpreview>div{flex-basis:100%}#battlearea.maximized>.turntools{display:none}#battlearea.maximized>#dicetray{bottom:24px;left:calc((100% - 310px)/2)}
@media(max-width:760px){#battlearea.maximized{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(100px,1fr) minmax(120px,35dvh)}#battlearea.maximized>#battlehud{grid-column:1;grid-row:4;padding:8px}#battlearea.maximized #actionbar{grid-template-columns:repeat(2,minmax(0,1fr))}#battlearea.maximized>#dicetray{bottom:36dvh;left:50%}#battlearea.maximized #hint{font-size:13px}#battlearea.maximized #hudfigure{position:sticky;top:-8px;background:#142333;padding:5px 0;z-index:1}}
@media(max-height:500px) and (min-width:600px){#battlearea.maximized{grid-template-columns:minmax(0,1fr) 270px;grid-template-rows:auto auto minmax(0,1fr)}#battlearea.maximized>#battlehud{grid-column:2;grid-row:3}#battlearea.maximized #actionbar{grid-template-columns:1fr}#battlearea.maximized>#dicetray{bottom:15px;left:calc((100% - 270px)/2)}}
#onlineinvite{max-width:560px}#onlineinvite p{font-size:14px;color:var(--muted)}#onlineinvite label{display:block;margin:16px 0}#invitelink{width:100%;margin-top:8px}#onlinestatus{font-size:14px;color:var(--gold);border-bottom:1px solid var(--line);padding-bottom:10px}

/* Persistent touch-safe board cues, rooftop levels and custom setup. */
.fallbackgrid .movable{box-shadow:inset 0 0 0 2px #70cdff!important;background-color:#237eb9aa!important}
.fallbackgrid .terrain-roof{border:1px solid #ed8086;background:#607888!important;box-shadow:inset -3px -4px 0 #3b4f64}
.fallbackgrid .terrain-roof.movable{background:#327ea5!important}
.fallbackgrid .terrain-stairs:before{content:'↟';position:absolute;left:0;top:0;color:#fff2ae;font-weight:900;z-index:4;pointer-events:none}
.roof-number{color:#ffe3e5;font-size:10px;position:absolute;right:1px;top:0;pointer-events:none}
.object-symbol{display:block;font-size:clamp(12px,1.5vw,24px);color:#edcc8e;filter:drop-shadow(2px 3px 1px #000)}
.fallbackgrid .object-heavy{background:#467960!important}.fallbackgrid .object-barrier{background:#8a8176!important;box-shadow:inset -4px -4px #3b3a38}
.fallbackgrid .deployment-cell{border:2px solid #b697eb}
#deployment{padding:12px 0;border-top:1px solid #60798c}#setupfigures,.objectpalette{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}#setupfigures button,.objectpalette button{font-size:12px;min-height:42px}#deployment button.armed{border-color:var(--gold);color:var(--gold);background:#3a3424}#deployment small{display:block;font-size:12px;color:var(--muted);line-height:1.6}#setupready{width:100%;margin-top:14px}#setupinstruction{line-height:1.5}#objectcount{color:var(--gold);white-space:nowrap}
.attack-cutin{position:absolute;left:-5%;top:12%;width:75%;height:105px;z-index:8;display:flex;align-items:center;gap:20px;padding:0 8%;pointer-events:none;overflow:hidden;background:linear-gradient(100deg,#101728f5 30%,color-mix(in srgb,var(--attack-color),transparent 45%),transparent);border-top:2px solid var(--attack-color);border-bottom:2px solid var(--attack-color);transform:skewY(-7deg);animation:attack-panel 1.15s both}.attack-cutin img{height:145px;width:90px;object-fit:contain;filter:drop-shadow(3px 0 0 var(--attack-color));transform:skewY(7deg)}.attack-cutin strong{font:800 clamp(16px,2.2vw,30px) 'Barlow Condensed',Arial;font-style:italic;letter-spacing:1px;text-shadow:3px 3px #07101f;max-width:65%}.power-banner{max-width:94%;white-space:normal;text-align:center;font-size:14px}.route-end:after{pointer-events:none}
@keyframes attack-panel{0%{opacity:0;translate:-100% 0}15%,42%{opacity:1;translate:0 0}75%,100%{opacity:0;translate:105% 0}}
body[data-motion="reduced"] .attack-cutin{display:none}

#catalogueindex{width:min(900px,94vw)}#catalogueindex label{display:inline-flex;flex-direction:column;gap:6px;margin:8px 16px 16px 0;max-width:100%}#indexresults{max-height:55vh;overflow:auto}.indexrow{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #334454;padding:12px 4px}.indexrow small{display:block;font-size:14px;color:#a8bbcb;margin-top:5px}.indexrow a{font-size:14px;color:#83caff}.indexpages{display:flex;align-items:center;justify-content:space-between;padding-top:16px}.object-smoke{background:#72638ba8!important}#mastermindchoice{max-width:200px}@media(max-width:600px){.indexrow{align-items:flex-start;flex-direction:column}#indexset{max-width:82vw}}

.variantbadge{display:inline-block;border:1px solid #657587;border-left:5px solid #657587;border-radius:5px;padding:4px 7px;margin:7px 0;font-size:11px;color:#dae6f0}.variantbadge.rookie{border-left-color:#f0cf47}.variantbadge.experienced{border-left-color:#438de2}.variantbadge.veteran{border-left-color:#e75c61}.variantbadge.unique{border-left-color:#d5dce4}.variantbadge.limited_edition{border-left-color:#dcab54}
/* Variant rim and selected base in the fallback board. */
.fallbackgrid button{position:relative;isolation:isolate}.fallbackgrid .figure-base{position:absolute;bottom:4%;left:18%;width:64%;height:19%;border:3px solid var(--variant);background:#111b28;border-radius:50%;z-index:1;pointer-events:none}.fallbackgrid button img{position:relative;z-index:2}.fallbackgrid .selected-square .figure-base{background:#ff7900;box-shadow:0 0 9px 4px #ff7900cc}.fallbackgrid .selected-square{outline:2px solid #ff7900;outline-offset:-2px}.fallbackgrid{position:relative}.fallbackgrid:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:4;opacity:.25}.fallbackgrid[data-weather="rain"]:after{background:repeating-linear-gradient(105deg,transparent 0 27px,#c4e5ff 28px 29px,transparent 30px 48px);background-size:70px 140px;animation:arena-rain .7s linear infinite}.fallbackgrid[data-weather="sun"]:after{background:radial-gradient(ellipse at top left,#ffdf91 0,transparent 65%);opacity:.35}.fallbackgrid[data-weather="dust"]:after,.fallbackgrid[data-weather="embers"]:after{background:radial-gradient(circle,#ffcb82 1px,transparent 2px);background-size:43px 37px;animation:arena-dust 12s linear infinite}@keyframes arena-rain{to{background-position:-20px 140px}}@keyframes arena-dust{to{background-position:43px -37px}}@media(prefers-reduced-motion:reduce){.fallbackgrid:after{animation:none!important}}
