:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f4f1e8;color:#202329;--ink: #202329;--muted: #697071;--paper: #fffaf0;--panel: #fffdf7;--line: #d7cfbf;--strong-line: #8a8173;--sea: #1e8f8a;--sea-dark: #106461;--coral: #df5b48;--gold: #d5a021;--green: #2f8b57;--danger: #b84035;--shadow: 0 18px 40px rgb(55 45 28 / .14)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:linear-gradient(90deg,rgb(32 35 41 / .035) 1px,transparent 1px),linear-gradient(rgb(32 35 41 / .035) 1px,transparent 1px),radial-gradient(circle at 17% 9%,rgb(30 143 138 / .1),transparent 24rem),linear-gradient(135deg,#f5f1e7,#ece6d9);background-size:34px 34px,34px 34px,auto,auto}button,input,select{font:inherit}button{min-height:44px;border:1px solid var(--line);border-radius:8px;background:#fffaf0;color:var(--ink);cursor:pointer;font-weight:750;transition:transform .12s ease,border-color .12s ease,background .12s ease,color .12s ease}button:hover:not(:disabled){transform:translateY(-1px);border-color:var(--strong-line)}button:active:not(:disabled){transform:translateY(0)}button:disabled{cursor:not-allowed;opacity:.48}input,select{width:100%;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:.72rem .82rem;background:#fffef9;color:var(--ink)}label{display:grid;gap:.4rem;font-size:.82rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:0}h1,h2,h3,p{margin-block-start:0}h1{margin-block-end:.75rem;font-size:clamp(2.2rem,6vw,5.1rem);line-height:.94;letter-spacing:0}h2{margin-block-end:.85rem;font-size:1.35rem;line-height:1.08;letter-spacing:0}h3{margin-block-end:.6rem;font-size:.9rem;letter-spacing:0}.home{min-height:100vh;display:grid;place-items:center;padding:1rem}.home-panel{width:min(1120px,100%);min-height:min(680px,calc(100vh - 2rem));display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:2rem;align-items:end;padding:clamp(1rem,4vw,3.5rem);border:1px solid var(--line);border-radius:8px;background:linear-gradient(110deg,#fffaf0f0,#fffaf0b3),repeating-linear-gradient(135deg,rgb(30 143 138 / .1) 0 10px,transparent 10px 22px);box-shadow:var(--shadow)}.lede{max-width:52rem;margin-block-end:0;color:#424944;font-size:clamp(1rem,1.7vw,1.32rem);line-height:1.45}.kicker{margin-block-end:.6rem;color:var(--coral);font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:0}.home-actions,.join-card,.panel{border:1px solid var(--line);border-radius:8px;background:#fffdf7f5;box-shadow:var(--shadow)}.home-actions{display:grid;gap:.8rem;padding:1rem}.join-row,.compact-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.6rem}.primary{border-color:var(--sea-dark);background:var(--sea);color:#fff}.danger{border-color:#a5362c;background:var(--danger);color:#fff}.error,.ok,.muted{margin-block-end:0;line-height:1.4}.error{padding:.7rem .8rem;border:1px solid rgb(184 64 53 / .45);border-radius:8px;background:#df5b481c;color:#8e2b23;font-weight:800}.ok{color:var(--green);font-weight:800}.muted{color:var(--muted)}.page{width:min(1480px,100%);margin:0 auto;padding:.85rem}.topbar{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:auto auto 1fr;gap:.6rem;align-items:center;padding:.6rem;border:1px solid var(--line);border-radius:8px;background:#fffdf7f0;box-shadow:0 10px 24px #372d1c14;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar nav{display:flex;gap:.45rem;justify-content:flex-end;overflow-x:auto;scrollbar-width:none}.topbar nav button,.brand,.room-pill,.status-pill{min-height:38px;white-space:nowrap}.brand{border-color:transparent;background:transparent;font-weight:900}.room-pill,.status-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:8px;padding:0 .8rem;font-weight:900}.room-pill{background:var(--ink);color:#fff}.status-pill{border:1px solid var(--line);background:#efe9db;color:var(--ink)}.lobby-grid{display:grid;grid-template-columns:minmax(320px,.74fr) minmax(420px,1.26fr);gap:.85rem;margin-block-start:.85rem}.panel{padding:1rem}.join-card{display:grid;gap:.75rem;margin-block:1rem;padding:.9rem;box-shadow:none}.link-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin-block:1rem}.host-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.teams{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.team-card{border:1px solid var(--line);border-radius:8px;padding:.75rem;background:#fbf5e9}.role-row{width:100%;display:grid;grid-template-columns:minmax(88px,.8fr) minmax(0,1.2fr);gap:.5rem;align-items:center;margin-block-end:.45rem;padding:.52rem .6rem;text-align:left}.role-row span{color:var(--muted);font-size:.85rem}.role-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-row.mine{border-color:var(--sea-dark);background:#1e8f8a24}.player-list{display:flex;flex-wrap:wrap;gap:.45rem}.player-list span{border:1px solid var(--line);border-radius:999px;padding:.42rem .62rem;background:#fff;font-size:.88rem}.phone-page{max-width:1180px}.role-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.58fr);gap:.85rem;margin-block-start:.85rem;align-items:start}.role-layout.narrow{grid-template-columns:minmax(0,1fr) minmax(260px,.42fr)}.role-header{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:1rem;background:var(--ink);color:#fff}.role-header h1{margin:0;font-size:clamp(2rem,7vw,4rem)}.role-header .kicker{color:#f4c04e}.health-row{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.health-row span{border:1px solid rgb(255 255 255 / .24);border-radius:8px;padding:.5rem .7rem}.health-row span:nth-child(2){text-transform:capitalize}.controls-panel{display:grid;gap:.65rem}.direction-pad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.direction-pad button:first-child,.direction-pad button:last-child{grid-column:2}.direction-pad button:nth-child(2){grid-column:1;grid-row:2}.direction-pad button:nth-child(3){grid-column:2;grid-row:2}.direction-pad button:nth-child(4){grid-column:3;grid-row:2}.direction-pad button:last-child{grid-row:3}.map-panel{display:grid;gap:.65rem;padding:.8rem}.map-title{display:flex;justify-content:space-between;gap:.75rem;align-items:end}.map-title h2{margin:0}.map-title span{color:var(--muted);font-size:.86rem;font-weight:800;white-space:nowrap}.map-svg{width:100%;aspect-ratio:1.315;min-height:360px;border:1px solid var(--line);border-radius:8px;background:#e5f3ed;touch-action:none;-webkit-user-select:none;user-select:none}.map-bg{fill:#dff0ea}.sector-box{fill:#fffaf029;stroke:#1064618c;stroke-width:2.5}.sector-label{fill:#106461b3;font-size:22px;font-weight:950;text-anchor:middle;dominant-baseline:middle}.coord{fill:#5a625d;font-size:18px;font-weight:900;text-anchor:middle;dominant-baseline:middle}.dot{fill:#fffdf7;stroke:#78938e;stroke-width:2}.dot.island,.island{fill:#5d584c;stroke:#3e3a33}.route-line{fill:none;stroke:var(--sea-dark);stroke-width:8;stroke-linejoin:round;stroke-linecap:round}.radio-line{fill:none;stroke:var(--coral);stroke-width:7;stroke-dasharray:12 10;stroke-linejoin:round;stroke-linecap:round}.sub-position{fill:var(--sea);stroke:#fffdf7;stroke-width:5}.mine-mark{fill:#9e3027;font-size:24px;font-weight:950;text-anchor:middle}.mine-mark.spent{fill:#7c817b;opacity:.55}.pin-dot{fill:#df5b4838;stroke:var(--coral);stroke-width:5}.pin-label{fill:#7d2f28;font-size:17px;font-weight:900;paint-order:stroke;stroke:#fffaf0;stroke-width:4}.selection{fill:none;stroke:var(--gold);stroke-width:6;stroke-dasharray:8 8}.map-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem}.map-controls button:disabled{opacity:.45}.sheet-panel{display:grid;gap:.8rem}.gauge-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.gauge-card{display:grid;gap:.55rem;justify-items:start;min-height:82px;padding:.65rem;text-align:left;text-transform:capitalize}.gauge-card.ready{border-color:var(--green);background:#2f8b571f}.gauge{display:flex;gap:.3rem}.gauge i{width:16px;height:16px;border:1px solid var(--strong-line);border-radius:999px;background:#fff}.gauge i.filled{background:var(--gold)}.system-actions{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.55rem;align-items:end}.breakdown-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.breakdown-card{border:1px solid var(--line);border-radius:8px;padding:.75rem;background:#fbf5e9}.breakdown-card.active{border-color:var(--sea-dark);box-shadow:inset 0 0 0 2px #1e8f8a38}.symbol-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}.symbol{min-height:40px;padding-inline:.3rem;overflow-wrap:anywhere;font-size:.8rem}.symbol:disabled{background:#eee8da}.symbol.red{border-color:#ab372f;color:#8c2d27}.symbol.green{border-color:#337a50;color:#27613e}.symbol.yellow{border-color:#b78b24;color:#765710}.team-board-page{max-width:1600px}.team-board{display:grid;grid-template-columns:minmax(230px,.28fr) minmax(0,1fr);gap:.85rem;margin-block-start:.85rem}.board-rail{border:1px solid var(--line);border-radius:8px;padding:1rem;background:#fffdf7;box-shadow:var(--shadow)}.board-rail h1{font-size:clamp(2rem,5vw,3.6rem)}.board-main{display:grid;gap:.65rem}.board-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem}.board-tabs button.active{border-color:var(--sea-dark);background:var(--sea);color:#fff}.board-maps{display:grid;gap:.85rem}.board-maps.split{grid-template-columns:repeat(2,minmax(0,1fr))}.board-maps.single{grid-template-columns:minmax(0,1fr)}.board-crew{display:grid;grid-template-columns:minmax(260px,.4fr) minmax(0,.6fr);gap:.85rem}.team-board .map-svg{min-height:500px}.event-log{margin-block-start:.85rem}.event-log.compact{display:grid;gap:.35rem;max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:.6rem;background:#fbf5e9}.event-log p{display:grid;grid-template-columns:6.2rem minmax(0,1fr);gap:.65rem;align-items:baseline;margin-block-end:.45rem;color:#414540}.event-log time{color:var(--muted);font-size:.82rem;font-variant-numeric:tabular-nums}.public-tv{min-height:100vh;padding:clamp(1rem,2vw,2rem);background:linear-gradient(90deg,rgb(255 255 255 / .06) 1px,transparent 1px),linear-gradient(rgb(255 255 255 / .06) 1px,transparent 1px),#202329;background-size:52px 52px;color:#fffaf0}.tv-hero,.tv-team,.public-tv .event-log{border:1px solid rgb(255 250 240 / .18);border-radius:8px;background:#fffaf012}.tv-hero{min-height:260px;display:flex;justify-content:space-between;align-items:end;gap:2rem;padding:clamp(1rem,4vw,2rem)}.tv-hero h1{margin:0;font-size:clamp(5rem,17vw,12rem);line-height:.8}.tv-status{border-radius:8px;padding:.8rem 1rem;background:var(--gold);color:#231f16;font-size:clamp(1.2rem,3vw,2.4rem);font-weight:950;text-transform:uppercase}.tv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-block-start:1rem}.tv-team{padding:clamp(1rem,3vw,2rem)}.tv-team h2{font-size:clamp(2rem,5vw,4rem)}.health{display:grid;grid-template-columns:repeat(4,minmax(50px,1fr));gap:.6rem;margin-block:1rem}.health i{height:clamp(42px,7vw,92px);border:2px solid rgb(255 250 240 / .5);border-radius:8px;background:#fffaf02e}.health i.hit{border-color:#ff8e7f;background:#df5b48}.tv-roster{display:grid;gap:.35rem;font-size:clamp(1.05rem,2vw,1.6rem)}.tv-roster p{margin-block-end:0}.public-tv .event-log p{color:#fffaf0}.public-tv .event-log time{color:#f4c04e}@media(max-width:1100px){.role-layout,.role-layout.narrow,.team-board,.lobby-grid,.board-maps.split,.board-crew{grid-template-columns:1fr}.team-board .map-svg{min-height:440px}}@media(max-width:760px){.home-panel{grid-template-columns:1fr;min-height:auto}.topbar{grid-template-columns:1fr auto}.status-pill{display:none}.topbar nav{grid-column:1 / -1;justify-content:flex-start}.teams,.link-grid,.host-controls,.tool-grid,.gauge-grid,.breakdown-grid,.system-actions,.tv-grid{grid-template-columns:1fr}.role-header,.tv-hero{align-items:stretch;flex-direction:column}.map-svg{min-height:310px}.map-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.event-log p{grid-template-columns:1fr;gap:.15rem}}
