/* ---------------- Ether's Crossroads ---------------- */
.bl{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500}
.game h1{margin-bottom:4px}
.gtop{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px 18px;align-items:center;border-top:1px solid #000;border-bottom:1px solid #000;padding:8px 0;margin:14px 0 18px}
#controls{grid-column:1/-1}
.ecount{position:relative;display:inline-block}.ecount>b{position:absolute;right:-4px;top:-6px;font-size:10px;font-weight:400;color:#000;background:#d6d6ea;padding:0 4px;line-height:1.5}
#phases{display:flex;flex-wrap:wrap;align-items:center;gap:4px 0;min-width:0}
#phases i{font-style:normal;margin:0 8px;color:var(--rule)}
.ph-c{display:inline-flex;flex-direction:column;line-height:1.25;color:var(--dim)}
.ph-c b{font-weight:200;font-size:13px;letter-spacing:.14em;text-transform:uppercase}
.ph-c em{font-style:normal;font-size:11px;letter-spacing:.02em}
.ph-c.on b{color:var(--amber-hi);border-bottom:1px solid var(--amber)}
.ph-c.on em{color:var(--text)}
.ph-c.skip{opacity:.45}
#who{font-size:13.5px;color:var(--dim);margin-top:4px}
#round{text-align:center;line-height:1}
#round .label{display:block;font-size:10.5px}
#round b{font-size:36px;color:var(--amber-hi);letter-spacing:.03em}
#controls{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
#controls:empty{display:none}
.btn{font-family:var(--mono);font-weight:200;font-size:14px;color:var(--ground);background:var(--amber);border:1px solid var(--amber);padding:7px 14px;cursor:pointer}
.btn:hover,.btn:focus-visible{background:var(--amber-hi);outline:none}
.btn.ghost{background:transparent;color:var(--amber)}
.btn.ghost:hover{color:var(--amber-hi);border-color:var(--amber-hi)}
.btn.sm{font-size:12px;padding:5px 10px}
.btn.on{background:var(--amber-hi);color:#000}
.btn:disabled{opacity:.35;cursor:not-allowed}
button.link{all:unset;cursor:pointer;color:var(--amber);border-bottom:1px solid var(--rule)}
button.link:hover,button.link:focus-visible{color:var(--amber-hi);border-color:var(--amber-hi)}
.glayout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px;align-items:start}
@media (max-width:900px){.glayout{grid-template-columns:minmax(0,1fr)}}
/* player boxes, bars */
.pbox{border-left:2px solid var(--pc,var(--rule));padding:4px 0 6px 10px;margin:4px 0}
.pbox .ph{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.pbox .ph b{color:var(--amber-hi);font-weight:400;font-size:15px}
.pbox .ph .dim{font-size:12px}
.turnmark{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#000;background:var(--pc);padding:0 6px}
.pbox .stats{display:flex;flex-wrap:wrap;gap:2px 16px;margin:2px 0 4px;font-size:13px;color:var(--dim)}
.pbox .stats b{color:var(--text)}
.odn b{color:#ff7a66}
.bk{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.seenmark{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:#000;background:#d9d9d9;padding:0 5px}
/* dice boxes */
.tline{margin:3px 0 0;text-align:center;font-size:16px;letter-spacing:.12em;color:var(--amber-hi)}
/* board */
#board{display:grid;gap:4px;margin:8px 0 10px}
#board .row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;position:relative;padding-top:15px}
#board .rl{position:absolute;top:0;left:0;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
#board .row.midline .tile{background:#0f0a06}
.tile{position:relative;aspect-ratio:1/0.82;min-height:58px;background:var(--deep);border:1px solid var(--rule);color:var(--text);font-family:var(--mono);cursor:pointer;padding:0;overflow:hidden}
.tile:hover,.tile:focus-visible{border-color:var(--amber);outline:none}
.tile.sel{border-color:var(--amber-hi);box-shadow:inset 0 0 0 1px var(--amber-hi)}
.tile.tmove{background:#2e2213;border-color:var(--amber)}
.tile.tplace{background:#22301c;border-color:#8fbf74}
.tile.tatk{background:#3a1410;border-color:#ff7a66}
/* side panel */
.gside h3{font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin:0 0 8px;border-bottom:1px solid #000;padding-bottom:4px}
.gside>div{margin-bottom:20px}
.cardbtn,.pk{all:unset;cursor:pointer;line-height:0}
.cardbtn:focus-visible .cf,.pk:focus-visible .cf{outline:2px solid var(--amber-hi);outline-offset:2px}
.cardbtn.on .cf{outline:2px solid var(--amber-hi);outline-offset:2px;transform:translateY(-3px)}
.mini-btn{font-family:var(--mono);font-size:10.5px;background:transparent;color:var(--dim);border:1px solid var(--rule);padding:1px 5px;cursor:pointer}
.mini-btn:hover{color:var(--amber-hi);border-color:var(--amber)}
#selbox ul.cards{list-style:none;margin:6px 0;padding:0;font-size:12.5px;border:0}
#selbox li{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:3px 0;border-bottom:1px solid #00000066}
#selbox .acts{display:flex;gap:8px;margin:8px 0}
#selbox p{margin:0 0 6px;font-size:13.5px}
#spells h4{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin:10px 0 4px}
.spell{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;font-family:var(--mono);font-weight:200;font-size:13px;color:var(--text);background:var(--well);border:1px solid var(--rule);padding:5px 8px;margin:0 0 4px;cursor:pointer}
.spell em{font-style:normal;color:var(--amber);white-space:nowrap}
.spell:hover{border-color:var(--amber)}
.spell.off{opacity:.42}
.spell.armed{border-color:#c9b3ff}
.spell.moon-dark{background:#262626;border-color:#3d3d3d;color:#9a9a9a}.spell.moon-dark em{color:#b5b5b5}
.spell.moon-bright{background:#dcdcdc;border-color:#f4f4f4;color:#111}.spell.moon-bright em{color:#222}
.spell.moon-bright.off{opacity:.6}
#spells.bloodmoon .spell.nec{background:#4c080b;border-color:#d0161d;color:#ffd2cd}#spells.bloodmoon .spell.nec em{color:#ff8f86}
.odpen{margin-left:7px;font-size:10px;color:var(--dim)}
.odpen.big{font-weight:700;color:#ff6b5b}
.souls-l{font-size:12.5px;margin-top:4px}
#shared{display:flex;flex-wrap:wrap;gap:6px 20px;font-size:13px;color:var(--dim)}
#shared b{font-weight:400;color:var(--text)}
#shared .limbo-l{color:#b8b1d6}#shared .dark-l{color:#ff8f86}
.dim{color:var(--dim);font-size:13px}
/* info and log */
#info{margin-top:26px}
.cinfo{border:1px solid var(--rule);background:var(--deep);margin:0 0 10px}
.cinfo summary{cursor:pointer;padding:7px 12px;font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.cinfo summary:hover{color:var(--amber-hi)}
.cinfo[open] summary{border-bottom:1px solid #000}
.itabs{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px 0}
.itab{font-family:var(--mono);font-weight:200;font-size:13px;background:var(--well);color:var(--text);border:1px solid var(--rule);padding:4px 10px;cursor:pointer}
.itab.on{border-color:var(--amber);color:var(--amber-hi)}
#ibody,.spellinfo{padding:4px 12px 12px;font-size:13.5px}
#ibody h4{font-size:17px;color:var(--amber-hi);font-weight:200;margin:10px 0 6px}
#ibody h4 .bl{font-size:22px;margin-left:8px;color:var(--amber)}
#ibody table{border-collapse:collapse;width:100%}
#ibody th,#ibody td{border-top:1px solid #000;padding:5px 8px;text-align:left;vertical-align:top;font-weight:200}
#ibody th{color:var(--dim);width:11em}
.spellinfo h4{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin:12px 0 4px;font-weight:200}
.spellinfo dl{margin:0}.spellinfo dt{color:var(--amber-hi)}.spellinfo dt span{color:var(--amber);font-size:12px;margin-left:8px}
.spellinfo dd{margin:0 0 8px 0;color:var(--text)}
#log{list-style:none;margin:0;padding:0;font-size:13px;max-height:300px;overflow:auto;border-top:1px solid #000}
#log li{padding:5px 0;border-bottom:1px solid #00000066}
#log li.turn{color:var(--amber-hi);letter-spacing:.06em}
#log li.combat .dice{color:var(--dim)}
#log li .tot{color:var(--amber-hi)}
#log li.win{color:#8fbf74}
#log li.event{color:#d8c7ff}
#log li.ai{color:var(--dim);font-size:12px}
/* overlays */
#ov{position:fixed;inset:0;z-index:60;background:rgba(5,3,2,.88);display:grid;place-items:center;padding:16px}
#ov[hidden]{display:none}
#ov.blackout{background:#000}
.ovbox{position:relative;max-width:580px;width:100%;max-height:90vh;overflow:auto;background:var(--well);border:1px solid var(--amber);padding:22px 24px}
.ovbox.wide{max-width:700px}
.ovbox h2{margin:0 0 10px;color:var(--amber-hi);font-size:20px}
.ovbox h3{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin:12px 0 2px;font-weight:200}
.ovbox .acts{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.ovbox .seen{color:#111;background:#dcdcdc;padding:4px 8px;display:inline-block}
.pickrow{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 18px}
.ovbox.limbo{background:linear-gradient(to bottom,#120f2b 0%,#1d1940 24%,#2d2846 46%,#4a4458 70%,#5f5869 88%,#6b6573 100%);border-color:#9c95bd;color:#ece8f6}
.ovbox.limbo::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 80% 30% at 30% 82%,#ffffff22,transparent 70%),radial-gradient(ellipse 70% 26% at 75% 70%,#ffffff1a,transparent 70%),radial-gradient(ellipse 120% 40% at 50% 100%,#ffffff26,transparent 70%)}
.ovbox.limbo>*{position:relative}
.ovbox.limbo h2{color:#e7e2ff}.ovbox.limbo .dim{color:#c9c2e2}
.ovbox.outer{background:#2a0507;border-color:#ff8f86;color:#f4cfcc}
.ovbox.outer h2{color:#ffc2bc}.ovbox.outer .dim{color:#c9918d}
.ovbox.outer .btn.ghost{color:#ff8f86;border-color:#ff8f86}
.ovbox.etherbox{background:#0b0a1a;border-color:#d6d6ea;color:#eeeef4}
.ovbox.etherbox h2{color:#fff}.ovbox.etherbox .dim,.ovbox.etherbox h3{color:#a9a8c2}
.ovbox.etherbox .pickrow{margin:4px 0 8px;gap:5px}
.ovbox.womanbox{background:#15131c;border-color:#8e86ad}
.ovbox label.f,.ovbox .f{display:flex;flex-direction:column;gap:4px;margin:10px 0;font-size:13px;color:var(--dim)}
.ovbox label.f input{font-family:var(--mono);font-size:15px;background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:7px 9px}
.ovbox label.chk{display:flex;gap:8px;align-items:flex-start;margin:8px 0;font-size:13.5px}
.ovbox label.chk small,.opt small{display:block;color:var(--dim);font-size:12px;line-height:1.45}
.warn{font-style:normal;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#ff8f86;border:1px solid #c4161c;padding:0 5px;margin-left:6px}
fieldset.pf{border:1px solid var(--rule);margin:12px 0;padding:6px 14px 8px}
fieldset.pf legend{color:var(--amber-hi);padding:0 6px;font-size:14px}
.modes{display:grid;gap:10px;margin:12px 0}
.mode{all:unset;cursor:pointer;display:block;border:1px solid var(--rule);background:var(--deep);padding:12px 14px}
.mode b{display:block;color:var(--amber-hi);font-weight:400;font-size:17px}
.mode span{display:block;color:var(--dim);font-size:13px;margin-top:2px;line-height:1.5}
.mode:hover,.mode:focus-visible{border-color:var(--amber)}
.roundbig{font-size:72px;line-height:1;margin:0;color:var(--amber-hi);text-align:center}
#flash{position:fixed;left:50%;bottom:58px;transform:translateX(-50%);z-index:70;background:#000;color:var(--amber-hi);border:1px solid var(--amber);padding:8px 14px;font-size:13.5px;max-width:90vw}
/* Blood Moon: the page turns to the crimson of chapter 23 and starts to glitch */
html.bloodglitch .game #board{animation:ecglitch 5.2s infinite}
html.bloodglitch .game h1{animation:ectext 3.4s infinite}
html.bloodglitch .stack{background:linear-gradient(#ff00000f,transparent),#f1d9d3}
@keyframes ecglitch{0%,88%,100%{transform:none;filter:none}89%{transform:translate(3px,-1px);filter:hue-rotate(-14deg) saturate(1.7)}90%{transform:translate(-4px,1px) skewX(-1deg)}91%{transform:none;filter:contrast(1.4)}95%{transform:translate(1px,0);filter:none}96%{transform:none}}
@keyframes ectext{0%,80%,100%{text-shadow:none}81%{text-shadow:2px 0 #ff2a2a99,-2px 0 #00ffff40}83%{text-shadow:-3px 0 #ff2a2a99,2px 0 #00ffff40}84%{text-shadow:none}}
@media (prefers-reduced-motion:reduce){html.bloodglitch .game #board,html.bloodglitch .game h1{animation:none}}
@media (max-width:520px){.cf{width:44px;height:62px}.cf .rk{font-size:18px}.cf .ty{top:21px;font-size:6.5px}.cf .su{font-size:19px}.barrow{grid-template-columns:3em minmax(0,1fr) 3.6em}.stack .ty{display:none}.stack .mini{display:none}}
@media (max-width:760px){.gtop{grid-template-columns:minmax(0,1fr) auto}#round{order:2}.gtop>div:nth-child(2){grid-column:1/-1;order:3}#controls{order:4}#phases{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}#phases i{display:none}.ph-c{min-width:0}#phases .ph-c.on:only-child{grid-column:1/-1}}

/* ---- moon ---- */
#moon{display:flex;align-items:center;gap:12px;min-width:0}
svg.moon{flex:none}
.minfo{min-width:0}
#moon .mname{display:block;font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--amber-hi)}
#moon .meff{display:block;font-size:11.5px;color:var(--dim);max-width:30ch;line-height:1.35;margin-top:3px}
#moon .tag{display:inline-block;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;padding:0 6px;margin:2px 4px 0 0;border:1px solid #c4161c;color:#ff8f86}
.mstrip{display:flex;gap:3px;margin-top:4px}
.mstrip span{line-height:0;padding:1px;border:1px solid transparent;opacity:.55}
.mstrip span.on{border-color:var(--amber-hi);opacity:1}
/* ---- deck and mana meters: a framed track of rounded blocks ---- */
.meters{display:grid;gap:5px;margin:4px 0 6px}
.meter{display:grid;grid-template-columns:3.6em minmax(0,1fr) 4.4em;align-items:center;gap:10px}
.meter.mana{grid-template-columns:3.6em minmax(0,.5fr) minmax(4.4em,.5fr)}
.meter .bk{font-size:11px}
.meter .mv{font-weight:400;font-size:16px;color:var(--text);text-align:left}
.meter .mv small{color:var(--amber-hi);font-size:12px}
.deckbar,.manabar{position:relative;display:grid;gap:2px;height:18px;padding:3px;background:#0d0805;border:2px solid #4d331f;border-radius:6px;box-shadow:inset 0 1px 3px #000}
.deckbar i,.manabar i{border-radius:2px;background:#ffffff0c}
.deckbar i.f{background:linear-gradient(color-mix(in srgb,var(--pc) 55%,white),var(--pc) 45%,color-mix(in srgb,var(--pc) 70%,black))}
.deckbar .surplus{position:absolute;left:3px;top:3px;bottom:3px;display:grid;gap:2px}
.deckbar .surplus i{background:linear-gradient(#fff,color-mix(in srgb,var(--pc) 35%,white));box-shadow:0 0 5px color-mix(in srgb,var(--pc) 60%,white)}
.manabar{grid-template-columns:repeat(6,1fr);height:20px}
.manabar i.f{background:linear-gradient(#5b48d6,#2e1c8f 50%,#1b0f5c)}
/* ---- cards ---- */
#hand{display:flex;flex-wrap:wrap;gap:10px}
.hc{display:flex;flex-direction:column;align-items:center;gap:4px}
.cf{position:relative;display:inline-block;flex:none;width:60px;height:86px;background:#efe2c8;color:#15100b;border:1px solid #000;border-radius:5px;box-shadow:inset 0 0 0 2px #efe2c8,inset 0 0 0 3px var(--pc),0 2px 4px #0008;line-height:1;vertical-align:middle;font-family:var(--mono)}
.cf.red{color:#a3150c}
.cf .cx{position:absolute;top:4px;left:6px;display:flex;flex-direction:column;align-items:center;line-height:.95}
.cf .cx .rk{color:inherit;font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:22px}
.cf .cx .rk.jk{font-size:14px}
.cf .cx i{font-style:normal;font-size:13px}
.cf .su{position:absolute;left:0;right:0;top:32px;text-align:center;font-style:normal;font-size:24px}
.cf .so{position:absolute;right:4px;top:4px;line-height:0}
.cf .ty{position:absolute;left:3px;right:3px;bottom:3px;text-align:center;font-style:normal;font-size:8px;letter-spacing:.08em;text-transform:uppercase;border-top:1px solid #15100b33;padding-top:3px;white-space:nowrap;overflow:hidden}
.cf .price{position:absolute;left:0;right:0;bottom:-16px;font-size:10px;color:var(--amber-hi);text-align:center}
.cf.sm{width:34px;height:48px;border-radius:3px}
.cf.sm .cx{top:2px;left:3px}.cf.sm .cx .rk{font-size:15px}.cf.sm .cx .rk.jk{font-size:10px}.cf.sm .cx i{font-size:10px}
.cf.sm .su{top:22px;font-size:15px}.cf.sm .so{right:2px;top:2px}
.cb{display:inline-grid;place-items:center;flex:none;width:34px;height:48px;border:1px solid var(--pc);border-radius:3px;background:repeating-linear-gradient(45deg,#120c08 0 3px,#1f160e 3px 6px)}
.handrow{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin:6px 0 4px}
.handrow .bk{margin-right:6px}
/* ---- dice box ---- */
.traywrap{margin:8px 0 2px}
.tray{background:#080504;border:1px solid #000;border-radius:4px;box-shadow:inset 0 0 0 1px #ffffff0a;padding:5px 8px 6px;min-height:58px}
.tray .tl{display:block;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.tray .dice{display:flex;flex-wrap:wrap;gap:4px;align-items:center;min-height:36px}
svg.die{flex:none;overflow:visible}
/* ---- board stacks: small cards on the tiles ---- */
.tile{position:relative;aspect-ratio:1/0.9;min-height:64px;background:var(--deep);border:1px solid var(--rule);color:var(--text);font-family:var(--mono);cursor:pointer;padding:0;overflow:hidden}
.stack{position:absolute;inset:5px 12%;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:5px;border:1px solid #000;box-shadow:inset 0 0 0 2px #efe2c8,inset 0 0 0 3px var(--pc),0 2px 4px #0008;background:#efe2c8;color:#15100b}
.stack.theirs{box-shadow:inset 0 0 0 2px #efe2c8,inset 0 0 0 3px var(--pc),0 2px 4px #0008;outline:1px dashed var(--pc);outline-offset:2px}
.stack.red{color:#a3150c}
.stack .lead{color:inherit;margin:0;display:flex;align-items:baseline;gap:3px;line-height:1}
.stack .lead .rk{color:inherit;font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:clamp(18px,2.6vw,26px)}
.stack .lead .rk.jk{font-size:clamp(13px,1.8vw,17px)}
.stack .lead i{font-style:normal;font-size:clamp(13px,1.8vw,17px)}
.stack .ty{position:absolute;left:4px;right:4px;bottom:3px;text-align:center;font-style:normal;font-size:8px;letter-spacing:.07em;text-transform:uppercase;border-top:1px solid #15100b33;padding-top:2px;white-space:nowrap;overflow:hidden}
.stack .mini{font-size:9px;color:#5a4a38;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 3px;min-height:11px}
.stack .so{position:absolute;top:4px;left:4px;line-height:0}
.stack .cnt{position:absolute;top:3px;right:5px;font-size:12px;font-weight:400}
.stack .odds{position:absolute;top:20px;left:5px;font-size:11px}.stack .odds.adv{color:#2f7a22}.stack .odds.dis{color:#b3261a}
.stack .hypo{position:absolute;top:20px;right:5px;font-size:10px;color:#3b2aa8}
.stack .souls{position:absolute;bottom:16px;left:5px;font-size:10px;color:#5b2ea8}
.stack .used{position:absolute;bottom:16px;right:5px;font-size:9px;color:#6d5a44}
/* ---- start form ---- */
.ovbox input[type=radio],.ovbox input[type=checkbox]{accent-color:var(--amber)}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{position:relative;display:block;border:1px solid var(--rule);padding:8px 12px;background:var(--deep);cursor:pointer;flex:1 1 170px;color:var(--text);font-size:14px}
.opt input{position:absolute;opacity:0;width:1px;height:1px}
.opt>span{display:block}
.opt small{display:block;color:var(--dim);font-size:12px;line-height:1.45;margin-top:2px}
.opt:hover{border-color:var(--amber)}
.opt:has(input:checked){border-color:var(--amber-hi);background:var(--well);box-shadow:inset 3px 0 0 var(--amber)}
.opt:has(input:focus-visible){outline:2px solid var(--amber-hi);outline-offset:2px}
.sw{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer}
.sw input,.so-opt input{position:absolute;opacity:0;width:1px;height:1px}
.sw span{width:30px;height:30px;border-radius:50%;background:var(--pc);border:2px solid #000;box-shadow:0 0 0 1px var(--rule)}
.sw em{font-style:normal;font-size:10.5px;color:var(--dim)}
.sw:has(input:checked) span{box-shadow:0 0 0 2px var(--ground),0 0 0 4px var(--amber-hi)}
.sw:has(input:checked) em{color:var(--amber-hi)}
.sw:has(input:focus-visible) span,.so-opt:has(input:focus-visible)>span{outline:2px solid var(--amber-hi);outline-offset:3px}
.so-opt{position:relative;cursor:pointer}
.so-opt>span{display:flex;flex-direction:column;align-items:center;gap:3px;border:1px solid var(--rule);padding:6px 8px;background:var(--deep);min-width:74px}
.so-opt em{font-style:normal;font-size:10.5px;color:var(--dim)}
.so-opt:hover>span{border-color:var(--amber)}
.so-opt:has(input:checked)>span{border-color:var(--amber-hi);background:var(--well)}
.so-opt:has(input:checked) em{color:var(--amber-hi)}
@media (max-width:520px){.cf{width:52px;height:76px}.cf .su{top:28px;font-size:21px}.meter{grid-template-columns:3em minmax(0,1fr) 3.4em;gap:6px}.meter.mana{grid-template-columns:3em minmax(0,.6fr) minmax(3.4em,.4fr)}.stack{inset:4px 6%}.stack .mini{display:none}}
/* ---- zoom: UI Size scales the whole game, Card Icons scales what is printed on cards ---- */
:root{--ci:1;--uiz:1}
main.game,#ov>.ovbox,#leavebox>.ovbox{zoom:var(--uiz)}
.cf{width:calc(60px * var(--ci));height:calc(86px * var(--ci))}
.cf .cx .rk{font-size:calc(22px * var(--ci))}.cf .cx .rk.jk{font-size:calc(14px * var(--ci))}.cf .cx i{font-size:calc(13px * var(--ci))}
.cf .su{top:calc(32px * var(--ci));font-size:calc(24px * var(--ci))}
.cf .so svg{width:calc(17px * var(--ci));height:calc(17px * var(--ci))}
.cf .ty{font-size:calc(8px * var(--ci))}
.cf.sm{width:calc(34px * var(--ci));height:calc(48px * var(--ci))}
.cf.sm .cx .rk{font-size:calc(15px * var(--ci))}.cf.sm .cx i{font-size:calc(10px * var(--ci))}.cf.sm .su{top:calc(22px * var(--ci));font-size:calc(15px * var(--ci))}
.cf.sm .so svg{width:calc(12px * var(--ci));height:calc(12px * var(--ci))}
.stack .lead .rk{font-size:calc(clamp(20px,2.7vw,30px) * var(--ci))}
.stack .lead .rk.jk{font-size:calc(clamp(14px,1.9vw,19px) * var(--ci))}
.stack .lead i{font-size:calc(clamp(15px,2vw,20px) * var(--ci))}
.stack .so svg{width:calc(19px * var(--ci));height:calc(19px * var(--ci))}
.stack .mini{font-size:calc(11px * var(--ci));color:#3d3022;font-weight:400;min-height:calc(13px * var(--ci))}
.stack .ty{font-size:calc(9px * var(--ci))}
.stack .cnt{font-size:calc(13px * var(--ci))}
.stack .odds,.stack .hypo,.stack .souls,.stack .used{font-size:calc(11px * var(--ci))}
.cb{width:calc(34px * var(--ci));height:calc(48px * var(--ci))}
/* ---- setup box: wide on desktop, with tabs ---- */
.ovbox.setup{max-width:min(1060px,96vw);padding:0;display:flex;flex-direction:column}
.ovbox.setup .shead{padding:20px 26px 6px}
.ovbox.setup .modes{padding:0 26px 4px}
.ovbox.setup>.dim{padding:0 26px}
.stabs{display:flex;gap:2px;padding:0 20px;border-bottom:1px solid #000;position:sticky;top:0;background:var(--well);z-index:2}
.stab{font-family:var(--mono);font-weight:200;font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);background:var(--deep);border:1px solid var(--rule);border-bottom:0;padding:8px 18px;cursor:pointer;margin-top:6px}
.stab:hover{color:var(--amber-hi)}
.stab.on{color:#000;background:var(--amber);border-color:var(--amber)}
.spanel{padding:6px 26px 4px;overflow:auto}
.sfoot{padding:12px 26px 18px;margin:0;border-top:1px solid #000;position:sticky;bottom:0;background:var(--well)}
.pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:0 16px}
@media (max-width:900px){.pgrid{grid-template-columns:1fr}}
.ovbox select{font-family:var(--mono);font-size:15px;background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:6px 9px;max-width:240px}
/* ---- leave warning ---- */
#leavebox{position:fixed;inset:0;z-index:90;background:rgba(5,3,2,.88);display:grid;place-items:center;padding:16px}
#leavebox[hidden]{display:none}
#leavebox .ovbox{max-width:480px}
/* ---- bottom controls ---- */
.gbar{position:fixed;bottom:max(10px,env(safe-area-inset-bottom,0px));z-index:50;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text);background:rgba(0,0,0,.78);border:1px solid var(--rule);padding:3px 8px}
#gbarL{left:max(10px,env(safe-area-inset-left,0px))}
#gbar{right:calc(max(10px,env(safe-area-inset-right,0px)) + 112px)}
.gbar select{font-family:var(--mono);font-size:12.5px;background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:2px 4px;text-transform:none;letter-spacing:0}
.gctl{display:inline-flex;align-items:center;gap:4px}
.gctl b{font-weight:400;color:var(--text);min-width:3.2em;text-align:center}
.gctl button,.gtog{font-family:var(--mono);font-size:14px;line-height:1;color:var(--amber);background:transparent;border:1px solid var(--rule);padding:4px 8px;cursor:pointer}
.gtog{font-size:12.5px;letter-spacing:.04em;text-transform:none}
.gctl button:hover,.gtog:hover{color:var(--amber-hi);border-color:var(--amber)}
body:has(.game){padding-bottom:96px}
@media (max-width:760px){#gbar{right:max(10px,env(safe-area-inset-right,0px));bottom:44px;max-width:calc(100vw - 20px)}#gbarL{bottom:78px}}
/* ---- hand under your own bars ---- */
#handslot #handwrap{margin:8px 0 6px;padding-left:12px;border-left:2px solid var(--rule)}
#handslot #handwrap h3{font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin:0 0 8px;border-bottom:1px solid #000;padding-bottom:4px;font-weight:200}
/* ---- quotes ---- */
#quotes{margin-top:26px}
.qbox{max-height:170px;overflow:auto;border:1px solid var(--rule);background:var(--deep);padding:10px 14px;margin:6px 0 8px}
#qtext{margin:0 0 6px;white-space:pre-line;font-size:14.5px;line-height:1.7}
#qsrc{margin:0}
/* ---- Jester theme: black like chapter 26, with blackletter titles ---- */
html.th-jester .game h1,html.th-jester .ovbox h2{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;letter-spacing:.02em}
html.th-jester .game h1{font-size:clamp(30px,5vw,42px)}
/* ---- battle maps ---- */
#board{position:relative}
#board .row{grid-template-columns:repeat(var(--cols,5),minmax(0,1fr));z-index:1}
#board .mapbg{position:absolute;inset:-6px;z-index:0;pointer-events:none;overflow:hidden;border:1px solid #000}
#board .mapbg svg{display:block;width:100%;height:100%}
#board.mapped .rl{color:#e6d6bd;text-shadow:0 1px 2px #000,0 0 4px #000}
#board.mapped .tile{background:transparent;border-color:#00000088}
#board.mapped .row.midline .tile{background:transparent}
.tile .tart{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.tile .stack{z-index:2}
.tile.void,.tile.water{cursor:default;border-color:transparent!important}
#board.mapped .row.river{gap:0}
#board.mapped .row.river .tile{border-color:transparent}
#board.mapped .row.river .tile.bridge{border-color:#00000088}
#board:not(.mapped) .tile.void{visibility:hidden}
#board:not(.mapped) .tile.water{background:#1b2a3a}
.tile.tmove::after,.tile.tplace::after,.tile.tatk::after,.tile.sel::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none}
.tile.tmove::after{background:#e9a15738;box-shadow:inset 0 0 0 2px var(--amber)}
.tile.tplace::after{background:#8fbf7440;box-shadow:inset 0 0 0 2px #8fbf74}
.tile.tatk::after{background:#ff7a6640;box-shadow:inset 0 0 0 2px #ff7a66}
.tile.sel::after{box-shadow:inset 0 0 0 2px var(--amber-hi)}
.tile:hover::before{content:"";position:absolute;inset:0;z-index:1;box-shadow:inset 0 0 0 1px var(--amber);pointer-events:none}
.mapnote{border-left:2px solid var(--amber);padding-left:10px}
/* ---- turn buttons in a bar at the bottom ---- */
#actbar{position:static;display:flex;align-items:center;gap:12px;background:rgba(10,7,4,.94);border:1px solid var(--amber);padding:7px 12px;margin:2px 0 10px;flex-wrap:wrap;justify-content:center}
#actbar[hidden]{display:none}
#actph{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
#actph b{font-weight:400;color:var(--amber-hi)}
#actbar #controls{justify-content:center}

#ctltop:empty{display:none}
.spell small.dc{margin-left:7px;font-size:10px;color:var(--dim)}
#selbottom #selwrap{margin-top:18px}
#selbottom #selwrap h3,#seltop #selwrap h3{font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin:0 0 8px;border-bottom:1px solid #000;padding-bottom:4px;font-weight:200}

#ctltop{grid-column:1/-1}
/* ---- more players: opponent boxes, teams, zones, timer ---- */
#foe.multi{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 14px;border-left:0;padding-left:0}
#foe.multi .pbox.sub{margin:0}
#foe.multi .handrow .card,#foe.multi .handrow .cback{transform:scale(.85);transform-origin:left center}
.ally,.outmark,.sidetag{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;padding:0 6px;border:1px solid var(--pc,var(--amber));color:var(--pc,var(--amber))}
.outmark{border-color:var(--dim);color:var(--dim)}
.sidetag.s0{--pc:#8fbf74}.sidetag.s1{--pc:#e3b944}
.pbox:has(.outmark){opacity:.55}
.stack.ally{outline:1px solid var(--pc);outline-offset:2px}
.tile.zone::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;box-shadow:inset 0 -3px 0 0 var(--zc),inset 0 0 0 1px color-mix(in srgb,var(--zc) 45%,transparent);background:color-mix(in srgb,var(--zc) 10%,transparent)}
.tile.zone:hover::before{box-shadow:inset 0 0 0 1px var(--amber),inset 0 -3px 0 0 var(--zc)}
#board.nolabels .row{padding-top:0}
#board[style*="--cols:7"] .tile,#board[style*="--cols:8"] .tile,#board[style*="--cols:9"] .tile{min-height:44px}
#board[style*="--cols:8"] .stack,#board[style*="--cols:9"] .stack,#board[style*="--cols:7"] .stack{inset:3px 6%}
.timer{font-family:var(--mono);font-size:15px;min-width:3ch;color:var(--amber-hi);border:1px solid var(--rule);padding:2px 8px}
.timer:empty{display:none}
.timer.low{color:#ff7a66;border-color:#ff7a66}
.pbtn{display:inline-flex;align-items:center;gap:6px;border-color:var(--pc)}
.pbtn small{color:var(--dim)}
.seat{border-left:2px solid var(--pc)}
.seat legend{display:flex;align-items:center;gap:8px}
.seat .srow{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:end}
.seat details.look summary{cursor:pointer;color:var(--dim);font-size:13px;margin:6px 0}
.seat details.look[open] summary{color:var(--amber)}
@media (max-width:760px){#board[style*="--cols:7"] .tile,#board[style*="--cols:8"] .tile,#board[style*="--cols:9"] .tile{min-height:36px}#foe.multi{grid-template-columns:1fr}}

/* ---- v9: dice-box history, tile names, full width, setup details ---- */
button.tray{display:block;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;position:relative}
button.tray:hover,button.tray:focus-visible{border-color:var(--pc,var(--amber));outline:none}
.tray .dice{display:flex}
.tray .lastsp{text-transform:none;letter-spacing:.02em;font-size:10.5px;color:var(--dim);margin-left:4px}
.tray .hhint{position:absolute;right:7px;top:4px;font-size:10px;letter-spacing:.08em;color:var(--dim)}
#histpop{position:absolute;z-index:80;background:#0b0806;border:1px solid var(--amber);box-shadow:0 8px 26px #000d;max-height:min(60vh,420px);display:flex;flex-direction:column}
#histpop[hidden]{display:none}
#histpop .hhead{display:flex;align-items:flex-start;gap:6px;border-bottom:1px solid var(--rule);padding:6px}
#histpop .htabs{display:flex;flex-wrap:wrap;gap:4px;flex:1}
#histpop .htab{font-family:var(--mono);font-size:12px;background:transparent;color:var(--dim);border:1px solid var(--rule);padding:3px 7px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
#histpop .htab.on{color:var(--text);border-color:var(--pc)}
#histpop .hx{font-size:18px;line-height:1;background:transparent;border:1px solid var(--rule);color:var(--amber);cursor:pointer;padding:2px 8px}
#histpop .hlist{list-style:none;margin:0;padding:6px 10px 10px;overflow:auto;font-size:13px}
#histpop .hlist li{padding:3px 0;border-bottom:1px solid #ffffff0d}
#histpop .hlist li.spell b{color:var(--amber-hi)}
#histpop .hlist li b{font-weight:400}
#histpop time{font-size:11px;color:var(--dim)}
#histpop small{font-size:10.5px;color:var(--dim);margin-left:4px}
.tile .coord{position:absolute;left:3px;top:2px;z-index:3;font-size:9px;line-height:1;letter-spacing:.04em;color:#f3e6cf;text-shadow:0 0 3px #000,0 1px 2px #000;pointer-events:none;opacity:.85}
body.fullw .game.wide{max-width:none;padding-left:clamp(12px,2vw,32px);padding-right:clamp(12px,2vw,32px)}
@media (max-width:900px){.pc-only{display:none}}
.opt.off{opacity:.38;cursor:not-allowed;filter:grayscale(.4)}
.opt.off:hover{border-color:var(--rule)}
.optgroup{flex:1 0 100%;margin:8px 0 0;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.sizesel{display:flex;flex-wrap:wrap;gap:6px 18px}
.sizesel select{font-family:var(--mono);font-size:14px;background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:4px 6px}
.ovbox [hidden],#histpop[hidden]{display:none!important}
#histpop .hlist li{display:block;grid-template-columns:none}
body.fullw #board{max-width:calc((100vh - 150px - var(--rows,5) * 19px) * var(--cols,5) / (0.9 * var(--rows,5)));margin-left:auto;margin-right:auto}
body.fullw #actbar{max-width:max-content;margin-left:auto;margin-right:auto}
@media (max-width:760px){.gbar,#gbar,#gbarL{position:static;margin:8px 16px;max-width:none;justify-content:flex-start}body:has(.game){padding-bottom:16px}}

/* ---- v10: log with times and player colors ---- */
.pn{color:var(--pc)}
#log li{display:flex;gap:10px;align-items:baseline;border-left:3px solid var(--pc,transparent);padding-left:8px}
#log li time{flex:none;font-size:11px;color:var(--dim);min-width:8.5ch;font-variant-numeric:tabular-nums}
#log li .lt{flex:1;min-width:0}
#log li.cast{color:var(--text)}
#log li.cast b{color:var(--amber-hi);font-weight:400}
#timeroff[hidden]{display:none}
/* ---- v11: Substances ---- */
.cf.unit .cx .rk.un{font-family:var(--mono);font-weight:400;font-size:calc(9px * var(--ci));letter-spacing:.02em;line-height:1.1;max-width:calc(48px * var(--ci));text-align:left;white-space:normal}
.cf.unit .cx{align-items:flex-start}
.cf.unit .uic{position:absolute;left:0;right:0;top:calc(28px * var(--ci));display:flex;justify-content:center;line-height:0}
.cf.unit .uic svg{width:calc(30px * var(--ci));height:calc(30px * var(--ci))}
.cf.sm.unit .uic{top:calc(16px * var(--ci))}.cf.sm.unit .uic svg{width:calc(18px * var(--ci));height:calc(18px * var(--ci))}
.cf.sm.unit .cx .rk.un{font-size:calc(7px * var(--ci))}
.cf .hearts{position:absolute;left:0;right:0;bottom:calc(15px * var(--ci));text-align:center;font-size:calc(10px * var(--ci));color:#b3191f;letter-spacing:1px}
.hearts s{text-decoration:none;color:#15100b33}
.cf .pup{position:absolute;left:0;right:0;bottom:calc(16px * var(--ci));display:flex;justify-content:center;line-height:0;opacity:.75}
.cf.u-satan{background:#e9d3c8}
.cf.u-tree{background:#e4ead2}
.cf.hated,.stack.hated{box-shadow:inset 0 0 0 2px #efe2c8,inset 0 0 0 3px var(--pc),inset 0 0 22px #e0182a99,0 2px 4px #0008}
.stack.hated::after{content:"Hate";position:absolute;left:3px;bottom:16px;font-size:8px;letter-spacing:.06em;text-transform:uppercase;color:#b3121f}
.stack.pink{background:#f7d4e4;box-shadow:inset 0 0 0 2px #f7d4e4,inset 0 0 0 3px #e85b9b,0 0 10px #ff7ab8aa}
.stack .ulead{flex-direction:column;align-items:center;gap:1px}
.stack .ulead svg{width:calc(26px * var(--ci));height:calc(26px * var(--ci))}
.stack .uname{font-family:var(--mono);font-weight:400;font-size:calc(10px * var(--ci));line-height:1}
.stack .lead .usym{margin-left:2px}
.stack .bhp{position:absolute;bottom:26px;left:0;right:0;text-align:center;font-size:9px;color:#b3191f}
.stack .mini .hearts{color:#b3191f;letter-spacing:1px}
.stack .stun{position:absolute;top:18px;right:4px;display:flex;align-items:center;font-size:11px;color:#1f5f9e;font-weight:400}
.stack.u-tree{background:#e4ead2}
.stack.u-satan{background:#ead0c6}
.spell .bolts,.spell .chips,.subline .bolts{display:inline-flex;gap:1px;margin-left:6px;vertical-align:middle}
.spell .chips i,.spell .bolts i,.subline .bolts i{display:inline-flex;line-height:0;font-style:normal}
.spell .chips{flex-wrap:wrap;max-width:130px}
.spell.subsp{border-left:2px solid var(--amber)}
.spell small.subtag{color:var(--amber);opacity:.8}
.spell small.once{color:#e8a8c8}
.subline{align-items:center}
.pinktag{color:#ff9ccc;border:1px solid #e85b9b;padding:0 6px;font-size:11px}
.hatetag{color:#ff6e78}
.uinfo{display:flex;gap:10px;align-items:flex-start;margin:0 0 8px}
.uinfo ul{margin:4px 0 0;padding-left:18px;font-size:12.5px;color:var(--dim)}
.uinfo ul b{color:var(--text);font-weight:400}
.choices{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.choices .choice{text-align:left;display:flex;flex-direction:column;gap:2px;padding:9px 12px}
.choices .choice small{font-size:12px;color:var(--dim);text-transform:none;letter-spacing:0}
.odtabs{display:flex;gap:6px;margin:4px 0 8px;flex-wrap:wrap}
.odtab{font-family:var(--mono);background:transparent;color:var(--dim);border:1px solid #5a1a1e;padding:4px 10px;cursor:pointer}
.odtab.on{color:#ffd7d7;border-color:#c2323a;background:#2a0b0d}
#shared .notice{color:#ffb3b8;border-bottom-color:#c2323a;animation:noticepulse 2.4s ease-in-out infinite}
#shared .notice b{font-weight:400;font-size:10px;letter-spacing:.1em;text-transform:uppercase;margin-left:4px;color:#ff6e78}
@keyframes noticepulse{50%{opacity:.6}}
.cf.satan-od{animation:satanstatic .32s steps(2) infinite;filter:sepia(1) hue-rotate(-40deg) saturate(4) brightness(.62) contrast(1.4)}
.cf.satan-od::after{content:"";position:absolute;inset:0;border-radius:inherit;background:repeating-linear-gradient(0deg,#ff1a2a33 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,#00000055 0 2px,transparent 2px 5px);mix-blend-mode:multiply;pointer-events:none}
@keyframes satanstatic{0%{transform:translate(0,0)}25%{transform:translate(-1px,1px) skewX(2deg)}50%{transform:translate(1px,-1px)}75%{transform:translate(-2px,0) skewX(-3deg)}100%{transform:translate(1px,1px)}}
#pop{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;background:#000a;padding:16px}
#pop[hidden]{display:none}
#pop .popbox{max-width:520px;width:100%;background:#0b0806;border:1px solid var(--pc);box-shadow:0 0 0 1px #000,0 10px 40px #000;padding:18px 22px;position:relative;overflow:hidden}
#pop .popbox::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,#ffffff07 0 1px,transparent 1px 3px);pointer-events:none}
#pop h2{color:var(--pc);margin-top:0}
#notes{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:110;display:flex;flex-direction:column;gap:6px;width:min(560px,calc(100vw - 32px));pointer-events:none}
.note{pointer-events:auto;cursor:pointer;font-family:var(--mono);font-size:13px;color:var(--pc);background:rgba(0,0,0,.72);border:1px solid var(--pc);padding:8px 12px;position:relative;overflow:hidden;transition:opacity .6s}
.note::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,#ffffff0d 0 1px,transparent 1px 3px);pointer-events:none}
.note.out{opacity:0}
.opts.subs .opt.off small{opacity:.9}
.subsym{display:inline-flex;vertical-align:middle;margin-right:6px;line-height:0}
.fixednote{display:flex;align-items:center;gap:8px}
.stack .uname,.stack .ulead b{color:#15100b!important}

/* ---- v12: Delusions, the moon, the Auction ---- */
.blindnote{margin:4px 0;padding:6px 10px;border:1px solid #6f4fb0;color:#cdb8ff;background:#140d22;font-size:13px}
.blindnote[hidden]{display:none}
.delutag{color:#cdb8ff;border:1px solid #6f4fb0;padding:0 6px;font-size:11px}
.joytag{color:#ffe09a;border:1px solid #c9a03a;padding:0 6px;font-size:11px}
.stack.joy{box-shadow:inset 0 0 0 2px #efe2c8,inset 0 0 0 4px var(--pc),0 0 14px var(--pc)}
#moon.moontarget svg.moon{cursor:pointer;filter:drop-shadow(0 0 8px #ff7a66)}
#moon.moontarget::after{content:"click the moon to attack the Leviathan";display:block;font-size:11px;color:#ff9a8a}
.auct{display:flex;flex-direction:column;gap:10px;margin:10px 0}
.aitem{display:flex;gap:12px;align-items:center}
#shared .auct-l{color:#e6c46a}
svg.moon.saturn,svg.moon.eaten{overflow:visible}
/* ---- v13: card corners, stats, comparisons, menus ---- */
.hc .mini-btn{font-size:13px;padding:5px 4px;width:100%;min-width:calc(60px * var(--ci));color:var(--amber);border-color:var(--amber)}
.cf .ci,.stack .ci{position:absolute;top:0;right:0;width:13px;height:13px;cursor:pointer;z-index:4;touch-action:none}
.cf .ci::before,.stack .ci::before{content:"";position:absolute;top:2px;right:2px;width:9px;height:9px;border-top:1.5px solid var(--pc,#5a4a38);border-right:1.5px solid var(--pc,#5a4a38);opacity:.85}
.cf .ci:hover::before,.stack .ci:hover::before{opacity:1;border-color:#15100b}
.stack .cnt{right:16px}
.cf .so{right:13px}
.ciline{position:absolute;height:2px;background:var(--amber-hi);transform-origin:0 50%;pointer-events:none;z-index:150;box-shadow:0 0 6px var(--amber)}
#cinfo{position:absolute;z-index:130;background:rgba(6,4,3,.9);border:1px solid var(--rule);box-shadow:0 8px 26px #000c;padding:8px 10px;font-size:12.5px;backdrop-filter:blur(2px)}
#cinfo[hidden]{display:none}
#cinfo.wide{width:auto!important;max-width:min(520px,calc(100vw - 20px))}
.cin .cih{border-bottom:1px solid var(--pc,var(--rule));padding-bottom:4px;margin-bottom:6px;display:flex;align-items:center;gap:6px}
.cin .cih b,#cinfo .cih b{color:var(--amber-hi);font-weight:400}
.cin dl{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:0}
.cin dt{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;padding-top:2px}
.cin dd{margin:0;color:var(--text)}
.cin dd small{color:var(--dim)}
.k-type{color:#c9b38a}.k-atk{color:#ff8f7a}.k-def{color:#7fb6ff}.k-hp{color:#ff6e8a}.k-soul{color:#b49cff}.k-fx{color:#e6c46a}.k-cards{color:#9fd6a8}
.cin.sky p{margin:4px 0}.skyword{color:#e6c46a;font-style:italic}
table.cmp{border-collapse:collapse;width:100%;font-size:12.5px}
table.cmp th,table.cmp td{padding:3px 6px;border-bottom:1px solid #ffffff14;text-align:left}
table.cmp th{color:var(--dim);font-weight:400}
table.cmp td.gt{color:#7fdc8a}table.cmp td.lt{color:#ff7a7a}table.cmp td.eq{color:#f0d36a}
.subst{background:transparent;border:0;padding:0;cursor:help;line-height:0}
.subst:hover svg,.subst:focus-visible svg{filter:drop-shadow(0 0 4px var(--pc))}
#spells details.school{margin:6px 0}
#spells details.school>summary{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);cursor:pointer;padding:4px 0;list-style:none}
#spells details.school>summary::before{content:"▸ ";}
#spells details.school[open]>summary::before{content:"▾ ";}
#spells details.school>summary:hover{color:var(--amber)}
.selinfo{margin:8px 0}.selinfo>summary{cursor:pointer;color:var(--dim);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.cmpbtns{display:flex;gap:6px;flex-wrap:wrap}
.stack.base{background:color-mix(in srgb,var(--pc) 26%,#efe2c8)}
.cf.basecard{background:color-mix(in srgb,var(--pc) 26%,#efe2c8)}
.manabar{position:relative}
.manabar .msur{position:absolute;right:2px;top:2px;bottom:2px;display:flex;gap:2px}
.manabar .msur i{width:7px;background:#d6c2ff;box-shadow:0 0 6px #b49cff}
.mv small{font-size:10px;color:#b49cff;letter-spacing:.06em}
#menu{position:fixed;inset:0;z-index:125;background:#000b;display:flex;align-items:center;justify-content:center;padding:16px}
#menu[hidden]{display:none}
#menu .ovbox{max-width:760px;width:100%}
#menu .mgrid{display:flex;flex-wrap:wrap;gap:10px 18px;margin:10px 0}
#menu select{font-family:var(--mono);background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:4px 6px}
#menu .gctl{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text)}
details.cinfo details.sub{margin:6px 0 6px 12px}
details.cinfo details.sub>summary{cursor:pointer;color:var(--amber)}
details.cinfo.basics>summary{color:var(--amber-hi)}
@media (min-width:1100px){.ovbox.setup{max-width:min(1500px,94vw);width:94vw;max-height:94vh}}
#board{user-select:none;-webkit-user-select:none}

/* ---- v14: fog, face-down, ambush ---- */
.tile.fog::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:repeating-linear-gradient(135deg,#0b0907c9 0 6px,#0b0907b0 6px 12px)}
#board:not(.mapped) .tile.fog{background:#0d0a08}
.stack.down::before{content:"";position:absolute;inset:3px;border-radius:4px;background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--pc) 30%,transparent) 0 4px,transparent 4px 9px);pointer-events:none;opacity:.55}
.stack.facedown{background:#1a120c;color:var(--pc);display:flex;align-items:center;justify-content:center;background-image:repeating-linear-gradient(45deg,color-mix(in srgb,var(--pc) 22%,transparent) 0 4px,transparent 4px 9px)}
.stack.facedown .ty{color:var(--pc);border-top-color:color-mix(in srgb,var(--pc) 40%,transparent)}
.stack.facedown .fdback{line-height:0}
.stack.ambush{transform:rotate(90deg) scale(.82);outline:1px dashed var(--pc);outline-offset:3px}
.fdtog{display:block;margin:8px 0;color:var(--text)}
.fdtog small{display:block;color:var(--dim);margin-left:22px}

/* ---- v15: siege, support, mining ---- */
.crys{position:absolute;inset:10% 18% 16%;z-index:1;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .2s}
.crys svg{width:100%;height:100%;filter:drop-shadow(0 0 6px hsl(var(--ch) 90% 60% / .55))}
.crys svg path{fill:hsl(var(--ch) 80% 62% / .62);stroke:hsl(var(--ch) 90% 85%);stroke-width:.7;stroke-linejoin:round}
.crys svg path.cl{fill:none;stroke:#fff9;stroke-width:.5}
.crys.under{opacity:.42;z-index:3}
.crys .cbar{position:absolute;left:8%;right:8%;bottom:-6px;height:4px;background:#0009;border-radius:2px;overflow:hidden}
.crys .cbar b{display:block;height:100%;background:#4fa8ff}
.stack{z-index:2}
.stack.hshield::after{content:"";position:absolute;inset:-4px;border-radius:9px;pointer-events:none;background:radial-gradient(ellipse at center,#6cb8ff10 40%,#6cb8ff4d);border:1.5px solid #8cc8ffcc;box-shadow:0 0 8px #6cb8ff88}
.stack .rlock{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:.32;pointer-events:none}
.stack .rlock em{position:absolute;bottom:3px;right:5px;font-style:normal;font-size:11px;opacity:1;color:#15100b;font-weight:700}
.stack .capt{position:absolute;bottom:15px;left:4px;font-size:10px;color:#5b3a1a;display:flex;align-items:center;gap:1px;line-height:1}
.stack .supp{position:absolute;top:18px;right:4px;font-size:10px;color:#a02020}
.stack .cd{position:absolute;top:18px;left:5px;font-size:10px;color:#4a3a88}
.stack.libx .xmark{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:44px;color:#b3122299;pointer-events:none;font-family:var(--mono)}
.sinfo{font-size:12px;color:var(--dim);margin:6px 0}
.libbox{border:1px dashed #b31222aa;padding:8px;margin:8px 0;display:flex;flex-direction:column;gap:4px}
.libbox label{color:var(--text)}
.libbox .btn{align-self:flex-start}
#selbox .acts{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start}
#selbox .acts .sinfo,#selbox .acts .libbox{flex-basis:100%}

/* ---- v16: the Bank, Demons, the meteor ---- */
.tile.fire::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% 85%,#ff7a1a66,#c2300022 55%,transparent 75%);animation:flick 1.6s ease-in-out infinite alternate}
@keyframes flick{from{opacity:.65}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.tile.fire::before{animation:none}}
.bankbar{display:flex;align-items:center;gap:8px;width:100%;margin-top:8px;padding:7px 10px;background:linear-gradient(90deg,#3a2d0e,#2a2010);border:1px solid #c9a23a;color:#f1d27a;font:inherit;cursor:pointer;border-radius:3px;text-align:left}
.bankbar:hover{background:linear-gradient(90deg,#4a3a12,#2f2412)}
.bankbar small{margin-left:auto;color:#cdb67a}
.ovbox.bank .bankhead{display:flex;gap:14px;align-items:flex-start}
.ovbox.bank .banker{display:inline-flex;align-items:center;justify-content:center;width:76px;height:104px;flex:none;background:#efe2c8;border:1px solid #000;border-radius:5px;box-shadow:inset 0 0 0 2px #efe2c8,inset 0 0 0 3px #c9a23a}
.ovbox.bank .bnote{color:#e8c24a;margin:6px 0 0}
.ovbox.bank .bstat{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin:12px 0}
.ovbox.bank .bstat dt{color:var(--dim)}
.ovbox.bank .bstat ul{margin:0;padding-left:18px}
.ovbox.bank .bacts p{margin:8px 0}
.neg,.mv.neg{color:#ff6b6b}
.debttag{color:#ff8a8a;border:1px solid #ff6b6b66;padding:0 5px;border-radius:3px}
.loantag{color:#e8c24a;border:1px solid #c9a23a66;padding:0 5px;border-radius:3px}
.saletag{color:#8fe3a7;border:1px solid #8fe3a766;padding:0 5px;border-radius:3px}
.pickrow.sell{flex-wrap:wrap;max-height:50vh;overflow:auto}
.sellc{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px;border:1px solid transparent;cursor:pointer}
.sellc.on{border-color:#e8c24a;background:#e8c24a14}
.sellc small{color:var(--dim);font-size:11px}
.mystery{border:1px solid #8a6fd1;padding:10px;margin:12px 0;background:#8a6fd112}
.mystery .mhead{display:flex;gap:10px;align-items:flex-start;margin-bottom:8px}

/* ---- v17: the sky, the Firmament ---- */
.moon.mars{filter:drop-shadow(0 0 6px #ff6a3a66)}
.stack.marsadv::after{content:"";position:absolute;inset:-3px;border-radius:8px;pointer-events:none;box-shadow:0 0 0 1.5px #ff6a3acc,0 0 10px #ff6a3a77}

/* ---- v18: the Second Sun, Venus, Jupiter ---- */
#board.sunlit .mapbg{filter:brightness(calc(1.32 - var(--tears,0) * .09)) saturate(1.05)}
#board.sunlit::after{content:"";position:absolute;inset:0;pointer-events:none;background:#4b2cff;opacity:calc(.07 - var(--tears,0) * .015);mix-blend-mode:screen;z-index:0}
#board.blacksun .mapbg{filter:brightness(.72) saturate(.8)}
#board{position:relative}
.moon.sun{filter:drop-shadow(0 0 8px #7b5cff99)}
.oathtag{color:#c9b8ff;border:1px solid #9a86ff66;padding:0 5px;border-radius:3px}

/* ---- v19: Mercury, eclipses ---- */
#moon.eclipsed svg.moon{filter:brightness(.38) drop-shadow(0 0 7px #ffe2a8cc)}
#moon.eclipsed .mname::after{content:" · eclipsed";color:#ffcf7a}
#moon.peacetime .mname::after{content:" · Peace";color:#b8f0d0}
#moon.wartime .mname::after{content:" · Total War";color:#ff8a7a}
html.mirage body::before{content:"";position:fixed;inset:-10%;z-index:0;pointer-events:none;background:repeating-linear-gradient(0deg,#ffe2a80a 0 3px,transparent 3px 9px),radial-gradient(ellipse at 50% 30%,#ffcf7a14,transparent 60%);animation:mirage 5s ease-in-out infinite alternate}
html.mirage #board .mapbg{filter:brightness(.7) hue-rotate(-12deg)}
@keyframes mirage{from{transform:translateY(0) skewX(0deg)}to{transform:translateY(6px) skewX(.6deg)}}
@media (prefers-reduced-motion:reduce){html.mirage body::before{animation:none}}
/* ================= v20 · UI pass 1: the play screen fits the window ================= */
/* themed scrollbars everywhere in the game */
.game *,.ovbox,.ovbox *,#etherpanel *,#menu *{scrollbar-width:thin;scrollbar-color:#8a6a2c #0c0805}
.scrollbox::-webkit-scrollbar,.ovbox::-webkit-scrollbar,.drawer ::-webkit-scrollbar{width:9px;height:9px}
.scrollbox::-webkit-scrollbar-track,.ovbox::-webkit-scrollbar-track,.drawer ::-webkit-scrollbar-track{background:#0c0805;border-left:1px solid #000}
.scrollbox::-webkit-scrollbar-thumb,.ovbox::-webkit-scrollbar-thumb,.drawer ::-webkit-scrollbar-thumb{background:#6e5323;border:1px solid #000;border-radius:5px}
.scrollbox::-webkit-scrollbar-thumb:hover,.ovbox::-webkit-scrollbar-thumb:hover,.drawer ::-webkit-scrollbar-thumb:hover{background:var(--amber)}
.scrollbox{overflow-y:auto;overscroll-behavior:contain}
/* a shorter head on the play page */
.game>header{display:flex;align-items:baseline;gap:14px;margin:4px 0 0}
.game>header h1{margin:0;font-size:clamp(22px,2.3vw,30px)}
.game .crumbs{margin-bottom:4px}
.gtop{margin:8px 0 12px;padding:6px 0}
.gtop .gmid{min-width:0}
/* the status line: who is playing, and what kind of phase it is, on its own row */
#who.statusline{grid-column:1/-1;order:9;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;padding-top:6px;border-top:1px solid #00000080;font-size:13px;color:var(--dim)}
#who .sl-k{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--amber)}
#who b{color:var(--text);font-weight:400}
#who .sl-sep{color:var(--rule)}
#who .sl-chip{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#000;background:var(--amber);padding:1px 7px;cursor:help}
/* the right column stays in view and holds the Bank, the spells and the selected stack */
@media (min-width:901px){
  .glayout{grid-template-columns:minmax(0,1fr) clamp(320px,27vw,460px)}
  .gside{position:sticky;top:8px;display:flex;flex-direction:column;max-height:calc(100vh / var(--uiz,1) - 64px);min-height:420px}
  .gside>div{margin-bottom:12px}
  .gside .spellpanel{flex:1 1 auto;min-height:180px;display:flex;flex-direction:column;margin-bottom:10px}
  .gside .spellpanel #spells{flex:1 1 auto;min-height:0;padding-right:6px}
  .gside #seltop,.gside #selbottom{flex:0 1 auto;min-height:0;display:flex;flex-direction:column;max-height:48%;margin-bottom:0}
  .gside #seltop:empty,.gside #selbottom:empty{display:none}
  .gside #selwrap{display:flex;flex-direction:column;min-height:0;margin-top:0!important}
  .gside #selbox{flex:1 1 auto;min-height:0;padding-right:6px}
  .gside #sidehand:not(:has(#handwrap)){display:none}
  .gside #sidehand{flex:none;max-height:34%;overflow:auto}
}
.gside{user-select:none;-webkit-user-select:none}
#bankslot .bankbar{margin:0 0 8px}
#bankslot:empty{display:none}
.spellpanel #spells>.sp-note{margin:0 0 6px;font-size:12.5px}
/* spells: one row each; the Ether button and Increase Max Mana lead Conjuring */
.spellrow{display:flex;gap:4px;align-items:stretch;margin:0 0 4px}
.spellrow .spell{margin:0;flex:1 1 auto;min-width:0}
.autotog{flex:none;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;background:var(--deep);color:var(--dim);border:1px solid var(--rule);padding:0 7px;cursor:pointer}
.autotog:hover{border-color:var(--amber);color:var(--amber)}
.autotog.on{background:var(--amber);border-color:var(--amber);color:#000}
.spell .sn{min-width:0}
.spell.ether{border-color:#d6d6ea66;background:linear-gradient(90deg,#14132a,#0b0a1a);color:#eeeef4}
.spell.ether em{color:#d6d6ea}
.spell.ether:hover{border-color:#d6d6ea}
.spell.ether.off{opacity:.6}
/* the Ether shop: a tall panel on the right side of the window */
#etherpanel{position:fixed;top:0;right:0;bottom:0;z-index:70;width:min(400px,92vw);display:flex;flex-direction:column;background:#0b0a1a;border-left:1px solid #d6d6ea;box-shadow:-12px 0 40px #000c;color:#eeeef4;padding:14px 0 0}
#etherpanel[hidden]{display:none}
#etherpanel .dhead{display:flex;align-items:center;justify-content:space-between;padding:0 16px 6px;border-bottom:1px solid #d6d6ea33}
#etherpanel h2{margin:0;font-size:20px;color:#fff}
#etherpanel .dnote{margin:8px 16px 6px;font-size:12.5px;color:#a9a8c2;line-height:1.45}
#etherpanel .dbody{flex:1 1 auto;min-height:0;padding:0 12px 70px 16px}
#etherpanel h3{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#a9a8c2;margin:14px 0 6px;border-bottom:1px solid #d6d6ea22;padding-bottom:3px;font-weight:200}
#etherpanel .spell{background:#14132a;border-color:#3b3a5c;color:#eeeef4}
#etherpanel .spell em{color:#e6d38a}
#etherpanel .spell:hover{border-color:#d6d6ea}
#etherpanel .spell small.left{margin-left:8px;font-size:10.5px;color:#a9a8c2}
#etherpanel .dfoot{margin:14px 0 0;font-size:12.5px}
#etherpanel .dfoot .link{color:#d6d6ea}
#etherpanel .dbody::-webkit-scrollbar-thumb{background:#4a4870}
/* an X on every window */
.xclose{position:absolute;top:6px;right:8px;z-index:5;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;font:300 22px/1 var(--mono);color:var(--dim);background:transparent;border:1px solid transparent;cursor:pointer;padding:0}
.xclose:hover,.xclose:focus-visible{color:var(--amber-hi);border-color:var(--rule);outline:none}
#etherpanel .xclose{position:static;color:#d6d6ea}
.ovbox>h2,#menu .ovbox>h2,#pop .popbox>h2{padding-right:30px}
#cinfo .xclose{top:2px;right:2px;width:22px;height:22px;font-size:18px}
#cinfo[data-hover] .xclose{display:none}
#cinfo{padding-right:26px}
#cinfo[data-hover]{padding-right:10px}
#menu .ovbox{position:relative}
/* tips: on hover (computer) or a long press (touch) */
#tipbox{position:absolute;z-index:140;max-width:calc(100vw - 20px);background:rgba(8,6,4,.96);border:1px solid var(--amber);box-shadow:0 8px 26px #000c;padding:8px 12px;font-size:13px;line-height:1.5;color:var(--text);pointer-events:none}
#tipbox.pinned{pointer-events:auto;padding-right:34px}
#tipbox[hidden]{display:none}
#tipbox p{margin:0}
/* the card corner: a bigger target that shows the info when the mouse rests on it */
.cf .ci,.stack .ci{width:clamp(16px,30%,28px);height:clamp(16px,30%,28px)}
.cf .ci::before,.stack .ci::before{width:10px;height:10px}
.cf .ci:hover,.stack .ci:hover{background:radial-gradient(circle at 100% 0,#ffffff55,transparent 70%)}
/* one bar at the bottom: Theme, sizes, and the static switch */
#gbar{left:auto;right:max(10px,env(safe-area-inset-right,0px));max-width:calc(100vw - 20px);justify-content:flex-end}
#gbar .static-toggle{position:static;font-size:12px;padding:2px 8px;background:transparent}
body:has(.game){padding-bottom:52px}
/* the Bank: wider, and its pickers fade when there is nothing to pick */
.ovbox.bank.wide{max-width:min(1000px,calc(96vw / var(--uiz,1)))}
.ovbox.bank .bacts label.off{opacity:.42}
.ovbox.bank select:disabled{opacity:.6;cursor:not-allowed}
.ovbox.bank .bacts p{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
/* big text: grids of label and value stack instead of squeezing */
body.bigtext #menu .mgrid label.f{min-width:min(100%,260px)}
#menu .mgrid label.f{flex:1 1 220px}
#menu .ovbox{max-height:92vh;overflow:auto}
body.bigtext .pbox .stats{gap:2px 12px}
body.bigtext #selbox li{display:block}
/* piles grouped by card type */
.ovbox.wide{max-width:min(900px,96vw)}
.ovbox .ecount{margin:0 4px 4px 0}
.ovbox.bank .bacts p small{flex:1 1 100%}
/* the bottom bar folds away: Display opens the sizes and switches */
#gbar #gmore{display:none;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px 12px}
#gbar.open #gmore{display:flex}
#gbar.open{background:rgba(0,0,0,.92)}
@media (min-width:1100px){.pbox .meters{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);column-gap:22px}}
.ovbox>.xclose,#menu .ovbox>.xclose,#pop .popbox>.xclose{position:absolute!important;top:8px;right:10px}
.ovbox.bank .bstat dt{white-space:nowrap}
.ovbox.bank .bstat dd{margin:0}
body.bigtext #cinfo:not(.wide){width:min(470px,calc(100vw - 20px))!important}
#menu select{width:100%;max-width:none}
#menu .mgrid label.f{min-width:0}
@media (max-width:900px){.spellpanel #spells{max-height:62vh;padding-right:6px}#selbox{max-height:70vh}}
#bankslot .bankbar{font-size:14px;padding:6px 10px}
/* ================= v21 · English pass: spell info, the sky box, the Bank ================= */
/* spell info reads like card info: labels on the left, short lines on the right */
#tipbox.rich{padding:8px 12px 10px;max-width:min(380px,calc(100vw - 20px))}
.spelltip .cih{flex-wrap:wrap;font-size:12px;color:var(--dim);letter-spacing:.04em}
.spelltip .cih b{font-size:14px}
.spelltip dl.stdl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:6px 0 0;font-size:12.5px;line-height:1.45}
.spelltip dt{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;padding-top:2px;color:var(--dim)}
.spelltip dt.k-price{color:#e6c46a}.spelltip dt.k-when{color:#9fc6e8}.spelltip dt.k-need{color:#c9b3ff}.spelltip dt.k-eff{color:#9fe8b4}.spelltip dt.k-lim{color:#ff9d8a}
.spelltip dd{margin:0;color:var(--text)}
.spelltip .sblock{margin:8px 0 0;padding:4px 8px;font-size:12px;color:#ffd2cd;background:#4c080b80;border-left:2px solid #d0161d}
/* the sky box: compact, smaller words, its Form at the bottom */
#cinfo .cin.sky{font-size:12px;line-height:1.45}
.cin.sky .cih{justify-content:space-between}
.cin.sky .cih b{font-size:14px}
.cin.sky .skystate{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.cin.sky ul.skyl{list-style:none;margin:0;padding:0}
.cin.sky ul.skyl li{padding:2px 0 2px 10px;position:relative;color:var(--text)}
.cin.sky ul.skyl li::before{content:"";position:absolute;left:0;top:.75em;width:4px;height:1px;background:var(--amber)}
.cin.sky .skyform,.skyopts .skyform,.skyexp .skyform{display:block;margin-top:7px;padding-top:5px;border-top:1px solid var(--rule);font-size:12px;letter-spacing:.04em;color:#e6c46a;font-style:italic}
.skyopts .opt .skyform{margin-top:6px;padding-top:4px}
.skyexp dd small{display:block;color:var(--dim);font-size:12px;margin-top:2px}
.skyexp .skyform{margin:4px 0 8px}
/* Spells explained: what you need, in italics; the limits, quieter */
.spellinfo dd i{color:#c9b3ff;font-style:normal}
.spellinfo dd small{display:block;color:var(--dim);font-size:12.5px;margin-top:2px}
.spellinfo dd ul{margin:4px 0 8px;padding-left:1.2em}
/* the Bank: each figure on its own row, with a plain sentence under it */
.ovbox.bank .bstat{grid-template-columns:max-content 1fr;gap:10px 18px;align-items:baseline;margin:14px 0;padding:10px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.ovbox.bank .bstat dt{font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.ovbox.bank .bstat dd b{font-weight:400;font-size:16px;color:var(--amber-hi)}
.ovbox.bank .bstat dd.neg b{color:#ff8f86}
.ovbox.bank .bline{display:block;font-size:12.5px;color:var(--dim);margin-top:2px}
.ovbox.bank .bline.warn{color:#ff9d8a}
.ovbox.bank details.bankhelp{margin:12px 0;border:1px solid var(--rule);padding:6px 12px;background:#00000040}
.ovbox.bank details.bankhelp summary{cursor:pointer;color:var(--amber);font-size:13px;letter-spacing:.06em}
.ovbox.bank details.bankhelp dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:10px 0 4px;font-size:13px}
.ovbox.bank details.bankhelp dt{color:var(--amber-hi)}
.ovbox.bank details.bankhelp dd{margin:0;color:var(--text)}
body.bigtext .ovbox.bank details.bankhelp dl{grid-template-columns:1fr}
body.bigtext .ovbox.bank details.bankhelp dd{margin:0 0 6px}
/* ================= v22 · UI pass 3: the setup menu ================= */
/* a big window on a computer: nearly the whole screen, with the options in columns */
@media (min-width:901px){
  .ovbox.setup{width:min(1480px,calc(96vw / var(--uiz,1)));max-width:none}
  .ovbox.setup:has(.stabs){height:calc(94vh / var(--uiz,1));max-height:none}
  .ovbox.setup .spanel:not([data-p=players]){columns:2 420px;column-gap:20px}
  .ovbox.setup .spanel fieldset.pf{break-inside:avoid;display:block}
  #seats{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:0 16px;align-items:start}
}
.ovbox.setup .shead{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;padding:16px 26px 10px}
.ovbox.setup .shead h2{margin:0}
.ovbox.setup .shead p{margin:0;font-size:13px}
.ovbox.setup .spanel{flex:1 1 auto;min-height:0;padding:10px 26px 8px}
.ovbox.setup fieldset.pf{margin:0 0 14px;padding:6px 12px 10px}
.ovbox.setup .modes{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
/* option tiles: one size, the name only; the meaning is in the info */
.ovbox.setup .opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,138px),1fr));grid-auto-rows:1fr;gap:6px}
.ovbox.setup .opts.subs{grid-template-columns:repeat(auto-fill,minmax(min(100%,164px),1fr))}
.ovbox.setup .opt{flex:none;display:flex;align-items:center;min-height:40px;padding:7px 28px 7px 10px;font-size:13.5px;line-height:1.3}
.ovbox.setup .opt>span{display:block;width:100%}
.ovbox.setup .opts.skyopts .opt{align-items:stretch}
.ovbox.setup .opts.skyopts .opt>span{display:flex;flex-direction:column;justify-content:space-between}
.ovbox.setup .skyopts .skyform{margin-top:6px;padding-top:4px;font-size:11.5px}
.ovbox.setup .opt.maptile{flex-direction:column;align-items:stretch;padding:0 28px 8px 0;overflow:hidden}
.ovbox.setup .opt.maptile>span::before{content:"";display:block;height:16px;margin:0 -28px 7px 0;background:var(--sw);border-bottom:1px solid #000}
.ovbox.setup .opt.maptile>span{padding-left:10px}
/* the small "i": a faint mark on a computer (the mouse shows the info), a real button on a touch screen */
.tipi{position:absolute;top:4px;right:4px;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--rule);background:transparent;color:var(--dim);font:italic 400 11px/1 Georgia,serif;cursor:pointer;padding:0;opacity:.55;z-index:2}
.tipi:hover,.tipi:focus-visible{opacity:1;color:var(--amber-hi);border-color:var(--amber);outline:none}
label.chk>.tipi,label.f>.tipi,.f>.tipi{position:static;flex:none;margin-left:6px;align-self:center}
@media (hover:none){.tipi{opacity:1;width:24px;height:24px;font-size:13px;color:var(--amber);border-color:var(--amber)}}
/* switches and pickers on one line each */
.ovbox.setup label.chk{align-items:center;margin:6px 0;cursor:pointer}
.ovbox.setup label.chk b{font-weight:400;color:var(--text)}
.ovbox.setup label.f{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:8px 0}
.ovbox.setup label.f select{flex:1 1 180px;max-width:360px}
.ovbox.setup .f:not(label){margin:8px 0}
.ovbox.setup .f:not(label)>span:first-child{display:block;margin-bottom:5px}
.ovbox.setup .seat .srow label.f{flex:1 1 200px}
.ovbox.setup .seat .srow label.f input{flex:1 1 120px;min-width:0}
.ovbox.setup .fixednote{font-size:12.5px}
#tipbox .subtip .cih{gap:8px}
#tipbox .subtip .stag{margin:6px 0 4px;font-style:italic;color:var(--text)}
#tipbox .subtip ul{margin:0;padding-left:1.1em;font-size:12.5px;line-height:1.45}
#tipbox .subtip li{margin:2px 0}
@media (max-width:900px){.ovbox.setup{width:100%;max-height:calc(100dvh - 24px)}#ov:has(.ovbox.setup){padding:8px}.ovbox.setup .shead,.ovbox.setup .spanel,.sfoot{padding-left:14px;padding-right:14px}}
.deftag{display:inline-block;margin-left:6px;padding:0 5px;font-style:normal;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);border:1px solid var(--rule);vertical-align:middle;line-height:1.5}
.opt:has(input:checked) .deftag{color:var(--amber);border-color:var(--amber)}
.ovbox.setup .opt.maptile .tipi{top:21px}
.ovbox.setup legend .tipi{position:static;display:inline-flex;margin-left:6px;vertical-align:middle}
@media (max-width:900px){.stabs{overflow-x:auto;scrollbar-width:none;padding:0 10px}.stabs::-webkit-scrollbar{display:none}.stab{padding:8px 12px;flex:none}
  .ovbox.setup .opts.subs,.ovbox.setup .opts{grid-template-columns:repeat(auto-fill,minmax(min(100%,128px),1fr))}}
.ovbox.setup .modes .mode{align-self:stretch}.ovbox.setup>.dim:last-child{padding-bottom:18px}
/* ================= v23 · UI pass 4: card faces ================= */
/* the mark in the top-left corner, in the Ace's blackletter */
.cf.unit .cx .rk.mk{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:calc(22px * var(--ci));line-height:.95;letter-spacing:0;max-width:none;white-space:nowrap}
.cf.unit .cx .rk.mk.two{font-size:calc(17px * var(--ci));letter-spacing:-.02em}
.cf.unit .cx .mk.sup{font-family:var(--mono);font-weight:400;font-size:calc(7px * var(--ci));letter-spacing:.08em;text-transform:uppercase;margin-top:2px}
.cf.unit .cx .rk.svgmk{display:block;line-height:0}
.cf .mksvg{display:block;height:calc(17px * var(--ci));width:auto}
.cf .mksvg.wide{height:calc(11px * var(--ci));margin-top:calc(4px * var(--ci))}
.cf.sm.unit .cx .rk.mk{font-size:calc(15px * var(--ci))}.cf.sm.unit .cx .rk.mk.two{font-size:calc(11px * var(--ci))}
.cf.sm .mksvg{height:calc(11px * var(--ci))}.cf.sm .mksvg.wide{height:calc(7px * var(--ci));margin-top:2px}
.cf.sm.unit .cx .mk.sup{font-size:calc(5px * var(--ci))}
/* the picture: centered, a little larger now that the name has moved to the bottom */
.cf.unit .uic{top:calc(25px * var(--ci))}
.cf.unit .uic svg{width:calc(32px * var(--ci));height:calc(32px * var(--ci))}
.cf.unit .ty.long{letter-spacing:.01em;font-size:calc(7px * var(--ci))}
/* one paper for every card: no green Tree, no tinted Satan */
.cf.u-tree,.stack.u-tree{background:#efe2c8}
.cf.u-tree.basecard{background:color-mix(in srgb,var(--pc) 26%,#efe2c8)}
.cf.u-satan,.stack.u-satan{background:#efe2c8}
/* stacks on the field: the same mark in the corner */
.stack .ulead{flex-direction:row;align-items:center;gap:4px}
.stack .smark{line-height:.95;color:#15100b;display:inline-flex;align-items:center}
.stack .smark .rk.mk{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:calc(clamp(20px,2.7vw,30px) * var(--ci))}
.stack .smark .rk.mk.two{font-size:calc(clamp(16px,2.1vw,24px) * var(--ci))}
.stack .smark .mk.sup{font-family:var(--mono);font-size:calc(6.5px * var(--ci));letter-spacing:.06em;text-transform:uppercase}
.stack .smark .mksvg{height:calc(clamp(16px,2.2vw,24px) * var(--ci));width:auto;display:block}
.stack .smark .mksvg.wide{height:calc(clamp(10px,1.4vw,15px) * var(--ci))}
.stack .smark .mk.sup{display:none}
.stack .ulead svg{width:calc(28px * var(--ci));height:calc(28px * var(--ci))}
/* the Card info tabs show the card itself */
#ibody .ihead{display:flex;align-items:center;gap:14px;margin:6px 0 8px}
#ibody .ihead h4{margin:0}
.cf.unit .cx .mk.sup{color:#15100b}
/* v24: the Selected box keeps its own height (up to half the column) instead of being squeezed by the spells */
@media (min-width:901px){
  .gside #seltop,.gside #selbottom{flex:0 0 auto}
  .gside #selwrap{max-height:100%}
  .gside #selbox{max-height:calc(48vh / var(--uiz,1));min-height:2.6em}
}
/* the first screen of New game: a window sized to its three choices, side by side */
@media (min-width:901px){
  .ovbox.setup:not(:has(.stabs)){width:min(1040px,calc(92vw / var(--uiz,1)))}
  .ovbox.setup:not(:has(.stabs)) .modes{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
}
.ovbox.setup:not(:has(.stabs)) .shead,.ovbox.setup:not(:has(.stabs)) .modes,.ovbox.setup:not(:has(.stabs))>.dim{padding-left:26px;padding-right:26px}
.ovbox.setup .modes .mode{display:flex;flex-direction:column;gap:6px;padding:16px 18px}
.ovbox.setup .modes .mode b{font-size:18px}
.ovbox.setup .modes .mode span{margin:0}
/* v25: notes at the end of an explanation line up with its text; planets explained as one box each, the Form at its foot */
details.sub>p.dim{padding:0 12px 12px;margin:0}
.skygrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:10px;padding:8px 12px 12px}
.skycard{display:flex;flex-direction:column;border:1px solid var(--rule);background:var(--deep);padding:10px 12px;font-size:13px;line-height:1.5}
.skycard b{color:var(--amber-hi);font-weight:400;font-size:14px}
.skycard p{margin:4px 0 6px;flex:1}
.skycard small{color:var(--dim);font-size:12px}
.skycard .skyform{margin-top:8px}
/* v25: hearts always sit in one place — a row just above the name line — on every card and every stack */
.cf .hearts{bottom:calc(16px * var(--ci) + 2px);line-height:1;font-size:calc(9px * var(--ci));letter-spacing:0;z-index:1}
.cf.unit .uic{top:calc(23px * var(--ci))}
.cf.unit .uic svg{width:calc(30px * var(--ci));height:calc(30px * var(--ci))}
.cf:not(.unit) .su{top:calc(29px * var(--ci))}
.stack{box-sizing:border-box;padding:calc(14px * var(--ci)) 3px calc(28px * var(--ci))}
.stack .bhp{bottom:calc(17px * var(--ci));font-size:calc(10px * var(--ci));line-height:1;letter-spacing:0;z-index:1}
.stack .bhp .hearts{color:#b3191f}
.stack .mini{min-height:0}
.tipi{display:none!important}
body.tipi-on .tipi{display:inline-flex!important}
.ovbox.setup .infosw{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:2px 12px;font-size:12.5px}
.ovbox.setup .infosw label.chk{margin:0}
/* v25: the Oaths and the planets get panels like the Ether */
.spell.drawerbtn{background:linear-gradient(90deg,#0f2a2a,#0a1a1b);border-color:#5fc4b866;color:#dff5f1}
.spell.drawerbtn em{color:#8fe0d4}
.spell.drawerbtn:hover{border-color:#8fe0d4}
.spell.drawerbtn.off{opacity:.6}
#skypanel{position:fixed;top:0;right:0;bottom:0;z-index:70;width:min(420px,92vw);display:flex;flex-direction:column;background:#081617;border-left:1px solid #8fe0d4;box-shadow:-12px 0 40px #000c;color:#e6f4f1;padding:14px 0 0}
#skypanel[hidden]{display:none}
#skypanel .dhead{display:flex;align-items:center;justify-content:space-between;padding:0 16px 6px;border-bottom:1px solid #8fe0d433}
#skypanel h2{margin:0;font-size:20px;color:#fff}
#skypanel .xclose{position:static;color:#8fe0d4}
#skypanel .dnote{margin:8px 16px 6px;font-size:12.5px;color:#9fbdb8;line-height:1.45}
#skypanel .dbody{flex:1 1 auto;min-height:0;padding:4px 12px 70px 16px}
#skypanel .orow{border:1px solid #2c4a49;background:#0d2223;padding:9px 12px;margin:0 0 8px}
#skypanel .orow.sworn{border-color:#8fe0d4;box-shadow:inset 3px 0 0 #8fe0d4}
#skypanel .otop{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
#skypanel .otop b{font-weight:400;color:#fff}
#skypanel .oneed{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#9fbdb8}
#skypanel .orow p{margin:5px 0 7px;font-size:12.5px;line-height:1.45;color:#cfe3df}
#skypanel .oact{display:flex;align-items:center;justify-content:flex-end;gap:10px;font-size:12px}
#skypanel .otag{color:#8fe0d4;letter-spacing:.1em;text-transform:uppercase;font-size:11px;margin-right:auto}
#skypanel .btn{background:#5fc4b8;border-color:#5fc4b8;color:#04110f}
#skypanel .btn.ghost{background:transparent;color:#8fe0d4}
#skypanel .spell{background:#0d2223;border-color:#2c4a49;color:#e6f4f1}
#skypanel .spell em{color:#e6d38a}
#skypanel .spell small.left{margin-left:8px;font-size:11px;color:#9fbdb8;font-style:italic}
/* v26: Mystery Generation — three cards face down, turned one at a time; loot-box colors for rarity */
.ovbox.mysbox{max-width:min(760px,calc(96vw / var(--uiz,1)))}
.mysrow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:14px 0 10px}
.myscard{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:calc(150px * var(--ci));border:1px solid var(--rule);background:var(--deep);padding:12px 8px}
.myscard.back{cursor:pointer;font:inherit;color:inherit;background:repeating-linear-gradient(45deg,#1a120b 0 6px,#140e09 6px 12px)}
.myscard.back .mysback{display:flex;align-items:center;justify-content:center;width:calc(60px * var(--ci));height:calc(86px * var(--ci));border:1px solid #e6d38a88;border-radius:5px;background:#2a1d10;box-shadow:inset 0 0 0 3px #1a120b,inset 0 0 0 4px #e6d38a55}
.myscard.back:hover,.myscard.back:focus-visible{border-color:var(--amber);outline:none}
.mysbox .myscard.back[disabled],.mysbox:not(:has(#mysAll)) .myscard.back{cursor:default}
.myscard.shown{border-color:var(--rc);box-shadow:inset 0 0 0 1px var(--rc),0 0 18px color-mix(in srgb,var(--rc) 45%,transparent);background:radial-gradient(ellipse at 50% 35%,color-mix(in srgb,var(--rc) 22%,transparent),transparent 70%),var(--deep)}
.myscard.shown b{color:var(--rc);font-weight:400;letter-spacing:.12em;text-transform:uppercase;font-size:12px}
.myscard.shown small{color:var(--dim);font-size:11px}
.myslegend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11.5px;color:var(--dim);border-top:1px solid var(--rule);padding-top:8px;margin-top:6px}
.myslegend span{display:inline-flex;align-items:center;gap:5px}
.myslegend i{width:10px;height:10px;border:1px solid var(--rc);background:color-mix(in srgb,var(--rc) 50%,transparent)}
@media (max-width:520px){.mysrow{gap:8px}}
.myscard.shown .cf{zoom:1.4}
/* v27: the Sun's sacrifice, fire mana, the blind veil, aiming at a tile, the Moon's demand */
.mini-btn.sunsac{color:#ffb35a;border-color:#a8601e}
.mini-btn.sunsac:hover{color:#ffd29a;border-color:#ffb35a}
.firetag{font-size:11px;letter-spacing:.06em;color:#1a0d02;background:#ffb35a;padding:0 6px}
#board{position:relative}
#board.blinded .stack,#board.blinded .mapbg{filter:brightness(.05)}
#board.blinded .tile{background:#030202!important}
.blindveil{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;pointer-events:none;background:radial-gradient(ellipse at 50% 50%,#0008,#000e);color:#d6c9ff;text-align:center;padding:20px}
.blindveil b{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:clamp(28px,4vw,46px);letter-spacing:.06em;color:#e8deff;text-shadow:0 0 18px #6b4fd8}
.blindveil span{font-size:13px;color:#b9aedb;max-width:28em}
.tile.taim{outline:2px dashed #ffb35a;outline-offset:-3px}
.tile.fire.scorch,.tile.fire{box-shadow:inset 0 0 18px #ff5a1e88}
#aimbar{position:fixed;left:50%;top:12px;transform:translateX(-50%);z-index:90;display:flex;align-items:center;gap:12px;background:#120a04f0;border:1px solid #ffb35a;color:#ffd29a;padding:8px 14px;font-size:13px}
#aimbar[hidden]{display:none}
.moonreq{border:1px solid #8a1418;background:#2a0507;color:#f4cfcc;padding:6px 9px;margin:0 0 6px;font-size:12.5px;line-height:1.45}
.moonreq b.bl{font-weight:500;font-size:16px;color:#ff8f86;display:block}
.moonreq.done{border-color:#3d4a40;background:#121a14;color:#9fe8b4}
.cin.sky.whisper p{margin:4px 0;font-size:22px;color:#d0161d;text-align:center}
#whisper{position:fixed;z-index:30;pointer-events:none;font-family:"Grenze Gotisch","Old English Text MT",serif;font-size:clamp(34px,5vw,64px);color:#d0161d;opacity:0;transition:opacity 1.4s ease;max-width:60vw;text-shadow:0 0 22px #000}
#whisper.on{opacity:.22}
@media (prefers-reduced-motion:reduce){#whisper{transition:none}}
.blindveil{justify-content:flex-start;padding-top:min(18%,120px);background:linear-gradient(#000e,#000c)}
#board.blinded .tile>*:not(.coord){visibility:hidden}
#aimbar{top:auto;bottom:64px}
/* v28: the planet shop, Rob the Bank, Jail, Mercury's tie */
#bankslot .spell.robbank{width:100%;margin:0 0 8px;background:linear-gradient(90deg,#4a0d10,#2a0809);border:1px solid #8e1b20;color:#f1b7b2}
#bankslot .spell.robbank:not(.off):hover{background:linear-gradient(90deg,#5e1115,#330a0c)}
#bankslot .spell.robbank em{color:#ff8f86}
#bankslot .spell.robbank.off{opacity:.55}
.jailstrip{position:absolute;left:0;right:0;top:96px;z-index:21;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:4px 18px;padding:12px 16px;background:#000b;pointer-events:none;text-align:center}
.jailstrip b{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:clamp(26px,4vw,44px);letter-spacing:.05em;color:#e3262e;text-shadow:0 0 14px #000}
.jailstrip span{font-size:14px;color:#ff8a80}
.jailtag{background:#3a0b0e!important;color:#ffb3ad!important}
table.tierolls{border-collapse:collapse;margin:6px 0 10px;font-size:14px}
table.tierolls td{padding:3px 12px 3px 0;border-bottom:1px solid #ffffff14}
/* v29: striking Substances and planets in the setup */
.ovbox.setup label.opt>.bancheck{position:absolute;right:5px;bottom:5px;width:17px;height:17px;padding:0;border:1px solid #c9b48a99;border-radius:3px;background:#0006;cursor:pointer;z-index:2;display:inline-flex;align-items:center;justify-content:center}
.ovbox.setup label.opt>.bancheck.on::after{content:"";width:8px;height:4px;border:solid #f1d27a;border-width:0 0 2px 2px;transform:translateY(-1px) rotate(-45deg)}
.ovbox.setup label.opt>.bancheck:not(.on){border-color:#8e1b2088;background:#2a0809aa}
.ovbox.setup label.opt>.bancheck:not(.on)::after{content:"×";color:#e0453a;font:600 13px/1 var(--mono)}
.ovbox.setup label.opt>.bancheck:hover{border-color:#f1d27a}
.ovbox.setup label.opt>.bancheck:focus-visible{outline:2px solid var(--amber);outline-offset:1px}
.ovbox.setup label.opt.banned>span{opacity:.28;filter:grayscale(1)}
.ovbox.setup label.opt.banned{border-style:dashed}
.ovbox.setup label.opt.struck>span{opacity:.4;filter:grayscale(.8)}
.ovbox.setup label.opt.struck>span::after{content:"Struck from Astrology";display:block;margin-top:4px;font-size:11px;color:#e0453a;letter-spacing:.03em}
.ovbox.setup.nobans .bancheck{display:none}
@media (hover:none){.ovbox.setup label.opt>.bancheck{width:24px;height:24px}}
/* v30: the sky's cycles and glow, the full paragraph, cooldown bars */
.mstrip span.ev{opacity:.8}
.mstrip span.ev svg{filter:drop-shadow(0 0 2px #f1d27a66)}
.mstrip span.past{opacity:.75}
.mstrip span[data-tip]{cursor:help}
#moon.skylit .mstrip span.ev.on{border-color:#f1d27a;box-shadow:0 0 6px #f1d27a88}
#moon.skylit svg.moon{animation:skyshimmer 3.2s ease-in-out infinite}
#moon.eclipsed.skylit svg.moon{animation-duration:1.8s}
@keyframes skyshimmer{0%,100%{filter:drop-shadow(0 0 3px #f1d27a55) brightness(1)}50%{filter:drop-shadow(0 0 12px #f1d27acc) brightness(1.12)}}
@media (prefers-reduced-motion:reduce){#moon.skylit svg.moon{animation:none;filter:drop-shadow(0 0 8px #f1d27a99)}}
.skypara{margin-top:8px;padding-top:8px;border-top:1px solid var(--rule)}
.skypara b{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);font-weight:400;margin-bottom:4px}
.skypara p{margin:0;font-size:13px;line-height:1.5}
.spell.hascd{position:relative;padding-bottom:8px}
.spell>.cdbar{position:absolute;left:4px;right:4px;bottom:2px;height:3px;border-radius:2px;background:#ffffff12;overflow:hidden;pointer-events:none}
.spell>.cdbar>i{display:block;height:100%;width:calc(var(--f)*100%);background:var(--cc);border-radius:2px;transition:width .5s ease}
.spell>.cdbar.full>i{box-shadow:0 0 4px var(--cc)}
.spell.off>.cdbar{opacity:.85}
#moon.eclipsed.skylit svg.moon{animation:eclshimmer 2.2s ease-in-out infinite}
@keyframes eclshimmer{0%,100%{filter:brightness(.38) drop-shadow(0 0 6px #ffe2a8aa)}50%{filter:brightness(.5) drop-shadow(0 0 14px #ffe2a8ee)}}
@media (prefers-reduced-motion:reduce){#moon.eclipsed.skylit svg.moon{animation:none;filter:brightness(.38) drop-shadow(0 0 7px #ffe2a8cc)}}
/* v31: loans between players, notices, the Bank's bargains */
.ovbox.bank .btabs{display:flex;gap:2px;border-bottom:1px solid var(--rule);margin:4px 0 12px}
.ovbox.bank .btabs .stab{margin-top:0;font-size:12.5px;padding:6px 14px}
.ovbox.bank .p2p h3{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);font-weight:400;margin:12px 0 6px}
.ovbox.bank .p2pl{margin:0;padding-left:18px;line-height:1.7}
.ovbox.bank .p2pask{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ovbox.bank .neg{color:#ff8f86}
.bang{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;margin-left:6px;border-radius:50%;background:#f1d27a;color:#1a120b;font:700 11px/1 var(--mono);font-style:normal;vertical-align:middle}
.bankbar.notify{box-shadow:0 0 0 1px #f1d27a,0 0 12px #f1d27a66;animation:notifyglow 2.6s ease-in-out infinite}
#shared .auct-l.notify{text-shadow:0 0 8px #f1d27a99;animation:notifyglow 2.6s ease-in-out infinite}
@keyframes notifyglow{0%,100%{filter:brightness(1)}50%{filter:brightness(1.25)}}
@media (prefers-reduced-motion:reduce){.bankbar.notify,#shared .auct-l.notify{animation:none}}
/* v32: mist, moonlight, animations */
.tile.fog::after{background:
  radial-gradient(ellipse 60% 40% at 20% 30%,#c9c2b41f,transparent 70%),
  radial-gradient(ellipse 50% 35% at 75% 65%,#c9c2b418,transparent 70%),
  radial-gradient(ellipse 70% 45% at 50% 100%,#c9c2b414,transparent 70%),
  #0b0907c4;background-size:340px 260px,420px 300px,520px 360px,auto;background-attachment:fixed;animation:mistdrift 38s linear infinite}
@keyframes mistdrift{from{background-position:0 0,0 0,0 0,0 0}to{background-position:340px 60px,-420px 40px,520px -30px,0 0}}
#board.newmoon .tile{filter:brightness(.78) saturate(.85)}
#board.newmoon .tile.fog::after{background-color:#050403dc}
#board.fullmoon::before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:radial-gradient(ellipse 80% 60% at 50% 0%,#dfe8ff1c,transparent 70%)}
#board.fullmoon .tile.fog::after{background:
  radial-gradient(ellipse 60% 40% at 20% 30%,#dfe8ff2e,transparent 70%),
  radial-gradient(ellipse 50% 35% at 75% 65%,#dfe8ff24,transparent 70%),
  radial-gradient(ellipse 70% 45% at 50% 100%,#dfe8ff1a,transparent 70%),
  #0d0f14b8;background-size:340px 260px,420px 300px,520px 360px,auto;background-attachment:fixed}
@media (prefers-reduced-motion:reduce){.tile.fog::after{animation:none}}
#fx{position:fixed;inset:0;pointer-events:none;z-index:40;overflow:hidden}
#fx .fx{position:fixed;pointer-events:none}
#fx .ring{border:2px solid var(--fc);border-radius:50%;box-shadow:0 0 10px var(--fc)}
#fx .glow{border-radius:50%;background:radial-gradient(circle,var(--fc) 0,transparent 68%);opacity:0;mix-blend-mode:screen}
#fx .wash{background:var(--fc);border-radius:3px;mix-blend-mode:screen}
#fx .streak{height:4px;transform-origin:0 50%;background:linear-gradient(90deg,transparent,var(--fc) 40%,#fff 90%,transparent);border-radius:2px;filter:drop-shadow(0 0 4px var(--fc))}
#fx .flash{background:var(--fc);border-radius:3px;mix-blend-mode:screen}
#fx .ghost{border:2px solid var(--fc);border-radius:4px;background:color-mix(in srgb,var(--fc) 22%,transparent)}
#fx .puff{border-radius:50%;background:radial-gradient(circle,#b8b0a4aa,#6f685e55 55%,transparent 72%)}
#fx .sigil{display:flex;align-items:center;justify-content:center;color:#8f80ee;font:400 22px/1 "Segoe UI Symbol","DejaVu Sans",serif;text-shadow:0 0 8px var(--fc),0 0 2px #000}
#fx .sigil.big{font-size:46px}
#fx .popn{display:flex;align-items:center;justify-content:flex-start;color:var(--fc);font:600 15px/1 var(--mono);text-shadow:0 0 6px #000,0 0 10px var(--fc)}
#fx .minicard{border:1px solid #e6d6bd;background:#2a1d12;border-radius:2px}
/* v33: signs, effects, Mystery Generation's reveal */
#fx .sign{display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 0 6px var(--fc)) drop-shadow(0 0 1px #000)}
#fx .sign svg{overflow:visible}
#fx .svgfx svg{overflow:visible;display:block}
#fx .bolt{filter:drop-shadow(0 0 8px #9fd4ff)}
#fx .boomcore{border-radius:50%;background:radial-gradient(circle,#fffbe8 0,#ffd27a 30%,#ff7a2a 55%,transparent 72%);mix-blend-mode:screen}
#fx .spark{border-radius:50%;background:#ffd27a;box-shadow:0 0 6px #ff9a3a}
#fx .meteorball{border-radius:50%;background:radial-gradient(circle at 40% 40%,#fff3c4,#ff9a3a 45%,#b8320a 75%);box-shadow:0 0 18px #ff7a2a,-14px -14px 26px #ff7a2a66}
#fx .flame{border-radius:50% 50% 45% 45%/60% 60% 40% 40%;background:radial-gradient(ellipse at 50% 70%,#fff2b0 0,#ffb347 35%,#ff5a1a 65%,transparent 75%);mix-blend-mode:screen}
#fx .drop{background:linear-gradient(#9ec9ff00,#9ec9ffcc);border-radius:1px}
#fx .gust{background:linear-gradient(90deg,transparent,#e6f1ffaa,transparent);border-radius:2px}
#fx .fogsheet{background:radial-gradient(ellipse 50% 60% at 30% 50%,#d8d2c8aa,transparent 70%),radial-gradient(ellipse 45% 55% at 70% 40%,color-mix(in srgb,var(--fc) 40%,#d8d2c8 60%),transparent 70%);filter:blur(6px)}
#fx .wispo{border-radius:50%;background:radial-gradient(circle,#efeaff 0,#9a8cf2 45%,transparent 72%);box-shadow:0 0 14px #9a8cf2}
#fx .dropm{border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:#6f5cf0;box-shadow:0 0 5px #8c7cff}
#fx .dropm.up{background:#b8acff}
#fx .impact{filter:drop-shadow(0 0 6px #ff9a5a)}
.mysbox .myscard{position:relative}
.mysbox .myscard.fresh{animation:mysflip .55s cubic-bezier(.3,.7,.3,1) both}
.mysbox .myscard.fresh::after{content:"";position:absolute;inset:-6px;border-radius:8px;pointer-events:none;box-shadow:0 0 0 2px var(--rc),0 0 22px var(--rc);opacity:0;animation:mysglow 1.4s ease-out .3s both}
.mysbox .myscard.fresh.tier-epic::after,.mysbox .myscard.fresh.tier-legendary::after,.mysbox .myscard.fresh.tier-mythic::after{animation-duration:2.4s}
.mysbox .myscard.tier-legendary::before,.mysbox .myscard.tier-mythic::before{content:"";position:absolute;inset:-26px;z-index:-1;pointer-events:none;border-radius:50%;background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--rc) 55%,transparent) 0 8deg,transparent 8deg 22deg);mask:radial-gradient(circle,#000 30%,transparent 70%);-webkit-mask:radial-gradient(circle,#000 30%,transparent 70%);animation:mysrays 9s linear infinite;opacity:.8}
@keyframes mysflip{0%{transform:perspective(600px) rotateY(90deg) scale(.9);opacity:.3}100%{transform:perspective(600px) rotateY(0) scale(1);opacity:1}}
@keyframes mysglow{0%{opacity:0}25%{opacity:1}100%{opacity:.25}}
@keyframes mysrays{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.mysbox .myscard.tier-legendary::before,.mysbox .myscard.tier-mythic::before{animation:none}}
.mysbox .myscard{isolation:isolate}
/* v35: the fog veil, the Bank's land */
#board{position:relative}
.tile.fog::after{background:#0b090752!important;animation:none!important}
#board.newmoon .tile.fog::after{background:#05040380!important}
#board.fullmoon .tile.fog::after{background:#0d0f1448!important}
.fogveil{position:absolute;inset:0;z-index:5;pointer-events:none;mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;
  background-image:var(--c1),var(--c2),linear-gradient(#0a080661,#0a080661);background-size:520px 520px,300px 300px,auto;background-blend-mode:screen,screen,normal;
  animation:fogveil 90s linear infinite;opacity:.95}
@keyframes fogveil{from{background-position:0 0,0 0,0 0}to{background-position:520px 120px,-300px 60px,0 0}}
#board.newmoon .fogveil{background-image:var(--c1),var(--c2),linear-gradient(#0201019c,#0201019c);filter:brightness(.42) contrast(1.25)}
#board.fullmoon .fogveil{background-image:var(--c1),var(--c2),linear-gradient(#1c2638a8,#1c2638a8);filter:sepia(.35) hue-rotate(175deg) saturate(1.25) brightness(1.12)}
#board.bloodfield .fogveil{filter:sepia(1) hue-rotate(-40deg) saturate(2.4) brightness(.8)}
@media (prefers-reduced-motion:reduce){.fogveil{animation:none}}
.ovbox.bank .plots{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:10px 0}
.ovbox.bank .plot{display:flex;flex-direction:column;gap:5px;padding:8px 10px;border:1px solid var(--rule);background:var(--deep);border-radius:3px;min-height:72px}
.ovbox.bank .plot b{font-weight:400;letter-spacing:.08em;text-transform:uppercase;font-size:12px;color:var(--dim)}
.ovbox.bank .plot.mine{border-color:#c9a23a;background:linear-gradient(#2a2010,#1a140b)}
.ovbox.bank .plot.mine b{color:#f1d27a}
.ovbox.bank .plot.taken{opacity:.7}
.ovbox.bank .plot .btn{align-self:flex-start}
/* v36: online */
.ovbox.online .onl{padding:6px 22px 16px;display:flex;flex-direction:column;gap:12px}
.ovbox.online .onl .pf{margin:0}
.ovbox.online .onl .f input{font:inherit;background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:6px 10px}
.ovbox.online .roomcode{align-self:flex-start;font-size:34px;letter-spacing:.32em;color:var(--amber-hi);border:1px dashed var(--amber);padding:6px 10px 6px 20px;margin:4px 0 0}
.ovbox.online #onMsg{min-height:1.3em}
/* v37: chat, the reconnect banner */
#chatbtn{position:fixed;left:14px;bottom:14px;z-index:45;font:inherit;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--amber-hi);background:var(--well);border:1px solid var(--amber);padding:6px 14px;cursor:pointer;display:flex;align-items:center}
#chatbtn .bang{margin-left:8px;width:auto;min-width:15px;padding:0 3px;border-radius:8px}
#chatbox{position:fixed;left:14px;bottom:52px;z-index:46;width:min(340px,calc(100vw - 28px));max-height:min(420px,60vh);display:flex;flex-direction:column;background:var(--well);border:1px solid var(--amber);box-shadow:0 8px 30px #000a}
#chatbox[hidden],#chatbtn[hidden]{display:none!important}
#chatbox .dhead{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--rule)}
#chatbox .chatlog{list-style:none;margin:0;padding:8px 12px;overflow:auto;flex:1;font-size:13.5px;line-height:1.5}
#chatbox .chatlog b{color:var(--amber-hi);font-weight:400;margin-right:4px}
#chatbox .chatin{display:flex;gap:6px;padding:8px 12px;border-top:1px solid var(--rule)}
#chatbox .chatin input{flex:1;font:inherit;background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:6px 8px;min-width:0}
#netbanner{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:60;background:#3a0b0e;color:#ffd0c8;border:1px solid #c8202e;padding:8px 16px;font-size:14px}
/* ================= v38: phone fixes ================= */
/* the setup window is a flex column: the header, the tabs and the footer keep their height, only the panel scrolls */
.ovbox.setup .shead,.ovbox.setup .stabs,.ovbox.setup .sfoot{flex:none}
@media (max-width:600px){
  .stabs{padding:0 6px;gap:2px}
  .stab{flex:1 1 auto;padding:9px 4px;letter-spacing:.04em;font-size:12.5px;text-align:center}
}
/* the Spells box, the Log and the book's passages fold on a phone; a glow until first touched */
.foldable>h3[data-fold]{cursor:pointer;display:flex;align-items:center;gap:8px;user-select:none;-webkit-tap-highlight-color:transparent}
.foldable>h3[data-fold]::after{content:"▾";margin-left:auto;font-size:13px;color:var(--amber);transition:transform .2s}
.foldable.folded>h3[data-fold]::after{transform:rotate(-90deg)}
.foldable.folded>:not(h3):not(#bankslot){display:none!important}
.foldable.foldglow>h3[data-fold]{color:var(--amber-hi);animation:foldglow 1.8s ease-in-out infinite}
@keyframes foldglow{0%,100%{text-shadow:0 0 0 transparent}50%{text-shadow:0 0 10px var(--amber),0 0 18px var(--amber)}}
@media (prefers-reduced-motion:reduce){.foldable.foldglow>h3[data-fold]{animation:none;text-shadow:0 0 8px var(--amber)}}
/* open on a phone, the spells and the log grow with the page: no box that scrolls inside the page */
body.phone .spellpanel #spells{max-height:none!important;overflow:visible}
body.phone #log{max-height:60vh}
body.phone .spellpanel>h3[data-fold]{padding:10px 0;margin:0}
body.phone #logwrap>h3[data-fold],body.phone #quotes>h3[data-fold]{padding:10px 0}
/* a phone's own card layout: mark and owner on top, the icon in the middle, hearts under it, the name in a strip at the bottom */
body.phone .cf .cx{top:3px;left:4px}
body.phone .cf .so{top:3px}
body.phone .cf .su{top:calc(30px * var(--ci))}
body.phone .cf.unit .uic{top:calc(27px * var(--ci))}
body.phone .cf.unit .uic svg{width:calc(28px * var(--ci));height:calc(28px * var(--ci))}
body.phone .cf.unit .cx .mk.sup{display:none}
body.phone .cf.unit .cx .rk.mk.two{font-size:calc(13px * var(--ci))}
body.phone .cf .hearts{bottom:calc(15px * var(--ci));font-size:calc(9px * var(--ci));line-height:1}
body.phone .cf .pup{bottom:calc(15px * var(--ci))}
body.phone .cf .ty,body.phone .cf.unit .ty.long{top:auto!important;bottom:2px;left:2px;right:2px;font-size:max(6px,calc(7px * var(--ci)));letter-spacing:.03em;line-height:1.15;padding-top:2px;text-overflow:ellipsis}
body.phone .cf.sm .ty{display:none}
/* the selected stack and card: a ring drawn above the card, so nothing hides part of it */
body.phone .tile.sel::after{z-index:7;box-shadow:inset 0 0 0 3px var(--amber-hi),inset 0 0 0 4px #000}
body.phone .tile.sel .stack{outline:2px solid var(--amber-hi);outline-offset:-1px}
body.phone .cardbtn.on .cf{outline:2px solid var(--amber-hi);outline-offset:1px;box-shadow:inset 0 0 0 2px #efe2c8,inset 0 0 0 3px var(--pc),0 0 0 4px #000,0 0 12px var(--amber)}
/* long names break inside their box on a phone instead of running across the screen */
body.phone .ovbox,body.phone #selbox,body.phone #info,body.phone .pbox,body.phone #log,body.phone #pop{overflow-wrap:anywhere}
/* ================= v38: the Office theme: white and light grey panels, a blue accent ================= */
html.th-office .gbar,html.th-office #gbar.open{background:#e6e7eaeb;border-color:var(--rule);color:var(--text);box-shadow:0 2px 10px #0002}
html.th-office .tray,html.th-office #histpop,html.th-office #pop .popbox,html.th-office #aimbar{background:var(--well);color:var(--text);border-color:var(--rule)}
html.th-office #pop{background:#0003}html.th-office #menu{background:#0004}
html.th-office .deckbar,html.th-office .manabar{background:#e4e6ea;border-color:#b9bcc2}
html.th-office .bankbar{background:linear-gradient(90deg,#fff4cf,#fbe9ad);color:#5c4300;border-color:#d6b54a}
html.th-office .bankbar:hover{background:linear-gradient(90deg,#ffefbd,#f7df93)}
html.th-office .blindnote{background:#ece6fb;color:#3a2a6a}
html.th-office .spell.ether,html.th-office #etherpanel,html.th-office #etherpanel .spell{background:#eef0fb;color:#22265a}
html.th-office .spell.drawerbtn,html.th-office #skypanel,html.th-office #skypanel .orow,html.th-office #skypanel .spell{background:#e8f4f3;color:#123c3c}
html.th-office .myscard.back{background:repeating-linear-gradient(45deg,#e1e4ea 0 6px,#d5d9e0 6px 12px)}html.th-office .myscard.back .mysback{background:#c9ced8}
html.th-office .stack.facedown{background:#cfd4dc}
html.th-office .ovbox.bank .plot.mine{background:linear-gradient(#fff6d8,#f5e7b8)}
html.th-office .cb{background:repeating-linear-gradient(45deg,#e7e9ed 0 3px,#dcdfe4 3px 6px)}
html.th-office ::-webkit-scrollbar-track{background:var(--deep)}
html.th-office .ovbox,html.th-office .pbox,html.th-office .qbox,html.th-office details.sub,html.th-office #log,html.th-office .stabs,html.th-office .sfoot{border-color:var(--rule)}
html.th-office .ovbox{box-shadow:0 10px 40px #0003}
html.th-office .stab.on{color:#fff}
html.th-office #log li{border-bottom-color:#0000001a}
html.th-office .label,html.th-office h3{border-color:var(--rule)}
/* ================= v38: animations ================= */
#fx .skull{position:fixed;pointer-events:none;will-change:transform,opacity,filter}
#fx .skull svg{display:block}
/* magic and other animations off: the page holds still (the fog veil becomes a picture of itself) */
html.still-magic *,html.still-magic *::before,html.still-magic *::after{animation:none!important}
html.still-magic .foldable.foldglow>h3[data-fold]{text-shadow:0 0 8px var(--amber)}
/* the phone's question at the start of a game */
#animask{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:#000a}
#animask[hidden]{display:none}
#animask .ovbox{position:relative;max-width:420px;width:100%}
#animask .xclose{position:absolute;top:8px;right:10px}
#animask label.chk{display:flex;gap:10px;align-items:flex-start;margin:12px 0;cursor:pointer}
#animask label.chk input{margin-top:3px;width:20px;height:20px;flex:none;accent-color:var(--amber)}
#animask label.chk small{display:block;color:var(--dim);font-size:12.5px;margin-top:2px}
/* ================= v38: the info panels as folders ================= */
.ctree{padding:6px 12px 2px}
details.cinfo details.ifold{margin:6px 0;border-left:1px solid var(--rule);padding-left:10px}
details.cinfo details.ifold>summary{padding:6px 0;letter-spacing:.06em;text-transform:none;font-size:14px}
details.cinfo details.ifold>summary .ifn{font-size:11.5px;color:var(--dim);margin-left:6px}
details.cinfo details.ifold>.itabs,.tabbed>.itabs{padding:4px 0 8px}
details.cinfo details.ifold .tabbed{margin:0}
.tbody{border-top:1px solid var(--rule);padding:6px 0 10px;font-size:13.5px}
.tbody h4{font-size:15px;color:var(--amber-hi);font-weight:200;margin:6px 0 4px}
.tbody h4 span{font-size:12px;color:var(--dim);margin-left:6px}
.ctree #ibody{padding:4px 0 12px}
body.phone .itab{padding:8px 12px;font-size:13.5px}
/* ================= v38: the fog flows: no dark square on each tile, a thinner veil with ragged soft edges ================= */
.tile.fog::after,#board.newmoon .tile.fog::after,#board.fullmoon .tile.fog::after{background:none!important;animation:none!important}
#board:not(.mapped) .tile.fog{background:inherit}
.fogveil{background-image:var(--c1),var(--c2),linear-gradient(#0a080638,#0a080638)!important;opacity:1}
#board.newmoon .fogveil{background-image:var(--c1),var(--c2),linear-gradient(#02010166,#02010166)!important}
#board.fullmoon .fogveil{background-image:var(--c1),var(--c2),linear-gradient(#1c263850,#1c263850)!important}
/* ================= v38: the online lobby ================= */
.lroster{list-style:none;margin:6px 0 0;padding:0}
.lroster li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 0;border-bottom:1px solid var(--rule)}
.lroster .seatag{margin-left:auto;font-size:12px;letter-spacing:.1em;color:#000;background:var(--amber);padding:1px 8px}
.lstatus{color:var(--amber-hi);margin:0}
.glob .mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 16px}
.glob .mgrid .f{display:flex;flex-direction:column;gap:4px}
.glob .mgrid select{font:inherit;background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:5px 6px}
.glob .spanel{padding-top:10px}
.ovbox.setup.glob .spanel{columns:auto!important}
/* ================= v41: Field Automation ================= */
.fabar{display:inline-flex;gap:3px;align-items:center}
.fabar .fatog{white-space:nowrap}
.fabar .facfgb{padding:4px 7px;line-height:1}
.faov{position:fixed;inset:0;z-index:82;display:grid;place-items:center;padding:16px;background:#000a}
.faov[hidden]{display:none}
.faov>.ovbox{position:relative;max-height:calc(100dvh - 32px);display:flex;flex-direction:column}
.faov .xclose{position:absolute;top:8px;right:10px}
#faask .ovbox{max-width:520px}
.faconf{width:min(980px,100%)}
.faconf .fabody{overflow:auto;min-height:0;padding-right:4px}
.fasec{border-top:1px solid var(--rule);padding:8px 0 10px}
.fasec h4{margin:0 0 6px;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);font-weight:400}
.faopts{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,170px),1fr));gap:6px}
.fasec label.chk{display:flex;gap:8px;align-items:flex-start;margin:4px 0;cursor:pointer}
.fasec label.chk small{display:block;color:var(--dim);font-size:12px}
.falock label.chk{opacity:.8;cursor:default}
.farush{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px}
.faspin{display:inline-flex;align-items:center;gap:6px}
.faspin b{min-width:1.4em;text-align:center}
.facats{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:2px 14px}
.faextra{margin-top:6px}.faextra>summary{cursor:pointer;color:var(--amber)}
.fakinds{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:5px;margin-top:6px}
.fahier{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;margin-top:8px}
.facol{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;border:1px solid var(--rule);background:var(--deep);padding:8px 6px;min-height:118px}
.facol .farank{font-size:11px;color:var(--dim)}
.facol small{color:var(--dim);font-size:12px}
.facol .facolbtns{display:flex;gap:3px;margin-top:auto}
.facol .facolbtns .btn{padding:3px 7px}
.facol.eqwait{border-color:#e3b944;background:color-mix(in srgb,#e3b944 16%,var(--deep))}
.facol.eqpair{border-color:#5fbf6f;background:color-mix(in srgb,#5fbf6f 16%,var(--deep))}
.fanote{margin:8px 0 0}
#fapanel .fawide{padding:6px 14px 14px}
#fapanel .fawide .faopts{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
/* ================= v41: rooms ================= */
.roomset{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.roomset textarea{font:inherit;background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:6px 10px;resize:vertical;width:100%}
.roomset .rmdesc{display:flex;flex-direction:column;gap:4px}
.roomset .rmrow{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center}
.roomset select{font:inherit;background:var(--deep);color:var(--text);border:1px solid var(--rule);padding:4px 6px}
.rmlist{list-style:none;margin:0;padding:0}
.rmlist li{border-bottom:1px solid var(--rule);padding:8px 0}
.rmlist .rmtop{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline}
.rmlist .rmn{color:var(--amber-hi);font-size:13px}
.rmlist .rmtag{font-size:11px;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--rule);padding:0 6px;color:var(--dim)}
.rmlist .rmsub{font-size:12.5px}
.rmlist .rmd>summary{cursor:pointer;color:var(--amber);font-size:13px}
.rmlist p{margin:6px 0 0}
#rmInfo h3{margin:0 0 4px;color:var(--amber-hi);font-weight:200}
.glob .rmline{margin:4px 0 0;width:100%}
/* ================= v41: Office Dark, Earth, Dark Fantasy ================= */
html.th-darkfantasy .game h1,html.th-darkfantasy .ovbox h2{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;letter-spacing:.02em;color:#d33a46;text-shadow:0 0 12px #8e162280}
html.th-darkfantasy .game h1{font-size:clamp(30px,5vw,42px)}
html.th-darkfantasy .stab.on,html.th-darkfantasy .btn{background:linear-gradient(#a01c28,#7a121c);border-color:#c9a24a;color:#f1e6c8}
html.th-darkfantasy .btn:hover,html.th-darkfantasy .btn:focus-visible{background:linear-gradient(#b8222f,#8e1622)}
html.th-darkfantasy .btn.ghost{background:#120d12cc;color:var(--amber-hi);border-color:#8a7442}
html.th-darkfantasy .ovbox,html.th-darkfantasy .pbox,html.th-darkfantasy .cinfo,html.th-darkfantasy .gbar{border-color:#8a7442;box-shadow:0 0 0 1px #00000080,inset 0 0 24px #00000060}
html.th-darkfantasy .label,html.th-darkfantasy h3{color:#c4c2cc;letter-spacing:.2em}
html.th-darkfantasy #log li{border-bottom-color:#5b283055}
html.th-earth .btn{color:#0e130d}
html.th-earth .game h1{color:#cfe08c;text-shadow:0 0 14px #9bbf5e40}
html.th-officedark .btn{color:#fff}
#pMusic[hidden]{display:none}
/* ================= v43: the setup window never scrolls sideways ================= */
.ovbox.setup fieldset{min-width:0;max-width:100%}
.ovbox.setup select,.ovbox.setup input[type=text],.ovbox.setup input:not([type]),.ovbox.setup textarea{max-width:100%}
.ovbox.setup label.f{flex-wrap:wrap;max-width:100%}
.ovbox.setup .spanel{overflow-x:hidden}
.ovbox.setup .stabs{overflow-x:visible;flex-wrap:wrap}
.ovbox.setup .stab{flex:1 1 auto}
.ovbox.setup label.f select{min-width:0;max-width:100%;flex:0 1 auto}
/* v43: the Random color and Random symbol choices */
.sw.swrand span{background:conic-gradient(#ee7a3c,#e3b944,#45b89c,#4c92e6,#a77de8,#e4648f,#d7333b,#ee7a3c);display:grid;place-items:center;color:#000;font-weight:700;font-size:15px}
.so-opt .sorand{display:grid;place-items:center;width:28px;height:28px;font-size:20px;font-weight:400;color:var(--text)}
/* ================= v43: the Ether stands out for everyone ================= */
.spell.ether{border-color:#7f97ff;background:linear-gradient(90deg,#24357e,#121a46);color:#eef2ff;box-shadow:0 0 0 1px #00000080,0 0 12px #5a78ff59}
.spell.ether:hover{border-color:#b9c7ff;box-shadow:0 0 16px #7f97ff8c}
.spell.ether.off{opacity:.85}
.spell.ether .ethmark{font-style:normal;color:#b9c7ff;margin-right:7px;text-shadow:0 0 6px #7f97ff}
html.th-office .spell.ether{background:linear-gradient(90deg,#dfe7ff,#eef2ff);border-color:#4c6fff;color:#1d2a7a;box-shadow:0 0 8px #4c6fff40}
html.th-office .spell.ether .ethmark{color:#4c6fff;text-shadow:none}
/* v43: the menu's audio sliders */
#menu .mslide{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#menu .mslide input[type=range]{flex:1 1 140px;accent-color:var(--amber)}
#menu .mslide b{min-width:3.4em;font-weight:400;color:var(--amber-hi)}
/* ================= v43: Field Automation, compact ================= */
.faconf .fabody,#fapanel .fawide{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));gap:0 18px;align-items:start}
.faconf .fabody>.fafull,#fapanel .fawide>.fafull,#fapanel .fawide>p:first-child{grid-column:1/-1;max-width:none;margin:0}
.fasec{padding:6px 0 7px}
.fasec h4{margin:0 0 4px;font-size:11.5px}
.faopts{grid-template-columns:repeat(auto-fill,minmax(min(100%,118px),1fr));gap:4px}
.faopts .opt>span,.fakinds .opt>span{padding:5px 8px;min-height:0;font-size:13px;line-height:1.25}
.fasec label.chk{margin:2px 0;font-size:13px}
.facats{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr))}
.fakinds{grid-template-columns:repeat(auto-fill,minmax(98px,1fr));gap:4px}
.fahier{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px}
.facol{min-height:96px;padding:6px 4px}
.faconf{width:min(1100px,100%)}
body.phone .faconf .fabody,body.phone #fapanel .fawide{display:block}
body.phone .faopts .opt>span{padding:7px 9px}
.fasec .faopts{display:flex;flex-wrap:wrap;gap:4px}
.fasec .faopts .opt{flex:1 1 auto;width:auto;min-width:0}
body.phone .fasec .faopts .opt{flex:1 1 140px}
/* ================= v44 · the Bank: compact, the Banker's portrait, loans and credit explained on hover or hold ================= */
.ovbox.bank{font-size:13.5px}
.ovbox.bank h2{font-size:20px;margin:0 0 8px}
.ovbox.bank .bankhead{gap:12px;align-items:flex-start}
.ovbox.bank .bankpic{width:88px;height:88px;flex:none;image-rendering:pixelated;border:1px solid #000;box-shadow:0 0 0 1px #c9a23a66,0 2px 8px #000a;border-radius:2px}
.ovbox.bank .bankinfo{flex:1;min-width:0}
.ovbox.bank .bwho{margin:0 0 6px;line-height:1.4}
.ovbox.bank .bstat{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:0;padding:0;border:0}
.ovbox.bank .bstat>div{padding:4px 8px;border:1px solid var(--rule);background:#0000002e;border-radius:3px;cursor:help;min-width:0}
.ovbox.bank .bstat dt{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovbox.bank .bstat dd{margin:0;white-space:nowrap}
.ovbox.bank .bstat dd b{font-size:15px}
.ovbox.bank .bstat dd small{color:var(--dim);font-size:11px}
.ovbox.bank .bstat dd.neg b{color:#ff8f86}
.ovbox.bank .bloans{margin:6px 0 0;padding-left:18px;font-size:12.5px}
.ovbox.bank .bnote{margin:6px 0 0;font-size:12.5px}
.ovbox.bank .bacts{margin:10px 0 0;border-top:1px solid var(--rule);padding-top:6px}
.ovbox.bank .bacts p.brow{display:grid;grid-template-columns:76px auto auto minmax(0,1fr);align-items:center;gap:4px 10px;margin:0;padding:5px 0;border-bottom:1px solid #ffffff10}
.ovbox.bank .bacts p.brow small{flex:none;font-size:12px;min-width:0}
.ovbox.bank .bacts p.brow .btn{justify-self:start}
.ovbox.bank .bkey{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--amber);white-space:nowrap}
.ovbox.bank .bkey[data-tip]{cursor:help}
.ovbox.bank .bkey .q{display:inline-grid;place-items:center;width:14px;height:14px;margin-left:3px;border:1px solid currentColor;border-radius:50%;font:normal 10px/1 sans-serif;letter-spacing:0}
.ovbox.bank .bacts p.bsellrow{grid-template-columns:auto auto minmax(0,1fr);border-bottom:0;padding-top:8px}
.ovbox.bank .btn.bsell{background:linear-gradient(#5a4614,#3a2d0e);border-color:#e8c24a;color:#ffe6a0;font-weight:600}
.ovbox.bank .btn.bsell:hover{background:linear-gradient(#6c5418,#46360f)}
.ovbox.bank details.bankhelp{margin:10px 0 8px;padding:4px 10px}
.ovbox.bank details.bankhelp dl{font-size:12.5px;gap:4px 14px}
@media (max-width:640px){
 .ovbox.bank .bankpic{width:64px;height:64px}
 .ovbox.bank .bstat{grid-template-columns:repeat(2,minmax(0,1fr))}
 .ovbox.bank .bankhead{flex-wrap:wrap}
 .ovbox.bank .bankinfo{flex-basis:calc(100% - 76px)}
 .ovbox.bank .bacts p.brow{grid-template-columns:62px auto minmax(0,1fr)}
 .ovbox.bank .bstat>div{padding:3px 8px}
 .ovbox.bank .bacts p.brow small{grid-column:1/-1}
 .ovbox.bank .bacts p.bsellrow{grid-template-columns:auto auto}
}
/* v44 · Lazy Hand: right under the Bank, a white hand; while it is on, the hand has a dashed white edge */
#bankslot .lazyrow{margin-top:6px}
#bankslot .spell.lazy .sn{display:inline-flex;align-items:center;gap:6px}
#bankslot .spell.lazy .lazyico{flex:none}
#bankslot .spell.lazy.armed{border-color:#fff;box-shadow:0 0 0 1px #ffffff55,0 0 10px #ffffff33}
#hand.lazy .cardbtn{outline:1px dashed #ffffffaa;outline-offset:2px}
html.th-office .lazyico path{stroke:var(--text)}html.th-office #bankslot .spell.lazy.armed{border-color:var(--amber);box-shadow:0 0 0 1px var(--amber)}html.th-office #hand.lazy .cardbtn{outline-color:var(--amber)}
/* ================= v45 · What you must know, the Help title, the start-of-game toast ================= */
.game header{display:flex;align-items:center;flex-wrap:wrap;gap:4px 18px}
#mustknow{flex:1 1 auto;display:flex;justify-content:center;min-width:0}
#mustknow[hidden]{display:none}
#mkBtn{all:unset;cursor:pointer;display:flex;flex-direction:column;align-items:center;padding:4px 16px 5px;border:1px solid var(--amber);border-radius:3px;background:#00000038;box-shadow:0 0 12px #0000;transition:box-shadow .2s,background .2s;text-align:center}
#mkBtn:hover,#mkBtn:focus-visible{background:#ffffff0d;box-shadow:0 0 14px color-mix(in srgb,var(--amber) 40%,transparent)}
#mkBtn .mkt{font-size:22px;line-height:1.1;color:var(--amber-hi);letter-spacing:.02em}
#mkBtn small{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin-top:2px}
html.th-darkfantasy #mkBtn .mkt,html.th-jester #mkBtn .mkt,html.th-crimson #mkBtn .mkt{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:24px;color:#e0505b;text-shadow:0 0 10px #8e162270}
html.th-darkfantasy #mkBtn{border-color:#8e1622}
.ovbox.mkbox{max-width:min(760px,calc(96vw / var(--uiz,1)));font-size:13.5px;line-height:1.5}
.ovbox.mkbox h2{margin:0 0 8px;font-size:20px}
.ovbox.mkbox .mknever{margin:0 0 4px;text-align:right;font-size:12px}
.ovbox.mkbox .mknever .link{color:var(--dim)}
.ovbox.mkbox .mktldr{margin:0 0 10px;padding:8px 12px;border-left:3px solid var(--amber);background:#00000030}
.ovbox.mkbox .mktldr b{display:block;font-size:10.5px;letter-spacing:.14em;color:var(--amber)}
.ovbox.mkbox .mkbody p{margin:0 0 8px}
.ovbox.mkbox .mkbody b{color:var(--amber-hi);font-weight:400}
.ovbox.mkbox h3{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--amber);margin:12px 0 6px}
.ovbox.mkbox .mklist{margin:0 0 8px;padding-left:18px}
.ovbox.mkbox .mklist li{margin:0 0 5px}
.ovbox.mkbox .mkpoint{padding:6px 10px;border:1px dashed var(--rule)}
.ovbox.mkbox .acts{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0}
.ovbox.mkask{max-width:min(520px,calc(96vw / var(--uiz,1)))}
.ovbox.mkask .acts{display:flex;flex-wrap:wrap;gap:8px}
#helphead{display:flex;align-items:baseline;gap:14px;margin:22px 0 6px}
#helphead h3{margin:0}
#helphead .link{font-size:12px}
#helptoast{position:fixed;left:50%;bottom:64px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:10px;max-width:min(560px,calc(100vw - 24px));padding:9px 12px;background:#120d10f2;border:1px solid var(--amber);border-radius:4px;box-shadow:0 6px 24px #000a;font-size:13px;color:var(--text);transition:opacity .4s,transform .4s}
#helptoast.out{opacity:0;transform:translate(-50%,8px)}
#helptoast[hidden]{display:none}
#helptoast .htx{all:unset;cursor:pointer;color:var(--dim);font-size:16px;padding:0 2px}
html.th-office #helptoast{background:#eceef1f2}
@media (max-width:640px){#mkBtn .mkt{font-size:19px}#mustknow{flex-basis:100%}#helptoast{bottom:72px;font-size:12.5px}}
#helptoast>span{flex:1 1 auto;min-width:0}
#helptoast .link{white-space:nowrap}
.ovbox.mkbox .mknever{text-align:left;padding-right:40px}
@media (max-width:640px){#helptoast{width:calc(100vw - 24px)}}
/* v45 · Flags: a pole and a cloth in the owner's color; hearts only while nobody stands on it; see-through under a stack */
.flagmk{position:absolute;left:6%;top:6%;width:34%;height:44%;z-index:2;display:flex;flex-direction:column;align-items:center;pointer-events:auto;cursor:help;transition:opacity .2s}
.flagmk svg{width:100%;height:100%;filter:drop-shadow(0 1px 2px #000c)}
.flagmk .pole{stroke:#d9d2c3;stroke-width:1.6;stroke-linecap:round;fill:none}
.flagmk .cloth{fill:var(--fc);stroke:#000a;stroke-width:.6}
.flagmk .fhp{font-style:normal;font-size:10px;line-height:1;color:#ff6b6b;text-shadow:0 1px 1px #000;white-space:nowrap}
.flagmk .fhp s{text-decoration:none;color:#ffffff40}
.flagmk.under{opacity:.42;z-index:3;pointer-events:none}
/* v45 · card pickers sorted by kind: tabs like the Ether's, one heading per kind, the same card folded with a count */
.pktabs{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 8px;position:sticky;top:-1px;z-index:2;padding:4px;background:#000a;border-radius:3px}
.pktab{all:unset;cursor:pointer;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border:1px solid var(--rule);border-radius:3px;color:var(--dim)}
.pktab b{font-weight:400;color:var(--amber);margin-left:3px}
.pktab.on{border-color:var(--amber);color:var(--text);background:#ffffff10}
.pktab:focus-visible{outline:1px solid var(--amber)}
.pkgrp h3{font-size:12px;letter-spacing:.1em;text-transform:uppercase;margin:8px 0 4px;color:var(--amber)}
.pkgrp[hidden]{display:none}
.ecount.priced{display:inline-flex;flex-direction:column;align-items:center;gap:2px}
.pkprice{font-size:11px;color:var(--amber-hi);white-space:nowrap}
.pkprice.off{color:var(--dim);text-decoration:line-through}
.pk:disabled{opacity:.45;cursor:not-allowed}
.ovbox .ecount>b{top:auto;bottom:-5px;right:-4px}
.ovbox .ecount.priced>b{bottom:14px}
/* ================= v47 · the spell list: Grave Blessing and Ritual Dice in dark purple; spell names in blackletter ================= */
.necrocore{margin:0 0 6px;padding:4px;border:1px solid #6a3d8f;background:linear-gradient(180deg,#2a1638cc,#1a0f24cc);border-radius:3px;box-shadow:inset 0 0 12px #3b1d5266}
.necrocore .spell{border-color:#7b4ea3;background:#24132fd9}
.necrocore .spell:not(.off):hover{background:#33194a}
.necrocore .spell .sn{color:#d9c2f2}
.necrocore .autotog{border-color:#7b4ea3}
html.th-office .necrocore{background:linear-gradient(180deg,#ece3f5,#e3d8ef);border-color:#9b7cc0}
html.th-office .necrocore .spell{background:#f1eaf8;border-color:#a98ccc}
html.th-office .necrocore .spell .sn{color:#4a2d6b}
body.spbl .spell .sn{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:1.12em;letter-spacing:.01em}
body.spbl .spell .sn small,body.spbl .spell .sn i,body.spbl .spell .sn .bolts,body.spbl .spell .sn .chips{font-family:var(--mono);font-weight:200;font-size:.78em;letter-spacing:0}
/* ================= v47 · Configure Automation: the words on the left, switches and arrows on the right; compact on a computer ================= */
.farow{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 12px;padding:3px 6px;margin:0 -6px;cursor:pointer;border-radius:3px}
.farow:hover{background:#ffffff08}
.farow .fal b{font-weight:400;color:var(--text);font-size:13px}
.farow .fal small{display:block;color:var(--dim);font-size:11.5px;line-height:1.35}
.farow input[type=checkbox]{width:16px;height:16px;margin:0;accent-color:var(--amber);justify-self:end}
.farow.off{opacity:.42;cursor:not-allowed}
.farow .faspin{justify-self:end;gap:5px}
.farow .faspin .btn{padding:1px 7px;font-size:11px;line-height:1.4}
.farow .faspin b{font-weight:400;color:var(--amber-hi)}
.farow .faspin small{color:var(--dim);font-size:11.5px}
.faopts.off,.fakinds.off{opacity:.42;pointer-events:none}
.fanote2{margin:4px 0 0;font-size:11.5px;color:var(--dim);font-style:italic}
.fawarn{margin:6px 0 8px;padding:6px 10px;border-left:3px solid #c0392b;background:#4c080b55;color:#ffd2cd;font-size:12.5px}
html.th-office .fawarn{background:#fbe3e1;color:#7a1d16}
.atabs{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0 4px}
.atabs .stab small{font-size:10px;color:var(--dim);margin-left:4px}
.atabs .stab.on small{color:inherit}
.faconf .fawhere{border-top:0;padding-top:0}
.autotog.cfgtog{font-size:13px;padding:0 6px;letter-spacing:0}
@media (min-width:641px){
 .fasec .faopts .opt>span,.fakinds .opt>span{padding:3px 8px;font-size:12px;line-height:1.3;min-height:0}
 .fasec .faopts .opt>span small{font-size:10.5px}
 .fasec{padding:5px 0 6px}
 .facol{min-height:82px;padding:5px 4px;font-size:12.5px}
 .fahier{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:5px}
}
.faextra summary{font-size:12.5px;color:var(--amber);cursor:pointer;margin:4px 0}
.fasec p.dim{font-size:12px;margin:4px 0}.fasec .faopts .opt>span small{font-size:11px}
/* ================= v48 · the banner, Dice Plus, the spells on a stack ================= */
#critfx{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%);z-index:80;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}
#critfx[hidden]{display:none}
#critfx b{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:clamp(34px,6vw,58px);color:#e0303d;text-shadow:0 0 18px #8e1622,0 2px 4px #000}
#critfx svg{width:clamp(54px,8vw,84px);height:auto;filter:drop-shadow(0 0 10px #8e1622aa)}
#critfx svg polygon{fill:#1a0d10e6;stroke:#e0303d;stroke-width:3}
#critfx svg path{fill:none;stroke:#e0303d88;stroke-width:1.6}
#critfx svg text{fill:#ffd2cd;font:600 26px "Grenze Gotisch",serif}
#critfx.k-miss b,#critfx.k-dodge b{color:#c9c2d6;text-shadow:0 0 14px #4a3d66,0 2px 4px #000}
#critfx.k-success b{color:#f1d27a;text-shadow:0 0 18px #8a6a14,0 2px 4px #000}
#critfx.go{animation:critpop 1.7s ease-out forwards}
@keyframes critpop{0%{opacity:0;transform:translate(-50%,-50%) scale(.7)}12%{opacity:1;transform:translate(-50%,-50%) scale(1.06)}25%{transform:translate(-50%,-50%) scale(1)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-56%) scale(1)}}
@media (prefers-reduced-motion:reduce){#critfx.go{animation:none}}
.stack.dp-atk{box-shadow:0 0 0 2px #ff8a1e,0 0 16px #ff8a1eaa}
.stack.dp-def{box-shadow:0 0 0 2px #9b59d0,0 0 16px #9b59d0aa}
.stack .dpicon{position:absolute;left:50%;top:-6%;transform:translateX(-50%);font-size:clamp(20px,3vw,34px);line-height:1;opacity:.55;pointer-events:none;z-index:4;text-shadow:0 0 8px currentColor}
.stack.dp-atk .dpicon{color:#ffb15a}.stack.dp-def .dpicon{color:#c79bf0}
.tile:has(.dpicon) .crys,.tile:has(.dpicon) .flagmk{opacity:.18}
.stack .spfx{position:absolute;inset:0;pointer-events:none;z-index:3}
.stack .spfx .spname{position:absolute;left:4px;right:4px;bottom:2px;font-family:"Grenze Gotisch","Old English Text MT",serif;font-size:clamp(10px,1.3vw,14px);line-height:1.05;color:#000;opacity:.42;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stack .spfx .spdur{position:absolute;right:3px;top:18px;font-size:9.5px;line-height:1.2;padding:0 3px;border-radius:2px;background:#0008;color:#fff;max-width:70%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dprow .dparm{font-size:13px;padding:0 6px;letter-spacing:0}
.stack .spfx .spname{bottom:19%;font-size:clamp(11px,1.4vw,15px);opacity:.5}
.stack .spfx .spdur{max-width:92%;font-size:9px}
.stack .dpicon{top:22%;font-size:clamp(28px,4.2vw,46px);opacity:.38}
/* ================= v49 · the Bank's land, the Report ================= */
.landmk{position:absolute;right:8%;top:6%;z-index:2;font:700 clamp(16px,2.4vw,26px)/1 var(--mono);color:var(--fc);text-shadow:0 0 6px #000,0 1px 2px #000;pointer-events:auto;cursor:help;transition:opacity .2s}
.landmk.under{opacity:.3;pointer-events:none}
.ovbox.bank .btab.report{font-size:13px}
.rpaper{margin:8px 0;padding:10px 14px;background:linear-gradient(#e9dcc0,#dccba6);color:#2b2015;border:1px solid #8a6a3a;box-shadow:0 2px 8px #0008;border-radius:2px;font-family:var(--mono)}
.rpaper.cur{background:linear-gradient(#d9d2c4,#cbc2b0);opacity:.92}
.rpaper h4{margin:0 0 6px;font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:18px;color:#5a1a14}
.rpaper h4 small{font-family:var(--mono);font-size:11px;color:#6b5a40;margin-left:6px}
.rpaper dl{display:grid;grid-template-columns:max-content 1fr;gap:2px 16px;margin:0}
.rpaper dt{color:#6b5a40}.rpaper dd{margin:0}.rpaper dd small{display:block;color:#6b5a40;font-size:11px}
.rpaper .rstand{margin:8px 0 0;font-weight:600}.rpaper .rstand.good{color:#2c5a1e}.rpaper .rstand.bad{color:#8e1622}
.rold summary{cursor:pointer;color:var(--amber);font-size:12.5px;margin:6px 0}
[data-tip].debttag,[data-tip].loantag,[data-tip].saletag,[data-tip].oathtag{cursor:help}
.rpaper b{color:#2b2015;font-weight:700}.rpaper dl{font-size:12.5px;gap:0 16px;line-height:1.55}.rpaper{padding:8px 12px}
/* v49 · particular animations held still */
html.still-fog .fogveil,html.still-fog .tile.fog::after{animation:none!important}
html.still-fire .tile.fire::before{animation:none!important}
html.still-sky #moon svg.moon{animation:none!important}
html.still-glow .bankbar.notify,html.still-glow #shared .notice,html.still-glow #shared .auct-l.notify,html.still-glow .foldable.foldglow>h3[data-fold],html.still-glow .mysbox .myscard::before{animation:none!important}
html.still-blood.bloodglitch .game #board,html.still-blood.bloodglitch .game h1,html.still-blood.mirage body::before{animation:none!important}
#mParts{margin:10px 0}#mParts .facats{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:0 18px}
/* v49 · +/− chips, the turn counter */
.pmchips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.pmchip{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px;padding:2px 8px 2px 4px;border:1px solid var(--rule);border-radius:3px;font-size:12px;color:var(--dim)}
.pmchip i{font-style:normal;display:inline-grid;place-items:center;width:15px;height:15px;border-radius:2px;background:#ffffff10;font-weight:700;color:var(--dim)}
.pmchip.plus{border-color:#5fbf6f;color:var(--text)}.pmchip.plus i{background:#2c5a1e;color:#d8f5d0}
.pmchip.minus{border-color:#c0392b;color:var(--text)}.pmchip.minus i{background:#6a1a14;color:#ffd2cd}
.pmchip:focus-visible{outline:1px solid var(--amber)}
.pmchips.off{opacity:.42;pointer-events:none}
.pmhelp{font-size:11px!important}
#turnctr{display:flex;align-items:baseline;gap:6px;margin-left:auto;font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;color:var(--amber-hi)}
#turnctr span{font-size:18px}#turnctr b{font-weight:500;font-size:26px;color:#e0505b;text-shadow:0 0 10px #8e162266}
#turnctr[hidden]{display:none}
@media (max-width:640px){#turnctr b{font-size:20px}#turnctr span{font-size:15px}}
/* v50: the Bank's bounties */
.ovbox.bank .bntyl{padding-left:0;list-style:none}
.ovbox.bank .bntyl li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px 6px;border-bottom:1px solid rgba(127,127,127,.25)}
.ovbox.bank .bntyl li.mine{border-left:3px solid #c9a24a}
.ovbox.bank .bwhy{margin:4px 0;font-size:.9em;opacity:.85}
.ovbox.bank .btabs{flex-wrap:wrap}
.ovbox.bank .btabs .stab{white-space:nowrap;flex:0 0 auto}
@media (max-width:600px){.ovbox.bank .btabs .stab{padding:5px 8px;font-size:11.5px}}
/* v51: pixel-art maps */
.tile img.tart.px,#board .mapbg img.mapground{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:crisp-edges;image-rendering:pixelated;display:block;user-select:none;-webkit-user-drag:none}
.tile img.tart.px{z-index:0}
/* v52: the round label by the field, in the style of the line names */
#fieldround{text-align:right;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--amber-hi);margin:6px 2px -4px;line-height:1}
/* v52: "Never show again" on What you must know glows so it can't be missed */
.mknever .mkglow{border-color:var(--amber-hi);color:var(--amber-hi);animation:mkglow 2.4s ease-in-out infinite}
@keyframes mkglow{0%,100%{box-shadow:0 0 0 0 #d9a44a00}50%{box-shadow:0 0 12px 2px #d9a44a99}}
@media (prefers-reduced-motion:reduce){.mknever .mkglow{animation:none;box-shadow:0 0 8px 1px #d9a44a88}}
/* v52: a caution is yellow with a ⚠ */
.fawarn.caution{border-left-color:#e3b944;background:#4a3a0e55;color:#f3dc8a}
.fawarn.caution b{color:#e3b944;margin-right:4px}
html.th-office .fawarn.caution{background:#fdf3d4;color:#6a4f08}
/* v52: the field settings: button choices on the left, switches and arrows on the right */
.fa2col{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;align-items:start}
.automaster{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 4px}
.fadet>summary small{font-size:11px;letter-spacing:0;text-transform:none}
/* v52: every Necromancy spell wears the same purple frame; Grave Blessing and Ritual Dice simply come first */
.spell.nec{border-color:#7b4ea3;background:#24132fd9}
.spell.nec .sn{color:#d9c2f2}
.spell.nec:not(.off):hover{background:#33194a}
.spell.nec.off{border-color:#4a3360}
.necrocore{border:0;background:none;box-shadow:none;padding:0;margin:0}
html.th-office .spell.nec{background:#f1eaf8;border-color:#a98ccc}html.th-office .spell.nec .sn{color:#4a2d6b}
html.th-office .necrocore{background:none}
/* v52: on phones the card-info corner is a little smaller, so a tap on the card picks the card */
@media (hover:none) and (pointer:coarse){.cf .ci,.stack .ci{width:clamp(14px,23%,22px);height:clamp(14px,23%,22px)}}
/* v52: three or more players: the others as small columns in their color, one shared dice box */
#foe.multi.minis{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}
#foe.minis .pbox.sub{padding:5px 7px 6px;border:0;border-left:3px solid var(--pc);background:color-mix(in srgb,var(--pc) 9%,transparent);font-size:12px;min-width:0;overflow:hidden}
#foe.minis .ph.mini{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:0;font-size:13px}
#foe.minis .ph.mini b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
#foe.minis .ph.mini .ally,#foe.minis .ph.mini .turnmark,#foe.minis .ph.mini .outmark{font-size:9.5px;padding:0 4px}
#foe.minis .minisub{color:var(--dim);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:1px 0 4px}
#foe.minis .mline{display:grid;grid-template-columns:3.4em 1fr auto;align-items:center;gap:5px;font-size:10.5px;color:var(--dim);margin:2px 0}
#foe.minis .mline i{display:block;height:3px;background:#ffffff1a;position:relative}
#foe.minis .mline u{display:block;height:100%;background:var(--pc)}
#foe.minis .mline.neg u{background:#c0392b}
#foe.minis .mline b{color:var(--text);font-weight:400;font-size:11px}
#foe.minis .mline.neg b{color:#ff8f86}
#foe.minis .minitags{display:flex;flex-wrap:wrap;gap:2px 6px;font-size:10.5px;color:var(--dim);margin-top:3px}
#foe.minis .minitags>span{font-size:10.5px;padding:0 3px}
#foe.minis .seenmark{white-space:normal}
.trayall{display:flex;flex-direction:column;gap:3px;border:1px solid var(--rule);padding:5px 6px;background:var(--deep)}
.trayall .tl{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.trayall .trow{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"n l" "d d";gap:1px 8px;text-align:left;background:none;border:0;border-left:3px solid var(--pc);padding:2px 6px;color:var(--text);cursor:pointer;font:inherit;font-size:12px}
.trayall .trow b{grid-area:n;font-weight:500}.trayall .trow small{grid-area:l;color:var(--dim);font-size:11px;align-self:center}
.trayall .trow .dice{grid-area:d;display:flex;flex-wrap:wrap;gap:2px}.trayall .trow .dice svg{width:22px;height:22px}
.trayall .trow em{grid-column:1/-1;font-style:normal;font-size:11px;color:var(--amber)}
.trayall .trow:hover{background:#ffffff0d}
#foe.minis .pbox.sub{background:linear-gradient(color-mix(in srgb,var(--pc) 11%,transparent),color-mix(in srgb,var(--pc) 11%,transparent)),#0b0a0cb0}
#foe.minis .minitags .seenmark{background:none;color:var(--amber);border:0;padding:0;font-size:10.5px;text-transform:none;letter-spacing:0}
html.th-office #foe.minis .pbox.sub{background:color-mix(in srgb,var(--pc) 10%,#fff)}
/* ================= v53 · Demons, the Bank's Collectors, the crit seal, effects on the page ================= */
/* the Demon Band: crimson cards that can't be mistaken for anyone's */
.stack.demon{background:linear-gradient(165deg,#8a1220,#4a060d 70%,#2a0306);color:#ffd9cf;border-color:#ff5050;box-shadow:inset 0 0 0 2px #2a0306,inset 0 0 0 3px #ff4a4a,0 0 10px #b3172caa,0 2px 4px #000a}
.stack.demon .mini,.stack.demon .used,.stack.demon .souls{color:#ffb4a8}
.stack.demon .ty{border-top-color:#ffb4a855;color:#ffb4a8}
.stack.demon .ulead svg{filter:invert(1) sepia(1) saturate(3) hue-rotate(-30deg) brightness(1.1)}
.stack.demon::before{content:"";position:absolute;inset:0;border-radius:5px;pointer-events:none;background:radial-gradient(ellipse at 50% 120%,#ff3a2a33,transparent 60%)}
/* the Bank's Debt Collectors: black, red letters, gold edges */
.stack.bankcoll{background:linear-gradient(170deg,#141012,#060405);color:#e0323f;box-shadow:inset 0 0 0 2px #060405,inset 0 0 0 3px #d4a72c,0 0 8px #d4a72c55,0 2px 4px #000a;border-color:#d4a72c}
.stack.bankcoll .uname,.stack.bankcoll .ty,.stack.bankcoll .mini{color:#e0323f}
.stack.bankcoll .ty{border-top-color:#d4a72c88}
.stack.bankcoll .ulead svg{filter:invert(1) sepia(1) saturate(5) hue-rotate(-20deg) brightness(.95)}
.stack.bountycoll{outline:1px dashed #d4a72c;outline-offset:2px}
/* the crit seal: small, see-through, glowing, over the card */
#critfx{position:absolute;left:0;top:0;transform:translate(-50%,-50%);z-index:80;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:0;background:none}
#critfx svg{width:44px;height:44px;filter:drop-shadow(0 0 6px var(--cg,#ff4a5a)) drop-shadow(0 0 14px var(--cg,#ff4a5a));animation:sealspin 1.9s ease-out forwards}
#critfx svg .s1{fill:color-mix(in srgb,var(--cg,#ff4a5a) 12%,transparent);stroke:var(--cg,#ff4a5a);stroke-width:2.6}
#critfx svg .s2{fill:none;stroke:color-mix(in srgb,var(--cg,#ff4a5a) 60%,transparent);stroke-width:1.4}
#critfx svg .s3{fill:none;stroke:color-mix(in srgb,var(--cg,#ff4a5a) 45%,transparent);stroke-width:1;stroke-dasharray:3 7}
#critfx svg text{fill:#fff7f2;font:600 30px "Grenze Gotisch",serif;stroke:none}
#critfx b{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:19px;line-height:1;color:#fff4ef;text-shadow:0 0 4px var(--cg,#ff4a5a),0 0 10px var(--cg,#ff4a5a),0 0 18px var(--cg,#ff4a5a);white-space:nowrap;margin-top:-2px}
#critfx .sp{position:absolute;left:50%;top:22px;width:4px;height:4px;border-radius:50%;background:#fff;box-shadow:0 0 6px 2px var(--cg,#ff4a5a);opacity:0}
#critfx.go .sp.a{animation:spark 1.2s .1s ease-out forwards;--dx:-26px;--dy:-18px}
#critfx.go .sp.b{animation:spark 1.2s .2s ease-out forwards;--dx:24px;--dy:-22px}
#critfx.go .sp.c{animation:spark 1.2s .3s ease-out forwards;--dx:4px;--dy:-30px}
#critfx.k-hit{--cg:#ff3b4e}#critfx.k-miss{--cg:#9a8cff}#critfx.k-dodge{--cg:#b8a6ff}#critfx.k-success{--cg:#f1c84a}
#critfx.go{animation:critpop2 1.9s ease-out forwards}
@keyframes critpop2{0%{opacity:0;transform:translate(-50%,-30%) scale(.6)}14%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}26%{transform:translate(-50%,-50%) scale(1)}78%{opacity:1}100%{opacity:0;transform:translate(-50%,-80%) scale(1)}}
@keyframes sealspin{from{transform:rotate(-25deg)}to{transform:rotate(0)}}
@keyframes spark{0%{opacity:0;transform:translate(0,0)}25%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy))}}
@media (prefers-reduced-motion:reduce){#critfx.go,#critfx svg,#critfx .sp{animation:none!important}}
/* the effects layer belongs to the page, not to the screen */
#fx{position:absolute;inset:auto;left:0;top:0;width:100%;height:100vh}
#fx .fx,#fx .skull{position:absolute}
.stack.demon,.stack.demon.red,.stack.demon.black{color:#ffe2d8}
.stack.demon .lead,.stack.demon .lead .rk,.stack.demon .lead i{color:#ffe2d8;text-shadow:0 0 6px #ff3a2a88}
/* v54: a plain ranking (Grave automation, and the field's ranking by kinds) */
.krank{list-style:none;margin:4px 0 6px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px}
.krank li{display:flex;align-items:center;gap:6px;border:1px solid var(--rule);padding:3px 6px;background:#00000022}
.krank li b{flex:1;font-weight:400;font-size:12.5px}
.krank .farank{color:var(--dim);font-size:11px;min-width:1.4em}
.krank .facolbtns{display:flex;gap:2px}.krank .facolbtns .btn{padding:0 5px;min-width:0}
/* ================= v56 · large maps: the field scrolls in a frame; zoom sizes the tiles ================= */
.camwrap.on{overflow:auto;max-height:min(78vh,920px);border:1px solid var(--rule);background:#00000040;position:relative;overscroll-behavior:contain;cursor:grab;margin:8px 0 10px}
.camwrap.on.dragging{cursor:grabbing}
.camwrap.on #board.large{width:calc(var(--cols) * var(--tw,64px) + (var(--cols) - 1) * 4px);max-width:none!important;margin:10px}
#board.large .tile{min-height:0!important}
#board.large .stack{inset:3px 5%}
#board.large .row{padding-top:0}
#board.large .rl{display:none}
#mCam.faded{opacity:.5}
/* ================= v57 · King of the Hill ================= */
#board .tile.hilltile::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse at 50% 50%,#ffffff40,#ffffff14 70%);box-shadow:inset 0 0 14px #ffffffaa;animation:hillglow 3.2s ease-in-out infinite}
#board .tile.hilltile.held::after{background:linear-gradient(color-mix(in srgb,var(--hc) 38%,transparent),color-mix(in srgb,var(--hc) 38%,transparent));box-shadow:inset 0 0 0 2px var(--ho),inset 0 0 14px var(--hc)}
@keyframes hillglow{0%,100%{opacity:.75}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){#board .tile.hilltile::after{animation:none}}
#kothbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:6px 0 2px;padding:5px 8px;border:1px solid var(--rule);background:#00000055;font-size:12px}
#kothbar .kt{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:16px;color:var(--amber-hi)}
#kothbar small{color:var(--dim)}
#kothbar .ks{display:grid;grid-template-columns:auto 60px auto;align-items:center;gap:5px;padding:1px 6px;border-left:3px solid var(--tc)}
#kothbar .ks.on{background:color-mix(in srgb,var(--tc) 18%,transparent)}
#kothbar .ks em{font-style:normal}
#kothbar .ks i{display:block;height:4px;background:var(--tc);min-width:1px}
#kothbar .ks b{font-weight:500}
#kothbar .tug{position:relative;flex:1;min-width:140px;height:8px;background:linear-gradient(90deg,#d7333b55,#ffffff22 50%,#4c92e655);border:1px solid var(--rule)}
#kothbar .tug u{position:absolute;left:50%;top:-3px;bottom:-3px;border-left:1px solid #fff8}
#kothbar .tug i{position:absolute;top:-4px;width:6px;height:14px;margin-left:-3px;background:#fff;box-shadow:0 0 6px #fff}
#kothbar .tugname{color:var(--tc)}
#sizeset.faded{opacity:.5;pointer-events:none}
/* v58: a stack on a Carriage; mercenaries under a crown */
.stack .carbadge{position:absolute;left:3px;bottom:15px;display:flex;align-items:center;gap:1px;z-index:3;background:#15100bcc;border-radius:3px;padding:0 2px}
.stack .carbadge i{font-style:normal;font-size:8px;color:#e0505b}
.stack.merc{box-shadow:inset 0 0 0 2px #efe2c8,inset 0 0 0 3px var(--pc),0 0 9px var(--pc),0 2px 4px #0008}
.stack .so.crown svg{filter:drop-shadow(0 0 3px #f1d27a)}
/* v59: the note under a large field: the controls, − and +, and the wheel's zoom switch */
.camnote{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:-4px 0 10px;font-size:12.5px;line-height:1.4}
.camnote .cz{display:inline-flex;gap:4px}.camnote .cz .btn{min-width:30px;padding:2px 8px}
.camnote .cw{display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:var(--text)}
/* v59: on a large map each tile is a container, so what is on a card scales with the tile and never outgrows its border.
   Tile names shrink with the tile and hide under a stack; a small tile shows only the card in its middle. */
#board.large .tile{container-type:inline-size}
#board.large .tile .coord{font-size:clamp(5px,14cqw,9px);left:2px;top:1px;letter-spacing:0}
#board.large .tile:has(.stack) .coord{display:none}
#board.large .stack .lead .rk{font-size:min(calc(clamp(20px,2.7vw,30px) * var(--ci,1)),34cqw)}
#board.large .stack .lead .rk.jk{font-size:min(calc(clamp(14px,1.9vw,19px) * var(--ci,1)),24cqw)}
#board.large .stack .lead i{font-size:min(calc(clamp(15px,2vw,20px) * var(--ci,1)),24cqw)}
#board.large .stack .lead svg,#board.large .stack .lead img{max-width:58cqw;max-height:58cqw}
#board.large .stack .so svg{width:min(calc(19px * var(--ci,1)),20cqw);height:min(calc(19px * var(--ci,1)),20cqw)}
#board.large .stack .mini{font-size:min(calc(11px * var(--ci,1)),13cqw);min-height:0}
#board.large .stack .ty{font-size:min(calc(9px * var(--ci,1)),11cqw);letter-spacing:.03em}
#board.large .stack .cnt{font-size:min(calc(13px * var(--ci,1)),15cqw)}
#board.large .stack .bhp{font-size:min(calc(10px * var(--ci,1)),13cqw);bottom:min(calc(17px * var(--ci,1)),24cqw)}
#board.large .stack .odds,#board.large .stack .hypo,#board.large .stack .souls,#board.large .stack .used{font-size:min(calc(11px * var(--ci,1)),13cqw)}
@container (max-width:54px){#board.large .stack>:not(.lead){display:none!important}#board.large .stack .lead{margin:auto}}
#critfx{scale:var(--fxs,1)}
/* v59: the Debt Collector's and the Banker's $ in the red of the game's title lettering */
.mk.dollar{color:#d33a46!important}
/* v60: rankings of kinds of card are dragged into place */
.dragrow{cursor:grab;user-select:none}.dragrow .grip{color:var(--dim);font-size:11px;letter-spacing:-2px;margin-right:4px;touch-action:none;cursor:grab;opacity:.7}
.dragon .dragrow{transition:transform .1s}.dragrow.dragging{opacity:.55;outline:1px dashed var(--amber);cursor:grabbing}
.dragon{cursor:grabbing}
/* v60: each spell faintly in its school's color (the color of its animations) */
.spell.schooled{background:color-mix(in srgb,var(--sc) 17%,var(--well));border-color:color-mix(in srgb,var(--sc) 62%,var(--rule))}
.spell.schooled:not(.off):hover{background:color-mix(in srgb,var(--sc) 28%,var(--well))}
/* v60: in the Configure Automation summary, the statuses are smaller than the title, so the two read apart */
summary .fasum{font-size:.72em;letter-spacing:.05em;vertical-align:1px}
/* v60: the dice box folds, below the Grave / Ether row */
.dicefold{margin:2px 0 8px}.dicefold>summary{cursor:pointer;color:var(--amber);font-size:12.5px;letter-spacing:.08em;margin-bottom:4px}
.dicefold #mytray{margin:0}
/* v60: the player setup: each seat's Substance, color and symbol fold closed (a summary shows the choice), "You" is a tag in
   your color, and the seats sit closer */
.ovbox.setup #seats{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:0 12px}
.youtag{background:var(--pc,var(--amber));color:#120c08;font-weight:600;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;padding:2px 9px;border-radius:3px;box-shadow:0 0 10px color-mix(in srgb,var(--pc) 55%,transparent)}
.seat.isyou{border-color:color-mix(in srgb,var(--pc) 70%,var(--rule));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--pc) 35%,transparent)}
.seat .lsum{display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap}
.seat .lsw{display:inline-block;width:11px;height:11px;border-radius:50%;border:1px solid #0008;vertical-align:-1px}.seat .lsw.rnd{background:var(--well);font:600 8px/9px var(--mono);text-align:center;color:var(--dim);font-style:normal}
.seat .lso{line-height:0;display:inline-flex}
.ovbox.setup .seat details.look summary{margin:4px 0}
.ovbox.setup .seat .opts.subs .opt{min-height:32px;padding:4px 26px 4px 8px;font-size:13px}
.ovbox.setup .seat .opts.subs{gap:4px;grid-template-columns:repeat(auto-fill,minmax(min(100%,132px),1fr))}
/* ---------- v61: card faces in the players' colors (darkened, calmed), the accent as the frame, light lettering ---------- */
.cf.v61,.stack.v61{--cb:var(--pcb,color-mix(in oklab,var(--pc) 44%,#211b16));--cbe:color-mix(in oklab,var(--cb) 78%,#000);--ct:#f4ead9;--cr:#ff9b90;
  background:linear-gradient(160deg,color-mix(in oklab,var(--cb) 86%,#fff) 0%,var(--cb) 55%,color-mix(in oklab,var(--cb) 82%,#000) 100%);color:var(--ct);
  box-shadow:inset 0 0 0 2px var(--cb),inset 0 0 0 3px var(--ca),var(--stk,0 0 #0000),0 2px 4px #0008}
.cf.v61.red,.stack.v61.red{color:var(--cr)}
.v61 .ty{color:color-mix(in oklab,var(--ct) 80%,transparent);border-top-color:color-mix(in oklab,var(--ca) 45%,transparent)}
.v61 .mini,.v61 .used,.v61 .souls,.v61 .odds{color:color-mix(in oklab,var(--ct) 82%,transparent)}
.v61 .hearts,.v61 .bhp,.v61 .bhp .hearts,.v61 .mini .hearts{color:#ff6b74}
html:not(.cardsym) .v61 .so{display:none}
.v61 .ci::before{border-color:var(--ca)}
.cf.v61 .cmid{position:absolute;left:0;right:0;top:calc(20px * var(--ci));display:flex;justify-content:center;align-items:baseline;gap:2px;line-height:1}
.cf.v61 .cmid .rk{font-family:"Grenze Gotisch","Old English Text MT",serif;font-weight:500;font-size:calc(27px * var(--ci))}
.cf.v61 .cmid .rk.jk{font-size:calc(17px * var(--ci))}
.cf.v61 .cmid i{font-style:normal;font-size:calc(13px * var(--ci))}
.cf.sm.v61 .cmid{top:calc(11px * var(--ci))}.cf.sm.v61 .cmid .rk{font-size:calc(17px * var(--ci))}.cf.sm.v61 .cmid .rk.jk{font-size:calc(11px * var(--ci))}.cf.sm.v61 .cmid i{font-size:calc(9px * var(--ci))}
.cf.v61.unit .uic{top:calc(17px * var(--ci))}.cf.sm.v61.unit .uic{top:calc(9px * var(--ci))}
.stack.v61 .lead i{font-size:calc(clamp(11px,1.4vw,14px) * var(--ci))}
#board.large .stack.v61 .lead i{font-size:min(calc(clamp(11px,1.4vw,14px) * var(--ci,1)),18cqw)}
.stack.v61.base,.cf.v61.basecard{--cb:color-mix(in oklab,var(--pcb,var(--pc)) 55%,#4d463e)}
.v61.hated{box-shadow:inset 0 0 0 2px var(--cb),inset 0 0 0 3px var(--ca),inset 0 0 22px #e0182aaa,var(--stk,0 0 #0000),0 2px 4px #0008}
.stack.v61.hated::after{color:#ff6b74}
.stack.v61.pink{--cb:#f0c6da;--ct:#2a0f1c;--cr:#a8123a;background:#f4d0e2;color:#2a0f1c;box-shadow:inset 0 0 0 2px #f7d4e4,inset 0 0 0 3px #e85b9b,var(--stk,0 0 #0000),0 0 10px #ff7ab8aa}
.stack.v61.joy{box-shadow:inset 0 0 0 2px var(--cb),inset 0 0 0 4px var(--ca),var(--stk,0 0 #0000),0 0 14px var(--pc)}
/* Demons: black, with red */
.stack.v61.demon,.cf.v61.demoncard{--cb:#0e0a0a;--cbe:#1d0f10;--ca:#d3202e;--ct:#ff5a60;--cr:#ff5a60;background:linear-gradient(165deg,#1e1515,#0b0808 70%,#050303);color:#ff5a60;border-color:#7a0f16;
  box-shadow:inset 0 0 0 2px #0b0808,inset 0 0 0 3px #d3202e,var(--stk,0 0 #0000),0 0 10px #b3172c77,0 2px 4px #000a}
.stack.v61.demon .lead,.stack.v61.demon .lead .rk,.stack.v61.demon .lead i,.stack.v61.demon.red,.stack.v61.demon.black{color:#ff5a60;text-shadow:0 0 6px #ff1a2a55}
.stack.v61.demon .mini,.stack.v61.demon .used,.stack.v61.demon .souls,.stack.v61.demon .ty{color:#e88a8e}
.stack.v61 .ulead svg{filter:none}
/* the Bank: a faint banknote */
.stack.v61.bankcard,.cf.v61.bankcard{--cb:#e2e7d3;--cbe:#c4cbb0;--ca:#4f7a57;--ct:#1d3524;--cr:#a3150c;color:#1d3524;border-color:#2f4a33;
  background:repeating-radial-gradient(circle at 50% 46%,#2f5a3a14 0 1px,transparent 1px 5px),repeating-linear-gradient(60deg,#2f5a3a0e 0 1px,transparent 1px 7px),repeating-linear-gradient(-60deg,#2f5a3a0e 0 1px,transparent 1px 7px),linear-gradient(160deg,#ebefdd,#d6dcc3);
  box-shadow:inset 0 0 0 2px #e6eada,inset 0 0 0 3px #4f7a57,inset 0 0 0 5px #e6eada,inset 0 0 0 6px #4f7a5766,var(--stk,0 0 #0000),0 2px 4px #0008}
.stack.v61.bankcard .ty,.stack.v61.bankcard .mini,.stack.v61.bankcard .uname,.cf.v61.bankcard .ty{color:#2f4a33;border-top-color:#4f7a5766}
.stack.v61.bankcard .lead,.stack.v61.bankcard .lead .rk{color:#1d3524}
.cf.v61 .cmid .rk,.cf.v61 .cmid i{color:inherit}
/* v61: the Display bar at the foot keeps the quick settings; theme, card icons, hand, page width, animations and the spell
   font live in the Menu (all of them were there already) */
#gbar label:has(#pTheme),#gbar .gctl:has([data-z="ci"]),#gbar #pHand,#gbar #pFull,#gbar #pAnimC,#gbar #pAnimM,#gbar #pSpellBL{display:none!important}
.ovbox.setup .seat .opts.swatches{grid-template-columns:repeat(auto-fill,minmax(54px,1fr));grid-auto-rows:auto;gap:2px 4px}
.ovbox.setup .seat .opts.swatches .sw em{font-size:10px}
/* v62: the Mining slots: small tiles below the field; a Miner picked in the hand lights the slots it can go into */
.minepanel{border:1px solid var(--rule);background:color-mix(in srgb,var(--deep) 88%,transparent);margin:6px 0 10px;padding:4px 8px 8px}
.minepanel .mshead{display:flex;align-items:center;gap:10px}
.minepanel .msfold{background:none;border:0;color:var(--amber);font:inherit;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;padding:4px 0}
.minepanel .mshint{color:var(--amber-hi);font-size:12px}
.minepanel .msmove{margin-left:auto;background:none;border:1px solid var(--rule);color:var(--dim);cursor:pointer;font-size:13px;line-height:1;padding:3px 7px}
.minepanel .msmove:hover{color:var(--amber);border-color:var(--amber)}
.minepanel .msrow{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.mslot{position:relative;display:flex;flex-direction:column;gap:3px;width:184px;padding:5px 6px 6px;text-align:left;font:inherit;color:var(--text);background:var(--well);border:1px solid var(--rule);cursor:default}
.mslot.k-cr{border-color:color-mix(in srgb,#6ad0e8 50%,var(--rule))}.mslot.k-plot{border-color:color-mix(in srgb,#4f7a57 70%,var(--rule))}.mslot.k-moon{border-color:color-mix(in srgb,#cfc7ff 45%,var(--rule))}
.mslot .msn{display:flex;align-items:baseline;gap:6px;font-size:12.5px;flex-wrap:wrap}.mslot .msn b{font-weight:400;color:var(--amber-hi)}
.mslot .msn small{color:var(--dim);font-size:11px}.mslot .msn em{margin-left:auto;font-style:normal;font-size:11px;color:var(--dim)}
.mslot .msc{display:flex;gap:4px;min-height:calc(48px * var(--ci));align-items:flex-start}
.mslot .msempty{display:inline-block;width:calc(34px * var(--ci));height:calc(48px * var(--ci));border:1px dashed var(--rule);border-radius:3px;opacity:.7}
.mslot .msstat{position:absolute;left:4px;right:4px;bottom:5px;display:flex;flex-direction:column;gap:1px;font-size:10.5px;line-height:1.25;color:#f1e7d6;background:#0d0a08cc;border:1px solid #ffffff14;padding:2px 5px;pointer-events:none}
.mslot .msstat b{font-weight:500;color:#ffe0a3}
.mslot:has(.msstat){padding-bottom:20px}
.mslot.tplace{cursor:pointer;outline:2px solid var(--amber);outline-offset:1px;box-shadow:0 0 12px color-mix(in srgb,var(--amber) 45%,transparent);animation:msglow 1.6s ease-in-out infinite}
@keyframes msglow{50%{box-shadow:0 0 4px color-mix(in srgb,var(--amber) 25%,transparent)}}
@media (prefers-reduced-motion:reduce){.mslot.tplace{animation:none}}
.minepanel .msrow{align-items:stretch}
/* v62: what a wildcard is for, at the top of the Selected box */
#selbox .wilduse{margin:0 0 6px;padding:5px 8px;border-left:2px solid var(--amber);background:color-mix(in srgb,var(--amber) 8%,transparent);font-size:12.5px;line-height:1.4}
#selbox .wilduse b{color:var(--amber-hi);font-weight:400;margin-right:4px}
/* v62: while a Wall is picked, your Repairmen's tiles glow blue (a Wall can go up within two of them) */
#board .tile.repsrc{box-shadow:inset 0 0 0 2px #4ea0ff,0 0 12px #4ea0ffaa;z-index:1}
/* v62: the map's art fades in steps; Off hides it, and the tiles nobody can play glow very faintly */
#board .tile>.tart,#board>.mapbg{opacity:var(--mapop,1)}
html.nomap #board .tile>.tart,html.nomap #board>.mapbg{display:none}
html.nomap #board .tile.void,html.nomap #board .tile.water{visibility:visible!important;background:rgba(232,226,214,.05)!important;box-shadow:inset 0 0 10px rgba(240,234,222,.08)!important}
/* v63: cheat mode */
#cheatbadge{position:fixed;left:50%;bottom:10px;transform:translateX(-50%);z-index:60;pointer-events:none;padding:3px 12px;border:1px solid #e0457b;background:#1a0710e6;color:#ff9cc0;font-size:12px;letter-spacing:.08em;text-transform:uppercase;border-radius:3px;box-shadow:0 0 12px #e0457b55}
#cheatbadge[hidden]{display:none}
.fabar .cheatb{padding:4px 8px;line-height:1;color:#ff9cc0;border-color:#e0457b88}
.cheatbox{max-width:min(960px,100%);overflow:auto}
#cheatq .cheatbox{max-width:min(460px,100%)}
.cheatnote{margin:0 0 8px;color:#ffb35a;font-size:13px}
.cheatgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:4px 18px;align-items:start}
.cheatgrid h4{margin:10px 0 4px;font-size:13px;color:var(--amber-hi);font-weight:600}
.cheatgrid section>h4:first-child{margin-top:4px}
.cheatbtns{display:flex;flex-wrap:wrap;gap:4px}
.cheatblock{grid-column:1/-1}
.cheatblock details{border-top:1px solid #ffffff12;padding:2px 0}
.cheatblock summary{cursor:pointer;font-size:13px;padding:3px 0}
.cheatblock .cbs{font-size:12px;color:var(--dim);margin-right:6px;cursor:pointer}
.cheatspells{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr));gap:2px 12px;padding:2px 0 6px 18px}
.cheatspells .cbsp{font-size:12.5px;cursor:pointer}
.cheatpanel>summary{cursor:pointer}
.cheatpanel{padding-bottom:6px}
.cheatpanel>.cheatnote,.cheatpanel>.cheatgrid{padding:0 14px}
.rmtag.cheattag{color:#ff9cc0;border-color:#e0457b88}
/* v65: no corner marks on the field either (∞ on the Leviathan, − on the Slave and the rest): the picture says which card it is */
.stack .lead.ulead .smark{display:none}
/* v65: the Menu's sliders together below the drop-downs, one compact row each: name · ◀ slider ▶ · value */
#menu .mslides{display:grid;gap:6px;margin:4px 0 12px;padding:10px 0 4px;border-top:1px solid var(--rule)}
#menu .mslides label.f.mslide{display:grid;grid-template-columns:minmax(6.5em,9em) auto minmax(90px,220px) auto 3.8em;align-items:center;justify-content:start;gap:6px;margin:0;flex:none;min-width:0;text-align:left}
#menu .mslides .mname{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text)}
#menu .mslides input[type=range]{width:100%;min-width:0;margin:0;accent-color:var(--amber)}
#menu .mslides b{min-width:0;font-weight:400;color:var(--amber-hi);text-align:left}
#menu .mstep{font:inherit;font-size:11px;line-height:1;padding:5px 7px;background:var(--deep);color:var(--amber-hi);border:1px solid var(--rule);cursor:pointer}
#menu .mstep:hover{border-color:var(--amber)}
#menu .mstep:disabled{opacity:.4;cursor:not-allowed}
#menu details label.f.mslide{display:grid;grid-template-columns:minmax(6.5em,9em) auto minmax(90px,220px) auto 3.8em;align-items:center;justify-content:start;gap:6px}
#menu details .mslide .mname{font-size:12px;letter-spacing:.08em;text-transform:uppercase}
@media (max-width:520px){#menu .mslides label.f.mslide{grid-template-columns:minmax(5.5em,7em) auto minmax(60px,1fr) auto 3.4em}}
/* v65: the opening Ace hint above the field */
#acehint{margin:0 0 8px;padding:7px 12px;border:1px solid var(--amber);background:color-mix(in oklab,var(--amber) 12%,#0c0805);color:var(--amber-hi);font-size:14px;text-align:center;animation:acehint 2.4s ease-in-out infinite}
@keyframes acehint{50%{box-shadow:0 0 12px color-mix(in oklab,var(--amber) 45%,transparent)}}
@media (prefers-reduced-motion:reduce){#acehint{animation:none}}
/* v65: Lock in place: a faint lock on the card; the Selected box row */
.cf .flock,.stack .flock{position:absolute;right:calc(4px * var(--ci,1));bottom:calc(16px * var(--ci,1));width:calc(15px * var(--ci,1));height:calc(17px * var(--ci,1));opacity:.55;color:var(--ct,#f4ead9);pointer-events:none;z-index:3}
.cf .flock svg,.stack .flock svg{width:100%;height:100%;display:block}
.falockrow{margin:8px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.falockrow .flockico{display:inline-block;width:11px;height:12px;vertical-align:-1px;font-style:normal}.falockrow .flockico svg{width:100%;height:100%}
#lockq .lockbox{max-width:min(420px,100%)}
.spellrow #lazyBtn.blindpause{opacity:.5}
