:root{--panel-bg: #1b2430;--panel-border: #2e3b4d;--text: #e8edf2;--text-dim: #9fb0c2;--accent: #4da3ff;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:#0f151c;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif}.app{display:flex;flex-direction:column;min-height:100vh}.app__header{padding:.75rem 1rem;border-bottom:1px solid var(--panel-border)}.app__header h1{margin:0 0 .25rem;font-size:1.25rem}.app__header-status{margin:0;color:var(--text-dim);font-size:.9rem}.app__view-mode,.app__acting-side{margin-top:.5rem}.app__acting-side-label{align-self:center;font-size:.85rem;color:var(--text-dim)}.app__error{margin:.4rem 0 0;padding:.4rem .6rem;background:#ff5a5a26;border:1px solid #ff5a5a;border-radius:6px;color:#ffb3b3;font-size:.85rem}.lobby__info{margin:.4rem 0 0;padding:.4rem .6rem;background:#4da3ff1f;border:1px solid var(--accent);border-radius:6px;color:#c5e0ff;font-size:.85rem}.unit-row{display:flex;flex-direction:column;gap:.35rem;padding:.5rem 0;font-size:.85rem}.unit-row+.unit-row{border-top:1px solid var(--panel-border)}.unit-row select,.unit-row input[type=text],.unit-row input[type=number]{background:#0f151c;border:1px solid var(--panel-border);color:var(--text);border-radius:4px;padding:.25rem .4rem;font-size:.8rem}.unit-row input[type=number]{width:4rem}.app__body{display:flex;flex-direction:column;flex:1;min-height:0;position:relative}.app__sidebar{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;overflow-y:auto}.app__map{flex:1;min-height:60vh;overflow:auto;background:#05080b;padding:.5rem}.app__ops-shelf{margin-top:.5rem}.ops-shelf__reopen{position:absolute;top:.75rem;left:.75rem;z-index:2}.app__body--ops-ops .app__sidebar{flex:1;width:auto;max-width:none;border-right:none}@media (min-width: 900px){.app__body--ops-ops .app__sidebar{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));align-content:start;gap:.75rem}.app__body--ops-ops .app__sidebar>.panel{margin:0}}@media (min-width: 768px){.app{height:100vh}.app__body{flex-direction:row}.app__body--ops-ops{flex-direction:column}.app__sidebar{width:320px;flex:0 0 320px;border-right:1px solid var(--panel-border)}.app__body--ops-collapsed .app__map,.app__map{min-height:0}}.panel{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:8px;padding:.75rem}.panel h2{margin:0 0 .5rem;font-size:.95rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}.panel h3{margin:.5rem 0 .25rem;font-size:.9rem}.panel__hint{margin:0 0 .5rem;font-size:.8rem;color:var(--text-dim)}.kv{display:grid;grid-template-columns:auto 1fr;gap:.15rem .75rem;margin:0}.kv dt{color:var(--text-dim)}.kv dd{margin:0;text-align:right}.kv-list{list-style:none;margin:0;padding:0;font-size:.9rem}.oob-side+.oob-side{margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--panel-border)}.button-row{display:flex;flex-wrap:wrap;gap:.4rem}.button-row button{flex:1 1 auto;padding:.4rem .6rem;border:1px solid var(--panel-border);border-radius:6px;background:#263344;color:var(--text);cursor:pointer;font-size:.85rem}.button-row button:hover:not(:disabled){border-color:var(--accent)}.button-row button.active{border-color:var(--accent);background:#2c4a6e}.button-row button:disabled{opacity:.5;cursor:not-allowed}.board-skin{display:flex;flex-direction:column;gap:.5rem;height:100%;min-height:0}.board-skin__zoom-controls{flex:0 0 auto}.board-skin__scroll{flex:1;min-height:0;overflow:auto}.board-skin__overlay{display:block;height:auto}.board-skin__overlay--fit{width:100%}.board-skin__overlay--100{width:3854px}.board-skin__sea-backdrop{fill:#3cf}.board-skin__hex{fill:transparent;stroke:#ffffff1f;stroke-width:1;cursor:pointer}.board-skin__hex--land{fill:#3cb45a24}.board-skin__hex--coast{fill:#e6aa1e33}.hex-overlay--significant{stroke:#ffffff80;stroke-width:1.5;stroke-dasharray:3 2}.hex-overlay--cloud{fill:#d2e1ff38;stroke:#d2e1ff8c}.hex-overlay--storm{fill:url(#board-skin__storm-hatch);stroke:#ff5a5ae6;stroke-width:2}.hex-overlay--weather-focus{stroke:#ffd166;stroke-width:3;stroke-dasharray:none;fill:#ffd1662e}.board-skin__storm-hatch-bg{fill:#ff5a5a29}.board-skin__storm-hatch-line{stroke:#ff5a5a8c;stroke-width:2}.hex-overlay--contact-1{fill:#ffc83c24;stroke:#ffc83c73}.hex-overlay--contact-2{fill:#ffa02838;stroke:#ffa02899}.hex-overlay--contact-3{fill:#ff6e1e4d;stroke:#ff6e1ecc;stroke-width:1.5}.board-skin__hex:hover{fill:#ffff0040;stroke:#ff09}.board-skin__hex--selected{stroke:var(--accent);stroke-width:2.5}.board-skin__hex--path{fill:#4da3ff38;stroke:var(--accent);stroke-width:1.5;pointer-events:none}.board-skin__path-order{font-size:9px;fill:var(--text);pointer-events:none;font-weight:600}.board-skin__marker-dot{stroke:#05080b;stroke-width:1;pointer-events:none}.board-skin__marker-label{font-size:8px;fill:#05080b;font-weight:700;pointer-events:none}.lobby{max-width:40rem;margin:2rem auto;padding:0 1rem 3rem}.lobby h1{margin:0 0 .5rem}.lobby__muted{color:var(--text-dim);font-size:.9rem}.lobby__form{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem}.lobby__form label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem}.lobby__form input,.lobby__join input,.lobby__inline-label input{padding:.45rem .6rem;border-radius:6px;border:1px solid var(--panel-border);background:#0f151c;color:var(--text)}.lobby__inline-label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;max-width:20rem}.lobby__section{margin:1rem 0}.lobby__join{display:flex;gap:.5rem;flex-wrap:wrap}.lobby__games{list-style:none;padding:0;margin:0 0 .75rem}.lobby__games li{margin:.35rem 0}.lobby__linkish{color:var(--accent);background:none;border:none;padding:0;cursor:pointer;text-decoration:underline;font:inherit}.online-chrome{margin-top:.5rem}.online-chrome code{font-size:.8rem}.online-chrome__toast,.online-chrome__seats{margin-top:.5rem;max-width:36rem}.phase-complete{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--panel-border)}.panel--phase-complete .phase-complete{margin-top:0;padding-top:0;border-top:none}.phase-complete__primary{font-weight:600}.weather-report{display:flex;flex-direction:column;gap:.5rem}.weather-report__line{display:flex;flex-direction:column;gap:.25rem}.weather-report__toggle{align-self:flex-start;font-size:.85rem}.weather-report__units{list-style:none;margin:0;padding:0 0 0 .5rem;display:flex;flex-wrap:wrap;gap:.35rem .75rem}.weather-report__units li{margin:0}
