:root{--bg:#f4f1ea;--panel:#fff;--text:#22201c;--muted:#6d675d;--border:#ddd6c8;--accent:#8a5a2b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[hidden]{display:none!important}@media (prefers-color-scheme:dark){:root{--bg:#1b1a18;--panel:#262421;--text:#ece7de;--muted:#a39b8e;--border:#3a3631;--accent:#d39a5e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:14px/1.4 system-ui,sans-serif}header{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:24px;padding:10px 16px;display:flex}.brand{font-weight:700}.nav{gap:12px;display:flex}.nav a{color:var(--muted);border-radius:6px;padding:4px 8px;text-decoration:none}.nav a.active{color:var(--text);background:var(--bg)}.page{padding:12px 16px}.toolbar,.toggles,.row,.chips{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.toolbar{gap:12px;margin-bottom:12px}.toggles{border-left:1px solid var(--border);padding-left:8px}input,select,button{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:4px 8px}input[type=number]{width:5em}input[type=checkbox]{padding:0}button{cursor:pointer}button:hover{border-color:var(--accent)}.stats{gap:6px;margin-bottom:12px;display:grid}.muted{color:var(--muted);font-size:12px}.chip{border:1px solid var(--border);border-left:10px solid var(--chip);border-radius:999px;padding:2px 8px;font-size:12px}.grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.card{background:var(--panel);border:1px solid var(--border);text-align:center;border-radius:8px;margin:0;padding:8px;position:relative}.card .badge{background:var(--accent);color:#fff;border-radius:999px;padding:2px 8px;font-size:13px;font-weight:600;position:absolute;top:6px;right:6px}.card figcaption{justify-items:center;gap:4px;display:grid}.tile-svg{width:100%;max-width:130px;height:auto}.debug-text{fill:#111;paint-order:stroke;stroke:#fff;stroke-width:2.5px;font-family:ui-monospace,monospace}.debug-strong{font-weight:700}.hide-layer-base .layer-base,.hide-layer-sand .layer-sand,.hide-layer-mountains .layer-mountains,.hide-layer-water .layer-water,.hide-layer-decals .layer-decals,.hide-layer-debug .layer-debug,.hide-layer-regions .layer-regions,.hide-layer-starts .layer-starts,.hide-layer-tokens .layer-tokens{display:none}.map-page{flex-direction:column;height:calc(100vh - 49px);padding-bottom:0;display:flex}.map-body{flex:1;gap:12px;min-height:0;padding-bottom:12px;display:flex}.map-svg{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;background:#1d3b55;border-radius:8px;flex:1;min-width:0;height:100%}.map-svg:active{cursor:grabbing}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;flex-shrink:0;width:340px;padding:10px 12px;overflow-y:auto}.panel h3{margin:4px 0 8px;font-size:14px}.panel table{border-collapse:collapse;width:100%;margin-bottom:10px;font-size:12px}.panel th,.panel td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:3px 4px}.panel th{color:var(--muted);white-space:nowrap;font-weight:600}.panel tr.bad td{color:#e5484d}.inspector{border-top:2px solid var(--border);padding-top:8px}.error{color:#e5484d}@media (width<=800px){.map-page{height:auto}.map-body{flex-direction:column}.map-svg{flex:none;height:65vh}.panel{width:100%}}@media (width<=600px){.grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}.toggles{border-left:0;padding-left:0}}.play-body{flex:1;gap:12px;min-height:0;padding-bottom:12px;display:flex}.play-left{width:280px}.play-right{width:330px;overflow-y:auto}.play-overlay{pointer-events:none}.play-player{border:1px solid var(--border);border-left:6px solid var(--player);border-radius:6px;margin-bottom:6px;padding:6px 8px}.play-player.current{background:var(--bg);box-shadow:0 0 0 2px var(--player) inset}.play-player.out{opacity:.5;text-decoration:line-through}.play-player .swatch{background:var(--player);border-radius:50%;width:10px;height:10px}.play-res{gap:8px;margin-top:2px;font-size:13px;display:flex}.play-turn{border-top:2px solid var(--border);margin-top:8px;padding-top:4px}.play-turn button{margin:4px 0}.play-log{max-height:40vh;margin:0;padding:0;font-size:12px;list-style:none;overflow-y:auto}.play-log li{color:var(--muted);padding:1px 0}.play-log li.turn{color:var(--text);margin-top:4px;font-weight:600}.play-order{padding-left:20px;font-size:13px}.play-order li.current{font-weight:700}.chip-btn{border-left:6px solid var(--player);font-size:12px}.chip-btn.active{background:var(--bg);border-color:var(--accent);border-left-color:var(--player)}.die{border:2px solid var(--text);border-radius:6px;place-items:center;width:30px;height:30px;font-weight:800;display:grid}.die.big{border-radius:12px;width:56px;height:56px;font-size:26px}.die.attack{color:#e0453a;border-color:#e0453a}.die.defence{color:#2f7bd9;border-color:#2f7bd9}.build-head,.build-row{grid-template-columns:64px repeat(5,1fr) 22px;align-items:center;gap:2px;width:100%;display:grid}.build-head{background:var(--bg);border:1px solid var(--border);border-left:6px solid var(--player);border-radius:8px;margin-bottom:6px;padding:8px 6px}.build-head .build-name{color:var(--muted);font-size:12px;font-weight:600}.build-have{flex-direction:column;align-items:center;line-height:1.1;display:flex}.build-have .icon{font-size:20px}.build-have strong{font-size:22px}.build-row{text-align:left;font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:6px;margin-bottom:3px;padding:4px 6px}.build-row:hover{border-color:var(--accent)}.build-row .build-name{font-size:13px;font-weight:600}.build-cell{text-align:center;font-size:15px;font-weight:700}.build-cell.none{color:var(--border);font-weight:400}.build-cell.miss{color:#fff;background:#d6453d;border-radius:4px}.build-mark{text-align:center;font-weight:700}.build-mark.ready{color:#2a9d6a}.build-mark.trade{color:#c98a12}.build-mark.short{color:#d6453d}.build-row .build-why{color:var(--muted);grid-column:1/-1;font-size:11px}.build-row.trade .build-why{color:#b07a10}.build-row:disabled{opacity:.5;cursor:not-allowed}.build-row:disabled:hover{border-color:var(--border)}.build-row.active{border-color:#2fb38a;box-shadow:inset 0 0 0 2px #2fb38a}button:disabled{opacity:.5;cursor:not-allowed}@media (width<=1000px){.play-body{flex-direction:column}.play-body .map-svg{flex:none;order:-1;height:65vh}.play-left,.play-right{width:100%}}.tile-svg[role=button]{cursor:zoom-in}.tile-dialog{border:1px solid var(--border);background:var(--panel);border-radius:12px;width:min(92vw,1000px);max-height:94vh;padding:12px 16px 16px}.tile-dialog::backdrop{background:#14181eb3}.tile-dialog-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.tile-svg-large{width:100%;height:auto;max-height:calc(94vh - 80px);display:block}.lab-page{overflow:auto}.lab-grid{grid-template-columns:repeat(auto-fill,minmax(640px,1fr));gap:12px;padding:12px 0;display:grid}.lab-card{cursor:zoom-in;background:#1e3a52;border-radius:8px;margin:0;overflow:hidden}.lab-card.big{cursor:zoom-out;grid-column:1/-1}.lab-card figcaption{color:#e8eef3;background:#16293a;padding:6px 10px;font-size:13px}.lab-svg{width:100%;height:auto;display:block}.sprites-page{overflow:auto}.sprite-set h2{text-transform:capitalize;margin:16px 0 8px;font-size:16px}.sprite-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;display:grid}.sprite-card{color:#e8eef3;background:#16293a;border-radius:8px;margin:0;font-size:13px;overflow:hidden}.sprite-ground{aspect-ratio:1;min-height:0;padding:10px;overflow:hidden}.sprite-ground img{object-fit:contain;width:100%;height:100%;display:block}.sprite-card figcaption{padding:6px 8px}.sprite-card .lab-only{color:#f0b46a}.end-overlay{z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#140a048c;place-items:center;display:grid;position:fixed;inset:0}.end-box{text-align:center;color:#3b2412;background:linear-gradient(#fbf1dc,#ecd9b4);border:3px solid #8a5630;border-radius:14px;width:min(420px,100vw - 32px);padding:24px 28px;animation:.35s ease-out end-in;box-shadow:0 0 0 6px #5a3418,0 20px 60px #0009}.end-box h2{letter-spacing:1px;margin:4px 0 6px;font-size:40px}.end-box.win h2{color:#b07a10;text-shadow:0 2px #fff3c4}.end-box.lose h2{color:#9b2c22}.end-emblem{font-size:52px;line-height:1}.end-ranking{text-align:left;margin:14px 0;padding:0;list-style:none}.end-ranking li{border-bottom:1px solid #8a56304d;grid-template-columns:14px 1fr auto;align-items:center;gap:8px;padding:4px 8px;display:grid}.end-ranking li:first-child{font-weight:700}.end-ranking .swatch{background:var(--player);border-radius:50%;width:12px;height:12px}.end-buttons{justify-content:center;gap:10px}@keyframes end-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}:root,:root[data-ui=wood]{--ui-texture:url(/art/ui/wood.webp);--ui-base:#6b4022;--ui-frame:#3a1f0c;--ui-dim:#1e0e0473;--ui-heading:#ffe2a8;--ui-text:#f1d9b2;--ui-text-shadow:0 1px 2px #000000b3;--ui-error:#ffb0a3;--ui-panel-dim:#190a0052}:root[data-ui=marble]{--ui-texture:url(/art/ui/marble.webp);--ui-base:#e8cfae;--ui-frame:#8a6240;--ui-dim:#5a371947;--ui-heading:#5a3010;--ui-text:#4a2e18;--ui-text-shadow:0 1px 0 #fff5e1b3;--ui-error:#a42a1e;--ui-panel-dim:#fff0dc00}:root[data-table=felt] .map-svg{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.35 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E"),radial-gradient(#2f8550 0%,#1f6a3c 55%,#134a28 100%);box-shadow:inset 0 0 80px #00000073}.play-body{background:linear-gradient(var(--ui-dim), var(--ui-dim)), var(--ui-base) var(--ui-texture) center / cover;border-radius:10px;margin-bottom:12px;padding:10px;box-shadow:inset 0 0 0 1px #00000080,inset 0 0 40px #00000073}.play-page .panel{--panel:#f6ead0;--bg:#fbf3e2;--text:#3b2412;--muted:#7a5634;--border:#c9a77a;--accent:#8a5630;color:var(--ui-text);background:linear-gradient(var(--ui-panel-dim), var(--ui-panel-dim)), var(--ui-base) var(--ui-texture) center / cover;border:2px solid var(--ui-frame);box-shadow:inset 0 0 0 1px #ffe6be4d,inset 0 0 30px #14080059,0 3px 10px #0006}.play-page .panel h3{color:var(--ui-heading);text-shadow:var(--ui-text-shadow);letter-spacing:.3px}.play-page .panel>div>.muted,.play-page .panel>div>p,.play-page .play-turn p{color:var(--ui-text);text-shadow:var(--ui-text-shadow)}.play-page .panel .error{color:var(--ui-error);font-weight:600}.play-page .play-turn{border-top-color:var(--ui-dim)}.play-page .play-player,.play-page .build-head,.play-page .build-row,.play-page .chip-btn,.play-page .play-log,.play-page .play-order{color:var(--text);background:var(--panel);border-color:var(--border);box-shadow:0 1px 3px #00000059}.play-page .play-player.current{background:var(--bg)}.play-page .panel .play-player .muted,.play-page .build-row .build-why{color:var(--muted);text-shadow:none}.play-page .build-row.trade .build-why{color:#a06d08}.play-page .play-log{border:1px solid var(--border);border-radius:6px;padding:6px 8px}.play-page .play-order{border:1px solid var(--border);border-radius:6px;padding:6px 8px 6px 26px}.play-page .panel .die{background:var(--bg);color:var(--text);border-color:#3b2412;box-shadow:0 2px 4px #00000073}.play-page .panel .die.attack{color:#c0352b;border-color:#c0352b}.play-page .panel .die.defence{color:#2463b5;border-color:#2463b5}.play-page .panel button:not(.build-row):not(.chip-btn),.play-page .panel select{color:#3b2412;background:linear-gradient(#fbf1dc,#e6cfa3);border:1px solid #5a3418;box-shadow:0 1px 2px #0006}.play-page .panel button:disabled{opacity:.55}.play-page .panel .build-row:disabled{opacity:1;background:#e9dcc0}.play-page .build-row:disabled>*{opacity:.6}.play-page .panel>div>.row>.muted{color:var(--ui-text)}.ui-switches{gap:6px;margin-left:auto;display:flex}.ui-switches button{padding:3px 8px;font-size:12px}.play-board{flex:1;min-width:0;display:flex;position:relative}.play-board>.map-svg{flex:1}.stack-card{z-index:5;color:#3b2412;background:linear-gradient(#fbf3e2,#f0e0bf);border:2px solid #8a5630;border-radius:10px;width:260px;padding:8px;font-size:13px;position:absolute;box-shadow:0 6px 18px #00000073}.stack-head{align-items:center;gap:6px;margin-bottom:6px;display:flex}.stack-head strong{flex:1}.stack-card button{color:#3b2412;background:linear-gradient(#fffaf0,#ead6ae);border:1px solid #8a5630;border-radius:6px;padding:2px 8px;font-size:12px}.stack-row{border-top:1px solid #8a563040;align-items:center;gap:6px;padding:3px 0;display:flex}.stack-row.spent{opacity:.55}.stack-card .stack-name{text-align:left;background:0 0;border:2px solid #0000;flex:1;align-items:center;gap:8px;padding:4px 6px;display:flex}.stack-card .stack-name.on{background:#fff6d8;border-color:#2fb38a}.stack-name small{color:#7a5634;font-size:11px;display:block}.stack-icon{flex:none;width:28px;height:28px;overflow:visible}.stack-count{align-items:center;gap:4px;display:flex}.stack-count strong{text-align:center;min-width:30px}.stack-hint{color:#7a5634;margin:6px 0 0;font-size:11px}.play-clock{font-variant-numeric:tabular-nums}.play-clock.urgent{color:#ff8a7a}:root[data-ui=marble] .play-clock.urgent{color:#b3261e}.end-box.stop h2{color:#8a5630}.online-page{flex-direction:column;gap:12px;display:flex}.online-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;gap:10px;max-width:560px;margin:24px auto;padding:20px 24px;display:grid}.online-card h2{margin:0}.online-actions{flex-wrap:wrap;gap:8px}.online-link{width:100%;font-family:ui-monospace,monospace;font-size:12px}.online-seats{gap:6px;margin:0;padding:0;list-style:none;display:grid}.online-seat{border:1px solid var(--border);border-left:6px solid var(--player);border-radius:6px;align-items:center;gap:10px;padding:8px 10px;display:flex}.online-seat .swatch{background:var(--player);border-radius:50%;width:12px;height:12px}.online-seat-name{flex:1}.online-seat.open{opacity:.6;border-left-style:dashed}.online-seat.away{opacity:.7}
