:root{--tile:clamp(52px,8.4vmin,94px);--gap:1px;--step:calc(var(--tile) + var(--gap));--pad:clamp(26px,3.4vmin,44px);--board:calc(7*var(--tile) + 6*var(--gap));--spare-nudge:calc(var(--pad)*.55);--navy:#1c2f74;--navy-dark:#101c48;--navy-light:#2a4093;--gold:#f2c93f;--gold-deep:#b8901c;--parchment:#f2e8ce;--parchment-deep:#e2d4ae;--ink:#3b2412;--table:#241a14;--slide-ms:.42s;--serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{font-family:var(--serif);color:#f4ecd8;background:radial-gradient(ellipse at 50% 0%,#3a2a20 0%,var(--table)55%,#180f0b 100%);-webkit-font-smoothing:antialiased;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background-attachment:fixed}button{font:inherit;cursor:pointer}.hidden,[hidden]{display:none!important}.screen{display:grid;place-items:safe center center;min-height:100vh;padding:28px 20px}.scroll-panel{background:linear-gradient(#f6efd9,var(--parchment-deep));color:var(--ink);text-align:center;border:3px solid #c9a94e;border-radius:14px;width:100%;max-width:620px;padding:40px 44px 34px;box-shadow:inset 0 2px #fffbe9,0 26px 60px #0000008c}.crest{width:96px;height:96px;margin:0 auto 6px}.title{letter-spacing:.12em;text-transform:uppercase;color:var(--navy);text-shadow:0 1px #fffbe9;margin:0 0 4px;font-size:clamp(2.1rem,5vw,3rem)}.subtitle{color:#6b4a24;letter-spacing:.04em;margin:0 0 20px;font-style:italic}.blurb{text-align:left;color:#4a3116;max-width:46ch;margin:0 auto 22px;line-height:1.62}.blurb ol{margin:10px 0 0;padding-left:20px}.blurb li{margin-bottom:6px}.short-rules{color:#6b4a24;margin:12px 0 0;font-style:italic}.rules{border-top:1px solid #6b4a2438;margin-top:14px;padding-top:10px}.rules>summary{cursor:pointer;list-style:none;letter-spacing:.16em;text-transform:uppercase;color:#8a6a2a;display:flex;align-items: center;gap:7px;font-size:.76rem}.rules>summary::-webkit-details-marker{display:none}.rules>summary:before{content:"";border-top:4.5px solid #0000;border-bottom:4.5px solid #0000;border-left:6px solid;width:0;height:0;transition:transform .18s}.rules[open]>summary:before{transform:rotate(90deg)}@media (hover:hover){.rules>summary:hover{color:var(--navy)}}.rules ol{font-size:.92rem}.pawn-choice{display:flex;justify-content:center;gap:12px;margin:4px 0 24px}.pawn-choice button{background:#f9f3e0;border:3px solid #b99a48;border-radius:12px;width:74px;height:74px;padding:5px;transition:transform .16s,box-shadow .16s,border-color .16s}.pawn-choice button:hover{transform:translateY(-3px)}.pawn-choice button[aria-pressed=true]{border-color:var(--navy);background:#fff;box-shadow:0 0 0 3px #1c2f7440}.pawn-choice svg{display:block;width:100%;height:100%}.btn{letter-spacing:.09em;text-transform:uppercase;background:linear-gradient(var(--navy-light),var(--navy));color:#ffe9a8;border:none;border:2px solid var(--navy-dark);box-shadow:0 4px 0 var(--navy-dark),0 10px 24px #00000059;border-radius:10px;padding:13px 30px;transition:transform .12s,box-shadow .12s,filter .12s;font-size:1.05rem}.btn:hover{filter:brightness(1.12)}.btn:active{box-shadow:0 1px 0 var(--navy-dark);transform:translateY(3px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.gold{background:linear-gradient(#f7d962,var(--gold-deep));color:#3d2c05;border-color:#8a6a12;box-shadow:0 4px #8a6a12,0 10px 24px #00000059}.btn.ghost{color:#6b4a24;box-shadow:none;background:0 0;border:2px solid #b99a48;padding:9px 18px;font-size:.82rem}.btn.ghost:active{transform:none}.start-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items: center;gap:12px}.note{color:#7a5a30;margin:20px 0 0;font-size:.82rem;font-style:italic}#game{display:grid;place-items:safe center center;min-height:100vh;padding:24px}.layout{display:flex;justify-content:center;align-items: flex-start;gap:clamp(18px,3vw,42px)}.board-area{padding:calc(var(--tile)*.5)}.frame{position:relative;width:calc(var(--board) + var(--pad)*2);height:calc(var(--board) + var(--pad)*2);padding:var(--pad);background:linear-gradient(160deg,var(--navy-light)0%,var(--navy)45%,var(--navy-dark)100%);border-radius:8px;box-shadow:0 0 0 3px #0c1638,inset 0 2px #ffffff29,0 30px 70px #0009}.frame:before,.frame:after,.corner-tris:before,.corner-tris:after{content:"";position:absolute;width:calc(var(--pad)*.72);height:calc(var(--pad)*.72);background:var(--gold);opacity:.92}.frame:before{clip-path:polygon(0 0,100% 0,0 100%);top:4px;left:4px}.frame:after{clip-path:polygon(0 0,100% 0,100% 100%);top:4px;right:4px}.corner-tris:before{clip-path:polygon(0 0,0 100%,100% 100%);bottom:4px;left:4px}.corner-tris:after{clip-path:polygon(100% 0,100% 100%,0 100%);bottom:4px;right:4px}.board{position:relative;width:var(--board);height:var(--board);overflow:visible;background:#6b4419;border-radius:3px;box-shadow:0 0 0 2px #0c1638,inset 0 0 22px #00000080}.cell{position:absolute;width:var(--tile);height:var(--tile);transform:translate3d(calc(var(--c)*var(--step) + var(--nx,0px)),calc(var(--r)*var(--step) + var(--ny,0px)),0);transition:transform var(--slide-ms)cubic-bezier(.32,.72,.28,1);overflow:hidden;border-radius:2px;top:0;left:0;box-shadow:0 0 0 1px #4a2e1438}.cell .tile-art{display:block;width:100%;height:100%}.cell.is-spare{z-index:6;box-shadow:0 0 0 2px var(--gold),0 10px 22px #0000008c;animation:spare-breathe 2.6s ease-in-out infinite;border-radius:4px}@keyframes spare-breathe{0%,to{box-shadow:0 0 0 2px var(--gold),0 0 12px #f2c93f59,0 10px 22px #0000008c}50%{box-shadow:0 0 0 2px #fff0b8,0 0 24px #f2c93fb3,0 10px 22px #0000008c}}.board.no-anim .cell,.board.no-anim .pawn{transition:none!important}.cell.reachable{cursor:pointer}.cell.reachable:after{content:"";position:absolute;pointer-events:none;animation:fade-in .24s ease both;z-index:2;background:radial-gradient(circle,#7ec4ff57,#4696e629 72%);inset:0;box-shadow:inset 0 0 0 3px #78c3ffd9}@media (hover:hover){.cell.reachable:hover:after{background:radial-gradient(circle,#aadcff8c,#5aaaf04d 74%);box-shadow:inset 0 0 0 4px #b9e2ff,0 0 16px #78c3ffb3}}.cell.reachable:active:after{background:radial-gradient(circle,#bee6ffb3,#5aaaf066 74%);box-shadow:inset 0 0 0 4px #d3ecff}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.cell.is-target:before{content:"";position:absolute;pointer-events:none;animation:target-pulse 1.5s ease-in-out infinite;z-index:3;border:3px solid #f2c93ff2;border-radius:50%;inset:6%;box-shadow:0 0 14px #f2c93fcc,inset 0 0 26px #f2c93f66}@keyframes target-pulse{0%,to{transform:scale(1);opacity:.95}50%{transform:scale(1.08);opacity:.6}}.cell.previewed{filter:brightness(1.16)saturate(1.06)}.cell.previewed:before{content:"";position:absolute;pointer-events:none;inset:0;box-shadow:inset 0 0 0 2px #ffeca08c}.pawn{position:absolute;width:var(--tile);height:var(--tile);transform:translate3d(calc(var(--c)*var(--step) + var(--ox,0%)),calc(var(--r)*var(--step) + var(--oy,0%)),0);pointer-events:none;z-index:8;filter:drop-shadow(0 3px 4px #00000080);transition:transform .14s linear;top:0;left:0}.pawn.settling{transition:transform var(--slide-ms)cubic-bezier(.32,.72,.28,1)}.pawn-art{display:block;width:78%;height:78%;margin:11%;transition:width .2s,height .2s,margin .2s}.pawn.crowded .pawn-art{width:56%;height:56%;margin:22%}.pawn.in-turn:before{content:"";position:absolute;animation:target-pulse 1.6s ease-in-out infinite;border:2px solid #fff5c8e6;border-radius:50%;inset:12%;box-shadow:0 0 12px #ffeca0cc}.pawn.crowded.in-turn:before{inset:24%}.pawn.away{opacity:.45;filter:grayscale(.7)drop-shadow(0 3px 4px #00000080)}.arrow{position:absolute;width:calc(var(--pad)*.78);height:calc(var(--pad)*.62);opacity:.9;z-index:4;background:0 0;border:none;padding:0;transition:transform .14s,opacity .14s,filter .14s}.arrow svg{display:block;width:100%;height:100%}.arrow.top{left:calc(var(--pad) + var(--i)*var(--step) + var(--tile)/2);top:calc(var(--pad)*.22);translate:-50%}.arrow.bottom{left:calc(var(--pad) + var(--i)*var(--step) + var(--tile)/2);bottom:calc(var(--pad)*.22);translate:-50%;rotate:180deg}.arrow.left{top:calc(var(--pad) + var(--i)*var(--step) + var(--tile)/2);left:calc(var(--pad)*.22);translate:0 -50%;rotate:270deg}.arrow.right{top:calc(var(--pad) + var(--i)*var(--step) + var(--tile)/2);right:calc(var(--pad)*.22);translate:0 -50%;rotate:90deg}.arrow:after{content:"";position:absolute;inset:-15px -13px -2px}@media (hover:hover){.arrow:not(:disabled):hover{filter:drop-shadow(0 0 8px #f2c93ff2);scale:1.22}}.arrow:not(:disabled):active{filter:drop-shadow(0 0 10px #ffeb96);scale:1.3}.arrow:disabled{opacity:.16;cursor:not-allowed}.arrow.blocked{opacity:.14}.panel{display:flex;flex-direction:column;gap:14px;width:clamp(250px,25vw,320px)}.panel-head{text-align:center}.panel-head h1{letter-spacing:.16em;text-transform:uppercase;color:var(--gold);text-shadow:0 2px 8px #000000b3;margin:0;font-size:1.6rem}.panel-head p{letter-spacing:.2em;text-transform:uppercase;color:#b39a6a;margin:2px 0 0;font-size:.76rem}.panel-body,.panel-text{display:flex;flex-direction:column;gap:12px;min-width:0}.deck{position:relative;display:flex;min-height:calc(var(--tile)*2.3);justify-content:center;align-items: flex-start}.deck .card{filter:drop-shadow(0 14px 26px #0009);width:clamp(120px,13vw,156px)}.deck .card svg{display:block;width:100%;height:auto}.deck .card.stack-back{position:absolute;filter:drop-shadow(0 8px 14px #00000080)brightness(.86);z-index:0;top:8px;left:50%;translate:-50%;rotate:-6deg}.deck .card.current{position:relative;z-index:1;animation:card-in .5s cubic-bezier(.2,1.3,.4,1)both}@keyframes card-in{0%{transform:translateY(-14px)rotate(-7deg)scale(.9);opacity:0}to{transform:none;opacity:1}}.card-caption{text-align:center;color:#f0dfae;margin:0;font-size:.95rem}.card-caption small{display:block;letter-spacing:.16em;text-transform:uppercase;color:#a58c5d;margin-bottom:3px;font-size:.72rem}.status{color:#efe1bb;background:#0c16389e;border:1px solid #f2c93f47;border-radius:8px;min-height:62px;padding:11px 14px;font-size:.9rem;line-height:1.45}.status strong{color:var(--gold)}.progress{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.pip{background:#0000004d;border:2px solid #f2c93f66;border-radius:50%;width:22px;height:22px;padding:2px;transition:all .3s}.pip svg{display:block;opacity:.25;filter:grayscale(1);width:100%;height:100%}.pip.done{border-color:var(--gold);background:#f2c93f2e;box-shadow:0 0 10px #f2c93f80}.pip.done svg{opacity:1;filter:none}.pip.current{animation:target-pulse 1.5s ease-in-out infinite;border-color:#fff3c4}.controls{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.controls .btn{padding:10px 16px;font-size:.78rem}.turn-meta{text-align:center;letter-spacing:.14em;text-transform:uppercase;color:#8f7a52;font-size:.74rem}.scrim{position:fixed;z-index:50;overflow-y:auto;display:grid;backdrop-filter:blur(3px);animation:fade-in .28s ease both;background:#0a0604d1;place-items: center;padding:24px;inset:0}.finale{overflow-y:auto;background:linear-gradient(#f8f2df,var(--parchment-deep));color:var(--ink);text-align:center;border:3px solid #c9a94e;border-radius:18px;width:min(720px,100%);max-height:92vh;padding:38px 40px 32px;box-shadow:0 30px 80px #000000bf}.finale h2{letter-spacing:.08em;text-transform:uppercase;color:var(--navy);margin:0 0 6px;font-size:clamp(1.8rem,4.4vw,2.6rem)}.finale .lede{color:#4a3116;max-width:44ch;margin:0 auto 24px;line-height:1.6}.confetti{position:fixed;pointer-events:none;overflow:hidden;z-index:60;inset:0}.confetti i{position:absolute;animation:fall linear forwards;border-radius:2px;width:9px;height:14px;top:-14px}@keyframes fall{to{transform:translateY(108vh)rotate(760deg)}}.field{display:block;text-align:left;max-width:320px;margin:0 auto 18px}.field>span{display:block;letter-spacing:.16em;text-transform:uppercase;color:#8a6a2a;margin-bottom:5px;font-size:.74rem}.field em{letter-spacing:.04em;text-transform:none;color:#6b4a24;font-style:normal}.field input[type=text]{font:inherit;color:var(--ink);background:#fffdf5;border:2px solid #b99a48;border-radius:8px;width:100%;padding:11px 13px;font-size:1rem}.field input:focus-visible{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #1c2f7429}.range-field input[type=range]{accent-color:var(--navy);width:100%}.or{display:flex;letter-spacing:.2em;text-transform:uppercase;color:#9a8657;align-items: center;gap:12px;max-width:320px;margin:22px auto 14px;font-size:.72rem}.or:before,.or:after{content:"";background:#6b4a2447;flex:1;height:1px}.join-row{display:flex;justify-content:center;align-items:stretch;gap:10px;max-width:320px;margin:0 auto}.code-input{font:inherit;letter-spacing:.42em;text-align:center;text-transform:uppercase;text-indent:.42em;color:var(--navy);background:#fffdf5;border:2px solid #b99a48;border-radius:8px;flex:1;min-width:0;padding:8px 10px;font-size:1.5rem}.code-input:focus-visible{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #1c2f7429}.join-row .btn{padding:10px 20px;font-size:.86rem}.err{color:#8c241c;text-align:left;background:#c8382e1f;border:1px solid #c8382e;border-radius:8px;max-width:340px;margin:16px auto 0;padding:9px 12px;font-size:.9rem}.code-badge{letter-spacing:.28em;text-indent:.28em;color:var(--navy);user-select:all;background:#fffdf5;border:3px dashed #c9a94e;border-radius:12px;max-width:340px;margin:0 auto 14px;padding:10px 6px 12px;font-size:clamp(2.4rem,12vw,3.6rem)}.pawn-choice button:disabled{opacity:.4;cursor:not-allowed;transform:none}.roster{list-style:none;display:flex;flex-direction:column;gap:6px;margin:0;padding:0}.seat{display:flex;color:#efe1bb;background:#0c163880;border:1px solid #f2c93f33;border-radius:9px;align-items: center;gap:9px;padding:6px 10px;transition:border-color .2s,background .2s}.seat-pawn{flex:0 0 26px;height:26px}.seat-pawn svg{display:block;width:100%;height:100%;margin:0}.seat-who{flex:1;min-width:0;line-height:1.2}.seat-who strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.94rem;font-weight:400}.seat-who em{letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-size:.66rem;font-style:normal}.seat-who small{letter-spacing:.06em;color:#a58c5d;font-size:.72rem}.seat.turn{border-color:var(--gold);background:#f2c93f24;box-shadow:0 0 12px #f2c93f40}.seat.away{opacity:.55}.seat.away .seat-pawn{filter:grayscale(.8)}.seat-pips{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:2px;max-width:40%}.seat-pips svg{display:block;width:17px;height:17px}.lobby-roster{text-align:left;margin-bottom:18px}.lobby-roster .seat{color:var(--ink);background:#ffffff8c;border-color:#d3bd85}.lobby-roster .seat-who small{color:#7a5a30;text-transform:uppercase;letter-spacing:.12em;font-size:.66rem}.lobby-roster .seat-who em{color:var(--navy)}.standings{text-align:left;margin:0 0 22px}.standings .seat{color:var(--ink);background:#ffffff8c;border-color:#d3bd85}.standings .seat-who small{color:#7a5a30}.standings .seat.won{border-color:var(--navy);box-shadow:0 0 0 2px #1c2f7438}.rotate-row{display:flex;justify-content:center;gap:8px}.rotate-row .btn{letter-spacing:.06em;flex:1 1 0;padding:10px 8px;font-size:.74rem}.turn-btn span{font-size:1.15em;line-height:1}.rotate-row.live .btn{border-color:var(--gold-deep);box-shadow:0 4px 0 var(--navy-dark),0 0 14px #f2c93f4d}.offline,.toast{position:fixed;z-index:70;letter-spacing:.04em;text-align:center;border-radius:999px;max-width:calc(100vw - 24px);padding:10px 18px;font-size:.84rem;left:50%;translate:-50%;box-shadow:0 10px 26px #00000080}.offline{top:calc(10px + env(safe-area-inset-top));color:#ffd9d3;background:#7d2b22;border:1px solid #c8382e}.toast{bottom:calc(16px + env(safe-area-inset-bottom));border:1px solid var(--gold-deep);color:#f6e9c4;animation:fade-in .2s ease both;background:#101c48f2}@media (min-width:1001px) and (max-height:900px){.panel-body{flex-direction:row;align-items: center;gap:12px}.deck{flex:0 0 96px;min-height:0}.deck .card{width:96px}.deck .card.stack-back{top:5px}.card-caption{text-align:left}.panel-head h1{font-size:1.3rem}.status{min-height:0}}@media (max-width:1000px){.layout{flex-direction:column;align-items: center}.panel{width:min(460px,100%)}.deck{min-height:0}}@media (max-width:720px),(max-width:940px) and (max-height:480px){:root{--tile:max(34px,min(calc((100vw - 84px)/7),calc((100dvh - 420px)/7),66px));--pad:26px;--spare-nudge:calc(-1*(var(--tile) - var(--pad) + 3px))}#game{padding:6px 4px calc(12px + env(safe-area-inset-bottom));align-items:safe center;min-height:100dvh}.layout{gap:8px;width:100%}.board-area{padding:8px}.frame{border-radius:6px}.cell.is-spare{z-index:7;scale:1.04}.panel-head{display:none}.panel{gap:9px;width:100%;max-width:430px}.panel-body{flex-direction:row;align-items: center;gap:11px}.deck{flex:0 0 78px;min-height:0}.deck .card{filter:drop-shadow(0 6px 12px #0000008c);width:78px}.deck .card.stack-back{display:none}.panel-text{flex:1;gap:7px}.card-caption{text-align:left;font-size:1rem}.status{min-height:0;padding:8px 10px;font-size:.84rem;line-height:1.4}.progress{gap:5px}.pip{width:26px;height:26px}.controls{gap:6px}.controls .btn{letter-spacing:.05em;box-shadow:0 3px 0 var(--navy-dark);flex:1 1 0;min-width:0;padding:13px 6px;font-size:.68rem}.controls .btn.gold{box-shadow:0 3px #8a6a12}.turn-meta{font-size:.66rem}.screen{padding:14px 10px calc(14px + env(safe-area-inset-bottom));place-items:safe center center;min-height:100dvh}.scroll-panel{border-radius:12px;padding:18px 16px}.crest{width:52px;height:52px;margin-bottom:2px}.title{font-size:1.85rem}.subtitle{margin-bottom:12px;font-size:.9rem}.blurb{margin-bottom:14px;font-size:.85rem;line-height:1.45}.blurb ol{margin-top:8px;padding-left:17px}.blurb li{margin-bottom:3px}.pawn-choice{gap:9px;margin-bottom:16px}.pawn-choice button{width:54px;height:54px}.start-actions .btn{padding:12px 22px;font-size:.95rem}.note{margin-top:14px;font-size:.76rem}.field{margin-bottom:12px}.or{margin:14px auto 10px}.code-badge{letter-spacing:.2em;text-indent:.2em;margin-bottom:10px;padding:6px 4px 8px}.roster{gap:5px}.seat{padding:5px 8px}.seat-pawn{flex-basis:22px;height:22px}#game-roster{flex-flow:wrap}#game-roster .seat{flex:44%;min-width:0}#game-roster .seat-pips{display:none}.rotate-row .btn{padding:11px 6px;font-size:.68rem}.scrim{place-items: center;padding:12px}.finale{max-height:94dvh;padding:26px 18px 22px}}@media (max-width:940px) and (max-height:480px){:root{--tile:max(30px,min(calc((100vw - 460px)/7),calc((100dvh - 92px)/7)));--pad:22px}#game{align-items:safe center}.layout{flex-direction:row;align-items: center}.panel{max-width:340px}.panel-body{flex-direction:row}}
