.three-stage[data-v-0f559ed3],.three-viewport[data-v-0f559ed3]{position:absolute;inset:0}.three-viewport[data-v-0f559ed3]{background:#0a0d10;overflow:hidden}.three-viewport[data-v-0f559ed3] .waterway-main-canvas{display:block;width:100%;height:100%;touch-action:none;-webkit-user-select:none;user-select:none}.viewport-hud[data-v-0f559ed3]{position:absolute;left:calc(var(--stage-inset-left, 264px) + 12px);bottom:calc(var(--timeline-h, 56px) + 12px);z-index:12;display:flex;flex-direction:column;gap:var(--space-2);align-items:flex-start;pointer-events:none}.viewport-hud[data-v-0f559ed3]>*{pointer-events:auto}.hud-tools[data-v-0f559ed3]{display:flex;gap:var(--space-2)}.hud-btn[data-v-0f559ed3]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--line-2);border-radius:var(--radius-1);background:color-mix(in srgb,var(--surface-1) 88%,transparent);color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.hud-btn[data-v-0f559ed3]:hover{border-color:var(--accent);color:var(--text-hi)}.hud-btn.is-active[data-v-0f559ed3]{border-color:var(--accent);color:var(--accent)}.hud-layers[data-v-0f559ed3]{display:flex;flex-direction:column;gap:4px;min-width:168px;padding:8px 10px;border:1px solid var(--line-1);border-radius:var(--radius-2);background:color-mix(in srgb,var(--surface-1) 88%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.hud-layer-row[data-v-0f559ed3]{display:flex;align-items:center;gap:var(--space-2);color:var(--text);font-size:var(--font-label);line-height:1.6;cursor:pointer;-webkit-user-select:none;user-select:none}.hud-layer-row[data-v-0f559ed3]:hover{color:var(--text-hi)}.hud-layer-row input[data-v-0f559ed3]{accent-color:var(--accent)}.hud-time[data-v-0f559ed3]{display:grid;gap:4px;margin-top:4px;padding-top:7px;border-top:1px solid var(--line-0)}.hud-time__head[data-v-0f559ed3]{display:flex;align-items:center;gap:var(--space-2)}.hud-time__head .hud-val[data-v-0f559ed3]{margin-left:auto}.hud-time__follow[data-v-0f559ed3]{padding:1px 6px;border:1px solid var(--line-2);border-radius:var(--radius-1);background:transparent;color:var(--text-dim);font-size:var(--font-label);cursor:pointer}.hud-time__follow[data-v-0f559ed3]:hover:not(:disabled){border-color:var(--accent);color:var(--text-hi)}.hud-time__follow[data-v-0f559ed3]:disabled{border-color:var(--line-0);color:var(--text-faint);cursor:default}.hud-time input[type=range][data-v-0f559ed3]{width:100%;accent-color:var(--accent)}.hud-alt[data-v-0f559ed3]{display:flex;align-items:center;gap:var(--space-2);margin-top:4px;padding-top:7px;border-top:1px solid var(--line-0);color:var(--text-dim)}.hud-alt input[type=range][data-v-0f559ed3]{flex:1;min-width:0;accent-color:var(--accent)}.hud-coords[data-v-0f559ed3]{min-width:168px;padding:7px 10px;border:1px solid var(--line-1);border-radius:var(--radius-2);background:color-mix(in srgb,var(--surface-1) 88%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.hud-row[data-v-0f559ed3]{display:flex;justify-content:space-between;gap:var(--space-3);line-height:1.55}.hud-key[data-v-0f559ed3]{color:var(--text-dim);font-size:var(--font-label)}.hud-val[data-v-0f559ed3]{color:var(--text-hi);font-family:var(--font-mono);font-size:var(--font-label);font-variant-numeric:tabular-nums}.three-viewport-error[data-v-0f559ed3]{position:absolute;left:50%;bottom:calc(var(--timeline-h, 56px) + 16px);transform:translate(-50%);padding:4px 12px;border:1px solid var(--danger);border-radius:var(--radius-1);background:var(--surface-1);color:var(--danger-text);font-size:12px}.timeline-control[data-v-2c298ae2]{position:absolute;right:0;bottom:0;left:0;z-index:14;display:flex;align-items:center;gap:var(--space-6);height:var(--timeline-h);padding:0 var(--space-5);border-top:1px solid var(--line-2);background:var(--surface-1)}.timeline-transport[data-v-2c298ae2]{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--space-3)}.timeline-play[data-v-2c298ae2]{display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--line-1);border-radius:var(--radius-1);color:var(--text-hi);background:transparent;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.timeline-play[data-v-2c298ae2]:hover{background:var(--surface-2)}.timeline-speeds[data-v-2c298ae2]{display:flex;align-items:center;gap:2px}.timeline-speeds button[data-v-2c298ae2]{min-width:32px;height:24px;padding:0 4px;border:0;border-radius:var(--radius-1);color:var(--text-dim);background:transparent;font-size:11px;font-weight:500;font-variant-numeric:tabular-nums;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.timeline-speeds button[data-v-2c298ae2]:hover{color:var(--text);background:var(--surface-2)}.timeline-speeds button.is-active[data-v-2c298ae2]{color:var(--accent-text);background:var(--accent-dim)}.timeline-middle[data-v-2c298ae2]{flex:1 1 auto;min-width:0;align-self:stretch;display:flex;flex-direction:column;justify-content:center;gap:3px}.timeline-ruler[data-v-2c298ae2]{flex:0 0 auto;min-width:0}.timeline-track-shell[data-v-2c298ae2]{position:relative;height:38px}.timeline-future-shade[data-v-2c298ae2]{position:absolute;top:0;height:18px;background:#e0a6360f;pointer-events:none}.timeline-minor-ticks[data-v-2c298ae2]{position:absolute;top:4px;right:0;left:0;height:8px;background-image:repeating-linear-gradient(to right,var(--line-1) 0,var(--line-1) 1px,transparent 1px,transparent var(--minor-step-percent))}.timeline-major-marks[data-v-2c298ae2]{position:absolute;inset:0}.timeline-mark[data-v-2c298ae2]{position:absolute;top:0;width:1px;transform:translate(-50%)}.timeline-major-tick[data-v-2c298ae2]{display:block;width:1px;height:14px;background:var(--line-2)}.timeline-mark-label[data-v-2c298ae2]{position:absolute;top:22px;left:50%;color:var(--text-dim);font-size:10px;font-weight:500;font-variant-numeric:tabular-nums;line-height:1;white-space:nowrap;transform:translate(-50%)}.timeline-mark.is-start[data-v-2c298ae2]{transform:none}.timeline-mark.is-start .timeline-mark-label[data-v-2c298ae2]{left:0;transform:none}.timeline-mark.is-end[data-v-2c298ae2]{transform:translate(-1px)}.timeline-mark.is-end .timeline-mark-label[data-v-2c298ae2]{right:0;left:auto;transform:none}.timeline-now-line[data-v-2c298ae2]{position:absolute;top:0;z-index:1;width:0;height:18px;border-left:1px dashed var(--warn);transform:translate(-50%)}.timeline-hover-line[data-v-2c298ae2]{position:absolute;top:0;z-index:1;width:1px;height:18px;background:var(--text-dim);transform:translate(-50%);pointer-events:none}.timeline-hover-tooltip[data-v-2c298ae2]{position:absolute;bottom:calc(100% - 2px);z-index:3;padding:2px 6px;border:1px solid var(--line-2);border-radius:var(--radius-1);color:var(--text-hi);background:var(--surface-3);font-family:var(--font-mono);font-size:10px;line-height:1.4;white-space:nowrap;transform:translate(-50%);pointer-events:none}.timeline-current-line[data-v-2c298ae2]{position:absolute;top:0;left:var(--current-percent);z-index:1;width:2px;height:18px;background:var(--accent);transform:translate(-50%)}.timeline-range[data-v-2c298ae2]{position:absolute;top:-6px;left:0;z-index:2;width:100%;height:30px;margin:0;appearance:none;background:transparent;cursor:pointer;outline:none}.timeline-range[data-v-2c298ae2]::-webkit-slider-runnable-track{height:30px;background:transparent}.timeline-range[data-v-2c298ae2]::-webkit-slider-thumb{width:18px;height:30px;border:0;appearance:none;background:transparent}.timeline-range[data-v-2c298ae2]::-moz-range-track{height:30px;background:transparent}.timeline-range[data-v-2c298ae2]::-moz-range-thumb{width:18px;height:30px;border:0;background:transparent}.timeline-datazoom[data-v-2c298ae2]{position:relative;flex:0 0 auto;height:16px;overflow:hidden;border:1px solid var(--line-0);border-radius:var(--radius-1);background:var(--surface-0);cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none}.dz-region[data-v-2c298ae2]{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.dz-region.is-forecast[data-v-2c298ae2]{background:#e0a6360f}.dz-region span[data-v-2c298ae2]{color:var(--text-faint);font-size:9px;line-height:1;letter-spacing:2px}.dz-now[data-v-2c298ae2]{position:absolute;top:0;bottom:0;z-index:1;width:0;border-left:1px dashed var(--warn);transform:translate(-50%);pointer-events:none}.dz-playhead[data-v-2c298ae2]{position:absolute;top:0;bottom:0;z-index:1;width:2px;background:var(--accent);transform:translate(-50%);pointer-events:none}.dz-window[data-v-2c298ae2]{position:absolute;top:0;bottom:0;z-index:2;border:1px solid var(--line-2);background:#4fa8d814;cursor:grab;transition:border-color var(--transition-fast)}.dz-window.is-zoomed[data-v-2c298ae2]{border-color:var(--accent)}.dz-window[data-v-2c298ae2]:active{cursor:grabbing}.dz-handle[data-v-2c298ae2]{position:absolute;top:0;bottom:0;z-index:3;width:7px;cursor:ew-resize}.dz-handle[data-v-2c298ae2]:after{content:"";position:absolute;top:3px;bottom:3px;left:2px;width:3px;border-radius:1px;background:var(--text-dim)}.dz-window.is-zoomed .dz-handle[data-v-2c298ae2]:after{background:var(--accent-text)}.dz-handle.is-start[data-v-2c298ae2]{left:-4px}.dz-handle.is-end[data-v-2c298ae2]{right:-4px}.timeline-readout[data-v-2c298ae2]{flex:0 0 auto;color:var(--text);font-family:var(--font-mono);font-size:12px;white-space:nowrap}@media(max-width:700px){.timeline-control[data-v-2c298ae2]{gap:var(--space-3);padding:0 var(--space-3)}.timeline-readout[data-v-2c298ae2]{display:none}.timeline-speeds button[data-v-2c298ae2]{min-width:28px}.timeline-mark-label[data-v-2c298ae2]{font-size:9px}}:root{color-scheme:dark;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-app);color:var(--text);font-variant-numeric:tabular-nums;--bg-app: #0a0d10;--surface-0: #101418;--surface-1: #14191e;--surface-2: #1a2026;--surface-3: #212830;--line-0: #232a31;--line-1: #2c343d;--line-2: #3a444f;--text-hi: #e8edf2;--text: #c3ccd5;--text-dim: #8b97a3;--text-faint: #5c6873;--accent: #4fa8d8;--accent-text: #8ec9e8;--accent-dim: rgba(79, 168, 216, .14);--ok: #55b36e;--warn: #e0a636;--danger: #e05d55;--ok-text: #8fd2a4;--warn-text: #ecc47f;--danger-text: #efa19b;--ok-dim: rgba(85, 179, 110, .12);--warn-dim: rgba(224, 166, 54, .12);--danger-dim: rgba(224, 93, 85, .14);--space-1: 4px;--space-2: 6px;--space-3: 8px;--space-4: 10px;--space-5: 12px;--space-6: 16px;--space-7: 24px;--gap: var(--space-5);--radius-1: 2px;--radius-2: 3px;--shadow-modal: 0 8px 24px rgba(0, 0, 0, .5);--shadow-toast: 0 4px 12px rgba(0, 0, 0, .4);--font-mono: "SF Mono", Menlo, Consolas, "Roboto Mono", monospace;--font-label: 10px;--font-body: 12px;--focus-ring: 0 0 0 1px var(--bg-app), 0 0 0 3px var(--accent);--transition-fast: .16s ease;--transition-base: .2s ease;--ease-out: cubic-bezier(.23, 1, .32, 1);--topbar-h: 44px;--rail-left-w: 264px;--rail-right-w: 380px;--timeline-h: 82px;--roster-h: 278px;--stage-inset-left: var(--rail-left-w);--stage-inset-right: var(--rail-right-w)}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}button{cursor:pointer;font:inherit}.ui-panel{border:1px solid var(--line-2);border-radius:var(--radius-2);background:var(--surface-1)}.panel-titlebar{display:flex;align-items:center;gap:var(--space-3);min-height:36px;padding:0 var(--space-5);border-bottom:1px solid var(--line-1)}.panel-titlebar__title{min-width:0;color:var(--text-hi);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-titlebar__sub{flex:0 0 auto;color:var(--text-dim);font-size:var(--font-label)}.panel-titlebar__trail{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--space-2);margin-left:auto}.section-title{display:flex;align-items:baseline;gap:var(--space-2);color:var(--text-dim);font-size:var(--font-label);font-weight:500;letter-spacing:.08em}.section-title__count{margin-left:auto;color:var(--text-faint);font-size:var(--font-label);letter-spacing:0}.ui-row{display:grid;gap:3px;width:100%;min-width:0;padding:var(--space-3) var(--space-4);border:0;border-bottom:1px solid var(--line-0);background:transparent;color:var(--text);text-align:left}.ui-row:last-child{border-bottom:0}.ui-row__head{display:flex;align-items:center;gap:var(--space-2);min-width:0}.ui-row__title{min-width:0;color:var(--text-hi);font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-row__meta{flex:0 0 auto;margin-left:auto;color:var(--text-dim);font-size:var(--font-label)}.ui-row__desc{margin:0;color:var(--text-dim);font-size:var(--font-body);line-height:1.5}.ui-row--risk{box-shadow:inset 2px 0 0 var(--danger)}.ui-row--warn{box-shadow:inset 2px 0 0 var(--warn)}.ui-row--ok{box-shadow:inset 2px 0 0 var(--ok)}.ui-row--accent{box-shadow:inset 2px 0 0 var(--accent)}button.ui-row,.ui-row.is-clickable{cursor:pointer}button.ui-row:hover,.ui-row.is-clickable:hover{background:var(--surface-2)}.ui-row.is-selected{background:var(--surface-3)}.ui-row.is-selected .ui-row__title{color:var(--accent-text)}.status-tag{display:inline-flex;align-items:center;gap:4px;height:18px;padding:0 6px;border:1px solid var(--line-1);border-radius:var(--radius-1);background:transparent;color:var(--text-dim);font-size:var(--font-label);font-weight:500;white-space:nowrap}.status-tag--ok{border-color:var(--ok);color:var(--ok-text)}.status-tag--warn{border-color:var(--warn);color:var(--warn-text)}.status-tag--risk{border-color:var(--danger);color:var(--danger-text)}.status-tag--accent{border-color:var(--accent);color:var(--accent-text)}.status-tag--solid{border-color:var(--danger);background:var(--danger);color:#160908;font-weight:600}.ui-tabs{display:flex;align-items:center;gap:var(--space-4);min-width:0;overflow-x:auto;scrollbar-width:none}.ui-tabs::-webkit-scrollbar{display:none}.ui-tab{flex:0 0 auto;padding:4px 0 5px;border:0;border-bottom:2px solid transparent;background:none;color:var(--text-dim);font-size:11px;font-weight:500;white-space:nowrap;cursor:pointer}.ui-tab:hover{color:var(--text)}.ui-tab.is-active{border-bottom-color:var(--accent);color:var(--text-hi)}.kv-list{display:grid;margin:0}.kv{display:flex;align-items:baseline;gap:var(--space-4);min-width:0;padding:6px 0;border-bottom:1px solid var(--line-0)}.kv:last-child{border-bottom:0}.kv>dt,.kv__label{flex:0 0 auto;margin:0;color:var(--text-dim);font-size:var(--font-label);font-weight:500;letter-spacing:.08em}.kv>dd,.kv__value{flex:1 1 auto;display:inline-flex;align-items:baseline;justify-content:flex-end;gap:var(--space-2);min-width:0;margin:0;color:var(--text-hi);font-size:13px;font-weight:600;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kv__unit{color:var(--text-dim);font-size:var(--font-label);font-weight:400}.kv[data-status=ok]>dd,.kv[data-status=ok] .kv__value{color:var(--ok-text)}.kv[data-status=warn]>dd,.kv[data-status=warn] .kv__value{color:var(--warn-text)}.kv[data-status=risk]>dd,.kv[data-status=risk] .kv__value{color:var(--danger-text)}.stat-strip{display:flex;align-items:stretch}.stat-strip__item{flex:1 1 0;display:grid;gap:2px;min-width:0;padding:var(--space-2) var(--space-4);border-left:1px solid var(--line-0)}.stat-strip__item:first-child{border-left:0;padding-left:0}.stat-strip__value{color:var(--text-hi);font-size:20px;font-weight:600;line-height:1.1}.stat-strip__label{color:var(--text-dim);font-size:var(--font-label);letter-spacing:.08em;white-space:nowrap}.stat-strip__item[data-status=risk] .stat-strip__value{color:var(--danger-text)}.stat-strip__item[data-status=warn] .stat-strip__value{color:var(--warn-text)}.figure{display:grid;gap:2px;min-width:0}.figure__value{color:var(--text-hi);font-family:var(--font-mono);font-size:20px;font-weight:600;line-height:1.1}.figure__label{color:var(--text-dim);font-size:var(--font-label);letter-spacing:.08em}.bar-meter{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:var(--space-3);min-width:0}.bar-meter__label{color:var(--text-dim);font-size:var(--font-label);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-meter__track{height:4px;border-radius:0;background:var(--surface-0);overflow:hidden}.bar-meter__fill{display:block;height:100%;background:var(--accent);transition:width var(--transition-base)}.bar-meter__fill[data-level=low]{background:var(--ok)}.bar-meter__fill[data-level=medium]{background:var(--warn)}.bar-meter__fill[data-level=high]{background:var(--danger)}.bar-meter__value{color:var(--text);font-size:11px;font-weight:600}.icon-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid transparent;border-radius:var(--radius-1);background:transparent;color:var(--text-dim);cursor:pointer}.icon-btn:hover{border-color:var(--line-1);background:var(--surface-2);color:var(--text-hi)}.icon-btn.is-active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent-text)}.ui-segmented{display:inline-flex;align-items:stretch;border:1px solid var(--line-1);border-radius:var(--radius-1);background:var(--surface-0);overflow:hidden}.ui-segmented button{border:0;border-left:1px solid var(--line-1);padding:4px 10px;background:transparent;color:var(--text-dim);font-size:11px;font-weight:500;white-space:nowrap;cursor:pointer}.ui-segmented button:first-child{border-left:0}.ui-segmented button:hover{color:var(--text)}.ui-segmented button.is-active{background:var(--surface-3);color:var(--text-hi)}.mono{font-family:var(--font-mono)}.ui-empty{margin:0;padding:var(--space-3) 0;color:var(--text-faint);font-size:var(--font-body);line-height:1.45}.ui-scroll{scrollbar-width:thin;scrollbar-color:var(--line-1) transparent}.ui-scroll::-webkit-scrollbar{width:6px;height:6px}.ui-scroll::-webkit-scrollbar-thumb{background:var(--line-1)}.ui-scroll::-webkit-scrollbar-thumb:hover{background:var(--line-2)}:where(.ui-row,.ui-tab,.icon-btn,.ui-segmented button,.vessel-list-item){transition:color var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast)}:where(.icon-btn,.ui-tab,.ui-segmented button):active{transform:scale(.98)}@media(prefers-reduced-motion:reduce){.toast-enter-from,.toast-leave-to,.panel-enter-from,.panel-leave-to,.modal-enter-from .feed-modal-card,.modal-leave-to .feed-modal-card{transform:none}.toast-move{transition:none}:where(.icon-btn,.ui-tab,.ui-segmented button):active{transform:none}}:where(.ui-row,.ui-tab,.icon-btn,.ui-segmented button,.vessel-list-item,button,input,[tabindex]):focus-visible{outline:none;box-shadow:var(--focus-ring)}.app-shell{position:relative;width:100%;height:100%;overflow:hidden;background:var(--bg-app)}:where(.smart-dashboard) button{border:0;color:inherit}.dashboard-topbar{position:absolute;top:0;left:0;right:0;z-index:12;display:flex;align-items:center;gap:var(--space-6);height:var(--topbar-h);padding:0 var(--space-5);border-bottom:1px solid var(--line-2);background:var(--surface-1)}.brand-block{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--space-3);min-width:0;color:var(--accent-text)}.brand-block strong{color:var(--text-hi);font-size:13px;font-weight:600;white-space:nowrap}.brand-block span{color:var(--text-dim);font-size:var(--font-label);white-space:nowrap}.topbar-nav{display:flex;align-items:center;gap:var(--space-5);min-width:0;align-self:stretch}.topbar-nav button{flex:0 0 auto;align-self:stretch;padding:0 2px;border-bottom:2px solid transparent;background:none;color:var(--text-dim);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast)}.topbar-nav button:hover{color:var(--text)}.topbar-nav button.is-active{border-bottom-color:var(--accent);color:var(--text-hi)}.topbar-breadcrumb{flex:0 1 auto;min-width:0;padding-left:var(--space-4);border-left:1px solid var(--line-1);color:var(--text-dim);font-size:var(--font-label);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alert-strip{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-4);min-width:0;margin-left:auto;overflow:hidden}.topbar-live{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;color:var(--text-dim);font-size:var(--font-label);font-weight:500;letter-spacing:.08em;white-space:nowrap}.topbar-live>i{width:6px;height:6px;border-radius:50%;background:currentColor}.topbar-live.is-live{color:var(--ok-text)}.topbar-live.is-replay{color:var(--accent-text)}.topbar-alerts{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 var(--space-3);border:1px solid var(--line-1);border-radius:var(--radius-1);background:transparent;color:var(--text);font-size:11px;font-weight:500;white-space:nowrap;transition:color var(--transition-fast),border-color var(--transition-fast)}.topbar-alerts.is-critical{border-color:var(--danger);color:var(--danger-text)}.topbar-alerts .blink-dot{width:6px;height:6px;border-radius:50%;background:var(--danger);animation:alert-blink 1s steps(1,end) infinite}.alert-count-critical{flex:0 0 auto;color:var(--danger-text);font-size:var(--font-label);font-weight:600}@keyframes alert-blink{0%,to{opacity:1}50%{opacity:.15}}.topbar-clock{flex:0 0 auto;color:var(--text);font-family:var(--font-mono);font-size:12px;white-space:nowrap}.topbar-assistant{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 var(--space-3);border:1px solid var(--line-1);border-radius:var(--radius-1);background:transparent;color:var(--text);font-size:11px;font-weight:500;white-space:nowrap;cursor:pointer;transition:color var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast)}.topbar-assistant:hover{background:var(--surface-2);color:var(--text-hi)}.mobile-assistant{display:none;position:absolute;right:12px;bottom:calc(var(--timeline-h) + 12px);z-index:20;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--line-2);border-radius:var(--radius-2);background:var(--surface-2);color:var(--text-hi)}.debug-gui{position:absolute;top:calc(var(--topbar-h) + 8px);right:calc(var(--stage-inset-right) + 8px);z-index:20;width:268px;max-width:calc(100vw - 24px);border:1px solid var(--line-2);background:var(--surface-1);color:var(--text);font-family:var(--font-mono);font-size:11px}.debug-gui.is-collapsed{width:138px}.debug-gui-title{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:27px;padding:0 8px;border:0;border-bottom:1px solid var(--line-1);color:var(--text-hi);background:var(--surface-0);font:inherit;text-align:left}.debug-gui-title:hover{background:var(--surface-2)}.debug-gui-title span{width:10px;color:var(--text-dim)}.debug-gui-title strong{flex:1 1 auto;font-size:12px;font-weight:600}.debug-gui-title b{flex:0 0 auto;color:var(--accent-text);font-size:10px;font-weight:600}.debug-gui-body{display:grid}.debug-gui-row{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:center;min-height:25px;border-top:1px solid var(--line-0);background:var(--surface-2)}.debug-gui-row:first-child{border-top:0}.debug-gui-row>span{min-width:0;height:100%;padding:6px 8px;border-right:1px solid var(--line-0);color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.debug-gui-row output{min-width:0;padding:6px 8px;color:var(--text-hi);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.debug-gui-action button{height:100%;min-height:25px;border:0;color:var(--text);background:var(--surface-3);font:inherit;cursor:pointer}.debug-gui-action button:hover{color:var(--text-hi)}.debug-gui-quality{display:flex;min-width:0}.debug-gui-quality button{flex:1;border-left:1px solid var(--line-1);padding:0 6px}.debug-gui-quality button:first-child{border-left:0}.debug-gui-quality button.is-active{color:var(--accent-text);background:var(--surface-2)}.debug-gui-range label{display:grid;grid-template-columns:minmax(0,1fr) 34px;align-items:center;gap:8px;min-width:0;padding:4px 8px}.debug-gui-range input{width:100%;min-width:0;accent-color:var(--accent)}.debug-gui-range output{padding:0;color:var(--accent-text);text-align:right}.scene-hover-card{position:absolute;z-index:18;display:grid;gap:3px;width:286px;max-width:calc(100vw - 24px);padding:var(--space-3) var(--space-4);border:1px solid var(--line-2);border-radius:var(--radius-2);background:var(--surface-1);pointer-events:none}.scene-hover-card span{display:block;color:var(--text-dim);font-size:var(--font-label);letter-spacing:.08em}.scene-hover-card strong{color:var(--text-hi);font-size:13px;font-weight:600}.scene-hover-card small{color:var(--text);font-size:var(--font-body);line-height:1.45}.ship-water-preview{position:relative;width:420px;max-width:100%;height:380px;overflow:hidden}.ship-water-preview-host,.ship-water-preview-canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.ship-water-preview-canvas:active{cursor:grabbing}.ship-water-preview-state{position:absolute;inset:0;z-index:1;display:grid;place-items:center;color:var(--text);background:var(--surface-0);font-size:13px;pointer-events:none}.ship-water-preview-state.is-error{color:var(--danger-text)}.follow-hint{position:absolute;bottom:calc(var(--timeline-h) + 12px);left:50%;transform:translate(-50%);z-index:12;display:inline-flex;align-items:center;justify-content:center;gap:8px;width:max-content;max-width:calc(100vw - 32px);min-height:32px;padding:4px 10px 4px 6px;border:1px solid var(--line-2);border-radius:var(--radius-2);color:var(--text);background:var(--surface-1);font-size:12px;font-weight:500;pointer-events:none}.follow-hint-modes{display:inline-flex;align-items:stretch;border:1px solid var(--line-2);border-radius:var(--radius-1);background:var(--surface-2);overflow:hidden;pointer-events:auto}.follow-hint-modes button{min-width:0;padding:2px 10px;border:0;border-left:1px solid var(--line-2);color:var(--text-dim);background:transparent;font:inherit;line-height:1.4;cursor:pointer;transition:color .16s ease,background .16s ease}.follow-hint-modes button:first-child{border-left:0}.follow-hint-modes button:hover{color:var(--text)}.follow-hint-modes button.is-active{color:var(--text-hi);background:var(--surface-3)}.follow-hint-key{display:inline-grid;place-items:center;min-width:34px;height:20px;padding:0 8px;border:1px solid var(--line-2);border-radius:var(--radius-1);color:var(--text-hi);background:var(--surface-2);line-height:1;white-space:nowrap}.loading-mask,.error-mask{position:absolute;inset:0;z-index:30;display:grid;place-content:center;gap:10px;padding:24px;background:var(--bg-app);text-align:center}.loading-title{font-size:18px;font-weight:600}.loading-subtitle{color:var(--text-dim)}.error-mask{color:var(--danger-text)}.mask-leave-active{transition:opacity .4s ease}.mask-leave-to{opacity:0}.cesium-viewer-bottom,.cesium-widget-credits{display:none!important}.overview-panel,.vessel-roster,.business-panel{position:absolute;z-index:10;background:var(--surface-1)}.app-shell.is-panels-collapsed{--stage-inset-left: 0px;--stage-inset-right: 0px}.app-shell.is-panels-collapsed .overview-panel,.app-shell.is-panels-collapsed .vessel-roster,.app-shell.is-panels-collapsed .business-panel{display:none}.overview-panel{top:var(--topbar-h);bottom:calc(var(--timeline-h) + var(--roster-h));left:0;display:flex;flex-direction:column;gap:var(--space-6);width:var(--rail-left-w);padding:var(--space-5);border-right:1px solid var(--line-2);overflow-y:auto}.business-panel{top:var(--topbar-h);right:0;bottom:var(--timeline-h);display:flex;flex-direction:column;min-height:0;width:var(--rail-right-w);padding:var(--space-4) var(--space-5);border-left:1px solid var(--line-2)}.overview-block{display:grid;gap:var(--space-3);min-width:0}.bar-meter-list{display:grid;gap:7px}.dir-icon{flex:0 0 auto;color:var(--accent);vertical-align:-1px}.tide-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);min-width:0;padding-top:var(--space-2);border-top:1px solid var(--line-0);color:var(--text-dim);font-size:var(--font-label)}.tide-line__state{flex:0 0 auto;color:var(--text);font-weight:500}.tide-line__event{flex:0 0 auto;display:inline-flex;align-items:center;gap:3px;font-family:var(--font-mono);white-space:nowrap}.tide-line__event.is-high{color:var(--accent-text)}.tide-line__event.is-low{color:var(--text-dim)}.traffic-ratio{display:flex;height:16px;overflow:hidden;border-radius:2px;background:var(--surface-3)}.traffic-ratio span{display:grid;place-items:center;min-width:0;overflow:hidden;background:color-mix(in srgb,var(--accent) 72%,#1c5968);color:#effcff;font-size:9px;white-space:nowrap}.traffic-ratio span+span{background:#526f79}.facility-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.facility-grid button{display:grid;grid-template-columns:14px minmax(0,1fr);gap:5px;min-width:0;padding:6px;border:1px solid var(--line-0);border-radius:var(--radius-1);background:var(--surface-2);color:var(--accent-text);text-align:left;cursor:pointer}.facility-grid button:hover{border-color:var(--line-2);background:var(--surface-3)}.facility-grid span{display:grid;min-width:0;gap:2px}.facility-grid strong{overflow:hidden;color:var(--text);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.facility-grid small{overflow:hidden;color:var(--text-faint);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.facility-grid b{grid-column:2;color:var(--text-dim);font-size:8px;font-weight:400}.feed-list{display:grid;min-width:0}.feed-row{display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:var(--space-3);width:100%;min-width:0;padding:6px 2px;border:0;border-bottom:1px solid var(--line-0);background:transparent;color:var(--text-dim);text-align:left;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.feed-row:last-child{border-bottom:0}.feed-row:hover{background:var(--surface-2);color:var(--text)}.feed-row__name{min-width:0;color:var(--text);font-size:var(--font-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-row__status{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;color:var(--text-dim);font-size:var(--font-label);white-space:nowrap}.feed-row__status i{width:5px;height:5px;border-radius:50%;background:var(--ok)}.feed-row__status[data-status=degraded] i{background:var(--warn)}.feed-row__status[data-status=offline] i{background:var(--text-faint)}.feed-row.is-offline,.feed-row.is-offline .feed-row__name{color:var(--text-faint)}.feed-row.feed-card{grid-template-columns:68px minmax(0,1fr) auto;padding:5px 2px}.feed-card>img{width:68px;height:38px;border:1px solid var(--line-1);border-radius:2px;object-fit:cover}.feed-card .feed-row__name{display:grid;gap:2px}.feed-card .feed-row__name strong{overflow:hidden;font-size:10px;font-weight:500;text-overflow:ellipsis}.feed-card .feed-row__name small{color:var(--text-faint);font-size:8px}.vessel-roster{left:0;bottom:var(--timeline-h);display:flex;flex-direction:column;width:var(--rail-left-w);height:var(--roster-h);min-height:0;padding:var(--space-3) var(--space-5);border-top:1px solid var(--line-2);border-right:1px solid var(--line-2)}.vessel-roster header{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.vessel-roster header strong{color:var(--text-dim);font-size:var(--font-label);font-weight:500;letter-spacing:.08em}.vessel-roster header span{color:var(--text-faint);font-size:var(--font-label)}.vessel-cols{display:grid;grid-template-columns:minmax(0,1fr) 44px 34px;gap:var(--space-3);padding:var(--space-2) 2px;border-bottom:1px solid var(--line-1);color:var(--text-faint);font-size:var(--font-label)}.vessel-cols span:nth-child(2){text-align:right}.vessel-cols span:nth-child(3){text-align:right}.vessel-list{display:grid;align-content:start;min-height:0;overflow-y:auto}.vessel-list-item{display:grid;grid-template-columns:minmax(0,1fr) 44px 34px;align-items:center;gap:var(--space-3);width:100%;padding:5px var(--space-2) 5px var(--space-3);border:0;border-bottom:1px solid var(--line-0);box-shadow:inset 2px 0 0 transparent;background:transparent;color:var(--text);text-align:left;cursor:pointer}.vessel-list-item:hover{background:var(--surface-2)}.vessel-list-item.is-selected{background:var(--surface-3)}.vessel-list-item.is-warning{box-shadow:inset 2px 0 0 var(--warn)}.vessel-list-item.is-risk{box-shadow:inset 2px 0 0 var(--danger)}.vessel-main{display:grid;gap:1px;min-width:0}.vessel-main strong,.vessel-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vessel-main strong{color:var(--text-hi);font-size:12px;font-weight:500}.vessel-main small{color:var(--text-dim);font-size:var(--font-label)}.vessel-speed{color:var(--text-hi);font-family:var(--font-mono);font-size:12px;font-weight:500;text-align:right;white-space:nowrap}.vessel-status{color:var(--ok-text);font-size:var(--font-label);text-align:right;white-space:nowrap}.vessel-status[data-status=warning]{color:var(--warn-text)}.vessel-status[data-status=risk]{color:var(--danger-text)}.rail-head{display:flex;align-items:center;gap:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--line-1)}.rail-head strong{min-width:0;color:var(--text-hi);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rail-head .status-tag{margin-left:auto}.rail-group{display:grid;gap:var(--space-2);min-width:0}.rail-rows{display:grid;min-width:0}.module-view{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--space-6);min-height:0;padding-top:var(--space-4);overflow:auto;padding-right:2px}.rail-head__sub{flex:0 0 auto;color:var(--text-faint);font-size:var(--font-label)}.kv .dir-icon{align-self:center}.dispatch-card{display:grid;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--line-1);border-radius:var(--radius-2);background:var(--surface-2)}.dispatch-card__head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.dispatch-delta{display:inline-flex;align-items:center;gap:1px;font-size:11px;font-weight:600;white-space:nowrap}.dispatch-delta.is-under{color:var(--ok-text)}.dispatch-delta.is-over{color:var(--danger-text)}.dispatch-card__message{margin:0;color:var(--text);font-size:var(--font-body);line-height:1.55}.dispatch-card__footer{padding-top:var(--space-2);border-top:1px solid var(--line-0);color:var(--text-faint);font-size:var(--font-label);letter-spacing:.08em}.segment-row{display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:var(--space-3);width:100%;min-width:0;padding:6px var(--space-3);border:0;border-bottom:1px solid var(--line-0);box-shadow:inset 2px 0 0 transparent;background:transparent;color:var(--text);text-align:left;cursor:pointer;transition:background var(--transition-fast)}.segment-row:last-child{border-bottom:0}.segment-row:hover{background:var(--surface-2)}.segment-row.is-selected{background:var(--surface-3);box-shadow:inset 2px 0 0 var(--accent)}.segment-row__id{color:var(--text);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.segment-row.is-selected .segment-row__id{color:var(--text-hi)}.figure-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4);padding:var(--space-2) 0}.figure__value small{color:var(--text-dim);font-size:11px;font-weight:400}.module-note{margin:0;padding:var(--space-3) var(--space-4);border-left:2px solid var(--accent);background:var(--surface-2);color:var(--text);font-size:var(--font-body);line-height:1.55}.module-hint{margin:0;color:var(--text-faint);font-size:var(--font-label)}.layer-toggle{position:relative;display:flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.layer-toggle input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.layer-toggle-track{position:relative;flex:0 0 auto;width:30px;height:16px;border:1px solid var(--line-2);border-radius:var(--radius-1);background:var(--surface-0);transition:background .2s ease,border-color .2s ease}.layer-toggle-track i{position:absolute;top:2px;left:2px;width:10px;height:10px;background:var(--text-dim);transition:transform .2s ease,background .2s ease}.layer-toggle input:checked+.layer-toggle-track{border-color:var(--accent);background:var(--accent-dim)}.layer-toggle input:checked+.layer-toggle-track i{transform:translate(14px);background:var(--accent-text)}.layer-toggle-text{color:var(--text);font-size:var(--font-body);font-weight:500}.prediction-view{overflow-x:hidden}.prediction-chart{height:188px;min-height:188px}.smart-dashboard .debug-gui{top:auto;right:calc(var(--stage-inset-right) + 8px);bottom:calc(var(--timeline-h) + 8px)}.page-ship-detail{position:fixed;inset:0;z-index:10;background:var(--bg-app)}.ship-detail-stage{position:absolute;top:var(--topbar-h);right:var(--rail-right-w);bottom:var(--timeline-h);left:0;overflow:hidden}.page-ship-detail .ship-water-preview{width:100%;height:100%}.ship-detail-rail{position:absolute;top:var(--topbar-h);right:0;bottom:var(--timeline-h);display:flex;flex-direction:column;min-height:0;width:var(--rail-right-w);border-top:0;border-right:0;border-bottom:0;border-radius:0}.ship-detail-rail .module-view{flex:1;min-height:0;padding:var(--space-4) var(--space-5)}.ship-detail-watermark{position:absolute;top:var(--space-4);left:var(--space-4);z-index:2;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);border:1px solid var(--line-1);border-radius:var(--radius-1);background:var(--surface-1);pointer-events:none}.ship-detail-watermark strong{color:var(--text-hi);font-size:12px;font-weight:600}.ship-detail-watermark span{color:var(--text-dim);font-size:var(--font-label)}.ship-detail-watermark__note{color:var(--text-faint)}.ship-detail-controls{position:absolute;left:var(--space-4);bottom:var(--space-4);z-index:2;display:flex;align-items:center;gap:8px}.ship-detail-control-group{display:inline-flex;align-items:stretch;overflow:hidden;border:1px solid var(--line-1);border-radius:var(--radius-1);background:var(--surface-1)}.ship-detail-control-group button{min-width:0;padding:5px 12px;border:0;border-left:1px solid var(--line-1);color:var(--text-dim);background:transparent;font-size:11px;font-weight:500;white-space:nowrap;cursor:pointer;transition:color .16s ease,background .16s ease}.ship-detail-control-group button:first-child{border-left:0}.ship-detail-control-group button:hover{color:var(--text)}.ship-detail-control-group button.is-active{background:var(--surface-3);color:var(--text-hi)}.ship-detail-control-group button:disabled{opacity:.55;cursor:wait}.ship-detail-empty{position:absolute;inset:var(--topbar-h) 0 var(--timeline-h);display:grid;place-items:center}.ship-detail-empty__card{display:grid;justify-items:center;gap:var(--space-4);padding:var(--space-6) var(--space-7)}.ship-detail-empty__card p{margin:0;color:var(--text);font-size:13px}.ship-detail-empty__action{padding:4px 14px;border:1px solid var(--line-2);border-radius:var(--radius-1);background:var(--surface-2);color:var(--text);font-size:12px;cursor:pointer;transition:border-color .16s ease,background .16s ease,color .16s ease}.ship-detail-empty__action:hover{border-color:var(--accent);background:var(--surface-3);color:var(--text-hi)}.ship-detail-daylight__slider{display:inline-flex;align-items:center;gap:var(--space-3);padding:0 10px;border-left:1px solid var(--line-1)}.ship-detail-daylight__slider input[type=range]{width:96px;accent-color:var(--accent);cursor:pointer}.ship-detail-daylight__slider output{min-width:34px;color:var(--text-dim);font-size:11px}.vessel-focus-hud{position:absolute;left:50%;bottom:calc(var(--timeline-h, 56px) + 16px);z-index:12;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);transform:translate(-50%);pointer-events:none}.vessel-focus-hud>*{pointer-events:auto}.speed-dial{--dial-color: var(--accent);position:relative;display:grid;place-items:center;width:148px;height:148px}.speed-dial[data-tone=warn]{--dial-color: var(--warn)}.speed-dial[data-tone=risk]{--dial-color: var(--danger)}.speed-dial svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}.speed-dial__track,.speed-dial__arc{fill:color-mix(in srgb,var(--surface-1) 62%,transparent);stroke-width:7}.speed-dial__track{stroke:color-mix(in srgb,var(--dial-color) 24%,var(--line-2))}.speed-dial__arc{fill:none;stroke:var(--dial-color);stroke-linecap:round;transition:stroke-dashoffset .45s ease,stroke .3s ease}.speed-dial__center{display:grid;justify-items:center;line-height:1.1;text-align:center}.speed-dial__value{color:var(--text-hi);font-size:34px;font-weight:600;font-variant-numeric:tabular-nums}.speed-dial__unit{color:var(--dial-color);font-size:var(--font-label);letter-spacing:.12em}.speed-dial__actual{margin-top:4px;color:var(--text-dim);font-size:var(--font-label);font-variant-numeric:tabular-nums}.speed-dial__caption{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:2px;color:var(--text);font-size:var(--font-label);white-space:nowrap;text-shadow:0 1px 4px rgb(0 0 0 / 55%)}.vessel-focus-resume{display:inline-flex;align-items:center;gap:5px;margin-top:18px;padding:3px 10px;border:1px solid var(--line-2);border-radius:var(--radius-1);background:color-mix(in srgb,var(--surface-1) 88%,transparent);color:var(--text);font-size:var(--font-label);cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.vessel-focus-resume:hover{border-color:var(--accent);color:var(--text-hi)}.vessel-detail-enter{flex:0 0 auto;display:grid;place-items:center;width:24px;height:24px;border-radius:var(--radius-1);background:transparent;color:var(--text-dim);cursor:pointer}.vessel-detail-enter:hover{background:var(--surface-2);color:var(--text-hi)}.vessel-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2) var(--space-4);margin:0;padding:var(--space-3) 0;border-bottom:1px solid var(--line-0)}.vessel-info-row{display:flex;justify-content:space-between;gap:var(--space-2);min-width:0}.vessel-info-row dt{flex:0 0 auto;color:var(--text-dim);font-size:var(--font-label)}.vessel-info-row dd{margin:0;overflow:hidden;color:var(--text-hi);font-size:var(--font-label);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.vessel-advice{display:grid;gap:3px;margin-top:var(--space-3);padding:var(--space-2) var(--space-3);border-left:2px solid var(--accent);background:var(--accent-dim)}.vessel-advice[data-status=warning]{border-left-color:var(--warn);background:var(--warn-dim)}.vessel-advice[data-status=risk]{border-left-color:var(--danger);background:var(--danger-dim)}.vessel-advice__label{color:var(--text-dim);font-size:var(--font-label)}.vessel-advice p{margin:0;color:var(--text);font-size:var(--font-body);line-height:1.5}.alert-toast-stack{position:absolute;top:calc(var(--topbar-h) + 12px);right:calc(var(--stage-inset-right) + 14px);z-index:28;display:grid;gap:7px;width:min(330px,calc(100vw - var(--stage-inset-right) - 32px))}.alert-toast{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 28px;border:1px solid color-mix(in srgb,var(--warn) 42%,var(--line-2));border-left:3px solid var(--warn);border-radius:var(--radius-1);background:color-mix(in srgb,var(--surface-1) 94%,transparent);box-shadow:var(--shadow-modal);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.alert-toast[data-level=critical]{border-color:color-mix(in srgb,var(--danger) 52%,var(--line-2));border-left-color:var(--danger)}.alert-toast button{border:0;background:transparent;color:inherit;cursor:pointer}.alert-toast__body{display:grid;gap:3px;min-width:0;padding:8px 6px 9px 10px;text-align:left}.alert-toast__head{display:flex;align-items:center;gap:5px;color:var(--warn);font-size:var(--font-label)}.alert-toast[data-level=critical] .alert-toast__head{color:var(--danger-text)}.alert-toast__head time{margin-left:auto;color:var(--text-faint);font-family:var(--font-mono)}.alert-toast__body strong{color:var(--text-hi);font-size:12px}.alert-toast__body small{color:var(--text-dim);font-size:10px;line-height:1.45}.alert-toast__close{display:grid;place-items:start center;padding-top:9px;color:var(--text-faint)!important}.alert-toast-reset{justify-self:end;border:0;background:transparent;color:var(--text-faint);font-size:10px;cursor:pointer}.toast-enter-active{transition:opacity .2s var(--ease-out),transform .2s var(--ease-out)}.toast-leave-active{position:absolute;width:100%;transition:opacity .16s var(--ease-out),transform .16s var(--ease-out)}.toast-enter-from,.toast-leave-to{opacity:0;transform:translateY(-6px)}.toast-move{transition:transform .2s var(--ease-out)}.feed-modal{position:absolute;inset:0;z-index:40;display:grid;place-items:center;padding:24px;background:#04060899}.feed-modal-card{width:min(760px,calc(100vw - 48px));border:1px solid var(--line-2);border-radius:var(--radius-2);background:var(--surface-1);box-shadow:var(--shadow-modal);overflow:hidden}.feed-modal-card header{display:flex;align-items:center;gap:var(--space-3);min-height:38px;padding:0 var(--space-4) 0 var(--space-5);border-bottom:1px solid var(--line-1);color:var(--text-dim)}.feed-modal-card header strong{min-width:0;color:var(--text-hi);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-modal-card header span{flex:0 0 auto;color:var(--text-dim);font-size:var(--font-label)}.feed-modal-card header .icon-btn{margin-left:auto}.feed-visual{position:relative;display:grid;place-content:center;justify-items:center;gap:var(--space-3);aspect-ratio:16 / 9;max-height:420px;overflow:hidden;background:var(--surface-0);color:var(--text-faint)}.feed-visual.has-thumbnail:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#02080b0a,#02080b1f 60%,#02080bd1);pointer-events:none}.feed-visual>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.feed-visual.has-thumbnail .feed-visual-bar,.feed-visual.has-thumbnail>strong,.feed-visual.has-thumbnail>span{z-index:1}.feed-visual.has-thumbnail>strong{margin-top:48%;color:#edf8fb;text-shadow:0 1px 5px #000}.feed-visual.has-thumbnail>span{color:#b2cbd3;text-shadow:0 1px 5px #000}.feed-visual-bar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-2) var(--space-4);color:var(--text-dim);font-family:var(--font-mono);font-size:11px}.feed-visual-bar span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-visual strong{color:var(--text-dim);font-size:13px;font-weight:500}.feed-visual>span{color:var(--text-faint);font-size:var(--font-label)}.feed-rings{position:absolute;inset:0;margin:auto;width:min(280px,52%);aspect-ratio:1;border:1px solid var(--line-1);border-radius:50%;pointer-events:none}.feed-rings:before,.feed-rings:after{content:"";position:absolute;border:1px solid var(--line-0);border-radius:50%}.feed-rings:before{inset:17%}.feed-rings:after{inset:34%}.feed-modal-card footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-4) var(--space-3) var(--space-5);border-top:1px solid var(--line-1);color:var(--text-dim);font-size:var(--font-body)}.feed-sync{display:inline-flex;align-items:center;gap:8px;min-width:0}.feed-sync span{min-width:0;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-sync-dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:var(--ok)}.feed-return{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 var(--space-4);border:1px solid var(--line-1);border-radius:var(--radius-1);background:transparent;color:var(--text);font-size:11px;font-weight:500;white-space:nowrap;cursor:pointer;transition:color var(--transition-fast),background var(--transition-fast)}.feed-return:hover{background:var(--surface-2);color:var(--text-hi)}.assistant-panel{position:absolute;top:var(--topbar-h);right:var(--stage-inset-right);bottom:var(--timeline-h);z-index:34;display:flex;flex-direction:column;width:320px;border-left:1px solid var(--line-2);border-right:1px solid var(--line-2);background:var(--surface-1)}.assistant-log{flex:1 1 auto;min-height:0;padding:var(--space-2) 0;overflow-y:auto}.assistant-entry{display:grid;gap:3px;padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--line-0)}.assistant-entry:last-child{border-bottom:0}.assistant-entry.is-assistant{box-shadow:inset 2px 0 0 var(--accent)}.assistant-entry__head{display:flex;align-items:baseline;gap:var(--space-3);color:var(--text-dim);font-size:var(--font-label);letter-spacing:.08em}.assistant-entry__head time{margin-left:auto;color:var(--text-faint);font-family:var(--font-mono);letter-spacing:0}.assistant-entry__body{margin:0;color:var(--text);font-size:var(--font-body);line-height:1.6;white-space:pre-line}.assistant-entry.is-user .assistant-entry__body{color:var(--text-hi)}.assistant-pending{display:inline-flex;align-items:center;gap:2px;color:var(--text-dim)}.assistant-cursor{display:inline-block;width:7px;height:13px;margin-left:2px;background:var(--text-dim);animation:cursor-blink 1s steps(1,end) infinite;vertical-align:text-bottom}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.assistant-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--line-1)}.assistant-form input{min-width:0;height:30px;padding:0 var(--space-3);border:1px solid var(--line-1);border-radius:var(--radius-1);background:var(--surface-0);color:var(--text-hi);font:inherit;font-size:var(--font-body);outline:none}.assistant-form input::placeholder{color:var(--text-faint)}.assistant-form input:focus{border-color:var(--accent)}.assistant-form button{width:30px;height:30px;padding:0;display:grid;place-items:center;border:1px solid var(--line-1);border-radius:var(--radius-1);background:transparent;color:var(--text-dim);cursor:pointer}.assistant-form button:hover:not(:disabled){background:var(--surface-2);color:var(--text-hi)}.assistant-form button:disabled{opacity:.4;cursor:default}.modal-enter-active{transition:opacity .2s var(--ease-out)}.modal-enter-active .feed-modal-card{transition:transform .2s var(--ease-out)}.modal-leave-active{transition:opacity .14s var(--ease-out)}.modal-leave-active .feed-modal-card{transition:transform .14s var(--ease-out)}.modal-enter-from,.modal-leave-to{opacity:0}.modal-enter-from .feed-modal-card,.modal-leave-to .feed-modal-card{transform:scale(.97)}.panel-enter-active{transition:opacity .22s var(--ease-out),transform .22s var(--ease-out)}.panel-leave-active{transition:opacity .16s var(--ease-out),transform .16s var(--ease-out)}.panel-enter-from,.panel-leave-to{opacity:0;transform:translate(12px)}@media(min-width:701px)and (max-width:1180px){:root{--rail-left-w: 240px;--rail-right-w: 340px;--roster-h: 232px}.brand-block span{display:none}.assistant-panel{width:300px}}@media(min-width:1920px){:root{--rail-left-w: 300px;--rail-right-w: 430px}}@media(min-width:2400px){:root{--gap: 16px;--font-body: 13px;--font-label: 11px}}@media(max-height:820px){:root{--roster-h: 224px}.overview-panel{gap:var(--space-3)}.assistant-panel{width:300px}.ship-water-preview{height:320px}.prediction-chart{height:150px;min-height:150px}}@media(max-width:700px){:root{--stage-inset-left: 0px;--stage-inset-right: 0px}.dashboard-topbar,.overview-panel,.vessel-roster,.business-panel,.smart-dashboard .debug-gui{display:none}.mobile-assistant{display:inline-flex}.assistant-panel{inset:0;width:auto;height:auto;max-height:none;border:0;z-index:44;padding-top:env(safe-area-inset-top)}.assistant-form{position:sticky;bottom:0;background:var(--surface-1);padding-bottom:calc(12px + env(safe-area-inset-bottom))}.assistant-form input{font-size:16px}.alert-toast-stack{display:none}.ship-water-preview{width:100%}.vessel-focus-hud{display:none}.follow-hint{bottom:calc(var(--timeline-h) + 12px);max-width:calc(100vw - 24px)}.debug-gui{top:12px;right:12px;width:230px}.debug-gui-row{grid-template-columns:78px minmax(0,1fr)}.feed-modal{padding:12px}}
