:root{
  --bg:#050c16;--bg2:#081422;--panel:#0d1b2c;--panel2:#091625;--line:#213852;
  --text:#ecf5ff;--muted:#95aac1;--cyan:#35d4ff;--green:#45e1a0;--amber:#ffd166;
  --orange:#ff9f43;--red:#ff647d;--purple:#ad91ff;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:radial-gradient(circle at 18% 0%,#102942 0,#091725 34%,var(--bg) 82%);color:var(--text);font-family:Inter,Segoe UI,Roboto,Arial,sans-serif}
body{min-height:100vh;font-size:16px}
.topbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 28px;background:rgba(4,11,20,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
h1{margin:0;font-size:1.65rem;letter-spacing:.02em}h2{margin:0 0 8px;font-size:1.05rem}
.version-tag{font-size:.7rem;color:var(--cyan);border:1px solid #23617d;border-radius:999px;padding:3px 7px;vertical-align:middle}
.subtitle{font-size:.875rem;color:var(--muted);margin-top:5px}.header-right{display:flex;align-items:center;gap:10px}.utc-clock{font:700 .86rem Consolas,monospace;color:#bcd4ea}
.container{max-width:1580px;margin:0 auto;padding:22px}
.panel{background:linear-gradient(180deg,rgba(15,31,50,.98),rgba(8,20,34,.99));border:1px solid var(--line);border-radius:15px;box-shadow:0 14px 40px rgba(0,0,0,.14)}
.controls{padding:15px;display:grid;grid-template-columns:2.4fr .55fr .65fr .75fr .75fr auto;gap:10px;margin-bottom:14px}
.field label{display:block;font-size:.76rem;letter-spacing:.055em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
input,select,button,textarea{font:inherit}input,select{width:100%;height:44px;background:#061322;border:1px solid var(--line);border-radius:9px;color:var(--text);padding:0 11px;outline:none}
input[readonly]{color:#a8bed3;background:#0a1726}input:focus,select:focus,textarea:focus{border-color:#3d739d;box-shadow:0 0 0 2px rgba(53,212,255,.09)}
button{min-height:42px;border:1px solid #2c4867;background:#102640;color:var(--text);border-radius:9px;padding:0 14px;font-weight:750;cursor:pointer}
button:hover{border-color:#4b7ba4;filter:brightness(1.08)}button:disabled{cursor:wait;opacity:.65}
button.primary{background:linear-gradient(135deg,#087fa7,#18557f);border-color:#2a8ab2}button.danger{border-color:#70384a;color:#ff9aaa}.button-field{align-self:end}.button-field button{white-space:nowrap}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.metrics.six-metrics{grid-template-columns:repeat(3,1fr)}.metric{padding:16px}.metric-label{font-size:.75rem;color:var(--muted);letter-spacing:.065em}.metric-value{font-size:2.35rem;font-weight:900;margin:6px 0 2px}.metric-value.compact-value{font-size:1.55rem;line-height:1.35;min-height:3.17rem;display:flex;align-items:center}.metric-note{font-size:.82rem;color:var(--muted);line-height:1.35}
.cyan{color:var(--cyan)}.green{color:var(--green)}.amber{color:var(--amber)}.red{color:var(--red)}.purple{color:var(--purple)}
.pill,.badge,.source-chip{border:1px solid var(--line);border-radius:999px;padding:6px 10px;font-size:.76rem;white-space:nowrap}.badge{padding:4px 8px;color:var(--muted)}.pill.good{color:var(--green);border-color:#2a624e}.pill.warn{color:var(--amber);border-color:#6c6232}.pill.bad{color:var(--red);border-color:#733443}.muted{color:var(--muted)}
.tabs{display:flex;gap:7px;margin:3px 0 13px;overflow:auto}.tab{min-height:38px}.tab.active{background:#17385e;border-color:#3d739d;color:#e0f8ff}.tabpage{display:none}.tabpage.active{display:block}
.source-ribbon{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 13px}.source-chip.live{color:var(--cyan);border-color:#235f7d}.source-chip.annual{color:var(--amber);border-color:#6a5c2b}.source-chip.optional{color:#b8c7d7}.source-chip.optional.ready{color:var(--green);border-color:#2b624f}.source-chip.model{color:var(--purple);border-color:#55477c}
.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.dashboard-grid>.panel{padding:16px}.triple-grid{grid-template-columns:repeat(3,1fr)}
.section-title{font-weight:800;font-size:.98rem;display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:13px}.bars{display:grid;gap:10px}.bar-row{display:grid;grid-template-columns:105px 1fr 92px;align-items:center;gap:10px;font-size:.88rem}.track{height:13px;border:1px solid #1e344e;border-radius:20px;background:#04101c;overflow:hidden}.fill{height:100%;border-radius:20px;background:linear-gradient(90deg,#188dbb,#32d2c2)}.fill.amber-fill{background:linear-gradient(90deg,#a76a1a,#ffd166)}.fill.red-fill{background:linear-gradient(90deg,#9e3851,#ff647d)}.bar-rank{text-align:right;font-weight:800;font-size:.82rem}.empty-state{color:#7c92aa;font-size:.88rem;padding:15px 3px;line-height:1.5}
.table-wrap{overflow:auto}table{width:100%;border-collapse:separate;border-spacing:2px;font-size:.8rem}th,td{padding:8px 7px;border-bottom:1px solid #1b2d43;text-align:center;white-space:nowrap}th{color:#8da4bb;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}th:first-child,td:first-child{text-align:left;position:sticky;left:0;background:#0c1a2b;z-index:2}.heat{font-weight:800;border-radius:5px;border-bottom-color:transparent}.heat-high{background:#623043;color:#ff9cac}.heat-medhigh{background:#654528;color:#ffc47e}.heat-med{background:#55502b;color:#ffe591}.heat-low{background:#183f38;color:#82edc0}.heat-none{color:#61758c}
.priority-panel,.heat-panel{padding:16px;margin-bottom:14px}.priority-list{display:grid;gap:8px}.priority-item{display:grid;grid-template-columns:44px 1fr auto;gap:11px;align-items:center;padding:11px;border:1px solid #1f3853;border-radius:10px;background:#081827}.priority-num{font-size:1.18rem;font-weight:900;color:var(--cyan)}.priority-title{font-weight:800;font-size:.9rem}.priority-sub{font-size:.78rem;color:var(--muted);margin-top:3px;line-height:1.35}.priority-score{font-weight:900;color:var(--amber);font-size:.95rem}
.notice,.upload-panel{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:15px 17px;margin-bottom:14px;border-color:#315475}.notice p,.upload-panel p{max-width:960px;margin:0;color:#a9bbcf;font-size:.86rem;line-height:1.5}.notice-actions,.upload-actions{display:flex;gap:8px;flex-wrap:wrap}.notice.compact{padding:13px 15px}
.propagation-controls{padding:15px;display:grid;grid-template-columns:1.3fr .75fr .75fr 1fr 1fr auto;gap:10px;margin-bottom:12px}.path-summary{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:13px}.path-summary span{padding:7px 10px;background:#081827;border:1px solid #1f3853;border-radius:8px;color:#9fb4c9;font-size:.82rem}.path-summary span:first-child{color:var(--text);font-weight:800}
.schedule-controls{padding:15px;display:grid;grid-template-columns:1.4fr .7fr .7fr .75fr .8fr auto;gap:10px;margin-bottom:12px}.schedule-buttons>div{display:flex;gap:7px}.schedule-now-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.now-choice{border:1px solid #23415f;border-radius:11px;padding:12px;background:linear-gradient(150deg,#0a1d30,#071420)}.now-choice-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.now-choice-route{font-weight:900;color:var(--text)}.now-choice-score{font-size:1.2rem;font-weight:900;color:var(--amber)}.now-choice-detail{margin-top:6px;color:var(--muted);font-size:.78rem;line-height:1.45}.opening-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;color:var(--muted);font-size:.76rem}.opening-legend span{display:flex;align-items:center;gap:6px}.opening-legend i{width:11px;height:11px;border-radius:3px;display:inline-block}.legend-strong{background:#623043}.legend-usable{background:#654528}.legend-marginal{background:#55502b}.legend-closed{background:#183f38}.schedule-table td{min-width:116px;vertical-align:top}.schedule-table td:first-child{min-width:142px}.slot-main{font-weight:850;color:var(--text);line-height:1.35}.slot-sub{font-size:.72rem;color:var(--muted);line-height:1.35;margin-top:3px}.slot-score{color:var(--amber);font-weight:900}.schedule-note{margin-top:0}
.grayline-panel{padding:16px;margin-bottom:14px}.map-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:12px}.map-title{margin:0}.map-caption{margin:4px 0 0}.map-controls{display:flex;align-items:flex-end;justify-content:flex-end;gap:7px;flex-wrap:wrap}.map-controls button{min-height:40px}.map-time-field{width:205px}.map-time-field input{height:40px}.map-check{min-height:40px;display:flex;align-items:center;gap:7px;padding:0 9px;border:1px solid var(--line);border-radius:9px;background:#081827;color:var(--muted);font-size:.78rem;white-space:nowrap}.map-check input{width:16px;height:16px;margin:0}.map-stage{position:relative;border:1px solid #29445e;border-radius:12px;overflow:hidden;background:#07111d}.map-stage canvas{display:block;width:100%;height:auto;aspect-ratio:2/1}.map-key{position:absolute;left:10px;bottom:10px;display:flex;gap:11px;flex-wrap:wrap;padding:7px 9px;border:1px solid rgba(94,126,154,.45);border-radius:8px;background:rgba(3,10,18,.82);backdrop-filter:blur(6px);font-size:.72rem;color:#c0d1e0}.map-key span{display:flex;align-items:center;gap:5px}.map-key i{width:13px;height:9px;border-radius:2px;display:inline-block}.key-day{background:#bb8e3c}.key-gray{background:#ffd166}.key-night{background:#061224}.key-path{background:#ff647d}.map-readouts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.map-readouts>div{padding:10px 12px;border:1px solid #1e3750;border-radius:9px;background:#071624}.map-readouts span{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}.map-readouts strong{display:block;margin-top:4px;font-size:.86rem;line-height:1.35}.map-path-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.map-path-item{display:grid;grid-template-columns:10px 1fr auto;gap:8px;align-items:center;padding:9px 10px;border:1px solid #1e3750;border-radius:9px;background:#081827}.map-path-swatch{width:8px;height:26px;border-radius:5px}.map-path-title{font-size:.82rem;font-weight:850}.map-path-sub{font-size:.7rem;color:var(--muted);margin-top:2px}.map-path-score{font-size:.88rem;font-weight:900;color:var(--amber)}
.schedule-map-row{cursor:pointer}.schedule-map-row:hover td{outline:1px solid rgba(53,212,255,.35);outline-offset:-1px}
.upload-panel h2{margin-bottom:5px}.file-input{height:auto;max-width:360px;padding:9px;color:#bfd3e6}.empty-callout{padding:28px;text-align:center;color:#8ea4bb;margin-bottom:14px}.log-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.footnote{font-size:.76rem;color:#7e94aa;line-height:1.5;margin-top:10px}.warning-text{color:#9fae80}.status-card{padding:17px;min-height:180px}.clean-list{margin:8px 0 0;padding-left:20px;color:#acbed0;font-size:.88rem;line-height:1.75}.status-line{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid #1b2d42;padding:9px 0;font-size:.86rem}.status-line span:last-child{font-weight:750}.limitations{min-height:0}.limitations p{color:#adbed0;font-size:.88rem;line-height:1.6;margin:0}.hidden{display:none!important}
.mission-surface{background:var(--bg);padding:1px}.mission-controls{padding:15px;display:grid;grid-template-columns:1fr .7fr .65fr 1.15fr auto auto;gap:10px;margin-bottom:12px}.mission-metrics{grid-template-columns:repeat(4,1fr)}.mission-card{padding:16px}.mission-director{border-color:#31647c;box-shadow:0 0 35px rgba(53,212,255,.07)}.signal-form{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:7px}.signal-list{display:grid;gap:6px;margin-top:10px}.signal-report{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;color:#bcd0e2;font-size:.8rem}.signal-report button{min-height:28px;width:30px;padding:0}.station-config input,.station-config select{height:36px;min-width:110px}.station-config input[type=checkbox]{min-width:18px;width:18px;height:18px}.mission-surface:fullscreen{overflow:auto;padding:18px;background:radial-gradient(circle at 18% 0%,#102942 0,#091725 34%,var(--bg) 82%)}
.compare-controls{padding:15px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr auto;gap:10px;margin-bottom:12px}.comparison-winner{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px;margin-bottom:14px;border-color:#31765f;background:linear-gradient(135deg,#0b2930,#10213a)}.comparison-winner h2{font-size:1.4rem;margin:5px 0}.comparison-winner p{margin:0;color:#b7cadb}.comparison-kicker{color:var(--green);font-size:.75rem;font-weight:900;letter-spacing:.09em}.winner-score{font-size:3.5rem;font-weight:950;color:var(--green)}.comparison-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}.comparison-card{padding:15px}.comparison-card-head{display:flex;justify-content:space-between;gap:12px;align-items:center;padding-bottom:11px;border-bottom:1px solid var(--line)}.comparison-card-head strong{display:block;font-size:1rem}.comparison-card-head span{display:block;color:var(--muted);font-size:.75rem;margin-top:3px}.comparison-total{font-size:2rem;font-weight:950;color:var(--amber)}.feasibility-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.feasibility-grid label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.feasibility-grid input,.feasibility-grid select{height:38px;margin-top:5px;font-size:.8rem}.feasibility-grid .wide{grid-column:1/-1}.comparison-card-foot{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.comparison-card-foot span{padding:6px 8px;border:1px solid var(--line);border-radius:7px;color:var(--muted);font-size:.75rem}.comparison-card-foot b{color:var(--text)}
.travel-controls{padding:15px;margin-bottom:12px}.travel-fields{display:grid;grid-template-columns:1.1fr 1.2fr .8fr .55fr .55fr .55fr .75fr .9fr .65fr .65fr auto;gap:9px}.trip-range{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0 8px}.trip-range>div{padding:9px 7px;text-align:center;border:1px solid var(--line);border-radius:8px;background:#071624}.trip-range .expected{border-color:#5f7435;background:#17231c}.trip-range span{display:block;color:var(--muted);font-size:.65rem;letter-spacing:.06em}.trip-range b{display:block;margin-top:3px;font-size:.95rem}.trip-range .expected b{color:var(--green)}.trip-breakdown{display:flex;gap:6px;flex-wrap:wrap}.trip-breakdown span{flex:1;padding:7px;border:1px solid #1e3750;border-radius:7px;color:var(--muted);font-size:.7rem}.trip-breakdown b{display:block;color:var(--text);margin-top:2px}
.modal{position:fixed;inset:0;background:rgba(1,6,12,.84);z-index:100;display:none;align-items:center;justify-content:center;padding:20px}.modal.open{display:flex}.modal-card{width:min(880px,96vw);max-height:92vh;overflow:auto;background:#0a192a;border:1px solid #2d4969;border-radius:15px;padding:19px;box-shadow:0 30px 90px rgba(0,0,0,.48)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.modal-head p{margin:0;color:var(--muted);font-size:.83rem}.icon-btn{height:34px;width:34px;min-height:34px;padding:0;font-size:1.35rem}.modal textarea{width:100%;height:390px;margin-top:14px;border:1px solid var(--line);border-radius:9px;background:#04111e;color:#d0e5f8;padding:12px;font:12px/1.45 Consolas,Monaco,monospace;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:10px}
@media(max-width:1180px){.controls{grid-template-columns:2fr .6fr .7fr 1fr 1fr}.controls .button-field{grid-column:1/-1}.controls .button-field button{width:100%}.propagation-controls,.schedule-controls{grid-template-columns:repeat(3,1fr)}.metrics,.metrics.six-metrics,.log-metrics{grid-template-columns:1fr 1fr}.triple-grid{grid-template-columns:1fr 1fr}.schedule-now-grid{grid-template-columns:1fr 1fr}.map-toolbar{align-items:flex-start;flex-direction:column}.map-controls{justify-content:flex-start}.map-path-grid{grid-template-columns:1fr 1fr}}
@media(max-width:780px){.topbar{padding:15px}.utc-clock{display:none}.container{padding:12px}.controls,.propagation-controls,.schedule-controls{grid-template-columns:1fr 1fr}.entity-field{grid-column:1/-1}.metrics,.log-metrics{grid-template-columns:1fr 1fr}.dashboard-grid,.triple-grid{grid-template-columns:1fr}.notice,.upload-panel{align-items:flex-start;flex-direction:column}.metric-value{font-size:2rem}.topbar .pill{display:none}.bar-row{grid-template-columns:78px 1fr 78px}.schedule-now-grid,.map-path-grid{grid-template-columns:1fr}.map-readouts{grid-template-columns:1fr}.map-controls{width:100%}}
@media(max-width:500px){body{font-size:15px}.controls,.propagation-controls,.schedule-controls,.metrics,.metrics.six-metrics,.log-metrics{grid-template-columns:1fr}.priority-item{grid-template-columns:34px 1fr}.priority-score{grid-column:2}.bar-row{grid-template-columns:65px 1fr 65px}.section-title{align-items:flex-start;flex-direction:column}.upload-actions{width:100%}.file-input{max-width:100%}.schedule-buttons>div{display:grid}.schedule-buttons button{width:100%}.map-time-field{width:100%;order:-1}.map-controls button{flex:1}.map-check{flex:1}.map-key{position:static;border-width:1px 0 0;border-radius:0}.map-stage canvas{aspect-ratio:1.65/1}}
@media(max-width:1180px){.mission-controls{grid-template-columns:repeat(3,1fr)}.mission-metrics{grid-template-columns:1fr 1fr}}
@media(max-width:780px){.mission-controls{grid-template-columns:1fr 1fr}.signal-form{grid-template-columns:1fr 1fr}}
@media(max-width:500px){.mission-controls,.mission-metrics,.signal-form{grid-template-columns:1fr}}
@media(max-width:1180px){.compare-controls{grid-template-columns:1fr 1fr}.comparison-cards{grid-template-columns:1fr 1fr}}
@media(max-width:1180px){.travel-fields{grid-template-columns:repeat(4,1fr)}}
@media(max-width:780px){.comparison-cards{grid-template-columns:1fr}.comparison-winner{align-items:flex-start}.winner-score{font-size:2.5rem}}
@media(max-width:780px){.travel-fields{grid-template-columns:1fr 1fr}}
@media(max-width:500px){.compare-controls,.feasibility-grid{grid-template-columns:1fr}.feasibility-grid .wide{grid-column:auto}}
@media(max-width:500px){.travel-fields{grid-template-columns:1fr}.trip-range{grid-template-columns:1fr}}
@media print{body *{visibility:hidden}.mission-surface,.mission-surface *{visibility:visible}.mission-surface{position:absolute;inset:0;background:#fff;color:#000}.mission-controls,.notice,button{display:none!important}.panel{box-shadow:none}.mission-card,.priority-panel,.metric{break-inside:avoid}}
