:root{font-family:Inter,Microsoft YaHei,system-ui,sans-serif;color:#19312d;background:#f2f6f4;font-synthesis:none;--surface: #fff;--surface-soft: #f7faf8;--line: #dce7e2;--muted: #6c817b;--green: #317f6d;--green-soft: #e8f4ef;--amber: #ae7017;--amber-soft: #fff4dc;--red: #b54c4c;--red-soft: #fff0ef;--shadow: 0 14px 40px rgba(38, 67, 59, .07)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.46}.app-shell{width:min(1500px,calc(100% - 32px));margin:0 auto;padding:16px 0 36px}.app-header{display:grid;grid-template-columns:auto minmax(220px,1fr) auto;align-items:center;gap:14px;margin-bottom:14px}.brand-lockup{display:flex;align-items:baseline;gap:10px;white-space:nowrap}.brand-lockup strong{font-size:1.25rem;letter-spacing:-.02em}.brand-lockup span{color:var(--muted);font-size:.9rem;font-weight:700}.header-mission{min-width:0;display:flex;justify-content:center}.eyebrow{margin:0;color:var(--green);font-size:.75rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase}.header-statuses{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.status-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;font-size:.82rem;font-weight:700;white-space:nowrap}.status-badge:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.status-success{color:var(--green);background:var(--green-soft)}.status-warning{color:var(--amber);background:var(--amber-soft)}.status-danger{color:var(--red);background:var(--red-soft)}.status-neutral{color:#63736f;background:#edf1ef}.panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.main-grid{display:grid;grid-template-columns:minmax(0,1.72fr) minmax(360px,.9fr);gap:16px;align-items:start}.video-workbench{min-width:0;display:grid;gap:12px}.video-panel,.telemetry-panel,.timeline-details,.rescue-panel,.release-panel{padding:16px}.operations-sidebar{min-width:0;display:grid;gap:12px;align-content:start}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.panel-heading h2,.placeholder-card h2{margin:4px 0 0;font-size:1.2rem}.panel-note,.muted{color:var(--muted);font-size:.82rem}.panel-note{margin:-8px 0 16px}.video-stage{position:relative;overflow:hidden;aspect-ratio:16 / 9;border-radius:12px;background:#101715;color:#fff}.video{width:100%;height:100%;display:block;object-fit:contain;background:#101715}.video-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;text-align:center;padding:24px;color:#dce7e2;background:radial-gradient(circle at 50% 40%,#263b36,#101715 68%)}.video-placeholder span{border:1px solid #6c817b;border-radius:99px;padding:5px 9px;font-size:.7rem;letter-spacing:.12em}.video-placeholder strong{margin-top:14px;font-size:1.2rem}.video-placeholder p{margin:7px 0 0;color:#a9b9b4}.vision-overlay{position:absolute;z-index:1;pointer-events:none}.vision-box{position:absolute;display:block;border:2px solid #ffd381;border-radius:4px;box-shadow:0 0 0 1px #0000008c,inset 0 0 0 1px #00000059}.vision-box-person_in_water{border-color:#ffcf6a}.vision-box-rescue_equipment{border-color:#77e5c8}.vision-box-marker_buoy{border-color:#8cc8ff}.video-hud{position:absolute;left:14px;right:64px;bottom:14px;display:flex;flex-wrap:wrap;gap:8px;opacity:0;transform:translateY(8px);transition:opacity .25s,transform .25s;pointer-events:none}.video-hud.hud-visible{opacity:1;transform:translateY(0)}.video-hud span{padding:7px 10px;border-radius:8px;background:#08120fb8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:.76rem}.video-hud .hud-warning{color:#ffd381;border:1px solid rgba(255,211,129,.45)}.video-hud .hud-danger{color:#ffaaa5;border:1px solid rgba(255,170,165,.5)}.video-hud .hud-simulation{color:#18110a;background:#ffd381;font-weight:800}.fullscreen-float{display:none;position:absolute;right:14px;bottom:14px;color:#fff;background:#08120fb8;border:1px solid rgba(255,255,255,.25);border-radius:8px;padding:7px 10px}.video-stage:fullscreen{width:100vw;height:100vh;aspect-ratio:auto;border-radius:0}.video-stage:fullscreen .radar-minimap{width:230px;top:22px;right:22px}.video-stage:fullscreen .fullscreen-float{display:block}.video-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:14px}.video-actions>span{margin-left:auto;color:var(--muted);font-size:.82rem}.primary-button,.secondary-button,.danger-button,.icon-button,.placeholder-card button{min-height:42px;border-radius:11px;padding:9px 15px;border:1px solid transparent}.primary-button{color:#fff;background:var(--green)}.secondary-button,.icon-button,.placeholder-card button{color:#2d5148;background:var(--surface-soft);border-color:var(--line)}.danger-button{color:var(--red);background:var(--red-soft);border-color:#f3cecb}.radar-minimap{position:absolute;top:14px;right:14px;z-index:2;width:184px;padding:8px;border:1px solid rgba(255,255,255,.22);border-radius:12px;color:#fff;background:#071210b8;box-shadow:0 12px 32px #00000038;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none}.radar-topline{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.radar-topline strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.76rem}.radar-topline span{flex:none;color:#bfe7dc;font-size:.62rem;font-weight:800}.radar-demo .radar-topline span{color:#ffd381}.radar-minimap svg{width:100%;height:auto;display:block;border-radius:10px;background:#ffffff0a}.radar-range{fill:none;stroke:#ffffff2e;stroke-width:1.2}.radar-zone{fill:#57c6a82e;stroke:#7ce0c6;stroke-width:1.8;stroke-dasharray:4 3}.radar-zone-center{fill:#8ff3dc;stroke:#00000073;stroke-width:1}.radar-bearing{stroke:#ffffff6b;stroke-width:1.2;stroke-dasharray:3 3}.radar-uav{fill:#ffd381;stroke:#00000085;stroke-width:1}.radar-uav-stale{opacity:.46}.radar-status{margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d8eee8;font-size:.68rem;font-weight:800}.radar-waiting{min-height:80px;display:grid;place-items:center;border:1px dashed rgba(255,255,255,.24);border-radius:10px;color:#b8ccc7;font-size:.78rem;font-weight:800;background:#ffffff0a}.radar-empty{opacity:.82}.flight-summary-strip{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:stretch;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow)}.summary-status{min-width:150px;display:grid;align-content:center;gap:6px;padding:8px 10px;border-radius:11px;background:var(--surface-soft)}.summary-status small{color:var(--muted);font-size:.68rem}.summary-metrics{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.summary-metrics .metric{padding:8px 9px}.summary-metrics .metric strong{font-size:.9rem}.summary-stale .summary-metrics{opacity:.58;filter:grayscale(.45)}.telemetry-panel{min-width:0}.detail-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,.65fr);gap:16px;margin-top:16px;align-items:start}.detail-grid .telemetry-primary-grid{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(360px,1.5fr) minmax(240px,1fr);gap:14px}.detail-grid .telemetry-primary-grid>.telemetry-section{padding-bottom:0}.detail-grid .telemetry-details[open]{padding-top:2px}.detail-grid .telemetry-details>section{padding-bottom:0}.panel-stale .telemetry-section,.panel-stale .telemetry-details{opacity:.55;filter:grayscale(.55)}.telemetry-section{padding:14px 0;border-top:1px solid var(--line);transition:opacity .2s}.telemetry-section h3{margin:0 0 10px;font-size:.86rem}.section-title-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.section-title-row>span{color:var(--muted);font-size:.72rem}.metric-grid,.debug-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.metric-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{min-width:0;padding:9px 10px;border-radius:10px;background:var(--surface-soft)}.metric span{display:block;margin-bottom:4px;color:var(--muted);font-size:.68rem}.metric strong{display:block;overflow-wrap:anywhere;font-size:.86rem;font-variant-numeric:tabular-nums}.metric-prominent{background:#f0f7f4}.metric-prominent strong{color:#255c4f;font-size:1rem}.tone-danger strong{color:var(--red)}.tone-success strong{color:var(--green)}.tone-warning strong{color:var(--amber)}.battery-value{font-size:1.2rem}.battery-normal{color:var(--green)}.battery-low{color:var(--amber)}.battery-critical{color:var(--red)}.battery-unknown{color:var(--muted)}.battery-track{height:7px;overflow:hidden;margin:2px 0 10px;border-radius:99px;background:#edf1ef}.battery-fill{display:block;height:100%;background:currentColor;border-radius:inherit;transition:width .3s}.telemetry-details{border-top:1px solid var(--line)}.telemetry-details>summary{padding:14px 0 0;cursor:pointer;color:var(--green);font-size:.84rem;font-weight:700}.rescue-panel{position:relative;min-width:0;overflow:hidden}.rescue-panel .panel-heading{margin-bottom:12px}.rescue-empty>p{margin:0 0 14px;color:var(--muted);font-size:.82rem;line-height:1.55}.readiness-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.readiness-list>div{padding:9px 10px;border-radius:10px;background:var(--surface-soft)}.readiness-list span,.readiness-list strong{display:block}.readiness-list span{margin-bottom:3px;color:var(--muted);font-size:.68rem}.readiness-list strong{font-size:.8rem}.demo-ribbon,.real-ribbon{margin:-20px -20px 16px;padding:7px 20px;font-size:.72rem;font-weight:800;letter-spacing:.04em}.demo-ribbon{color:#76500f;background:var(--amber-soft)}.real-ribbon{color:#1f6556;background:var(--green-soft)}.rescue-heading h2{font-size:1.45rem}.risk-badge{align-self:center;padding:7px 11px;border-radius:8px;font-size:.8rem;font-weight:800}.risk-badge-warning{color:var(--amber);background:var(--amber-soft)}.risk-badge-critical{color:var(--red);background:var(--red-soft)}.risk-badge-resolved{color:var(--green);background:var(--green-soft)}.event-summary{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:12px;border-radius:11px;background:var(--surface-soft)}.event-summary strong{font-size:.92rem}.event-summary span{color:var(--muted);font-size:.72rem;white-space:nowrap}.trigger-list{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 12px}.trigger-list span{padding:5px 8px;border-radius:999px;color:#8d3f3f;background:var(--red-soft);font-size:.7rem;font-weight:700}.incident-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0}.incident-facts>div{min-width:0;padding:8px 9px;border:1px solid var(--line);border-radius:9px}.incident-facts dt{margin-bottom:3px;color:var(--muted);font-size:.65rem}.incident-facts dd{margin:0;overflow-wrap:anywhere;font-size:.76rem;font-weight:700}.rescue-steps{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;margin:14px 0 0;padding:0;list-style:none}.rescue-steps li{min-width:0;display:grid;justify-items:center;gap:5px;color:#9aaca7;text-align:center}.rescue-steps li span{width:22px;height:22px;display:grid;place-items:center;border:1px solid #cbd7d3;border-radius:50%;font-size:.65rem;font-weight:800}.rescue-steps li em{font-size:.58rem;font-style:normal;line-height:1.25}.rescue-steps .step-done,.rescue-steps .step-current{color:var(--green)}.rescue-steps .step-done span{color:#fff;border-color:var(--green);background:var(--green)}.rescue-steps .step-current span{border:2px solid var(--green);background:var(--green-soft)}.demo-note{margin:12px 0 0;color:var(--amber);font-size:.68rem;text-align:center}.event-queue{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px;padding:9px;border-radius:10px;background:var(--surface-soft)}.event-queue strong{width:100%;color:var(--muted);font-size:.68rem}.event-queue span{padding:5px 8px;border-radius:999px;color:#255c4f;background:var(--green-soft);font-size:.7rem;font-weight:800}.gateway-error{margin:10px 0 0;padding:8px 10px;border-radius:9px;color:var(--red);background:var(--red-soft);font-size:.76rem;font-weight:800}.rescue-feedback{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.rescue-feedback-anomaly{border-top-color:#efb8b2}.rescue-feedback-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.rescue-feedback-heading h3{margin:0;font-size:.88rem}.rescue-feedback-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0}.rescue-feedback-grid>div{min-width:0;padding:8px 9px;border-radius:9px;background:var(--surface-soft)}.rescue-feedback-grid dt{margin-bottom:3px;color:var(--muted);font-size:.64rem}.rescue-feedback-grid dd{margin:0;overflow-wrap:anywhere;font-size:.76rem;font-weight:800}.rescue-feedback-grid .feedback-positive{background:var(--green-soft)}.rescue-feedback-grid .feedback-positive dd{color:var(--green)}.rescue-feedback-grid .feedback-danger{background:var(--red-soft)}.rescue-feedback-grid .feedback-danger dd{color:var(--red)}.event-list{max-height:390px;overflow:auto;display:grid;gap:9px}.event{display:grid;grid-template-columns:72px 1fr;gap:12px;padding:11px 12px;border-left:3px solid #9aaca7;background:var(--surface-soft);border-radius:9px}.event time{color:var(--muted);font-size:.75rem}.event strong{font-size:.86rem}.event p{margin:3px 0 0;color:var(--muted);font-size:.78rem}.event-success{border-color:var(--green)}.event-warning{border-color:var(--amber)}.event-danger{border-color:var(--red)}.empty-state{min-height:110px;display:grid;place-items:center;color:var(--muted);text-align:center}.placeholder-stack{display:grid;gap:14px}.status-digest{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-left:3px solid #9aaca7;border-radius:10px;background:var(--surface-soft)}.status-digest div{min-width:0}.status-digest span,.status-digest time{color:var(--muted);font-size:.68rem}.status-digest strong{display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem}.status-digest time{flex:none;font-variant-numeric:tabular-nums}.status-digest-success{border-color:var(--green)}.status-digest-warning{border-color:var(--amber)}.status-digest-danger{border-color:var(--red)}.timeline-details{overflow:hidden;box-shadow:none}.timeline-details>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none}.timeline-details>summary::-webkit-details-marker{display:none}.timeline-details>summary span{color:var(--green);font-size:.8rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.timeline-details>summary strong{color:var(--muted);font-size:.78rem}.timeline-details .event-list,.timeline-details .empty-state{margin-top:14px}.location-overview{padding:14px;overflow:hidden}.location-overview .panel-heading{margin-bottom:12px}.location-overview .panel-heading h2{margin:4px 0 0;font-size:1.2rem}.location-brief-empty{display:grid;gap:4px;padding:12px;border-radius:11px;background:var(--surface-soft)}.location-brief-empty strong{font-size:.9rem}.location-brief-empty span{color:var(--muted);font-size:.74rem}.location-demo-note{margin:0 0 10px;padding:7px 10px;border-radius:8px;color:#76500f;background:var(--amber-soft);font-size:.7rem;font-weight:800;text-align:center}.location-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px}.location-summary>div{min-width:0;padding:9px 10px;border-radius:10px;background:var(--surface-soft)}.location-summary span,.location-summary strong{display:block}.location-summary span{margin-bottom:3px;color:var(--muted);font-size:.66rem}.location-summary strong{overflow-wrap:anywhere;font-size:.8rem}.location-summary-brief{margin-bottom:8px}.location-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:0}.location-facts>div{min-width:0;padding:8px;border-radius:9px;background:var(--surface-soft)}.location-facts dt{margin-bottom:3px;color:var(--muted);font-size:.63rem}.location-facts dd{margin:0;overflow-wrap:anywhere;font-size:.74rem;font-weight:700}.placeholder-card{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px}.placeholder-card p{margin:7px 0 0;color:var(--muted);line-height:1.5;font-size:.82rem}.planning-label{display:inline-block;padding:4px 7px;border-radius:6px;color:var(--amber);background:var(--amber-soft);font-size:.68rem;font-weight:800}.disabled-actions{display:flex;gap:8px}.release-panel{min-width:0}.release-panel-anomaly{border-color:#efb8b2}.release-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.release-alert{margin:12px 0 0;padding:9px 10px;border-radius:9px;color:var(--red);background:var(--red-soft);font-size:.78rem;font-weight:800}.release-note{margin:12px 0 0;color:var(--muted);font-size:.78rem;line-height:1.55}.release-config-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.release-config-row span{padding:6px 8px;border-radius:8px;color:#4f625d;background:var(--surface-soft);font-size:.72rem;font-weight:700}.release-config-row .config-missing{color:var(--amber);background:var(--amber-soft)}.debug-panel{margin-top:20px;overflow:hidden;box-shadow:none}.debug-panel>summary{padding:17px 20px;cursor:pointer;font-weight:700}.debug-content{display:grid;gap:22px;padding:20px;border-top:1px solid var(--line)}.debug-content h3{margin:0 0 10px;font-size:.95rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid label{display:grid;gap:6px;color:var(--muted);font-size:.8rem}input{width:100%;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:9px;color:#19312d;background:var(--surface-soft);outline:none}input:focus{border-color:#85b7aa;box-shadow:0 0 0 3px #e5f1ed}.debug-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.simulation-controls{padding:14px;border:1px solid #efd697;border-radius:12px;background:#fffaed}.simulation-controls p{color:var(--muted)}.simulation-controls strong{display:block;margin-top:10px;color:var(--red)}.simulation-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.simulation-groups>div{padding:12px;border:1px solid #efd697;border-radius:10px;background:#ffffff8c}.simulation-groups h4{margin:0 0 9px;font-size:.82rem}.simulation-buttons{display:flex;flex-wrap:wrap;gap:8px}.log-box,.raw-stats,.error-box{max-height:250px;overflow:auto;margin:0;padding:13px;border-radius:10px;color:#556b65;background:#f4f7f5;font:.75rem/1.6 Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.log-box p{margin:0}.error-box{color:#8f3d3d;background:var(--red-soft)}@media(max-width:1120px){.app-header{grid-template-columns:1fr;align-items:start}.header-mission{justify-content:flex-start}.main-grid,.detail-grid{grid-template-columns:1fr}.operations-sidebar{order:2}.detail-grid .telemetry-primary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid .battery-section{grid-column:1 / -1}.summary-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.debug-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:700px){.app-shell{width:min(100% - 20px,1460px);padding-top:12px}.app-header{align-items:flex-start;flex-direction:column}.brand-lockup{flex-wrap:wrap}.header-statuses{justify-content:flex-start}.video-panel,.telemetry-panel,.timeline-details,.rescue-panel,.release-panel{padding:13px}.panel-heading{align-items:center}.icon-button{padding:8px 10px;font-size:.78rem}.flight-summary-strip{grid-template-columns:1fr;gap:8px}.summary-status{min-width:0;grid-template-columns:auto 1fr;align-items:center}.summary-metrics{display:flex;gap:7px;overflow-x:auto;padding-bottom:2px}.summary-metrics .metric{min-width:112px}.metric-grid-3,.metric-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid .telemetry-primary-grid{grid-template-columns:1fr;gap:0}.detail-grid .battery-section{grid-column:auto}.video-actions>span{width:100%;margin-left:0}.radar-minimap{top:8px;right:8px;width:132px;padding:6px;border-radius:10px}.radar-topline{margin-bottom:4px}.radar-topline strong{font-size:.64rem}.radar-topline span{font-size:.56rem}.radar-status{margin-top:4px;font-size:.58rem}.radar-waiting{min-height:56px;font-size:.66rem}.video-hud{left:8px;right:8px;bottom:8px;gap:5px}.video-hud span{padding:5px 7px;font-size:.66rem}.placeholder-card{align-items:flex-start;flex-direction:column}.release-status-grid,.rescue-feedback-grid,.location-summary{grid-template-columns:1fr}.location-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid,.debug-grid,.simulation-groups{grid-template-columns:1fr}.demo-ribbon,.real-ribbon{margin:-13px -13px 13px;padding:7px 13px}.event-summary{align-items:flex-start;flex-direction:column}.incident-facts{grid-template-columns:1fr}.rescue-steps{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:9px}}
