:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#283d35;background:#f3f1e9;font-synthesis:none;--ink:#283d35;--muted:#65716a;--line:#dcded2;--paper:#faf9f4;--green:#30594b;--gold:#c29547;--danger:#a0442d}
*{box-sizing:border-box}body{margin:0}button,select,input{font:inherit}button,a,select,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #c08033;outline-offset:4px}button{color:inherit}a{color:inherit}.page-shell{max-width:1220px;margin:auto;padding:0 42px}.site-header{min-height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:24px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-family:Georgia,serif;font-size:24px;font-weight:bold;letter-spacing:-.6px}.brand-mark{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;background:var(--ink);color:#f2e8c7;font-family:Georgia,serif;font-size:34px}.brand small{display:block;font:9px/1.7 ui-sans-serif,sans-serif;letter-spacing:2.4px;font-weight:600;margin-top:4px}.header-actions{display:flex;gap:12px;align-items:center}.version{font-size:10px;letter-spacing:1.3px;margin-right:10px;color:var(--muted)}.version span{margin:0 8px}.button{min-height:42px;padding:10px 16px;border:1px solid #bfc8bb;border-radius:7px;background:transparent;font-size:12px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:20px;transition:background .15s}.button:hover{background:#e5e9dd}.button.subtle{border-color:transparent}.button.primary{background:var(--green);color:#fff;border-color:var(--green)}.button.primary:hover{background:#223f35}.wide{width:100%}.intro{display:flex;align-items:end;justify-content:space-between;gap:32px;margin:38px 0 28px}.eyebrow{font-size:9px;font-weight:700;letter-spacing:1.8px;line-height:1.7;color:var(--muted);margin:0 0 9px}h1{font-family:Georgia,"Times New Roman",serif;font-weight:normal;font-size:clamp(27px,3vw,38px);letter-spacing:-1.3px;margin:0;line-height:1.15}.intro>p{font-size:12px;line-height:1.8;color:var(--muted);margin:0 0 2px}.play-area{display:grid;grid-template-columns:minmax(0,1fr) 292px;align-items:start;gap:28px}.board-section{min-width:0}.turn-bar{display:flex;align-items:center;justify-content:space-between;padding:0 1px 15px}.turn-player{display:flex;gap:12px;align-items:center}.player-dot{width:12px;height:12px;border-radius:50%;display:inline-block;box-shadow:0 0 0 4px #e7e7db;flex-shrink:0}.player-dot.p1{background:#bc9149}.player-dot.p2{background:#3b665c}.turn-player strong{font-size:13px;font-weight:650;display:block}.turn-player span:not(.player-dot){font-size:10px;color:var(--muted);display:block;margin-top:4px}.turn-count{border:1px solid var(--line);padding:6px 9px;font-size:9px;letter-spacing:1.2px;border-radius:4px}.status{font-size:12px;line-height:1.5;background:#e3e9dc;border:1px solid #d0dcc4;padding:12px 14px;border-radius:7px;margin:0 0 14px;min-height:43px}.status.check{background:#f1e1ce;border-color:#dfc3a3;color:#813c24}.status.finished{background:var(--green);color:white;border-color:var(--green)}.board-frame{background:#e3e5d9;border:1px solid #c7cfc0;border-radius:10px;padding:14px 18px 8px 3px;box-shadow:0 8px 25px #283d3506}.board-surround{display:grid;grid-template-columns:23px 1fr;grid-template-rows:1fr 23px}.board{grid-column:2;grid-row:1;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));aspect-ratio:1;box-shadow:0 0 0 1px #b0bba5;border-radius:3px;overflow:hidden}.rank-labels{display:grid;grid-template-rows:repeat(8,1fr);font-size:10px;color:#68735e;align-items:center;justify-items:center}.file-labels{grid-column:2;display:grid;grid-template-columns:repeat(8,1fr);font-size:10px;color:#68735e;align-items:end;justify-items:center;padding-top:8px}.square{position:relative;border:0;border-radius:0;padding:8%;aspect-ratio:1;min-width:0;display:grid;place-items:center;background:#e9ebdc;isolation:isolate}.square.dark{background:#9baa8c}.square:hover{box-shadow:inset 0 0 0 2px #2e504d50}.square:focus-visible{outline:3px solid #30594b;outline-offset:-3px;z-index:3}.square.last-action{background:#d9d8a3}.square.dark.last-action{background:#99a478}.square.selected{background:#d8ca81;box-shadow:inset 0 0 0 3px #776e39}.tile{width:100%;height:100%;position:relative;display:grid;place-items:center;border-radius:50%;transition:transform .15s;font-size:clamp(22px,3.5vw,44px);font-family:"Arial Unicode MS","Segoe UI Symbol",Georgia,serif;line-height:1;box-shadow:0 3px 2px #1f352f45,0 0 0 1px #776e4555;z-index:1}.tile.p1{background:#faf3d8;color:#3e4235;border:3px solid #e2d2a4}.tile.p2{background:#31584f;color:#f4f1df;border:3px solid #5d7c6d;box-shadow:0 3px 2px #1f352f70,0 0 0 1px #203d36}.tile.hidden::before{content:"";position:absolute;inset:10%;border:1px solid currentColor;opacity:.22;border-radius:50%}.tile.hidden .seal{font-family:Georgia,serif;font-size:.55em;opacity:.5;font-weight:normal}.tile.hidden.p1{background:#e9d9ad;color:#705f37;border-color:#d3bd85}.tile.hidden.p2{background:#31594f;color:#c5d4be}.square.revealable .tile{outline:2px dashed #97712d;outline-offset:3px}.square.revealable .tile.p2{outline-color:#285349}.square.selected .tile{transform:translateY(-2px)}.tile.stack{box-shadow:0 4px 0 -1px #f2e7c5,0 6px 0 -1px #af9e6c,0 8px 4px #283d3550;transform:translateY(-3px)}.tile.stack.p2{box-shadow:0 4px 0 -1px #5b7d6d,0 6px 0 -1px #254a40,0 8px 4px #283d3550}.stack-count{position:absolute;right:-5%;bottom:-2%;font:700 9px ui-sans-serif,sans-serif;background:#fff8db;color:#365047;border:1px solid #b1b89d;border-radius:10px;padding:3px 4px;z-index:2}.square.in-check .tile{outline:3px solid #b24530;outline-offset:1px}.square.legal::after{content:"";width:23%;aspect-ratio:1;border-radius:50%;background:#30594b80;position:absolute;z-index:2;pointer-events:none}.square.legal:has(.tile)::after{width:87%;background:transparent;border:3px solid #b27b29;box-shadow:0 0 0 1px #f7edc4}.square.legal.action-unstack::after,.square.legal.action-stack::after{border-radius:6px}.board-footer{display:flex;gap:20px;font-size:10px;color:var(--muted);padding:16px 2px;align-items:center}.board-footer>span{display:flex;align-items:center;gap:7px}.board-footer>span:last-child{margin-left:auto}.legend-ring{width:12px;height:12px;border:1.5px dashed #98732d;border-radius:50%}.legend-dot{width:7px;height:7px;background:#527664;border-radius:50%}.sidebar{display:flex;flex-direction:column;gap:16px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:20px}.action-panel{min-height:207px}.selection-title{font-family:Georgia,serif;font-size:24px;font-weight:normal;margin:8px 0 10px;letter-spacing:-.5px}.selection-coordinate{font:10px ui-sans-serif,sans-serif;padding:4px 6px;margin-left:6px;background:#eeeee3;vertical-align:middle;border-radius:4px;letter-spacing:0}.muted{color:var(--muted);font-size:12px;line-height:1.75}.action-panel .muted{margin:12px 0 0}.action-modes{display:flex;gap:5px;margin-top:12px;flex-wrap:wrap}.mode-button{border:1px solid var(--line);border-radius:5px;background:transparent;padding:6px 9px;font-size:11px}.mode-button.active{background:#e2e9dc;border-color:#a6b69d}.action-buttons{display:grid;gap:8px;margin-top:12px}.action-buttons:empty,.action-modes:empty{display:none}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:19px}h2{font-family:Georgia,serif;font-weight:normal;letter-spacing:-.5px}.panel h2{font-size:18px;margin:0}.micro-label{font-size:7px;letter-spacing:.9px;color:var(--muted)}.army-row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;font-size:12px;margin:16px 0}.army-row:last-child{margin-bottom:0}.army-row .player-dot{width:9px;height:9px;box-shadow:none}.army-count{font-variant-numeric:tabular-nums;color:var(--muted);font-size:11px}.army-caption{font-size:10px;line-height:1.5;color:var(--muted);margin:4px 0 0}.history{padding:0;margin:0;list-style:none;max-height:200px;overflow:auto}.history li{display:grid;grid-template-columns:24px 1fr;gap:7px;font-size:11px;line-height:1.65;padding:9px 0;border-bottom:1px solid #e7e9df}.history li:last-child{border:0}.history .history-number{font-size:9px;color:#8a958a;padding-top:2px}.history strong{font-weight:600}.history-empty{font-size:12px;color:var(--muted);line-height:1.8;margin:0;padding:0}.settings-button{border:0;background:transparent;display:flex;align-items:center;gap:9px;font-size:11px;padding:0 3px;color:var(--muted);text-align:left}.settings-button span:last-child{margin-left:auto}.page-footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:18px;font-size:10px;color:#788274;margin:25px 0 0;padding:22px 0 30px}.page-footer span:first-child{font-family:Georgia,serif;font-style:italic;font-size:13px}dialog{color:var(--ink);background:var(--paper);border:1px solid #d4d9cc;border-radius:16px;max-height:calc(100dvh - 40px);box-shadow:0 25px 100px #18392e40}dialog::backdrop{background:#263d32a6;backdrop-filter:blur(8px)}.handoff-dialog{width:430px;max-width:calc(100vw - 32px);padding:36px;text-align:center}.handoff-mark{font-family:Georgia,serif;font-size:56px;border-radius:50%;width:90px;height:90px;display:grid;place-items:center;margin:4px auto 24px;border:4px solid #ddc999;background:#f0e3bd;color:#354438}.handoff-mark.p2{background:#31594f;color:#efe8d5;border-color:#6c8979}.handoff-dialog h2{font-size:32px;margin:12px 0}.handoff-dialog>p:not(.eyebrow){font-size:13px;line-height:1.8;color:var(--muted)}.handoff-dialog .button{margin-top:15px}.handoff-dialog .dialog-footnote{font-size:10px!important;margin-top:20px}.privacy-on .play-area{visibility:hidden}.info-dialog{width:540px;max-width:calc(100vw - 30px);padding:28px 32px}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.dialog-heading .eyebrow{margin:0}.icon-button{background:transparent;border:0;font-size:25px;line-height:1;padding:2px 5px;color:var(--muted)}.info-dialog h2{font-size:30px;margin:18px 0 16px;line-height:1.2}.rule-block{border-top:1px solid var(--line);padding:14px 0}.rule-block h3{font-size:12px;margin:0 0 6px}.rule-block p{font-size:12px;line-height:1.8;color:var(--muted);margin:0}.info-dialog>.button{margin-top:15px}.field{display:block;font-size:12px;font-weight:600;margin:21px 0}.field select{display:block;width:100%;margin-top:9px;border:1px solid #c6cfbc;padding:11px;border-radius:6px;background:#fffefa;color:var(--ink);font-size:12px}.field small{font-weight:400;display:block;line-height:1.6;color:var(--muted);font-size:11px;margin-top:7px}.check-field{display:flex;gap:9px;align-items:center;font-size:12px;margin:18px 0}.check-field input{accent-color:var(--green);width:16px;height:16px}.form-note{font-size:11px;color:var(--muted);line-height:1.7;margin:23px 0}.compact-dialog{width:440px}.dialog-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:22px}.just-revealed{animation:flip .35s ease-out}@keyframes flip{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0) scale(1)}}
@media(min-width:1200px){.play-area{grid-template-columns:630px minmax(0,1fr);gap:34px}.tile{font-size:43px}.panel{padding:22px}.history{max-height:212px}}
@media(max-width:900px){.page-shell{padding:0 24px}.intro>p{display:none}.play-area{grid-template-columns:minmax(0,1fr) 245px;gap:20px}.panel{padding:16px}.panel-heading{flex-wrap:wrap;gap:7px}.tile{border-width:2px!important}.version{display:none}.board-footer{gap:12px}.tile{font-size:clamp(22px,4.1vw,37px)}.micro-label{font-size:7px}}
@media(max-width:680px){.page-shell{padding:0 16px}.site-header{min-height:80px;gap:12px}.brand{font-size:20px;gap:9px}.brand-mark{width:35px;height:35px;font-size:28px}.brand small{font-size:7px;letter-spacing:1.4px}.header-actions{gap:1px}.header-actions .button{font-size:10px;padding:8px}.header-actions .button span{display:none}.intro{margin:27px 0 25px}.intro .eyebrow{font-size:7px;letter-spacing:1.4px}h1{font-size:30px}.play-area{grid-template-columns:1fr;gap:8px}.board-frame{padding-right:11px;padding-top:11px}.board-surround{grid-template-columns:19px 1fr;grid-template-rows:1fr 21px}.tile{font-size:clamp(24px,7.8vw,44px)}.square{padding:9%}.square.revealable .tile{outline-offset:2px;outline-width:1.5px}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:12px}.action-panel{grid-column:1/-1;min-height:0}.armies-panel,.history-panel{min-width:0}.panel-heading{display:block;margin-bottom:12px}.micro-label{display:block;margin-top:5px}.history{max-height:166px}.settings-button{grid-column:1/-1;padding:8px 0}.army-row{gap:7px;font-size:11px}.army-count{font-size:10px}.page-footer{font-size:9px;margin-top:17px;line-height:1.6}.page-footer span:last-child{max-width:160px;text-align:right}.stack-count{font-size:8px;padding:2px 3px}.board-footer{font-size:9px}.info-dialog{padding:23px}.handoff-dialog{padding:28px}.turn-bar{padding-bottom:12px}.turn-player strong{font-size:12px}.status{font-size:11px}.selection-title{font-size:22px}.action-modes{margin-top:10px}.action-buttons{margin-top:10px}}
.privacy-toggle{display:flex;align-items:center;gap:8px;grid-column:1/-1;padding:0 3px;font-size:11px;line-height:1.5;color:var(--muted);cursor:pointer}.privacy-toggle input{width:16px;height:16px;margin:0;accent-color:var(--green);flex-shrink:0}
.stack-experiments{border:1px solid var(--line);border-radius:7px;padding:8px 16px;margin:20px 0}.stack-experiments legend{font-size:12px;font-weight:650;padding:0 6px}.stack-experiments .form-note{margin:4px 0 12px}.stack-experiments .check-field{align-items:flex-start;line-height:1.5;margin:16px 0}.stack-experiments input{flex-shrink:0;margin:1px 0 0}.stack-experiments small{display:block;font-size:11px;font-weight:400;line-height:1.6;color:var(--muted);margin-top:4px}.stack-experiments:disabled{opacity:.5}.square.action-scout::after{border-color:var(--danger)!important}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* Owen's Rules: playful, but quiet enough that the board stays the focus. */
:root{--owen:#b4622b;--owen-line:#e3b877;--owen-paper:#fffaf0}
.turn-tags{display:flex;gap:8px;align-items:center}.mode-badge{font-size:9px;font-weight:700;letter-spacing:1.2px;padding:6px 9px;border-radius:20px;background:#fbe3c4;color:var(--owen);border:1px solid var(--owen-line)}
.board-frame{position:relative}.square.arriving{z-index:4}
.tile.slide-in{animation:slide-in .32s cubic-bezier(.2,.75,.25,1)}@keyframes slide-in{from{transform:translate(calc(var(--dx)*119%),calc(var(--dy)*119%))}}
.tile.slide-flip{animation:slide-flip .6s ease-out}@keyframes slide-flip{0%{transform:translate(calc(var(--dx)*119%),calc(var(--dy)*119%)) scale(.92)}55%{transform:translate(0,0) scale(.95) rotateY(0)}77%{transform:scale(.95) rotateY(90deg)}100%{transform:none}}
.chomp{position:absolute;inset:6%;border-radius:50%;border:3px solid var(--danger);z-index:5;pointer-events:none;animation:chomp .55s .2s ease-out both}@keyframes chomp{0%{opacity:0;transform:scale(.4)}15%{opacity:1}100%{opacity:0;transform:scale(1.45)}}
.owen-panel{border-color:var(--owen-line);background:linear-gradient(var(--owen-paper),#fbf5e6)}.owen-heading{margin-bottom:10px}.owen-heading .eyebrow{margin:0;color:var(--owen)}
.goal-card{display:grid;grid-template-columns:44px 1fr;gap:12px;align-items:start;padding:12px;border-radius:10px;background:#fff;border:2px dashed var(--owen-line);transform-origin:50% 0}.goal-card h2{font-size:19px;margin:0 0 4px}.goal-card p{font-size:12px;line-height:1.6;margin:0;color:var(--muted)}
.goal-icon{font-size:32px;line-height:1;display:grid;place-items:center;height:44px;animation:wiggle 3.2s ease-in-out infinite}.goal-card.goal-new{animation:goal-in .65s cubic-bezier(.3,1.5,.5,1)}
@keyframes goal-in{0%{transform:perspective(500px) rotateX(90deg) scale(.85);opacity:0}100%{transform:none;opacity:1}}@keyframes wiggle{0%,88%,100%{transform:rotate(0)}92%{transform:rotate(-14deg)}96%{transform:rotate(10deg)}}
.goal-scores{display:grid;gap:9px;margin:14px 0 10px}.goal-row{display:grid;grid-template-columns:auto auto minmax(30px,1fr) auto auto auto;gap:7px;align-items:center;font-size:11px}.goal-row .player-dot{width:9px;height:9px;box-shadow:none}.goal-name{font-weight:650}
.goal-track{height:9px;border-radius:9px;background:#ece7d6;overflow:hidden}.goal-fill{display:block;height:100%;width:0;border-radius:9px;transition:width .75s cubic-bezier(.3,1.3,.5,1)}.goal-fill.p1{background:#d6a14e}.goal-fill.p2{background:#3b665c}
.goal-count{font-variant-numeric:tabular-nums;color:var(--muted);min-width:26px;text-align:right}.goal-row.near .goal-track{box-shadow:0 0 0 2px #e07a3f;animation:nervous .7s ease-in-out infinite}@keyframes nervous{0%,100%{transform:translateX(0)}25%{transform:translateX(-1.5px)}75%{transform:translateX(1.5px)}}
.crown-slots{display:flex;gap:1px;font-size:12px}.crown{filter:grayscale(1);opacity:.22}.crown.won{filter:none;opacity:1}.crown.pop,.tokens.pop{animation:pop .7s cubic-bezier(.3,1.8,.5,1)}.tokens{font-size:11px;min-width:0;white-space:nowrap}
@keyframes pop{0%{transform:scale(0) rotate(-30deg)}60%{transform:scale(1.7) rotate(8deg)}100%{transform:none}}
.owen-mood{font-size:11px;line-height:1.6;color:var(--muted);margin:0;padding:8px 10px;border-radius:7px;background:#f3eedf}.owen-mood.nervous{background:#fbe3d3;color:#8a3d1c}.owen-mood.yawning{background:#ece6fb;color:#5a4691;animation:yawn 2.4s ease-in-out infinite}.owen-mood.locked{background:#e1efe6;color:#2d5a45}@keyframes yawn{0%,100%{transform:scale(1)}50%{transform:scale(1.02)}}
.owen-buttons{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}.owen-button{gap:6px;padding:8px;font-size:11px;border-color:var(--owen-line);background:#fff6e4}.owen-button:hover{background:#fbe8c2}.owen-note{font-size:10px;line-height:1.6;color:var(--muted);margin:8px 0 0}.owen-name{color:var(--owen)}
.owen-toast{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:20}.owen-toast-card{display:none}
.owen-toast.show .owen-toast-card{display:grid;justify-items:center;gap:6px;text-align:center;background:var(--owen-paper);border:3px solid var(--owen-line);border-radius:18px;padding:18px 26px;box-shadow:0 18px 50px #18392e50;max-width:80%;animation:toast 2.8s cubic-bezier(.3,1.5,.5,1) both}
.owen-toast.show .owen-toast-card.final{animation-name:toast-stay}.toast-mark{font-size:48px;line-height:1}.owen-toast-card strong{font-family:Georgia,serif;font-size:22px;font-weight:normal}.toast-detail{font-size:13px;color:var(--muted)}.toast-token{font-size:12px;font-weight:650;color:#8a3d1c;background:#fbe3d3;border-radius:20px;padding:4px 10px}
.toast-stamp{font:900 44px/1 Georgia,serif;letter-spacing:2px;color:#c23d22;border:5px solid #c23d22;border-radius:10px;padding:6px 14px;margin:4px 0;transform:rotate(-8deg);animation:stamp .5s cubic-bezier(.3,1.6,.5,1) both}
@keyframes toast{0%{opacity:0;transform:scale(.4) rotate(-6deg)}12%{opacity:1;transform:scale(1.06) rotate(1deg)}20%{transform:none}85%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-14px)}}@keyframes toast-stay{0%{opacity:0;transform:scale(.4)}15%{opacity:1;transform:scale(1.06)}25%,100%{opacity:1;transform:none}}@keyframes stamp{0%{transform:scale(3) rotate(-20deg);opacity:0}100%{transform:rotate(-8deg);opacity:1}}
.confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:19}.confetti span{position:absolute;top:-30px;left:var(--x);font-size:20px;animation:fall 2.8s var(--delay) cubic-bezier(.3,.1,.6,1) both}@keyframes fall{from{transform:translateY(0) rotate(0)}to{transform:translateY(700px) rotate(var(--spin));opacity:0}}
@media(max-width:680px){.owen-panel{grid-column:1/-1}.toast-stamp{font-size:34px}.owen-toast-card strong{font-size:19px}}
@media(prefers-reduced-motion:reduce){.owen-toast.show .owen-toast-card{opacity:1}}
/* Capture sprites: each attacker arrives its own way, then a comic burst. */
.tile[class*="capture-"]{--from:translate(calc(var(--dx)*119%),calc(var(--dy)*119%))}
.tile.capture-pawn{animation:cap-pawn .42s ease-out}@keyframes cap-pawn{0%{transform:var(--from)}30%{transform:translate(calc(var(--dx)*80%),calc(var(--dy)*80%)) rotate(-12deg)}60%{transform:translate(calc(var(--dx)*35%),calc(var(--dy)*35%)) rotate(12deg)}85%{transform:scale(1.15,.88)}100%{transform:none}}
.tile.capture-knight{animation:cap-knight .5s cubic-bezier(.3,.6,.4,1)}@keyframes cap-knight{0%{transform:var(--from)}50%{transform:translate(calc(var(--dx)*60%),calc(var(--dy)*60% - 70%)) scale(1.3) rotate(-25deg)}82%{transform:scale(1.2,.8)}100%{transform:none}}
.tile.capture-bishop{animation:cap-bishop .45s ease-out}@keyframes cap-bishop{0%{transform:var(--from);opacity:1}25%{transform:var(--from) scale(.2);opacity:0;filter:brightness(3)}55%{transform:scale(1.4);opacity:1;filter:brightness(2.2) drop-shadow(0 0 10px #6ec3ff)}100%{transform:none;filter:none}}
.tile.capture-rook{animation:cap-rook .36s cubic-bezier(.6,0,.9,.5)}@keyframes cap-rook{0%{transform:var(--from)}70%{transform:scale(1.08)}82%{transform:scale(1.25,.75)}100%{transform:none}}
.tile.capture-queen{animation:cap-queen .6s cubic-bezier(.3,.7,.3,1)}@keyframes cap-queen{0%{transform:var(--from) rotate(0)}60%{transform:translate(calc(var(--dx)*20%),calc(var(--dy)*20% - 30%)) scale(1.45) rotate(330deg)}100%{transform:none}}
.tile.capture-king{animation:cap-king .5s ease-out}@keyframes cap-king{0%{transform:var(--from)}55%{transform:translateY(-40%) scale(1.2)}75%{transform:scale(1.25,.75)}100%{transform:none}}
.tile.capture-stack{animation:cap-stack .45s ease-out}@keyframes cap-stack{0%{transform:var(--from)}65%{transform:translateY(-3px) scale(1.1)}80%{transform:translateY(-3px) scale(1.35,.6)}100%{transform:translateY(-3px)}}
.board-frame.shake{animation:shake .45s .25s ease-out}@keyframes shake{0%,100%{transform:none}20%{transform:translate(-5px,2px)}40%{transform:translate(5px,-2px)}60%{transform:translate(-3px,1px)}80%{transform:translate(2px,0)}}
.sprite{position:absolute;z-index:18;pointer-events:none;transform:translate(-50%,-50%)}
.burst{width:calc(var(--cell)*1.7);height:calc(var(--cell)*1.7);background:var(--ink);clip-path:polygon(50% 0,61% 30%,95% 18%,72% 45%,100% 62%,66% 66%,72% 100%,50% 75%,28% 100%,34% 66%,0 62%,28% 45%,5% 18%,39% 30%);opacity:.9;animation:burst .7s .25s cubic-bezier(.3,1.6,.5,1) both}
@keyframes burst{0%{transform:translate(-50%,-50%) scale(0) rotate(-40deg);opacity:0}35%{transform:translate(-50%,-50%) scale(1) rotate(0);opacity:.9}100%{transform:translate(-50%,-50%) scale(1.25) rotate(10deg);opacity:0}}
.burst-word{font:900 clamp(15px,2.4vw,26px)/1 Georgia,serif;letter-spacing:1px;color:#fff;-webkit-text-stroke:1.5px var(--ink);text-shadow:2px 2px 0 var(--ink);white-space:nowrap;animation:burst-word 1s .3s cubic-bezier(.3,1.7,.5,1) both}
@keyframes burst-word{0%{transform:translate(-50%,-50%) scale(0) rotate(-15deg);opacity:0}25%{transform:translate(-50%,-50%) scale(1.25) rotate(-6deg);opacity:1}70%{transform:translate(-50%,-90%) scale(1) rotate(-6deg);opacity:1}100%{transform:translate(-50%,-140%) scale(.9) rotate(-6deg);opacity:0}}
.ghost{width:calc(var(--cell)*.62);height:calc(var(--cell)*.62);display:grid;place-items:center;border-radius:50%;font:calc(var(--cell)*.42)/1 "Arial Unicode MS","Segoe UI Symbol",Georgia,serif;box-shadow:0 3px 8px #1f352f60;animation:ghost-poof .9s .25s ease-out both}
.ghost.p1{background:#faf3d8;color:#3e4235;border:2px solid #e2d2a4}.ghost.p2{background:#31584f;color:#f4f1df;border:2px solid #5d7c6d}.ghost.flying{animation:none}
@keyframes ghost-poof{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}30%{transform:translate(-50%,-120%) scale(1.2) rotate(-15deg);opacity:1}100%{transform:translate(-50%,-220%) scale(.4) rotate(40deg);opacity:0}}
.reward{font:700 12px/1 ui-sans-serif,sans-serif;white-space:nowrap;background:#fff6e4;color:#8a3d1c;border:2px solid var(--owen-line);border-radius:20px;padding:6px 10px;box-shadow:0 6px 16px #18392e30;animation:reward 1.7s cubic-bezier(.3,1.5,.5,1) both}
@keyframes reward{0%{transform:translate(-50%,0) scale(.3);opacity:0}18%{transform:translate(-50%,-90%) scale(1.1);opacity:1}30%{transform:translate(-50%,-100%) scale(1)}80%{opacity:1}100%{transform:translate(-50%,-190%);opacity:0}}
.toy-box{margin-top:12px;padding-top:12px;border-top:1px dashed var(--owen-line)}.toy-heading{display:flex;justify-content:space-between;align-items:baseline;gap:6px;font-size:12px;font-weight:650;margin-bottom:8px}.toy-heading .micro-label{text-align:right}
.toy-row{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;margin:6px 0}.toy-row .player-dot{width:9px;height:9px;box-shadow:none}.toy-shelf{display:flex;flex-wrap:wrap;gap:2px;min-height:20px;align-items:center}
.toy{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font:13px/1 "Arial Unicode MS","Segoe UI Symbol",Georgia,serif}.toy.p1{background:#faf3d8;color:#3e4235;border:1px solid #e2d2a4}.toy.p2{background:#31584f;color:#f4f1df;border:1px solid #5d7c6d}
.toy.arrive{animation:pop .6s cubic-bezier(.3,1.8,.5,1) both}.toy-empty{font-size:10px;color:#a5ab9c;font-style:italic}.toy-next{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
@media(prefers-reduced-motion:reduce){.sprite.burst,.sprite.burst-word,.sprite.ghost{display:none}}
/* Owen's unicorn: the usual knight glyph, plus a horn in the glyph's own color. */
.unicorn{position:relative;display:inline-block;line-height:1}.unicorn::after{content:"";position:absolute;left:.2em;top:-.02em;width:.1em;height:.34em;background:currentColor;clip-path:polygon(50% 0,100% 100%,0 100%);transform:rotate(-28deg);transform-origin:50% 100%}
.square.stack-partner::before{content:"+";position:absolute;top:4%;right:6%;z-index:3;width:clamp(14px,1.6vw,20px);height:clamp(14px,1.6vw,20px);display:grid;place-items:center;border-radius:50%;background:#b27b29;color:#fff;font:700 clamp(11px,1.2vw,15px)/1 ui-sans-serif,sans-serif;box-shadow:0 0 0 2px #f7edc4;pointer-events:none}.square.stack-partner .tile{outline:2px dashed #b27b29;outline-offset:2px}
/* Owen's stacks: the bottom piece is the big glyph, riders are chips, the power is a badge. */
.stack-parts{position:absolute;right:-9%;top:-6%;display:flex;flex-direction:column;gap:1px;z-index:2}.part{width:clamp(14px,1.9vw,22px);height:clamp(14px,1.9vw,22px);border-radius:50%;display:grid;place-items:center;font-size:clamp(10px,1.35vw,15px);line-height:1;box-shadow:0 1px 2px #1f352f60}.part.p1{background:#faf3d8;color:#3e4235;border:1px solid #d3bd85}.part.p2{background:#31584f;color:#f4f1df;border:1px solid #5d7c6d}.part.unicorn{display:grid}
.power-badge{position:absolute;left:-10%;top:-8%;z-index:2;font-size:clamp(12px,1.6vw,19px);line-height:1;background:#fffaf0;border:1.5px solid var(--owen-line);border-radius:50%;width:clamp(18px,2.3vw,27px);height:clamp(18px,2.3vw,27px);display:grid;place-items:center;box-shadow:0 1px 3px #1f352f50}
.tile.tall{box-shadow:0 4px 0 -1px #f2e7c5,0 6px 0 -1px #af9e6c,0 9px 0 -1px #f2e7c5,0 11px 0 -1px #af9e6c,0 13px 5px #283d3550;transform:translateY(-6px)}.tile.tall.p2{box-shadow:0 4px 0 -1px #5b7d6d,0 6px 0 -1px #254a40,0 9px 0 -1px #5b7d6d,0 11px 0 -1px #254a40,0 13px 5px #283d3550}
.tile.power-up::after{content:"";position:absolute;inset:-14%;border-radius:50%;background:conic-gradient(#ff6b6b,#ffd93d,#6bcB77,#4d96ff,#c77dff,#ff6b6b);-webkit-mask:radial-gradient(circle,transparent 58%,#000 60%);mask:radial-gradient(circle,transparent 58%,#000 60%);z-index:-1;animation:power-ring 1.6s .35s ease-out both}
@keyframes power-ring{0%{transform:scale(.5) rotate(0);opacity:0}25%{transform:scale(1.15) rotate(120deg);opacity:1}100%{transform:scale(1.5) rotate(360deg);opacity:0}}
.tile.power-up .power-badge{animation:badge-pop .9s .45s cubic-bezier(.3,1.9,.5,1) both}@keyframes badge-pop{0%{transform:scale(0) rotate(-90deg)}60%{transform:scale(2) rotate(15deg)}100%{transform:none}}
.tile.stack-hop{animation:stack-hop .5s cubic-bezier(.3,.6,.4,1)}@keyframes stack-hop{0%{transform:var(--from,translate(calc(var(--dx)*119%),calc(var(--dy)*119%)))}50%{transform:translate(calc(var(--dx)*55%),calc(var(--dy)*55% - 60%)) scale(1.15)}80%{transform:translateY(-3px) scale(1.25,.75)}100%{transform:translateY(-3px)}}
.square.power-preview::before{content:"✨";position:absolute;inset:0;display:grid;place-items:center;font-size:clamp(12px,2vw,22px);z-index:3;pointer-events:none;animation:preview-twinkle 1.3s ease-in-out 2 both;background:radial-gradient(circle,#ffe9a880 0,transparent 65%)}
@keyframes preview-twinkle{0%,100%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1)}}
.laser{height:6px;border-radius:6px;transform-origin:0 50%;background:linear-gradient(90deg,#fff,#ff5a5a 30%,#ffd23f);box-shadow:0 0 12px #ff5a5a,0 0 4px #fff;animation:laser .5s ease-out both}@keyframes laser{0%{opacity:0;clip-path:inset(0 100% 0 0)}30%{opacity:1;clip-path:inset(0 0 0 0)}100%{opacity:0}}
.toast-eyebrow{font-size:10px;font-weight:800;letter-spacing:1.4px;color:var(--owen)}.owen-toast-card.kind-power.new{border-color:#ffd93d;box-shadow:0 0 0 4px #ff9f6b,0 0 0 8px #c77dff,0 18px 50px #18392e50}.owen-toast-card.kind-power .toast-detail{max-width:300px;line-height:1.5}
.owen-button.wide{width:100%;justify-content:flex-start}
@media(prefers-reduced-motion:reduce){.square.power-preview::before{opacity:1}}
/* Action keeper: one token per action this turn, under the board. */
.action-keeper{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:14px;padding:12px 16px;border-radius:16px;background:#fff;border:2px solid var(--line);box-shadow:0 4px 0 var(--line)}.action-keeper.p1{border-color:#e6cc98;box-shadow:0 4px 0 #e6cc98}.action-keeper.p2{border-color:#a9c4b9;box-shadow:0 4px 0 #a9c4b9}
.keeper-title{font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}.keeper-tokens{display:flex;gap:7px}.keeper-count{font-size:15px}
.keeper-token{width:26px;height:26px;border-radius:50%;border:3px solid #0002;box-shadow:inset 0 -4px 0 #0002,0 2px 0 #0002;transition:transform .25s,opacity .25s}.keeper-token.p1{background:#e3b45c}.keeper-token.p2{background:#4d8a79}
.keeper-token.spent{background:transparent;border-style:dashed;box-shadow:none;opacity:.55;transform:scale(.8)}.keeper-token.fresh{animation:token-pop .45s cubic-bezier(.3,1.6,.5,1)}
.keeper-extras{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}.keeper-chip{font-size:11px;font-weight:600;padding:5px 9px;border-radius:20px;background:#fff6e4;border:1px solid var(--owen-line);color:#8a3d1c}.keeper-chip.warm{background:#eaf4ff;border-color:#a9c8e8;color:#25507a}
@keyframes token-pop{from{transform:scale(0) rotate(-90deg)}to{transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.keeper-token.fresh{animation:none}}
@media(max-width:680px){.action-keeper{padding:10px 12px;gap:8px 10px}.keeper-token{width:22px;height:22px}.keeper-extras{margin-left:0}}
/* Power slots: three windows spin and stop on the power the engine picked. */
.owen-toast.show .owen-toast-card.kind-power{animation-duration:4.6s;min-width:260px}
.slot-machine{display:flex;gap:8px;padding:10px;margin:4px 0 2px;border-radius:16px;background:linear-gradient(#ff6b6b,#e0475b);box-shadow:inset 0 -5px 0 #0003,0 6px 0 #a3283a}
.reel-wild .slot-machine{background:linear-gradient(#5ec8f2,#3a9bd6);box-shadow:inset 0 -5px 0 #0003,0 6px 0 #22679a}
.reel-super .slot-machine,.reel-jackpot .slot-machine{background:linear-gradient(#ffd23f,#f5a623);box-shadow:inset 0 -5px 0 #0003,0 6px 0 #b9741a,0 0 0 4px #c77dff}
.slot-window{width:58px;height:52px;overflow:hidden;border-radius:10px;background:#fff;box-shadow:inset 0 6px 8px -4px #0005,inset 0 -6px 8px -4px #0005}
.slot-strip{display:flex;flex-direction:column}.slot-icon{height:52px;display:grid;place-items:center;font-size:32px;line-height:1}
.slot-window.landed{animation:slot-land .35s cubic-bezier(.3,1.6,.5,1)}
.slot-result{opacity:0;animation:slot-result .4s 1.7s cubic-bezier(.3,1.5,.5,1) both}
.reel-jackpot .slot-window.landed,.reel-super .slot-window.landed{background:#fff7d1}
@keyframes slot-land{50%{transform:scale(1.12)}}
@keyframes slot-result{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.slot-result{animation:none;opacity:1}.slot-window.landed{animation:none}}
.power-reels{margin-top:12px;padding-top:12px;border-top:1px dashed var(--owen-line)}
.reel-row{display:flex;align-items:center;gap:8px;padding:6px 0}.reel-label{font-size:11px;font-weight:600;min-width:78px;color:var(--muted)}
.reel-icons{display:flex;flex-wrap:wrap;gap:4px}.reel-icon{width:28px;height:28px;display:grid;place-items:center;font-size:17px;border-radius:8px;background:#fff;border:1px solid var(--line);cursor:help}
.reel-super .reel-icon{background:#fff7d1;border-color:#f0c55a}.reel-wild .reel-icon{background:#eaf6fd;border-color:#a9d5ee}
.reel-icon.landed{border:2px solid var(--owen);transform:scale(1.15);animation:slot-land .5s 1.8s both}
/* Toy box theme: a playroom wall, a wooden board, and painted blocks. Mystery
   blocks are solid team color; a flipped block has a cream face. */
:root{--round:ui-rounded,"SF Pro Rounded","Nunito","Avenir Next","Segoe UI",system-ui,sans-serif;--chunky:"Arial Rounded MT Bold",ui-rounded,"SF Pro Rounded","Nunito","Trebuchet MS",sans-serif;--ink:#33261a;--muted:#6b5b4a;--line:#ecd9ae;--paper:#fffdf5;--green:#23803d;--gold:#e0a100;--danger:#d6322e;--owen:#b8470f;--owen-line:#ffd24d;--owen-paper:#fffbea;--p1:#e8413c;--p1-dark:#a92320;--p1-soft:#ffd9d3;--p2:#2f7fe0;--p2-dark:#1b4f9e;--p2-soft:#d3e6ff;--pick:#7b3fe4;font-family:var(--round);color:var(--ink);background:#fff1c4}
body{position:relative;background-color:#fff1c4;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cg fill-opacity='.16'%3E%3Ccircle cx='32' cy='38' r='13' fill='%23e8413c'/%3E%3Crect x='128' y='22' width='24' height='24' rx='6' fill='%232f7fe0' transform='rotate(14 140 34)'/%3E%3Cpath d='M78 104l16 28H62z' fill='%2323a04a'/%3E%3Cpath d='M180 112h8v12h12v8h-12v12h-8v-12h-12v-8h12z' fill='%23f5a300'/%3E%3Ccircle cx='128' cy='182' r='10' fill='%237b3fe4'/%3E%3Crect x='24' y='170' width='22' height='22' rx='6' fill='%23f5a300' transform='rotate(-12 35 181)'/%3E%3C/g%3E%3C/svg%3E")}
body::before{content:"";position:absolute;inset:0 0 auto;height:34px;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='34'%3E%3Cpath d='M0 3h200' stroke='%2333261a' stroke-opacity='.35' stroke-width='2'/%3E%3Cpath d='M4 3h32L20 30z' fill='%23e8413c'/%3E%3Cpath d='M44 3h32L60 30z' fill='%23ffc933'/%3E%3Cpath d='M84 3h32l-16 27z' fill='%232f7fe0'/%3E%3Cpath d='M124 3h32l-16 27z' fill='%2340b25a'/%3E%3Cpath d='M164 3h32l-16 27z' fill='%237b3fe4'/%3E%3C/svg%3E") repeat-x}
.site-header{border-bottom:0;padding-top:30px}
.brand,h1,h2,.panel h2,.selection-title,.info-dialog h2,.handoff-dialog h2,.owen-toast-card strong,.handoff-mark,.toast-stamp,.burst-word,.page-footer span:first-child{font-family:var(--chunky);font-weight:normal;letter-spacing:0;font-style:normal}
.brand small{font-family:var(--round);font-weight:800;color:var(--p1-dark)}
.brand-mark{background:var(--p1);color:#fff8e6;border-radius:12px;box-shadow:inset 0 3px 0 #fff5,inset 0 -5px 0 #0003,0 4px 0 var(--p1-dark);transform:rotate(-6deg)}
h1{color:var(--p1);text-shadow:0 3px 0 #ffc933}.intro>p{font-size:13px;font-weight:600;color:var(--muted)}.eyebrow{color:var(--p2-dark);font-weight:800}.version{color:var(--muted);font-weight:700}
.micro-label{font-size:8px;font-weight:700}.muted{font-size:13px;line-height:1.6}
/* Buttons press down like real toys. */
.button{gap:8px;border:2px solid var(--line);border-radius:14px;background:#fff;font-weight:800;box-shadow:0 4px 0 var(--line);text-decoration:none;transition:transform .08s,box-shadow .08s,background .15s}.button:hover{background:#fff7dc;transform:translateY(-1px);box-shadow:0 5px 0 var(--line)}.button:active{transform:translateY(3px);box-shadow:0 1px 0 var(--line)}
.button.subtle{background:#fff;border-color:var(--line)}
.button.primary,#confirm-restart{background:var(--p1);border-color:var(--p1-dark);color:#fff;box-shadow:0 4px 0 var(--p1-dark)}.button.primary:hover,#confirm-restart:hover{background:#d6322e;box-shadow:0 5px 0 var(--p1-dark)}.button.primary:active,#confirm-restart:active{box-shadow:0 1px 0 var(--p1-dark)}
#new-game{background:#ffc933;border-color:#c98f00;box-shadow:0 4px 0 #c98f00}#new-game:hover{background:#ffd65c;box-shadow:0 5px 0 #c98f00}#new-game:active{box-shadow:0 1px 0 #c98f00}
.mode-button{border:2px solid var(--line);border-radius:12px;background:#fff;font-weight:700;font-size:12px}.mode-button.active{background:#ffc933;border-color:#c98f00}
.owen-button{border:2px solid #e8b400;background:#fff3c2;box-shadow:0 3px 0 #e8b400}.owen-button:hover{background:#ffe88f;box-shadow:0 4px 0 #e8b400}.owen-button:active{box-shadow:0 1px 0 #e8b400}
.settings-button{font-weight:700;padding:10px 14px;background:#fff;border:2px solid var(--line);border-radius:14px;box-shadow:0 3px 0 var(--line)}.privacy-toggle{font-weight:600}
.turn-player strong{font-family:var(--chunky);font-weight:normal;font-size:16px}.turn-player span:not(.player-dot){font-size:11px;font-weight:600}.turn-count{border:2px solid var(--line);background:#fff;border-radius:20px;font-weight:800}
.player-dot.p1{background:var(--p1)}.player-dot.p2{background:var(--p2)}.player-dot{box-shadow:0 0 0 4px #fff}
.status{background:#fff;border:2px solid var(--line);border-radius:14px;font-weight:600}.status.check{background:#ffe0d6;border-color:#f3a48f;color:#8f2415}.status.finished{background:var(--green);border-color:var(--green);color:#fff}
/* The wooden board on a green play mat. */
.board-frame{background:repeating-linear-gradient(92deg,#0000 0 22px,#8a542414 22px 25px,#0000 25px 61px),#dca45f;border:0;border-radius:24px;box-shadow:inset 0 3px 0 #fff4,0 8px 0 #a4672c,0 18px 26px #6b421a33}
.board{border-radius:12px;box-shadow:0 0 0 4px #8a5424}.rank-labels,.file-labels{color:#47290e;font-weight:800;font-size:11px}
.square{background:#fff3cf}.square.dark{background:#7fc97d}.square:hover{box-shadow:inset 0 0 0 3px #33261a40}.square:focus-visible{outline-color:var(--pick)}
.square.last-action{background:#ffe89a}.square.dark.last-action{background:#c3dc6c}.square.selected,.square.dark.selected{background:#ffd23f;box-shadow:inset 0 0 0 4px #e08a00}
/* Painted blocks. */
.tile,.tile.power-up{border-radius:26%}.tile{transition:transform .12s;box-shadow:inset 0 2px 0 #fff8,0 4px 0 var(--edge),0 7px 5px #33261a40}.square:hover .tile:not(.stack){transform:translateY(-2px)}
.tile.p1{--edge:var(--p1-dark);background:#fff8e6;color:var(--p1-dark);border:4px solid var(--p1);box-shadow:inset 0 2px 0 #fff8,0 4px 0 var(--edge),0 7px 5px #33261a40}
.tile.p2{--edge:var(--p2-dark);background:#fff8e6;color:var(--p2-dark);border:4px solid var(--p2);box-shadow:inset 0 2px 0 #fff8,0 4px 0 var(--edge),0 7px 5px #33261a40}
.tile.hidden.p1{background:var(--p1);border-color:var(--p1);color:#fff}.tile.hidden.p2{background:var(--p2);border-color:var(--p2);color:#fff}
.tile.hidden{box-shadow:inset 0 3px 0 #fff5,inset 0 -5px 0 #0002,0 4px 0 var(--edge),0 7px 5px #33261a40}.tile.hidden::before{inset:9%;border:2px dashed #fff;border-radius:20%;opacity:.45}.tile.hidden .seal{font-family:var(--chunky);font-size:.72em;opacity:1;text-shadow:0 2px 0 var(--edge)}
.square.revealable .tile,.square.revealable .tile.p2{outline:3px dashed var(--ink);outline-offset:2px}
.tile.stack{box-shadow:0 4px 0 -1px var(--edge),0 7px 0 -1px #fff8e6,0 10px 0 -1px var(--edge),0 12px 5px #33261a50;transform:translateY(-4px)}.tile.stack.p2{box-shadow:0 4px 0 -1px var(--edge),0 7px 0 -1px #fff8e6,0 10px 0 -1px var(--edge),0 12px 5px #33261a50}
.tile.tall,.tile.tall.p2{box-shadow:0 4px 0 -1px var(--edge),0 7px 0 -1px #fff8e6,0 10px 0 -1px var(--edge),0 13px 0 -1px #fff8e6,0 16px 0 -1px var(--edge),0 18px 5px #33261a50;transform:translateY(-8px)}
.stack-count{background:#ffc933;color:var(--ink);border:2px solid #fff;font-weight:800}.power-badge{background:#ffc933;border:2px solid #fff}
.part.p1,.toy.p1,.ghost.p1{background:#fff8e6;color:var(--p1-dark);border:2px solid var(--p1)}.part.p2,.toy.p2,.ghost.p2{background:#fff8e6;color:var(--p2-dark);border:2px solid var(--p2)}.part,.toy,.ghost{border-radius:30%}
.square.legal::after{background:#7b3fe4b0;box-shadow:0 0 0 2px #fff}.square.legal:has(.tile)::after{border:4px solid var(--pick);border-radius:26%;box-shadow:0 0 0 2px #fff}.legend-dot{background:var(--pick)}.legend-ring{border-color:var(--ink)}
.square.stack-partner::before{background:var(--pick);box-shadow:0 0 0 2px #fff}.square.stack-partner .tile{outline:3px dashed var(--pick)}.square.in-check .tile{outline:4px solid #ff2d2d}
.board-footer{font-weight:600;font-size:11px}
/* Panels are chunky cards, one color each. */
.panel{background:var(--paper);border:3px solid var(--line);border-radius:20px;box-shadow:0 5px 0 var(--line)}.action-panel{border-color:#ffb3a8;box-shadow:0 5px 0 #ffb3a8}.armies-panel{border-color:#a9cdf5;box-shadow:0 5px 0 #a9cdf5}.history-panel{border-color:#a8dcae;box-shadow:0 5px 0 #a8dcae}.owen-panel{border-color:#ffd24d;box-shadow:0 5px 0 #ffd24d;background:var(--owen-paper)}
.goal-card{border:3px dashed #ffc933;border-radius:16px}.goal-track{height:12px;background:#f3e6c4}.goal-fill.p1{background:var(--p1)}.goal-fill.p2{background:var(--p2)}.owen-mood{border-radius:12px;font-weight:600;background:#fff3c2;color:#5c4a1c}.selection-coordinate{background:#fff3c2;font-weight:700}
.history li{border-bottom:2px dotted var(--line)}.page-footer{border-top:0;color:var(--muted);font-weight:600}.page-footer span:first-child{color:var(--p1-dark)}
.action-keeper{background:#fff;border-width:3px;border-radius:20px;margin-top:20px}.action-keeper.p1{border-color:var(--p1);box-shadow:0 5px 0 var(--p1-dark)}.action-keeper.p2{border-color:var(--p2);box-shadow:0 5px 0 var(--p2-dark)}
.keeper-title{font-weight:800;color:var(--ink)}.keeper-count{font-family:var(--chunky);font-weight:normal;font-size:17px}.keeper-token{width:30px;height:30px;border-radius:28%;border:0;box-shadow:inset 0 2px 0 #fff6,inset 0 -5px 0 #0003,0 3px 0 var(--edge)}.keeper-token.p1{--edge:var(--p1-dark);background:var(--p1)}.keeper-token.p2{--edge:var(--p2-dark);background:var(--p2)}.keeper-token.spent{background:transparent;border:3px dashed #b9a98f;box-shadow:none;opacity:1}
.keeper-chip{font-weight:700;background:#fff3c2;border:2px solid #ffc933;color:#5c4a1c}.keeper-chip.warm{background:var(--p2-soft);border-color:var(--p2);color:var(--p2-dark)}
@media(max-width:680px){.keeper-token{width:24px;height:24px}.site-header{padding-top:26px}}
/* Dialogs and announcements. */
dialog{border:4px solid #ffc933;border-radius:26px}dialog::backdrop{background:#4a2c7ab0;backdrop-filter:blur(6px)}.field select{border:2px solid var(--line);border-radius:12px;font-weight:600}.check-field{font-weight:600}.check-field input,.privacy-toggle input{accent-color:var(--p1)}.rule-block{border-top:2px dotted var(--line)}
.handoff-mark{border-radius:26%;border:0;background:var(--p1);color:#fff8e6;box-shadow:inset 0 3px 0 #fff5,inset 0 -6px 0 #0003,0 5px 0 var(--p1-dark)}.handoff-mark.p2{background:var(--p2);color:#fff8e6;box-shadow:inset 0 3px 0 #fff5,inset 0 -6px 0 #0003,0 5px 0 var(--p2-dark)}
.owen-toast.show .owen-toast-card{border:4px solid #ffc933;border-radius:24px;box-shadow:0 6px 0 #e0a100,0 18px 40px #33261a50}.toast-stamp{color:var(--p1);border-color:var(--p1)}.reward{border-color:#ffc933;background:#fff3c2;color:#5c4a1c}.burst{background:var(--p1)}
/* Keep the board and the action keeper on screen together on a laptop. */
.intro{margin:10px 0 16px}h1{text-shadow:0 2px 0 #fff}
@media(min-width:901px){.play-area{grid-template-columns:min(630px,max(440px,calc(100dvh - 410px))) minmax(292px,1fr);gap:28px}}
