:root{color:#e8e4db;background:#0d1211;font-family:IBM Plex Sans,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}html.game-root,html.game-root body{overscroll-behavior:none;height:100%;min-height:100dvh;overflow:hidden}html.game-root #app{height:100%;min-height:100%;overflow:hidden}#app{min-height:100vh}.variant-shell{color:#e8e4db;background:#0d1211;gap:12px;max-width:none;min-height:100vh;padding:0 0 24px;display:grid}.variant-shell .hud{padding:16px 20px 0}.variant-shell canvas{aspect-ratio:960/640;cursor:grab;touch-action:none;border-radius:2px;width:min(960px,100%);margin:8px auto 0;display:block;box-shadow:0 0 0 1px #d2be8c14,0 18px 48px #00000073}.variant-shell canvas:active{cursor:grabbing}.variant-shell--fullscreen{flex-direction:column;gap:0;height:100dvh;min-height:100dvh;padding:0;display:flex;position:relative}.variant-shell--fullscreen .hud{z-index:2;pointer-events:none;background:linear-gradient(#080c0ab8 0%,#0000 100%);margin:0;padding:10px 14px;position:absolute;top:0;left:0;right:0}.variant-shell--fullscreen .hud-hint{display:none}.variant-shell--fullscreen.variant-shell--playing .hud{opacity:0}.variant-shell--fullscreen canvas{aspect-ratio:auto;width:100%;height:100%;min-height:0;box-shadow:none;border-radius:0;flex:1;margin:0}.variant-shell--fullscreen .whisper{bottom:max(12px, env(safe-area-inset-bottom));z-index:2;pointer-events:none;background:#080c0a8c;border-radius:4px;margin:0;padding:4px 10px;position:absolute;left:50%;transform:translate(-50%)}.variant-shell .whisper{text-align:center;opacity:.7;min-height:1.2em;font-family:ui-monospace,monospace;font-size:12px}.variant-shell .state{color:#c9c3b6;background:#ffffff0a;width:min(960px,100% - 32px);margin:8px auto 0}.hud{flex-wrap:wrap;align-items:baseline;gap:8px 16px;display:flex}.hud strong{font-size:1.05rem}.hud span{opacity:.75;font-size:.92rem}.state{max-height:640px;margin:0;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.35;overflow:auto}#global-settings{z-index:10000;color:#f2efe8;width:min(300px,100vw - 28px);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;position:fixed;top:14px;right:14px}#global-settings .settings-toggle{width:100%;color:inherit;text-align:left;cursor:pointer;font:inherit;background:#171c1a;border:0;border-radius:10px 10px 0 0;padding:10px 12px}#global-settings .settings-body{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111614f0;border:1px solid #f2efe81f;border-top:0;border-radius:0 0 10px 10px;gap:10px;max-height:min(70vh,560px);padding:12px;display:grid;overflow:auto}#global-settings .settings-body.collapsed{display:none}#global-settings header{flex-direction:column;gap:2px;display:flex}#global-settings header span{opacity:.65;font-size:11px}#global-settings .settings-fields{gap:8px;display:grid}#global-settings .settings-row{grid-template-columns:1fr auto;align-items:center;gap:4px 10px;display:grid}#global-settings .settings-row.range{grid-template-columns:1fr auto}#global-settings .settings-row.range input[type=range]{grid-column:1/-1;width:100%}#global-settings .settings-row output{opacity:.85}#global-settings .settings-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}#global-settings .settings-actions button{color:inherit;cursor:pointer;font:inherit;background:#24302c;border:1px solid #f2efe833;border-radius:6px;padding:8px}#global-settings .settings-actions button:hover{background:#2f3d38}#event-bus-panel{z-index:10000;color:#f2efe8;width:min(360px,100vw - 28px);font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;position:fixed;top:14px;left:14px}#event-bus-panel .ebus-toggle{width:100%;color:inherit;text-align:left;cursor:pointer;font:inherit;background:#171c1a;border:0;border-radius:10px 10px 0 0;padding:10px 12px}#event-bus-panel .ebus-body{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111614f0;border:1px solid #f2efe81f;border-top:0;border-radius:0 0 10px 10px;gap:8px;padding:10px 12px 12px;display:grid}#event-bus-panel .ebus-body.collapsed{display:none}#event-bus-panel header{justify-content:space-between;align-items:baseline;gap:8px;display:flex}#event-bus-panel header span{opacity:.65;font-size:10px}#event-bus-panel .ebus-filters{opacity:.9;flex-wrap:wrap;align-items:center;gap:8px 10px;display:flex}#event-bus-panel .ebus-filters label{cursor:pointer;align-items:center;gap:4px;display:inline-flex}#event-bus-panel .ebus-filters button{color:inherit;cursor:pointer;font:inherit;background:#24302c;border:1px solid #f2efe833;border-radius:4px;padding:4px 8px}#event-bus-panel .ebus-filters button.active{background:#5a4030}#event-bus-panel .ebus-log{background:#00000040;border-radius:6px;gap:2px;max-height:min(52vh,420px);margin:0;padding:6px;list-style:none;display:grid;overflow:auto}#event-bus-panel .ebus-log li{border-radius:3px;grid-template-columns:auto 1fr;gap:8px;padding:3px 4px;line-height:1.35;display:grid}#event-bus-panel .ebus-log li:nth-child(odd){background:#ffffff08}#event-bus-panel .ebus-type{color:#8fd0c0;white-space:nowrap;font-weight:700}#event-bus-panel .ebus-log li[data-type=NodeCaptured] .ebus-type,#event-bus-panel .ebus-log li[data-type=GameEnded] .ebus-type{color:#e8c36a}#event-bus-panel .ebus-log li[data-type=NodeLiberated] .ebus-type,#event-bus-panel .ebus-log li[data-type=NodeAbandoned] .ebus-type{color:#d4574a}#event-bus-panel .ebus-log li[data-type=AttackStarted] .ebus-type{color:#c9a86a}#event-bus-panel .ebus-body-text{opacity:.8;word-break:break-word}#replay-panel{z-index:10000;color:#f2efe8;width:min(520px,100vw - 28px);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;position:fixed;bottom:14px;left:50%;transform:translate(-50%)}#replay-panel .replay-toggle{width:100%;color:inherit;text-align:left;cursor:pointer;font:inherit;background:#171c1a;border:0;border-radius:10px 10px 0 0;padding:10px 12px}#replay-panel[data-mode=replay] .replay-toggle{background:#2a3220}#replay-panel .replay-body{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111614f0;border:1px solid #f2efe81f;border-top:0;border-radius:0 0 10px 10px;gap:10px;padding:12px;display:grid}#replay-panel .replay-body.collapsed{display:none}#replay-panel header{justify-content:space-between;align-items:baseline;gap:8px;display:flex}#replay-panel header span{opacity:.65;font-size:11px}#replay-panel .replay-actions,#replay-panel .replay-transport{flex-wrap:wrap;align-items:center;gap:8px;display:flex}#replay-panel .replay-transport:not(.active){opacity:.45;pointer-events:none}#replay-panel button{color:inherit;cursor:pointer;font:inherit;background:#24302c;border:1px solid #f2efe833;border-radius:6px;padding:6px 10px}#replay-panel button:hover{background:#2f3d38}#replay-panel .replay-scrub{flex:160px;grid-template-columns:1fr auto;align-items:center;gap:8px;min-width:140px;display:grid}#replay-panel .replay-scrub input[type=range]{width:100%}#replay-panel .replay-scrub output{opacity:.85;white-space:nowrap;font-variant-numeric:tabular-nums}html.prod .mp-status{display:none}.mp-status{z-index:30;color:#8a8070;opacity:.55;pointer-events:none;background:#080a098c;border-radius:4px;max-width:min(280px,42vw);padding:5px 8px;font:11px/1.35 IBM Plex Mono,monospace;position:fixed;top:8px;right:12px}.mp-overlay{z-index:25;background:radial-gradient(70% 50% at 50% 40%,#2a221873,#0000 70%),#080b0ae0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mp-overlay[hidden]{display:none!important}.mp-menu{padding:max(1.5rem, env(safe-area-inset-top)) max(1.5rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1.75rem, env(safe-area-inset-left));background:radial-gradient(55% 50% at 72% 48%,#3a2c1c6b 0%,#0000 62%),radial-gradient(90% 55% at 50% 110%,#120c08f2 0%,#0000 55%),linear-gradient(155deg,#141a17 0%,#0d1211 42%,#0a0e0c 100%);grid-template-rows:1fr auto;grid-template-columns:minmax(260px,24rem) minmax(0,1fr);justify-content:stretch;align-items:center;gap:clamp(1rem,3vw,2.5rem) clamp(1.5rem,5vw,4rem);display:grid;overflow:hidden}.mp-title-stage{--px:0px;--py:0px;pointer-events:none;opacity:0;grid-area:1/2;place-self:center stretch;width:100%;height:min(78vh,720px);min-height:220px;animation:.9s cubic-bezier(.16,1,.3,1) 80ms forwards mp-art-in;position:relative;transform:scale(1.04)}.mp-title-glow{filter:blur(2px);background:radial-gradient(at 50% 55%,#c49c521f 0%,#0000 58%),radial-gradient(at 40% 60%,#463a2a59 0%,#0000 65%);position:absolute;inset:12% 8% 18%}.mp-title-field{transform:translate3d(var(--px), var(--py), 0);transition:transform .22s cubic-bezier(.16,1,.3,1);position:absolute;inset:0}.mp-base{image-rendering:pixelated;image-rendering:crisp-edges;filter:drop-shadow(0 18px 22px #0000008c);-webkit-user-select:none;user-select:none;will-change:transform;position:absolute}.mp-base--keepers{width:clamp(112px,16vw,200px);height:auto;animation:7.5s ease-in-out .2s infinite mp-base-idle;top:18%;left:8%}.mp-base--raiders{z-index:2;width:clamp(150px,22vw,280px);height:auto;animation:8.2s ease-in-out .6s infinite mp-base-idle;top:8%;right:10%}.mp-base--echoes{z-index:1;width:clamp(128px,18vw,230px);height:auto;animation:9s ease-in-out 1.1s infinite mp-base-idle;bottom:10%;left:28%}.mp-base--claimants{width:clamp(118px,17vw,210px);height:auto;animation:8.6s ease-in-out 1.6s infinite mp-base-idle;bottom:16%;right:22%}.mp-title-panel{z-index:2;text-align:left;color:#e8e4db;grid-area:1/1;max-width:min(24rem,100%);position:relative}.mp-brand{letter-spacing:-.03em;color:#f0ebe0;text-shadow:0 2px #00000059;opacity:0;margin:0;font-family:Syne,IBM Plex Sans,sans-serif;font-size:clamp(3.4rem,9vw,5.6rem);font-weight:800;line-height:.92;animation:.7s cubic-bezier(.16,1,.3,1) .18s forwards mp-settle;transform:translateY(18px)}.mp-tagline{color:#a89a82;opacity:0;max-width:18ch;margin:.85rem 0 0;font:400 1.05rem/1.35 IBM Plex Sans,sans-serif;animation:.7s cubic-bezier(.16,1,.3,1) .28s forwards mp-settle;transform:translateY(14px)}.mp-menu .mp-menu-actions{opacity:0;gap:.55rem;margin:1.75rem 0 0;animation:.75s cubic-bezier(.16,1,.3,1) .38s forwards mp-settle;transform:translateY(16px)}.mp-code-block{opacity:0;margin-top:1.5rem;animation:.75s cubic-bezier(.16,1,.3,1) .48s forwards mp-settle;transform:translateY(14px)}.mp-code-label{letter-spacing:.14em;text-transform:uppercase;color:#7a6e5a;margin-bottom:.4rem;font:600 .72rem/1 IBM Plex Sans,sans-serif;display:block}.mp-menu .mp-code-row{gap:.4rem}.mp-credit{color:#5a5348;opacity:0;grid-area:2/1/auto/-1;justify-self:start;margin:0;font:400 .7rem/1.4 IBM Plex Sans,sans-serif;animation:.6s cubic-bezier(.16,1,.3,1) .62s forwards mp-settle}.mp-credit a{color:#6e6558;text-underline-offset:2px;text-decoration:underline}.mp-credit a:hover{color:#a89a82}@keyframes mp-art-in{to{opacity:1;transform:scale(1)}}@keyframes mp-settle{to{opacity:1;transform:translateY(0)}}@keyframes mp-base-idle{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@media (width<=820px){.mp-menu{padding-top:max(.75rem, env(safe-area-inset-top));grid-template-rows:minmax(180px,36vh) auto auto;grid-template-columns:1fr;align-content:start;justify-items:stretch;gap:.25rem 0}.mp-title-stage{grid-area:1/1;height:min(36vh,280px);min-height:160px}.mp-title-panel{grid-area:2/1;max-width:none;padding-top:.5rem}.mp-brand{font-size:clamp(2.8rem,14vw,4rem)}.mp-base--keepers{width:clamp(88px,22vw,120px);top:12%;left:2%}.mp-base--raiders{width:clamp(110px,30vw,160px);top:2%;right:4%}.mp-base--echoes{width:clamp(96px,24vw,130px);bottom:4%;left:18%}.mp-base--claimants{width:clamp(90px,23vw,124px);bottom:8%;right:14%}.mp-credit{grid-area:3/1;margin-top:1.25rem}}@media (prefers-reduced-motion:reduce){.mp-title-stage,.mp-brand,.mp-tagline,.mp-menu .mp-menu-actions,.mp-code-block,.mp-credit,.mp-base{opacity:1;transform:none;animation:none!important}.mp-title-field{transition:none}}.mp-card{color:#e8e4db;text-align:center;background:#0e100ef0;border:1px solid #2c2820;border-radius:2px;min-width:min(320px,92vw);max-width:min(380px,92vw);padding:1.6rem 1.75rem;font-family:IBM Plex Sans,sans-serif;box-shadow:0 24px 48px #0006}.mp-card-wide{text-align:left;max-width:min(440px,92vw)}@media (width>=1100px){.mp-menu{grid-template-columns:minmax(280px,24rem) minmax(0,1fr);padding-inline:clamp(2rem,4vw,4.5rem)}.mp-card{max-width:min(420px,40vw);padding:1.85rem 2rem}.mp-card-wide{max-width:min(520px,44vw)}}.mp-card-wide .mp-card-title,.mp-card-wide .mp-card-sub,.mp-card-wide .mp-room-code,.mp-card-wide .mp-btn-primary,.mp-card-wide .mp-menu-actions{text-align:center}.mp-pref-block{margin-bottom:12px}.mp-pref-label{letter-spacing:.1em;text-transform:uppercase;color:#7a6e5a;margin-bottom:6px;font:600 11px IBM Plex Sans,sans-serif}.mp-chip-row{flex-wrap:wrap;gap:6px;display:flex}.mp-chip{color:#a89a82;cursor:pointer;background:#161412;border:1px solid #3a342c;border-radius:2px;padding:7px 10px;font:600 12px IBM Plex Sans,sans-serif}.mp-chip:hover{color:#e8e4db;background:#1e1a16}.mp-chip-active{color:#f0ebe0;background:#2a2418;border-color:#c4a35a}.mp-seat-rows{gap:6px;margin:0 0 14px;display:grid}.mp-seat-row{background:#0a0c0ab3;border:1px solid #2c2820;border-radius:2px;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.mp-seat-id{color:#e8e4db;font:600 13px IBM Plex Sans,sans-serif}.mp-seat-badge{color:#8a8070;font:600 11px IBM Plex Mono,monospace}.mp-seat-badge-ready{color:#b8c878}.mp-seat-badge-empty{color:#5a5348}.mp-config-block{margin-bottom:16px}.mp-config-readonly{gap:6px;display:grid}.mp-config-line{color:#8a8070;justify-content:space-between;gap:12px;font:13px IBM Plex Sans,sans-serif;display:flex}.mp-config-line strong{color:#e8e4db;font:600 13px IBM Plex Mono,monospace}.mp-config-note{color:#5a5348;text-align:center;margin:8px 0 0;font:11px IBM Plex Sans,sans-serif}.mp-card-title{letter-spacing:-.02em;color:#f0ebe0;margin-bottom:6px;font:800 clamp(1.35rem,3vw,1.6rem)/1.1 Syne,IBM Plex Sans,sans-serif}.mp-card-sub{color:#8a8070;white-space:pre-line;margin:0 0 16px;font:13px/1.45 IBM Plex Sans,sans-serif}.mp-menu-actions{gap:8px;margin-bottom:14px;display:grid}.mp-code-row{grid-template-columns:1fr auto auto;align-items:center;gap:6px;display:grid}.mp-input{letter-spacing:.14em;text-align:center;text-transform:uppercase;color:#e8e4db;background:#0c0e0c;border:1px solid #3a342c;border-radius:2px;min-width:0;padding:11px 12px;font:600 14px IBM Plex Mono,monospace}.mp-input::placeholder{color:#5a5348;letter-spacing:.1em}.mp-input:focus{border-color:#c4a35a;outline:none;box-shadow:0 0 0 1px #c4a35a59}.mp-btn{color:#d8d0c0;cursor:pointer;background:#1a1814;border:1px solid #3a342c;border-radius:2px;padding:.8rem 1rem;font:600 .95rem/1.2 IBM Plex Sans,sans-serif;transition:background .16s ease-out,border-color .16s ease-out,color .16s ease-out,transform .12s ease-out}.mp-btn:hover{color:#f0ebe0;background:#242018;border-color:#524838}.mp-btn:active{transform:translateY(1px)}.mp-btn-primary{color:#1a140c;background:#c4a35a;border-color:#d4b56a;font-weight:700}.mp-btn-primary:hover{color:#1a140c;background:#d4b56a;border-color:#e0c478}.mp-menu .mp-btn-primary{padding:.95rem 1.1rem;font-size:1.02rem}.mp-btn-secondary{color:#e8e4db;background:0 0;border-color:#5a4e38}.mp-btn-secondary:hover{color:#f0ebe0;background:#c4a35a1a;border-color:#c4a35a}.mp-btn-quiet{color:#8a8070;background:0 0;border-color:#0000;padding-top:.55rem;padding-bottom:.55rem}.mp-btn-quiet:hover{color:#e8e4db;text-underline-offset:3px;background:0 0;border-color:#0000;text-decoration:underline}.mp-btn-code{padding:.7rem .85rem;font-size:.85rem}.mp-btn-unready{color:#f0ebe0!important;background:#3a2a1a!important;border-color:#a74!important}.mp-error{color:#d88;margin:12px 0 0;font:12px/1.4 IBM Plex Sans,sans-serif}.mp-room-code{letter-spacing:.18em;color:#c4a35a;margin-bottom:10px;font:700 22px IBM Plex Mono,monospace}.mp-lobby-actions{gap:8px;display:grid}.mp-local-hud{right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));z-index:26;pointer-events:none;position:fixed}.mp-local-hud[hidden]{display:none!important}.mp-local-hud-card{pointer-events:auto;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0a0c0ae0;border:1px solid #2c2820;border-radius:2px;flex-direction:column;gap:8px;min-width:132px;padding:10px 12px;display:flex}.mp-local-hud--ended .mp-local-hud-card{background:#100e0af0;border-color:#c4a35a;gap:10px;min-width:168px;padding:12px 14px}.mp-local-hud-title{color:#a89a82;letter-spacing:.04em;font:700 12px Syne,IBM Plex Sans,sans-serif}.mp-local-hud--ended .mp-local-hud-title{color:#c4a35a;letter-spacing:0;font-size:16px}.mp-local-hud-actions{gap:6px;display:grid}.mp-local-hud:not(.mp-local-hud--ended) .mp-local-hud-title{display:none}.mp-countdown{z-index:28;pointer-events:none;background:#080b0a8c;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mp-countdown[hidden]{display:none!important}.mp-countdown-num{color:#f0ebe0;text-shadow:0 4px 24px #00000080;font:800 96px/1 Syne,IBM Plex Sans,sans-serif}.mp-countdown-label{color:#8a8070;letter-spacing:.2em;text-transform:uppercase;margin-top:8px;font:600 13px IBM Plex Sans,sans-serif}.mp-banner{z-index:30;border-radius:2px;padding:8px 14px;font:13px IBM Plex Sans,sans-serif;position:fixed;left:50%;transform:translate(-50%)}.mp-banner[hidden]{display:none!important}.mp-freeze{color:#fd8;background:#281c08e6;border:1px solid #864;top:48px}.mp-spectator{color:#c8b896;background:#100e0ae6;border:1px solid #524838;top:48px}.mp-voice{z-index:25;background:#0a0c0aeb;border:1px solid #2c2820;border-radius:2px;align-items:center;gap:10px;padding:8px 12px;display:flex;position:fixed;bottom:16px;left:16px}.mp-voice[hidden]{display:none!important}.mp-voice-btn{min-width:72px}.mp-voice-hint{color:#8a8070;font:11px IBM Plex Mono,monospace}
