@layer reset,base,layout,components,motion,responsive;
@layer reset {
  *,*::before,*::after{box-sizing:border-box}body,h1,h2,h3,p{margin:0}button,input,select{font:inherit}button{cursor:pointer}img{max-width:100%;display:block}button:disabled{cursor:default}button,input,select{min-height:44px}a{color:inherit}button{color:inherit}fieldset{margin:0;padding:0;border:0}ol{padding-left:1.4rem}svg{display:block}input,select,button{max-width:100%}
}
@layer base {
  body.reading{overflow:hidden}
  button{min-width:44px}
  :root{font-family:"Segoe UI",Arial,sans-serif;color:#f8efd9;background:#183d4c;font-synthesis:none;--sea:#183d4c;--deep:#112d38;--paper:#f4ebd5;--ink:#243932;--brass:#e8c987;--green:#235b42;--muted:#c6d7d6;--line:#60818a;--blue:#63cde9;--pink:#ff82a1;--orange:#ffd16a;--beige:#e9dcc4}
  body{min-width:320px;min-height:100dvh}h1,h2,h3,.wordmark,.opening-tagline{font-family:Georgia,"Times New Roman",serif}h1{font-weight:400}h2{font-size:1.12rem;font-weight:400}h3{font-size:1.05rem}p{line-height:1.5}button{border:1px solid #799493;background:#1d4350;padding:.55rem .8rem;border-radius:4px;transition:background .15s,color .15s,transform .15s}button:hover:not(:disabled){background:#2f5b63}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.52}button.primary{background:var(--green);border-color:#82ae8a;color:#fff9e8;font-weight:600;box-shadow:inset 0 1px #ffffff26}button.primary:hover:not(:disabled){background:#34714d}input,select{border:1px solid #7d8e80;border-radius:3px;background:#fff9e9;color:var(--ink);padding:.5rem .6rem;min-width:0}input[type=range]{padding:0;accent-color:var(--brass);background:transparent;cursor:pointer}label{display:grid;gap:.35rem}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #ffe2a2;outline-offset:3px}dialog button:focus-visible,.entry-sheet button:focus-visible,.lobby-sheet button:focus-visible,dialog input:focus-visible{outline-color:#194a4f}.skip-link{position:fixed;top:-100px;left:10px;z-index:100;background:var(--paper);color:var(--ink);padding:14px}.skip-link:focus{top:10px}.primary:disabled{opacity:.5}.busy{cursor:progress}.busy .entry-actions button,.busy .practice-row button{pointer-events:none;opacity:.6}small{font-size:.78rem}
}
@layer layout {
  #app{min-height:100dvh;display:flex;flex-direction:column}#main{flex:1;min-height:0;display:flex;flex-direction:column}.topbar{min-height:64px;display:flex;align-items:center;justify-content:space-between;padding:5px 20px;background:#112e39;border-bottom:1px solid #668180;z-index:4;gap:12px}.wordmark{border:0;background:none;padding:0 9px;letter-spacing:.11em;font-size:1.5rem;line-height:1.15;text-align:left;color:#f2dcad}.wordmark span{display:block;font-family:"Segoe UI",sans-serif;font-size:.6rem;letter-spacing:.08em;color:#d3e0db;margin-top:5px}.top-tools{display:flex;align-items:center;gap:7px}.top-tools>button{background:transparent;border-color:transparent;padding:.45rem .6rem}.languages{display:flex;gap:3px;margin-left:6px}.flag{padding:6px;border-color:transparent;background:none;width:46px;height:44px}.flag svg{width:32px;height:23px}.flag[aria-pressed=true]{border-color:var(--brass)}.connection{font-size:.74rem;color:#d3e3dc;min-width:68px;text-align:right}.connection.disconnected{color:#ffdda0}.audio-strip{display:flex;min-height:52px;align-items:center;justify-content:center;gap:22px;padding:4px 16px;background:#112e39;border-top:1px solid #668180;position:relative;z-index:5;font-size:.78rem}.audio-source{display:flex;align-items:center;gap:9px;min-width:0}.audio-source select{height:44px;min-height:44px;width:162px;background:#163b48;color:#fff2d5;border:1px solid #799493;padding:.3rem}.audio-source a{font-size:.67rem;max-width:84px;line-height:1.2;color:#d0ded8;text-underline-offset:3px}.audio-channel{display:flex;align-items:center;gap:6px}.audio-channel button{background:none;border:0;min-width:56px;padding:.3rem 2px}.audio-channel input{width:96px;height:44px}.audio-channel output{width:32px;font-variant-numeric:tabular-nums;font-size:.7rem}.audio-state{position:absolute;bottom:calc(100% + 5px);left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;background:#102c38;color:#fff2d5;border:1px solid #94a6a1;max-width:min(95vw,520px);padding:4px 8px;border-radius:4px}.audio-state:has(output:empty){display:none}.audio-state button{min-height:36px;padding:.25rem .5rem;font-size:.75rem}.opening{flex:1;position:relative;isolation:isolate;min-height:720px;overflow:hidden;background:#2a5763}.opening-land{position:absolute;inset:0;z-index:-2;overflow:hidden;background:#346d7d}.opening-land>img{position:absolute;width:86%;max-width:none;right:-10%;top:-70%;transform:rotate(-17deg);filter:brightness(.88) saturate(1.15);opacity:.95}.opening-land::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#12333ef2 1%,#133944c4 31%,#173d4d10 73%),linear-gradient(0deg,#102d39d9,transparent 30%)}.opening-mist{position:absolute;right:0;top:12%;width:50%;height:30%;background:linear-gradient(120deg,transparent,#d6e2d71f,transparent);transform:rotate(-20deg);filter:blur(16px)}.opening-copy{padding:clamp(38px,6vh,90px) 6vw 80px;width:min(710px,55%)}.title-rule{height:12px;width:230px;border-top:1px solid #e9d39a;border-bottom:1px solid #e9d39a;position:relative}.title-rule::after{content:"";position:absolute;inset:-4px auto auto 40%;width:16px;height:16px;transform:rotate(45deg);border:1px solid #ead69c;background:#214852}.opening h1{font-size:clamp(3.5rem,6.7vw,8rem);letter-spacing:.08em;margin:15px 0 3px;text-shadow:0 5px 5px #092a3866;line-height:1.05}.opening-tagline{font-size:clamp(1.25rem,2vw,2rem);color:#f3deb0}.opening-intro{font-size:1rem;max-width:400px;margin:16px 0 26px;color:#e5eeDF}.entry-sheet{max-width:420px;color:var(--ink);padding:24px 26px 18px;background:var(--paper);border:1px solid #e2cfa0;border-radius:6px;box-shadow:0 15px 40px #061d324d,inset 0 0 0 4px #fff8e7}.entry-label{font-family:Georgia,serif;font-size:1.25rem;margin-bottom:18px}.entry-sheet label{font-size:.82rem;font-weight:600}.entry-sheet input{width:100%;margin-bottom:12px}.entry-actions{display:flex;gap:8px}.entry-actions .primary{flex:1}.entry-sheet button:not(.primary){background:#e6ddc5;border-color:#829084;color:var(--ink)}.entry-sheet button:not(.primary):hover{background:#d8d1b8}.entry-note{font-size:.72rem;color:#4d6258;margin-top:15px}.practice-row{display:flex;gap:9px;padding-top:14px;border-top:1px solid #b8bca7;margin-top:16px;align-items:center}.practice-row button{font-size:.82rem;flex:1;padding:.45rem}.practice-row select{font-size:.75rem;padding:.35rem}.join-row{display:flex;align-items:start;gap:7px}.join-row input{min-width:0;letter-spacing:.12em;text-transform:uppercase}.join-row button{flex:none}#join-fields{margin-top:16px}.opening-links{display:flex;margin-top:20px;gap:9px}.opening-links button{background:#173b48b3;border-color:#7d9c9d;font-size:.8rem}.opening-caption{position:absolute;right:28px;bottom:24px;display:grid;gap:6px;text-align:right;font-size:.75rem;color:#f4e9ce;text-shadow:0 2px #173d4c}.lobby{flex:1;min-height:680px;display:grid;grid-template-columns:minmax(340px,1fr) minmax(450px,600px);max-width:1350px;width:100%;margin:auto}.lobby-land{position:relative;min-height:650px;overflow:hidden;background:#224e5c}.lobby-land>img{height:100%;max-height:950px;width:100%;object-fit:cover;object-position:50% 45%;opacity:.88;filter:saturate(1.1)}.lobby-land::after{content:"";position:absolute;inset:0;box-shadow:inset -30px 0 45px #183d4c99;pointer-events:none}.lobby-island-label{position:absolute;bottom:25px;left:28px;font:2.6rem Georgia,serif;text-shadow:0 2px 10px #132e38}.lobby-sheet{align-self:center;margin:28px 30px 28px 0;background:var(--paper);color:var(--ink);padding:28px 32px;border:1px solid #e2cfa0;border-radius:6px;box-shadow:0 20px 45px #071d2d55;position:relative}.lobby-sheet h1{font-size:2rem}.table-code{display:flex;align-items:center;gap:14px;margin:12px 0 18px;font-size:.8rem}.table-code strong{font-size:1.2rem;letter-spacing:.14em}.lobby-sheet button:not(.primary){background:#e8dfc7;border-color:#8c9a89;color:#263d32}.lobby-sheet button:not(.primary):hover{background:#d7d1b8}.lobby-sheet select{font-size:.8rem;width:100%}.lobby-seat{display:flex;align-items:center;gap:12px;border-bottom:1px solid #c1c4af;min-height:66px}.lobby-seat img{width:44px;height:46px;object-fit:contain}.lobby-seat>div{flex:1;display:grid;gap:2px}.lobby-seat span:not(.ready-mark){font-size:.76rem}.lobby-seat strong{font-size:.95rem}.ready-mark{font-size:1.5rem;color:#2c6647}.lobby-seat button{background:none!important;border:none;padding:0;width:44px}.add-bot{margin-top:10px;width:100%;border-style:dashed!important}.lobby-sheet fieldset{margin-top:20px}.lobby-sheet legend{font:1.15rem Georgia,serif;margin-bottom:8px}.map-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.map-options button{text-align:left;display:grid;gap:5px;padding:12px}.map-options button strong{font:1.2rem Georgia,serif}.map-options button span{font-size:.76rem;line-height:1.35}.map-options button[aria-pressed=true]{border:2px solid var(--green);background:#dbe3c8;padding:11px}.setup-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;margin-top:14px}.setup-row label{font-size:.7rem}#lobby-actions{margin-top:24px;display:flex;gap:8px}#lobby-actions .start-game{flex:1}.bot-explanation{font-size:.76rem;color:#4c6257;margin-top:18px;line-height:1.5}.edition-note{font-size:.72rem;color:#506359;margin-top:12px}.game{flex:1;display:flex;flex-direction:column;min-height:600px}.player-rail{display:flex;justify-content:center;gap:8px;padding:8px 18px;background:#183a46;min-height:74px}.player-summary{display:flex;align-items:center;text-align:left;gap:10px;padding:6px 13px;border:1px solid transparent;min-width:180px;max-width:300px;flex:1;background:none}.player-summary.active{border-color:var(--brass);background:#294f55}.player-summary>img{width:38px;height:41px;object-fit:contain;filter:drop-shadow(0 2px 1px #0005)}.player-identity{display:grid;gap:2px;min-width:0;flex:1}.player-identity strong{font-size:.85rem;overflow-wrap:anywhere}.player-identity small{font-size:.64rem;color:#d1e0dc;min-height:.8rem}.player-score{font:1.9rem Georgia,serif;color:#f7e3b2;font-variant-numeric:tabular-nums;min-width:38px;text-align:center}.player-stats{display:grid;gap:4px;font-size:.64rem;color:#d1e0dc}.action-strip{min-height:69px;display:flex;align-items:center;gap:22px;padding:8px 24px;background:#eae1c8;color:#253d32;border-top:1px solid #b0b69d;border-bottom:2px solid #bba774;z-index:3}.turn-identity{display:grid;min-width:145px;max-width:230px}.turn-identity span{font-size:.7rem;color:#516356}.turn-identity strong{font:1.2rem Georgia,serif;overflow-wrap:anywhere}.action-strip>p{font-size:.86rem;flex:1}.action-buttons{display:flex;gap:8px;flex:none;min-width:170px;justify-content:end}.action-buttons>button:not(.primary){background:#e3dbc2;border-color:#748c79;color:#294332}.action-reserve{font:italic 1rem Georgia,serif;color:#506654}.phone-utilities{display:none}.table-grid{flex:1;min-height:440px;display:grid;grid-template-columns:220px minmax(300px,1fr) 250px;gap:0}.clan-shelf{padding:20px 16px;background:linear-gradient(90deg,#102f3a,#183d4c);display:flex;flex-direction:column;gap:20px;border-right:1px solid #597983}.mission-shelf{padding:20px 16px 16px;background:linear-gradient(90deg,#183d4c,#102f3a);border-left:1px solid #597983;display:flex;flex-direction:column;gap:24px;min-height:0}.map-stage{position:relative;min-height:400px;overflow:hidden;touch-action:none;background:#2c6375;isolation:isolate}.map-stage::before{content:"";position:absolute;inset:0;box-shadow:inset 0 0 60px #102f3a6b;pointer-events:none;z-index:1}.map-world{position:absolute;top:0;left:0;width:1000px;height:1493px;transform-origin:0 0;will-change:transform}.board-art{position:absolute;width:1000px;height:1493px;max-width:none;user-select:none;-webkit-user-drag:none;pointer-events:none}.board-overlay{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.map-controls{position:absolute;top:10px;left:10px;display:flex;gap:5px;z-index:2}.map-controls button{background:#173d4ceF;border-color:#c4d2c8;box-shadow:0 2px 7px #102d394d;min-width:44px;height:44px;padding:.4rem .65rem;font-size:.76rem}.map-controls button[data-camera=in],.map-controls button[data-camera=out]{font-size:1.4rem}.map-help{position:absolute;bottom:12px;left:12px;color:#e1ebe6;background:#183d4ce8;padding:6px 10px;border-radius:3px;font-size:.67rem;pointer-events:none;z-index:2}.airship-button{position:absolute;bottom:44px;left:12px;z-index:2;background:#193e4be8;font-size:.7rem;padding:.3rem .6rem;min-height:36px}.airship{position:absolute;left:0;top:32%;width:150px;pointer-events:none;z-index:3;filter:drop-shadow(12px 25px 6px #102b3e55)}.panning{cursor:grabbing}.shelf-heading{display:flex;justify-content:space-between;gap:8px;align-items:start}.shelf-heading h2{font-size:1rem;line-height:1.25}.shelf-heading>span{font-size:.67rem;text-align:right;color:#d5e2db;max-width:68px}.hand-tiles{display:flex;justify-content:center;gap:5px;margin:16px 0 8px}.hand-item{display:grid;justify-items:center;min-width:0}.hand-tile{width:172px;height:178px;padding:7px;background:none;border:1px solid transparent;touch-action:none;position:relative}.hand-tile img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(3px 10px 5px #071b2966);transition:transform .18s}.hand-tile:hover img{transform:translateY(-4px) rotate(-2deg)}.hand-tile.selected{border-color:#e8c987;border-radius:6px}.hand-tile.selected img{transform:none}.hand-tiles.multiple{flex-wrap:wrap}.multiple .hand-tile{width:84px;height:88px;padding:2px}.tile-inspect{padding:.3rem .5rem;min-height:36px;min-width:56px;font-size:.66rem;border:0;background:none;text-decoration:underline;text-underline-offset:3px}.hand-caption{text-align:center;font-size:.86rem;color:#f4dfb2}.private-label{display:block;text-align:center;font-size:.63rem;color:#bdcec9;margin-top:7px}.placement-preview{border-top:1px solid #789389;border-bottom:1px solid #789389;padding:16px 0;min-height:166px;font-size:.79rem}.placement-preview h3{font-family:Georgia,serif;display:grid;gap:3px;font-weight:400;color:#f4dfb2}.placement-preview h3 small{font-family:"Segoe UI",sans-serif;font-size:.66rem;color:#bdcec9}.placement-preview p{margin-top:10px;line-height:1.5}.placement-preview button{border:0;padding:0;background:none;font-size:.72rem;text-decoration:underline}.clan-links{display:grid;gap:4px}.clan-links button{border:0;border-bottom:1px solid #4a6b71;background:none;text-align:left;font-size:.76rem;padding:.5rem 0}.secret-missions{display:grid;grid-template-columns:1fr 1fr;gap:12px 10px;margin-top:14px}.mission-card{min-width:0}.mission-art{padding:0;border:0;background:transparent;display:block;width:100%;min-height:44px;transition:transform .18s}.mission-art>img{width:100%;height:auto;object-fit:contain;filter:drop-shadow(0 5px 3px #071b2966);border-radius:4px}.mission-art:hover{transform:translateY(-3px)}.mission-copy{font-size:.67rem;line-height:1.4;margin-top:8px}.mission-copy p{line-height:1.4}.mission-copy>span{display:block;margin-top:5px;color:#ebd098;font-size:.64rem}.mission-copy button{font-size:.72rem;margin-top:8px;width:100%}.secret-missions .mission-copy>p{display:none}.mission-empty{margin:28px 0 12px;color:#c2d7cd;text-align:center}.mission-empty svg{width:60px;height:75px;margin:auto auto 12px;color:#d1bc85}.mission-empty h3{font-size:.95rem;color:#f1dbaa;margin-bottom:7px;font-weight:400}.mission-empty p{font-size:.77rem}.public-shortcut{border-top:1px solid #789389;padding-top:16px;margin-top:18px}.public-shortcut h3{font-size:1rem;font-weight:400}.public-miniatures{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:12px 0}.public-miniatures button{position:relative;background:none;border:0;padding:0}.public-miniatures img{width:100%;border-radius:3px}.public-miniatures span{position:absolute;inset:0;display:grid;place-items:center;background:#173c4999;font-size:1.8rem;color:#f3dfaa}.wide{width:100%;font-size:.75rem}.history-heading{display:flex;justify-content:space-between;align-items:center}.history-heading h2{font-size:1rem}.history-heading button{font-size:.68rem;min-height:36px;padding:.2rem .4rem;background:none;border:0;text-decoration:underline}#recent-history{margin-top:auto;border-top:1px solid #789389;padding-top:12px}#recent-history ol{list-style:none;padding:0;display:grid;gap:9px;margin:8px 0 0;font-size:.69rem;color:#d2e1d7}#recent-history li{line-height:1.45}#notice{position:fixed;left:50%;bottom:70px;transform:translate(-50%,12px);max-width:min(90vw,600px);width:max-content;padding:10px 18px;background:#f4ebd5;color:#243d33;border:1px solid #c5af7d;box-shadow:0 6px 20px #071b2966;border-radius:5px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:50;font-size:.86rem}#notice.show{opacity:1;transform:translate(-50%,0)}#notice.error{border:2px solid #a44c38;color:#713326}dialog{border:1px solid #e4ca8e;border-radius:8px;background:var(--paper);color:var(--ink);padding:0;width:min(900px,calc(100vw - 32px));max-height:calc(100dvh - 40px);box-shadow:0 25px 80px #071b2980;overflow:auto}dialog::backdrop{background:#0a2432b8;backdrop-filter:blur(3px)}.reader-top{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:14px 20px;border-bottom:1px solid #b4bba3;position:sticky;top:0;background:var(--paper);z-index:3}.reader-top h2{font-size:1.4rem}.reader-top button{width:44px;padding:0;flex:none;background:none;border-color:#8b9b86;color:#294231;font-size:1.7rem}#reader-body{padding:25px 30px 30px}#reader-body>p{margin-bottom:15px}#reader-body button:not(.primary){background:#e6ddc4;color:#294231;border-color:#7b8f78}#reader-body a{color:#215b4b}#reader-body h3{margin:12px 0}#reader-body .edition-note{margin-top:0}.inspect-tile{max-height:280px;width:240px;object-fit:contain;margin:8px auto 20px;filter:drop-shadow(0 10px 5px #6e68444a)}.inspect-tower{width:200px;margin:20px auto}.inspection-rows{border-top:1px solid #b4bba3;margin:16px 0}.inspection-rows>p{display:flex;justify-content:space-between;gap:25px;padding:9px 4px;border-bottom:1px solid #c6c8b1;line-height:1.4}.card-inspection{display:grid;grid-template-columns:minmax(160px,300px) 1fr;gap:30px;align-items:center}.card-inspection>img{width:100%;border-radius:5px;box-shadow:0 8px 16px #655f3c36}.card-inspection h3{font-size:1.35rem;font-weight:400}.card-inspection p{margin:12px 0}.mission-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px 16px;margin:20px 0 30px}.mission-grid .mission-copy{font-size:.75rem}.mission-grid .mission-copy>span{color:#3b5b42;font-weight:600}.mission-card.completed .mission-art{opacity:.78}.reserve-tiles{display:flex;gap:18px;justify-content:center;flex-wrap:wrap}.reserve-tiles>div{width:140px}.reserve-tiles p{text-align:center;font-size:.8rem}.rules-reader{max-width:720px;margin:auto}.rules-reader h3{font:1.35rem Georgia,serif;margin:24px 0 10px!important}.rules-reader p{font-size:.94rem;margin-bottom:13px;line-height:1.6}.rule-tiles{display:flex;gap:25px;justify-content:center;margin:18px 0 22px}.rule-tiles>div{width:120px;text-align:center;font-size:.75rem;display:grid;gap:8px}.rule-tiles>img{width:100px;height:110px;object-fit:contain}.tower-rule{display:flex;gap:22px;align-items:center;margin:12px 0;border-bottom:1px solid #bec3ac;padding-bottom:12px}.tower-rule img{width:92px;height:65px;object-fit:contain;flex:none}.tower-rule p{margin:0}.tutorial-reader{max-width:600px;margin:auto}.tutorial-reader>p{margin:16px 0;line-height:1.7}.tutorial-reader>.primary{display:block;margin:20px auto 0}.clan-emblem{width:90px;height:95px;object-fit:contain;margin:auto}.big-score{display:block;text-align:center;font:3.5rem Georgia,serif;color:#365b46}.score-inspection>p{text-align:center;font-size:.8rem}.full-history{padding:0;list-style:none;display:grid;gap:0}.full-history li{display:flex;gap:18px;border-bottom:1px solid #bbc2ab;padding:10px 0}.full-history small{min-width:66px;color:#52664e}.full-history span{font-size:.88rem}.finale{text-align:center}.finale-crown{width:85px;margin:0 auto 4px}.finale-crown svg{fill:#b68a31;stroke:#745b27;stroke-width:3}.finale>h3{font:2rem Georgia,serif!important;margin:8px 0!important}.final-verdict{font-size:.85rem;min-height:2.4em}.final-scoreboards{display:flex;gap:15px;justify-content:center;margin:25px 0}.final-clan{display:grid;justify-items:center;flex:1;gap:5px;max-width:170px;padding:10px;background:none!important;border:1px solid #b2bca3!important}.final-clan.winning{border:2px solid #426c48!important;background:#e2e4c9!important;padding:9px}.final-clan>img{width:60px;height:64px;object-fit:contain}.final-clan>strong{font-size:.85rem}.final-clan>span{font:2.6rem Georgia,serif;font-variant-numeric:tabular-nums}.final-clan>small{font-size:.67rem;min-height:.8rem}.final-breakdown{display:grid;grid-template-columns:minmax(140px,1.5fr) repeat(var(--players,4),1fr);font-size:.78rem;text-align:right;border-top:1px solid #b4bba3;margin:20px 0}.final-breakdown>span,.final-breakdown>strong{padding:8px 5px;border-bottom:1px solid #c6c8b1}.final-breakdown>span:nth-child(5n + 1){text-align:left}.final-breakdown .unrevealed{color:#9b9d8d}.final-controls{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:22px}.final-controls>p{font-size:.8rem;width:100%}.loading,.load-error{margin:auto;max-width:600px;text-align:center;padding:50px 20px;display:grid;gap:20px}.loading h1,.load-error h1{font:3rem Georgia,serif;letter-spacing:.1em}.loading p{color:#e1dfc8}
}
@layer components {
  dialog.cinematic-reader{width:calc(100vw - 20px);height:calc(100dvh - 20px);max-width:none;max-height:none;background:#123744;color:#fff3d4;overflow:hidden;border-color:#cbb273}
  .cinematic-reader .reader-top{height:56px;background:#12323df2;color:#f8e6bb;border-bottom:1px solid #9d936a}
  .cinematic-reader .reader-top h2{font-size:1rem}
  .cinematic-reader .reader-top button{color:#f2e1b9;border-color:#c4bc94}
  .cinematic-reader #reader-body{padding:0;height:calc(100% - 56px)}
  .island-finale{height:100%;position:relative;overflow:hidden;isolation:isolate;background:#163e4c;display:grid;grid-template-rows:auto 1fr auto auto}
  .finale-landscape{position:absolute;inset:0;z-index:-1;overflow:hidden;background:#2b6574}
  .finale-island-world{position:absolute;top:0;left:0;width:1000px;height:1493px;transform-origin:0 0;transition:transform 1.4s cubic-bezier(.2,.6,.25,1),width 1.4s,height 1.4s}
  .finale-board{width:100%;height:100%;max-width:none;filter:saturate(1.15)}
  .finale-map-overlay{position:absolute;inset:0;width:100%;height:100%}
  .finale-vignette{position:absolute;inset:0;background:linear-gradient(90deg,#092d38a8,transparent 35%,#0c3039dd 80%),linear-gradient(0deg,#082b38ff,transparent 28%,transparent 72%,#092c38bd)}
  .finale-rays{position:absolute;inset:-70%;background:conic-gradient(from 0deg at 50% 50%,transparent 0deg,#ffefae08 12deg,transparent 24deg,#ffefae12 35deg,transparent 46deg,#ffefae08 58deg,transparent 72deg,#ffefae12 83deg,transparent 96deg,#ffefae08 108deg,transparent 120deg,#ffefae12 132deg,transparent 144deg,#ffefae08 155deg,transparent 168deg,#ffefae12 178deg,transparent 192deg,#ffefae08 204deg,transparent 216deg,#ffefae12 228deg,transparent 240deg,#ffefae08 252deg,transparent 264deg,#ffefae12 276deg,transparent 288deg,#ffefae08 300deg,transparent 312deg,#ffefae12 324deg,transparent 336deg,#ffefae08 348deg,transparent 360deg);opacity:.6;pointer-events:none}
  .finale-director{padding:24px 25px 12px;text-align:center;text-shadow:0 3px 10px #082834;pointer-events:none}
  .finale-chapter{font-size:.73rem;letter-spacing:.07em;color:#e8d3a1}
  .finale-title{font:clamp(1.5rem,3vw,2.8rem) Georgia,serif!important;margin:8px 0!important;color:#fff1c7}
  .finale-caption{font:1.4rem Georgia,serif;color:#f1ddb0;min-height:1.7em}
  .finale-feature{display:flex;align-items:center;justify-content:end;padding:0 7vw;min-height:0}
  .land-revelation{width:min(600px,50%);text-align:center}
  .contribution-pieces{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:14px;max-height:220px;overflow:auto;padding:8px}
  .castle-reward{display:grid;justify-items:center;gap:5px;width:110px}
  .castle-reward svg{width:65px;height:76px;fill:var(--clan);stroke:#263f38;stroke-width:2;filter:drop-shadow(0 6px 4px #071b2966)}
  .castle-reward svg path:last-child{fill:#264239}
  .castle-reward strong{font:normal .78rem Georgia,serif;color:#fff0ce;text-shadow:0 2px #123744}
  .castle-reward span{font:1.3rem Georgia,serif;color:#f8df99}
  .unfinished-reward{width:70px;display:grid;justify-items:center;gap:5px}
  .unfinished-reward img{width:65px;height:70px;object-fit:contain;filter:drop-shadow(0 7px 5px #071b2977)}
  .unfinished-reward span{font:1.1rem Georgia,serif;color:#f8df99}
  .contribution-total{font:clamp(4rem,7vw,7rem) Georgia,serif;color:#f8e4a7;text-shadow:0 3px 8px #082834;line-height:1.2;margin:5px 0}
  .land-revelation>p{font-size:.8rem;color:#efe2c2}
  .cinematic-clans{display:flex;justify-content:center;gap:12px;padding:18px 25px 8px;position:relative}
  .cinematic-clan{display:grid;grid-template-columns:50px 1fr auto;gap:2px 12px;text-align:left;align-items:center;min-width:165px;max-width:280px;flex:1;background:#103441f2!important;color:#f9ecd1!important;border:1px solid #8e9b8b!important;padding:12px 16px;transition:border-color .2s,background .2s}
  .cinematic-clan>img{width:48px;height:51px;object-fit:contain;grid-column:1;grid-row:1 / span 2}
  .cinematic-clan>span{font-size:.82rem;grid-column:2;grid-row:1;overflow-wrap:anywhere}
  .cinematic-clan>strong{font:2.6rem Georgia,serif;grid-column:3;grid-row:1 / span 2;font-variant-numeric:tabular-nums;color:#f7e2a8}
  .cinematic-clan>small{grid-column:2;grid-row:2;color:#f7e2a8;font-size:1rem;min-height:1.2rem}
  .cinematic-clan.receiving{border:2px solid var(--clan)!important;padding:11px 15px;background:#1c4d53f2!important}
  .cinematic-clan.winner-clan{border:2px solid #f3db91!important;background:#32583df5!important;padding:11px 15px}
  .cinematic-controls{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;padding:8px 15px 18px}
  .cinematic-controls>button{font-size:.75rem;background:#193e4de8!important;color:#f8e8c1!important;border-color:#a1af9b!important}
  .cinematic-controls>button.primary{background:#2b6546!important;border-color:#a8c796!important}
  .finale-timeline{position:absolute;bottom:0;left:0;right:0;height:3px;background:#536953}
  .finale-timeline i{display:block;height:100%;width:0;background:#efcf8b}
  .mission-revelation{display:flex;gap:28px;align-items:center;width:min(650px,60%);justify-content:center}
  .reveal-card{perspective:1000px;width:clamp(140px,13vw,240px);flex:none;aspect-ratio:650 / 1000}
  .reveal-card-turn{width:100%;height:100%;transform-style:preserve-3d;position:relative;filter:drop-shadow(0 14px 9px #071b2980)}
  .reveal-card-turn img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;backface-visibility:hidden;border-radius:7px}
  .reveal-card-back{transform:rotateY(180deg)}
  .mission-verdict{max-width:280px;color:#fff0cc;text-shadow:0 2px 4px #102b35}
  .mission-verdict>p{font:clamp(1rem,1.8vw,1.6rem) Georgia,serif;line-height:1.4}
  .mission-verdict>strong{display:block;font:clamp(1.5rem,3vw,3.5rem) Georgia,serif;color:#f8e4a7;margin-top:16px}
  .mission-verdict>span{display:block;margin-top:10px;font-size:.78rem;color:#e8e4cb}
  .opening-revelation{width:200px;margin:auto;filter:drop-shadow(0 5px 6px #173d4c)}
  .opening-revelation svg{fill:#e5d3a7;stroke:#f4e7bd;stroke-width:2}
  .winner-revelation{margin:auto;text-align:center;max-width:580px;color:#fff2c8;text-shadow:0 3px 12px #102e38}
  .winner-revelation>strong{font-size:.8rem;letter-spacing:.07em;color:#edce8c}
  .winner-revelation>h4{font:clamp(2rem,4vw,4rem) Georgia,serif;margin:7px 0 10px}
  .winner-revelation>p{font-size:.82rem;max-width:440px;margin:auto}
  .laurel-crest{width:clamp(150px,17vw,250px);aspect-ratio:300/240;position:relative;margin:auto}
  .laurel-crest>svg{width:100%;height:100%;fill:#e3c079;stroke:#a27c3a;stroke-width:2}
  .victory-crown{fill:#edcb7e;stroke:#674e24;stroke-width:3}
  .victory-emblems{position:absolute;left:28%;right:28%;top:53%;display:flex;justify-content:center;gap:4px}
  .victory-emblems img{width:70%;max-width:90px;min-width:0;object-fit:contain;filter:drop-shadow(0 5px 5px #102b3980)}
  .final-cell-light{fill:transparent;stroke:transparent;stroke-width:6;pointer-events:none}
  .final-highlight .final-cell-light{fill:#ffe59055;stroke:#fff1b6}
  .final-castle-five{font:bold 20px Georgia,serif;fill:#183b43;paint-order:stroke;stroke:#fff1c8;stroke-width:2}
  .finale-seeds{position:absolute;inset:0;overflow:hidden;pointer-events:none}
  .finale-seeds i{position:absolute;width:14px;height:22px;background:var(--clan);border:1px solid #fff2c4;border-radius:100% 0 100% 0;left:50%;top:70%;opacity:0}
  .finale-point-transfer{position:absolute;font:bold 2.6rem Georgia,serif;color:#fff0b1;text-shadow:0 3px 6px #102d39;white-space:nowrap;z-index:5}
  .breakdown-table{display:grid;grid-template-columns:minmax(140px,1.5fr) repeat(var(--players),1fr);gap:0;margin-bottom:25px;text-align:right;font-size:.82rem}
  .breakdown-table>span,.breakdown-table>strong{padding:9px 8px;border-bottom:1px solid #b6bfa8}
  .breakdown-table>span:nth-child(n),.breakdown-table>strong:nth-child(n){min-width:0;overflow-wrap:anywhere}
  .revealed-mission-list{display:flex;gap:15px;overflow:auto;margin:10px 0 25px;padding-bottom:10px}
  .revealed-mission-list article{width:140px;flex:none;display:grid;gap:8px;align-content:start;font-size:.72rem;line-height:1.45}
  .revealed-mission-list img{width:100%;height:210px;object-fit:contain}
  .revealed-mission-list strong{font-size:.85rem;color:#315e42}
  @media(max-width:949px){.finale-director{padding:16px 14px 4px}.finale-feature{padding:0 20px}.land-revelation{width:60%}.mission-revelation{width:75%;gap:18px}.cinematic-clan{min-width:130px;grid-template-columns:35px 1fr auto;gap:2px 6px;padding:9px}.cinematic-clan>img{width:34px;height:37px}.cinematic-clan>strong{font-size:2rem}.cinematic-clan>span{font-size:.7rem}.cinematic-clan.receiving,.cinematic-clan.winner-clan{padding:8px}.contribution-pieces{max-height:170px;gap:8px}.castle-reward{width:80px}.castle-reward svg{width:48px;height:55px}.castle-reward strong{font-size:.65rem}.winner-revelation{max-width:450px}.finale-caption{font-size:1.15rem}.cinematic-controls{gap:5px;padding-bottom:14px}.cinematic-controls>button{font-size:.68rem}.cinematic-clans{padding-top:12px;gap:8px}.laurel-crest{width:170px}}
  @media(max-width:620px){dialog.cinematic-reader{width:100vw;height:100dvh;margin:0;border:0;border-radius:0}.cinematic-reader .reader-top{height:50px;padding:5px 12px}.cinematic-reader .reader-top h2{font-size:.8rem}.cinematic-reader #reader-body{height:calc(100% - 50px);padding:0}.finale-director{padding:18px 15px 4px}.finale-title{font-size:1.6rem!important;line-height:1.15}.finale-chapter{font-size:.62rem}.finale-caption{font-size:1.1rem}.finale-feature{padding:6px 12px;justify-content:center}.land-revelation{width:100%}.contribution-total{font-size:4.8rem}.contribution-pieces{max-height:150px}.castle-reward{width:65px;gap:3px}.castle-reward svg{width:45px;height:53px}.castle-reward strong{font-size:.59rem}.castle-reward span{font-size:1rem}.unfinished-reward{width:50px}.unfinished-reward img{width:48px;height:52px}.land-revelation>p{font-size:.7rem}.mission-revelation{width:100%;gap:14px}.reveal-card{width:42%;max-width:180px}.mission-verdict{max-width:170px}.mission-verdict>p{font-size:.95rem}.mission-verdict>strong{font-size:2.3rem;margin-top:10px}.mission-verdict>span{font-size:.66rem}.cinematic-clans{gap:5px;padding:8px 8px 5px}.cinematic-clan{min-width:0;padding:7px 4px;display:flex;flex-direction:column;gap:3px;justify-content:start;text-align:center}.cinematic-clan>img{width:33px;height:35px}.cinematic-clan>span{font-size:.64rem;line-height:1.2;min-height:1.25em}.cinematic-clan>strong{font-size:1.8rem}.cinematic-clan>small{font-size:.74rem;min-height:.9rem}.cinematic-clan.receiving,.cinematic-clan.winner-clan{padding:6px 3px}.cinematic-controls{padding:5px 7px 13px;gap:5px}.cinematic-controls>button{font-size:.65rem;min-height:40px;padding:5px 9px}.winner-revelation>h4{font-size:2.2rem}.winner-revelation>p{font-size:.72rem;max-width:300px}.winner-revelation>strong{font-size:.7rem}.laurel-crest{width:160px}.opening-revelation{width:135px}.finale-vignette{background:linear-gradient(0deg,#082b38ff,#1037439e 35%,#103743a3 70%,#092c38d9)}.breakdown-table{grid-template-columns:minmax(95px,1.5fr) repeat(var(--players),1fr);font-size:.63rem}.breakdown-table>span,.breakdown-table>strong{padding:8px 4px}.revealed-mission-list article{width:125px;font-size:.68rem}.revealed-mission-list img{height:190px}}
  .map-world{will-change:auto}
  .board-art{width:100%;height:100%;image-rendering:auto}
  .score-marker{cursor:pointer;filter:url(#piece-shadow)}
  .marker-hit{fill:#193e4b55;stroke:#f7e8ba;stroke-width:2;pointer-events:all}
  .score-marker:focus-visible{outline:none}
  .score-marker:focus-visible .marker-hit,.score-marker:hover .marker-hit{stroke:#fff7cd;stroke-width:5;fill:#193e4b99}
  .marker-name{font:bold 17px Georgia,serif;fill:#173d4c;paint-order:stroke;stroke:#fff4d2;stroke-width:2;pointer-events:none}
  .score-lap rect{fill:#f3e9cf;stroke:#193e4b;stroke-width:1.5}
  .score-lap text{font:bold 12px Arial,sans-serif;fill:#193e4b}
  .last-placement{position:absolute;top:10px;right:10px;z-index:2;max-width:245px;font-size:.72rem;min-height:44px;padding:.4rem .65rem;background:#173d4cf5;border-color:#e8c987}
  .recent-placement>.hex-ring{stroke:#fff0ad;stroke-width:5;stroke-dasharray:none}
  @media(max-width:949px){.last-placement{top:auto;bottom:8px;right:8px;font-size:.64rem;max-width:180px}.map-help{display:none}}
  .hex-target{fill:transparent;stroke:transparent;stroke-width:3;pointer-events:all;cursor:pointer}.hex-ring{fill:none;stroke:transparent;stroke-width:3;pointer-events:none}.hex-target:hover,.board-overlay g[role=button]:focus-visible .hex-target{fill:#f8ebba30;stroke:#fff1c0;stroke-width:3}.board-overlay g[role=button]:focus-visible{outline:none}.board-overlay g[role=button]:focus-visible .hex-ring{stroke:#ffe2a2;stroke-width:6;stroke-dasharray:9 5}.legal>.hex-target{fill:#e7f6c818;stroke:#edf7ce;stroke-width:2.7;stroke-dasharray:6 4}.legal:hover>.hex-target{fill:#fff4bd44;stroke:#fff7cd;stroke-dasharray:none}.selected>.hex-target{fill:#e4f1ba3b;stroke:transparent}.selected>.hex-ring{stroke:#ffdf90;stroke-width:5}.placed-tile{filter:url(#piece-shadow);pointer-events:none}.ghost-tile{opacity:.82;filter:url(#piece-shadow);pointer-events:none}.closed-hex{fill:#354b52cc;stroke:#9ab3b7;stroke-width:1.3;stroke-dasharray:3 3}.closed-cross{fill:none;stroke:#a4b5b3;stroke-width:3}.castle-marker{filter:url(#piece-shadow);pointer-events:none}.castle-plinth{fill:#e5d5b0;stroke:#48514d;stroke-width:2}.castle-face{fill:#bea77e;stroke:#665a45;stroke-width:1.5}.castle-door{fill:#394c46}.flagstaff{stroke:#33483f;stroke-width:3}.pennant{fill:var(--clan);stroke:#394c46;stroke-width:1.4;transform-origin:2px -40px}.castle-initial{font:15px Georgia,serif;fill:#fff7dd;text-anchor:middle}.seal-initial{font:8px Arial,sans-serif;text-anchor:middle;fill:#163646;font-weight:700}.cathedral-seal{filter:drop-shadow(0 2px 1px #0005)}.tower-bonus{filter:url(#piece-shadow);pointer-events:none}.scenery{pointer-events:none}.cloud-shadow{fill:#183b4b;opacity:.12;filter:blur(9px)}.seabirds{stroke:#fff7df;fill:none;stroke-width:2.5}.wind-turbine{stroke:#f6edd2;stroke-width:3;fill:#f6edd2;filter:drop-shadow(2px 2px 1px #183d4c55)}.turbine-rotor{transform-origin:0 0}.turn-banner{position:absolute;left:50%;top:23%;transform:translateX(-50%);text-align:center;display:grid;gap:6px;color:#fff4d7;text-shadow:0 2px 8px #102d39;min-width:280px;max-width:80vw;padding:20px 48px;background:linear-gradient(90deg,transparent,#163b4aee 20%,#163b4aee 80%,transparent);border-top:1px solid #e7cb8a;border-bottom:1px solid #e7cb8a}.turn-banner>span{font-size:.75rem;color:#ecd6a8}.turn-banner>strong{font:2.5rem Georgia,serif}.turn-banner.quiet{padding:8px 24px;top:18%}.turn-banner.quiet>strong{font-size:1.4rem}.point-flight{position:absolute;font:bold 2.2rem Georgia,serif;color:#fff2bb;text-shadow:0 2px 3px #092c3b,0 0 4px #092c3b;z-index:2;white-space:nowrap}.score-seed{position:absolute;width:7px;height:10px;border:1px solid #fff1c3;border-radius:80% 0 80% 0;z-index:1}.flying-tile{position:absolute;object-fit:contain;transform-origin:0 0;filter:drop-shadow(8px 16px 6px #071b2980)}.drag-tile{position:fixed;pointer-events:none;object-fit:contain;z-index:100;filter:drop-shadow(7px 14px 6px #071b2980)}#motion-layer{position:fixed;inset:0;pointer-events:none;z-index:20;overflow:hidden}
}
@layer motion {
  @keyframes scene-arrive{from{opacity:0;translate:0 15px}to{opacity:1;translate:0 0}}
  @keyframes card-unseal{0%,20%{transform:rotateY(180deg) rotate(-7deg) translateY(-15px)}75%{transform:rotateY(-8deg) rotate(2deg) translateY(0)}100%{transform:rotateY(0) rotate(0) translateY(0)}}
  @keyframes score-rise{0%,25%{opacity:0;transform:scale(.5) translateY(20px)}65%{opacity:1;transform:scale(1.1) translateY(0)}100%{opacity:1;transform:scale(1) translateY(0)}}
  @keyframes reward-arrive{from{opacity:0;transform:translateY(-24px) rotate(-5deg)}to{opacity:1;transform:translateY(0) rotate(0)}}
  @keyframes laurel-grow{from{opacity:0;transform:scale(.5) rotate(-12deg)}to{opacity:1;transform:scale(1) rotate(0)}}
  @keyframes crown-descend{0%{opacity:0;transform:translateY(-45px)}70%{opacity:1;transform:translateY(4px)}100%{opacity:1;transform:translateY(0)}}
  @keyframes renewal-seed{0%{opacity:0;transform:translate(0,0) rotate(0)}15%{opacity:1}75%{opacity:1}100%{opacity:0;transform:translate(calc((var(--n) - 18)*28px),calc(-150px - var(--n)*10px)) rotate(calc(var(--n)*35deg))}}
  @keyframes sun-reveal{from{opacity:0;transform:rotate(-5deg)}to{opacity:.75;transform:rotate(4deg)}}
  .scene-enter .finale-director{animation:scene-arrive .65s ease-out both}
  .scene-enter .contribution-total{animation:score-rise 1.3s cubic-bezier(.2,.65,.3,1) both}
  .scene-enter .castle-reward,.scene-enter .unfinished-reward{animation:reward-arrive .7s cubic-bezier(.2,.65,.3,1) both}
  .scene-enter .castle-reward:nth-child(2n),.scene-enter .unfinished-reward:nth-child(2n){animation-delay:.15s}
  .scene-enter .castle-reward:nth-child(3n),.scene-enter .unfinished-reward:nth-child(3n){animation-delay:.3s}
  .scene-enter .reveal-card-turn{animation:card-unseal 1.45s cubic-bezier(.2,.6,.25,1) both}
  .scene-enter .mission-verdict{animation:scene-arrive .7s .9s ease-out both}
  .scene-enter .laurel-crest{animation:laurel-grow 1.2s ease-out both}
  .scene-enter .victory-crown{animation:crown-descend 1.1s .6s ease-out both}
  .scene-enter .winner-revelation>h4{animation:score-rise 1.3s .7s ease-out both}
  [data-scene=winner] .finale-rays{animation:sun-reveal 4s ease-out both}
  .finale-seeds i{animation:renewal-seed 3s ease-out both;animation-delay:calc(var(--n)*.065s)}
  .calm .scene-enter *{animation:none!important}
  .calm .finale-island-world{transition:none}
  @keyframes rotor{to{transform:rotate(360deg)}}@keyframes flag{0%,100%{transform:skewY(-2deg) scaleX(1)}50%{transform:skewY(3deg) scaleX(.93)}}@keyframes birds{0%,100%{translate:0 0}50%{translate:18px -9px}}@keyframes cloud{0%,100%{translate:-40px 0}50%{translate:60px 12px}}@keyframes mist{0%,100%{translate:0 0;opacity:.4}50%{translate:-40px 10px;opacity:.8}}@keyframes bloom{0%{fill:#f6e7a700;stroke:#fff1a800;stroke-width:1}30%{fill:#f6e7a735;stroke:#fff1a8ff;stroke-width:5}100%{fill:#f6e7a700;stroke:#fff1a800;stroke-width:1}}@keyframes rise{0%{translate:0 -25px;opacity:0}65%{translate:0 3px;opacity:1}100%{translate:0 0;opacity:1}}@keyframes lighthouse{0%{fill:#ffed9000;stroke:#ffed9000;stroke-width:3}35%{fill:#ffed9060;stroke:#fff1a8ff;stroke-width:12}100%{fill:#ffed9000;stroke:#ffed9000;stroke-width:3}}.turbine-rotor{animation:rotor 9s linear infinite;animation-delay:var(--delay)}.pennant{animation:flag 4.5s ease-in-out infinite}.seabirds{animation:birds 12s ease-in-out infinite;animation-delay:var(--delay)}.cloud-shadow{animation:cloud 55s ease-in-out infinite}.opening-mist{animation:mist 25s ease-in-out infinite}.bloom>.hex-ring{animation:bloom 1050ms ease-out}.castle-rise .castle-marker{animation:rise 650ms cubic-bezier(.2,.65,.3,1)}.cathedral-light>.hex-ring{animation:lighthouse 1100ms ease-out}.reading .scenery *,.reading .pennant,.hidden-page *,.calm .scenery *,.calm .pennant,.calm .opening-mist{animation-play-state:paused!important}.calm .hand-tile:hover img,.calm .mission-art:hover{transform:none}.calm *{scroll-behavior:auto!important}.calm .bloom>.hex-ring,.calm .castle-rise .castle-marker,.calm .cathedral-light>.hex-ring{animation:none}.calm button,.calm #notice,.calm .hand-tile img{transition:none}
  @media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
}
@layer responsive {
  body{min-width:0}
  .audio-strip{position:sticky;bottom:0}
  @media(min-width:950px) and (max-height:850px){
    .opening{min-height:650px}
    .opening-copy{padding-top:35px;padding-bottom:38px}
    .opening h1{font-size:clamp(3.5rem,6.4vw,7rem)}
    .opening-intro{margin-top:10px;margin-bottom:18px}
    .entry-sheet{padding-top:18px;padding-bottom:14px}
  }
  @media(min-width:950px){body[data-phase=game] #app{height:100dvh;min-height:760px}body[data-phase=game] #main{overflow:hidden}.table-grid{height:calc(100dvh - 259px);min-height:475px}.clan-shelf,.mission-shelf{overflow:auto;scrollbar-color:#77938b #173a46;scrollbar-width:thin}.mission-shelf{padding-top:18px}.audio-strip{flex:none}.game{min-height:0}}
  @media(min-width:1600px){.table-grid{grid-template-columns:260px minmax(450px,1fr) 290px}.clan-shelf,.mission-shelf{padding-left:24px;padding-right:24px}.hand-tile{width:195px;height:200px}.secret-missions{gap:18px}.mission-copy{font-size:.74rem}.opening-copy{padding-left:9vw}.opening-land>img{right:-4%;top:-80%}}
  @media(min-width:1900px){.table-grid{grid-template-columns:300px minmax(500px,1fr) 340px}.hand-tile{width:210px;height:215px}.mission-copy{font-size:.77rem}.secret-missions{grid-template-columns:1fr 1fr}.placement-preview{font-size:.86rem;min-height:170px}.clan-links button{font-size:.86rem}.shelf-heading h2{font-size:1.1rem}.player-summary{max-width:340px}.map-controls{left:18px;top:16px}.map-help{left:18px;bottom:18px}}
  @media(max-width:1120px){.table-grid{grid-template-columns:180px minmax(280px,1fr) 205px}.clan-shelf,.mission-shelf{padding:14px 12px}.hand-tile{width:145px;height:150px}.player-summary{min-width:145px;padding:4px 8px;gap:7px}.player-stats{display:none}.action-strip{gap:14px;padding-left:16px;padding-right:16px}.turn-identity{min-width:120px}.turn-identity strong{font-size:1.1rem}.action-strip>p{font-size:.8rem}.audio-strip{gap:12px}.mission-copy{font-size:.65rem}.opening-copy{width:60%;padding-left:5vw}.opening-land>img{width:110%;right:-27%;top:-45%}.lobby-sheet{padding:24px;margin-right:20px}.setup-row{grid-template-columns:1fr 1fr}.setup-row label:first-child{grid-column:1 / -1}}
  @media(max-width:949px){.topbar{padding:5px 12px;min-height:58px}.top-tools{gap:3px}.top-tools>button{font-size:.78rem;padding:.3rem .45rem}.connection{display:none}.wordmark{font-size:1.2rem}.wordmark span{font-size:.53rem}.topbar .fullscreen{display:none}.game{min-height:700px}.table-grid{grid-template-columns:170px 1fr;min-height:520px}.mission-shelf{display:none}.clan-shelf{padding:16px 12px}.clan-links button{font-size:.76rem}.map-stage{height:100%;min-height:520px}.player-rail{padding:6px 10px;gap:5px;min-height:68px;overflow-x:auto;justify-content:start}.player-summary{min-width:150px;flex:1;max-width:none}.player-summary>img{width:30px;height:34px}.player-identity strong{font-size:.78rem}.player-score{font-size:1.6rem;min-width:30px}.player-stats{display:none}.action-strip{flex-wrap:wrap;gap:4px 15px;padding:8px 14px}.action-strip>p{flex-basis:calc(100% - 230px)}.action-buttons{margin-left:auto;min-width:160px}.action-strip .action-reserve{display:none}.phone-utilities{display:flex;gap:7px}.phone-utilities button{background:none;border-color:#718b77;color:#284434;font-size:.7rem;min-height:36px;padding:.35rem .6rem}.opening{min-height:740px}.opening-copy{width:65%;padding-left:6vw}.opening h1{font-size:5rem}.opening-land>img{width:130%;right:-45%;top:-35%}.lobby{grid-template-columns:30% 70%;min-height:700px}.lobby-land{min-height:700px}.lobby-land>img{object-position:50% 50%;width:150%;max-width:none;translate:-30% 0}.lobby-sheet{margin:25px 20px 25px 0;padding:25px}.lobby-island-label{font-size:1.8rem;left:16px;writing-mode:vertical-rl}.lobby-sheet h1{font-size:1.8rem}.audio-source a{display:none}.audio-channel input{width:80px}.audio-strip{gap:14px;padding:4px 8px}.audio-source select{width:150px}.audio-channel output{display:none}.card-inspection{grid-template-columns:minmax(130px,240px) 1fr;gap:22px}.mission-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.map-controls button[data-camera=north],.map-controls button[data-camera=south]{display:none}}
  @media(max-width:620px){.topbar{min-height:57px;gap:2px;padding:4px 8px}.wordmark{font-size:1rem;padding:0 4px;letter-spacing:.07em}.wordmark span{font-size:.44rem;letter-spacing:.03em}.top-tools{gap:0}.top-tools>button{font-size:.68rem;padding:5px 6px}.languages{gap:0;margin-left:0}.flag{width:39px;min-width:39px;padding:5px}.flag svg{width:29px}.opening{min-height:730px}.opening-copy{width:100%;padding:44px 24px 70px}.opening h1{font-size:clamp(3.3rem,14vw,5.2rem);max-width:100%;margin-top:14px}.opening-tagline{font-size:1.5rem}.opening-intro{font-size:.86rem;max-width:330px;margin:14px 0 20px}.opening-land>img{width:170%;right:-82%;top:-2%;opacity:.65;transform:rotate(-10deg)}.opening-land::after{background:linear-gradient(90deg,#143c49e8,#143c4999 65%,#143c493b),linear-gradient(0deg,#122f3de8,transparent 50%)}.entry-sheet{padding:20px;max-width:400px}.entry-label{font-size:1.15rem;margin-bottom:14px}.entry-note{font-size:.66rem}.opening-links{gap:6px;margin-top:14px}.opening-links button{font-size:.72rem;padding:6px 10px}.opening-caption{font-size:.6rem;right:22px;bottom:16px;gap:4px}.title-rule{width:180px}.audio-strip{display:grid;grid-template-columns:1fr 1fr;gap:0 10px;padding:3px 12px;min-height:96px}.audio-source{grid-column:1/-1;justify-content:center;border-bottom:1px solid #456874;gap:15px}.audio-source select{width:180px;height:44px}.audio-source a{display:block;max-width:100px;font-size:.67rem}.audio-channel{gap:4px;justify-content:center;min-width:0}.audio-channel button{font-size:.72rem;min-width:50px}.audio-channel input{width:100%;max-width:90px;min-width:40px}.audio-channel output{display:none}.audio-state{bottom:calc(100% + 3px);font-size:.72rem;gap:5px;padding:3px 5px}.audio-state output{min-width:90px}.audio-state button{min-height:40px;font-size:.68rem;padding:4px}.game{min-height:650px;position:relative;display:grid;grid-template-rows:auto auto minmax(360px,1fr)}.player-rail{grid-row:1;gap:4px;padding:5px 6px;min-height:66px}.player-summary{min-width:128px;max-width:180px;gap:4px;padding:3px 5px}.player-summary>img{width:28px;height:30px}.player-identity strong{font-size:.72rem}.player-identity small{font-size:.58rem}.player-score{font-size:1.45rem;min-width:24px}.action-strip{grid-row:2;min-height:88px;padding:7px 10px;display:grid;grid-template-columns:1fr auto;gap:4px 8px}.turn-identity{min-width:0;max-width:none;gap:1px}.turn-identity strong{font-size:1.05rem}.turn-identity span{font-size:.64rem}.action-strip>p{font-size:.74rem;line-height:1.35;grid-column:1;grid-row:2}.action-buttons{grid-column:2;grid-row:1 / span 2;min-width:0;align-self:center;display:grid;gap:5px}.action-buttons button{min-height:44px;font-size:.76rem;padding:6px 9px}.action-buttons button[data-action=cancel]{grid-row:2;min-height:36px;background:none;border:0;text-decoration:underline}.action-reserve{display:none}.phone-utilities{grid-column:2;grid-row:1 / span 2;display:grid;gap:4px;justify-self:end;align-self:center}.action-buttons:has(button)~.phone-utilities{display:none}.phone-utilities button{font-size:.68rem;min-height:36px;padding:4px 7px}.table-grid{grid-row:3;min-height:440px;display:flex;flex-direction:column;position:relative}.map-stage{order:0;min-height:360px;flex:1;height:360px}.clan-shelf{order:1;padding:7px 10px;background:#163946;border-top:1px solid #73918b;border-right:0;display:grid;grid-template-columns:110px 1fr;gap:8px;align-items:center;min-height:120px}.clan-shelf #hand-tray{display:grid;grid-template-columns:1fr auto;align-items:center;grid-column:1;grid-row:1;gap:0}.shelf-heading{display:none}.hand-tiles{margin:0;justify-content:start;gap:1px}.hand-tile{width:80px;height:84px;padding:3px}.hand-caption{font-size:.67rem;text-align:left;grid-column:1 / -1;line-height:1.3;max-width:120px;min-height:1.4em}.hand-item{gap:0}.tile-inspect{min-height:28px;font-size:.56rem;padding:1px 2px}.private-label{display:none}.hand-tiles.multiple{display:grid;grid-template-columns:repeat(3,1fr);grid-column:1 / -1}.multiple .hand-tile{width:48px;height:51px;padding:0}.multiple .tile-inspect{min-height:28px;min-width:40px;font-size:.5rem}.clan-shelf:has(.multiple){grid-template-columns:155px 1fr}#tile-preview{grid-column:2;grid-row:1}.placement-preview{min-height:0;padding:2px 0;border:0;font-size:.68rem}.placement-preview h3{font-size:.85rem;display:flex;gap:8px;align-items:center}.placement-preview h3 small{font-size:.58rem}.placement-preview p{margin-top:3px;line-height:1.4}.placement-preview button{font-size:.64rem;min-height:32px}.clan-shelf #clan-tools{grid-column:1 / -1;grid-row:2}.clan-links{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.clan-links button{font-size:.64rem;border:0;padding:1px 3px;min-height:32px}.clan-links button[data-action=objectives],.clan-links button[data-action=history]{display:none}.map-controls{left:6px;top:6px;gap:4px}.map-controls button{height:44px;min-width:44px;font-size:.68rem;padding:5px 8px}.map-controls button[data-camera=fit]{min-width:90px}.map-help{font-size:.58rem;bottom:7px;left:7px;padding:4px 6px}.airship-button{bottom:32px;left:7px;min-height:32px;font-size:.6rem}.airship{width:105px}.lobby{display:block;min-height:720px;position:relative;padding:18px 16px}.lobby-land{position:absolute;inset:0;min-height:0;z-index:-1;opacity:.4}.lobby-land>img{width:100%;translate:none;object-fit:cover;object-position:50% 30%;height:100%;max-height:none}.lobby-land::after{box-shadow:inset 0 0 40px #183d4c}.lobby-island-label{display:none}.lobby-sheet{margin:0;padding:20px;max-width:500px;min-width:0}.lobby-sheet h1{font-size:1.65rem}.table-code{display:grid;grid-template-columns:auto 1fr;gap:8px;margin-bottom:12px}.table-code>button{grid-column:1 / -1;font-size:.75rem}.table-code strong{text-align:right;font-size:1.1rem}.lobby-seat{min-height:60px;gap:9px}.lobby-seat>img{width:36px}.lobby-seat strong{font-size:.86rem}.lobby-seat span:not(.ready-mark){font-size:.66rem}.map-options{gap:8px}.map-options button{padding:10px}.map-options button[aria-pressed=true]{padding:9px}.map-options button strong{font-size:1rem}.map-options button span{font-size:.68rem}.setup-row{gap:8px}.setup-row label{font-size:.65rem}.bot-explanation{font-size:.67rem}.edition-note{font-size:.64rem}#lobby-actions{margin-top:17px;flex-wrap:wrap}#lobby-actions .start-game{min-width:100%;font-size:.9rem}#lobby-actions button:not(.primary){width:100%;font-size:.75rem}#notice{bottom:110px;font-size:.76rem;padding:10px 13px}.turn-banner{top:28%;padding:16px 25px;min-width:250px}.turn-banner>strong{font-size:1.8rem}.turn-banner>span{font-size:.68rem}dialog{width:calc(100vw - 18px);max-height:calc(100dvh - 20px)}.reader-top{padding:9px 13px;gap:10px}.reader-top h2{font-size:1.2rem}#reader-body{padding:18px}.card-inspection{display:flex;flex-direction:column;gap:15px}.card-inspection>img{width:210px;max-width:75%;max-height:330px;object-fit:contain}.card-inspection>div{width:100%}.card-inspection h3{font-size:1.1rem}.card-inspection p{font-size:.85rem}.mission-grid{grid-template-columns:1fr 1fr;gap:20px 12px}.mission-grid .mission-copy{font-size:.69rem}.mission-grid .mission-copy>span{font-size:.65rem}.mission-copy>button{font-size:.7rem}.rule-tiles{gap:12px}.rule-tiles>div{width:95px;font-size:.68rem}.rule-tiles>img{width:80px;height:85px}.tower-rule{gap:13px}.tower-rule img{width:65px;height:55px}.rules-reader p,.tutorial-reader p{font-size:.85rem;line-height:1.6}.rules-reader h3{font-size:1.2rem!important}.reserve-tiles{gap:12px}.reserve-tiles>div{width:110px}.reserve-tiles p{font-size:.72rem}.full-history li{gap:10px}.full-history small{min-width:45px;font-size:.66rem}.full-history span{font-size:.76rem}.finale>h3{font-size:1.6rem!important}.final-verdict{font-size:.76rem}.final-scoreboards{gap:5px;margin:18px 0}.final-clan{padding:7px 4px;gap:4px}.final-clan.winning{padding:6px 3px}.final-clan>img{width:42px;height:45px}.final-clan>strong{font-size:.68rem;overflow-wrap:anywhere}.final-clan>span{font-size:2rem}.final-clan>small{font-size:.55rem}.final-breakdown{font-size:.66rem;grid-template-columns:minmax(100px,1.7fr) repeat(var(--players,4),1fr)}.final-breakdown>span,.final-breakdown>strong{padding:7px 3px}.final-controls{gap:6px}.final-controls>button{font-size:.72rem;padding:7px 9px}.big-score{font-size:3rem}.point-flight{font-size:1.7rem}}
  @media(max-width:359px){.top-tools>button{font-size:.61rem;padding:3px 5px}.flag{width:34px;min-width:34px;padding:4px}.flag svg{width:26px}.opening-copy{padding-left:18px;padding-right:18px}.entry-sheet{padding:16px}.practice-row{gap:5px}.practice-row button{font-size:.74rem}.lobby{padding:12px}.lobby-sheet{padding:17px}.audio-strip{padding-left:7px;padding-right:7px;gap:0 5px}.audio-channel button{min-width:46px;font-size:.67rem}.audio-channel input{max-width:75px}.action-strip>p{font-size:.69rem}.turn-identity strong{font-size:.94rem}}
  .audio-strip .audio-state button{min-height:44px}
  @media(min-width:950px){body[data-phase=game] #app{min-height:600px}.table-grid,.map-stage{min-height:300px}}
  @media(max-width:949px){.game .action-strip{position:sticky;top:0}}
  @media(min-width:621px) and (max-width:949px) and (max-height:600px){.game{min-height:0}.table-grid{height:300px;min-height:300px;flex:none}.map-stage{height:300px;min-height:300px}.clan-shelf{min-height:0;overflow:auto}}
  .game .tile-inspect,.game .placement-preview button,.game .phone-utilities button,.game .action-buttons button[data-action=cancel],.game .clan-links button,.game .airship-button,.game .history-heading button{min-height:44px;min-width:44px}
  .topbar .languages .flag{width:44px;min-width:44px;min-height:44px}
  .cinematic-reader .cinematic-controls button{min-height:44px}
  @media(max-width:620px){
    dialog.cinematic-reader{width:100vw;height:100dvh;max-height:100dvh;max-width:100vw;margin:0;border-radius:0}
    .topbar{padding-left:5px;padding-right:5px;gap:0}
    .game .clan-links button,.game .tile-inspect{font-size:.73rem}
    .game .map-stage{min-height:300px;height:clamp(300px,38dvh,420px)}
    .game .clan-shelf{min-height:160px}
    .game .multiple .tile-inspect{font-size:.59rem}
    .top-tools>button{font-size:.73rem}
    .game .player-rail{gap:5px;padding:5px 6px;overflow-x:auto;scrollbar-width:thin}
    .game .player-summary{min-width:0;max-width:none;flex:1;display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:5px;justify-items:center;text-align:center}
    .game .player-identity{grid-column:1 / -1;grid-row:1;display:block;width:100%}
    .game .player-identity strong{font-size:.73rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
    .game .player-identity small{font-size:.58rem;display:block;min-height:.75rem}
    .game .player-summary>img{grid-column:1;grid-row:2;width:26px;height:28px}
    .game .player-score{grid-column:2;grid-row:2;font-size:1.4rem;min-width:0}
  }
}
