:root{--bg:#061019;--panel:#0b1721;--panel2:#0e1d29;--line:#1c3442;--text:#e7f2f6;--muted:#8ea5b2;--cyan:#63d3ff;--green:#62e5a0;--amber:#ffd166;--red:#ff7272;--blue:#6ca8ff;--radius:14px}*{box-sizing:border-box}html,body{margin:0;background:radial-gradient(circle at 20% 0,#0b2130 0,#061019 45%,#03080d 100%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100%}button,input,select{font:inherit}button,select,input{outline:none}button{cursor:pointer}.app-shell{max-width:1900px;margin:auto;padding:14px}.topbar{min-height:74px;display:flex;align-items:center;gap:18px;padding:12px 14px;border:1px solid var(--line);background:rgba(8,20,29,.92);border-radius:16px;margin-bottom:12px;position:sticky;top:8px;z-index:50;backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:12px;min-width:0}.port-mark{width:42px;height:42px;display:grid;place-items:center;border:1px solid #2a566c;background:#102a38;border-radius:10px;font-size:21px}.brand h1{font-size:18px;margin:0}.brand p{font-size:11px;color:var(--muted);margin:3px 0 0}.clock-card{margin-left:auto;border-left:1px solid var(--line);padding-left:18px;display:flex;flex-direction:column;gap:2px}.clock-card span,.eyebrow{font:700 10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.13em;color:#7093a5}.clock-card b{font:700 14px ui-monospace,SFMono-Regular,Menlo,monospace}.top-actions{display:flex;gap:8px}.top-actions button,.sim-controls button,.tiny,.primary{border:1px solid #29485a;background:#10232f;color:var(--text);border-radius:8px;padding:8px 11px}.top-actions button:hover,.sim-controls button:hover,.tiny:hover{background:#173142}.layout{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(320px,.75fr);gap:12px}.panel{background:linear-gradient(180deg,rgba(14,29,40,.97),rgba(7,18,26,.97));border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:0 18px 40px rgba(0,0,0,.16)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px;border-bottom:1px solid var(--line)}.panel-head h2{font-size:15px;margin:2px 0 0}.harbor-panel{grid-column:1}.right-stack{grid-column:2;grid-row:1;display:grid;gap:12px;align-content:start}.harbor-head{padding-right:10px}.sim-controls{display:flex;gap:5px;align-items:center}.sim-controls button{font-size:12px;padding:7px 9px}.sim-controls .active{background:#16485c;border-color:#2a8bb1;color:#c9f4ff}.sim-controls .pause{margin-left:4px}.harbor{position:relative;height:590px;min-height:420px;background:#071b2a;overflow:hidden}.harbor canvas{display:block;width:100%!important;height:100%!important;image-rendering:pixelated}.water-label{position:absolute;z-index:2;font:700 10px ui-monospace,monospace;letter-spacing:.12em;color:rgba(190,229,245,.43);pointer-events:none}.pilot-label{left:6%;top:11%}.basin-label{left:58%;top:43%}.disclaimer{position:absolute;z-index:3;bottom:8px;left:10px;padding:5px 8px;background:rgba(2,9,14,.7);border:1px solid rgba(115,152,170,.22);border-radius:6px;color:#77909d;font-size:9px;pointer-events:none}.harbor-status{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}.harbor-status>div{padding:10px 13px;border-right:1px solid var(--line)}.harbor-status>div:last-child{border:0}.harbor-status span{display:block;font:700 9px ui-monospace,monospace;color:#668596;letter-spacing:.1em}.harbor-status b{display:block;font-size:12px;margin-top:3px}.kpi-panel,.berth-panel,.radio-panel{min-width:0}.score{font:800 11px ui-monospace,monospace;color:#08241a;background:var(--green);padding:6px 8px;border-radius:7px}.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line)}.kpis>div{background:#0a1822;padding:12px}.kpis span,.or-card span{font:700 9px ui-monospace,monospace;letter-spacing:.09em;color:#7290a0}.kpis b{display:block;font-size:23px;margin:3px 0 0}.kpis small,.or-card small{font-size:10px;color:#687e89}.util-row{padding:11px 13px;display:grid;gap:8px}.util-row label{display:grid;grid-template-columns:55px 1fr 38px;align-items:center;gap:8px;font-size:10px;color:var(--muted)}.util-row label>i{height:5px;background:#142c38;border-radius:99px;overflow:hidden}.util-row label>i>span{display:block;height:100%;background:linear-gradient(90deg,#3f9fcb,#64e3b1);border-radius:inherit}.util-row b{text-align:right;color:#cfe3eb;font:600 10px ui-monospace,monospace}.berth-board{display:grid;gap:8px;padding:10px}.berth{border:1px solid #1d3947;background:#091823;border-radius:9px;padding:10px}.berth.occupied{border-color:#275b70;background:#0b1d29}.berth-top{display:flex;align-items:center;justify-content:space-between;gap:7px}.berth-top>div{display:flex;align-items:center;gap:7px}.berth-top i{width:7px;height:7px;border-radius:50%;background:#55717f}.berth.occupied .berth-top i{background:var(--cyan);box-shadow:0 0 8px var(--cyan)}.berth-top span{font-size:9px;color:#738b97}.berth-top em{font:700 8px ui-monospace,monospace;color:#6f8794;font-style:normal}.berth.occupied .berth-top em{color:var(--green)}.berth h3{font-size:12px;margin:9px 0 2px}.berth p{font-size:9px;color:#7f98a4;margin:0}.berth-empty{padding-top:9px}.berth-progress{margin-top:8px;padding-top:7px;border-top:1px solid #16313e;display:flex;justify-content:space-between;font-size:9px;color:#8fa6b2}.berth-progress b{color:#d7e7ed}.radio-log{max-height:265px;overflow:auto}.radio-log article{display:grid;grid-template-columns:70px 1fr;gap:9px;padding:8px 11px;border-bottom:1px solid #132b37}.radio-log time{font:600 8px ui-monospace,monospace;color:#5f7b89;padding-top:2px}.radio-log b{font:700 9px ui-monospace,monospace;color:var(--amber)}.radio-log p{margin:2px 0 0;font-size:10px;line-height:1.4;color:#9eb2bc}.tiny{font-size:9px;padding:5px 7px}.queue-panel,.or-panel{grid-column:1/-1}.queue-tools label{display:flex;align-items:center;gap:8px;font-size:10px;color:#7894a2}.queue-tools select,.modal-card select,.modal-card input{background:#091923;border:1px solid #24404f;color:var(--text);border-radius:7px;padding:7px 9px}.table-wrap{overflow:auto;max-height:360px}table{width:100%;border-collapse:collapse;font-size:10px}th{position:sticky;top:0;background:#0b1b26;color:#6d8795;font:700 9px ui-monospace,monospace;letter-spacing:.08em;text-align:left;padding:9px 11px;border-bottom:1px solid var(--line)}td{padding:9px 11px;border-bottom:1px solid #132a36;color:#a9bcc5;white-space:nowrap}td b{display:block;color:#e2eef2;font-size:10px}td small{display:block;color:#58717e;font-size:8px}.stage-chip{display:inline-block;padding:4px 6px;border-radius:5px;background:#102934;color:#a9d9e9;font:700 8px ui-monospace,monospace}.stage-anchorage .stage-chip{background:#332b17;color:#ffd166}.stage-cargo .stage-chip{background:#173528;color:#7aebb0}.stage-berthing .stage-chip,.stage-turning .stage-chip{background:#30223a;color:#d5a7ff}.or-grid{display:grid;grid-template-columns:repeat(3,1fr) minmax(280px,1.5fr);gap:1px;background:var(--line)}.or-card{background:#091823;padding:13px}.or-card b{display:block;font-size:22px;margin:4px 0}.or-card.formula code{display:block;margin-top:7px;color:#b6d5e4;font:600 11px/1.5 ui-monospace,monospace}.primary{background:#1b6a83;border-color:#268aac;color:#e6fbff;font-weight:700}.primary:hover{background:#237a95}.chart-wrap{height:220px;padding:12px 14px}.benchmark-results{border-top:1px solid var(--line)}.bench-head{display:flex;justify-content:space-between;padding:9px 13px;font-size:10px;color:#718b99}.bench-head b{color:var(--green)}.bench-table{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line)}.bench-table button{border:0;background:#091722;color:#d6e7ed;text-align:left;padding:11px}.bench-table button.best{background:#112c25;box-shadow:inset 0 2px var(--green)}.bench-table span,.bench-table b,.bench-table small{display:block}.bench-table span{font:700 9px ui-monospace,monospace;color:#86a1af}.bench-table b{font-size:11px;margin:4px 0}.bench-table small{font-size:8px;color:#6f8996;line-height:1.45}.empty{padding:18px;color:#68828f;text-align:center;font-size:10px}footer{display:flex;justify-content:space-between;padding:16px 4px 7px;color:#536c79;font-size:9px}.modal{position:fixed;inset:0;background:rgba(0,5,9,.72);display:grid;place-items:center;z-index:100;backdrop-filter:blur(8px)}.modal.hidden{display:none}.modal-card{width:min(480px,calc(100vw - 28px));background:#0c1b25;border:1px solid #274252;border-radius:14px;padding:18px;box-shadow:0 30px 80px rgba(0,0,0,.45)}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px}.modal-head h2{font-size:18px;margin:4px 0}.modal-head button{border:0;background:transparent;color:#91a6b1;font-size:22px}.modal-card>label,.triple label{display:grid;gap:7px;margin:11px 0;font-size:10px;color:#8fa4af}.modal-card>label>span{float:right}.modal-card input[type=range]{padding:0}.triple{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.wide{width:100%;margin-top:8px;padding:10px}.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,15px);background:#eaf8f3;color:#0e2b22;padding:9px 13px;border-radius:8px;font-size:11px;font-weight:700;opacity:0;pointer-events:none;transition:.18s;z-index:120}.toast.show{opacity:1;transform:translate(-50%,0)}@media(max-width:1180px){.layout{grid-template-columns:1fr}.harbor-panel,.right-stack,.queue-panel,.or-panel{grid-column:1;grid-row:auto}.right-stack{grid-template-columns:repeat(3,1fr)}.harbor{height:520px}.or-grid{grid-template-columns:repeat(2,1fr)}.bench-table{grid-template-columns:repeat(3,1fr)}}@media(max-width:820px){.app-shell{padding:7px}.topbar{position:static;flex-wrap:wrap}.clock-card{order:3;margin-left:54px;border:0;padding:0}.top-actions{margin-left:auto}.brand p{display:none}.right-stack{grid-template-columns:1fr}.harbor{height:430px}.harbor-head{align-items:flex-start;flex-direction:column}.harbor-status{grid-template-columns:repeat(2,1fr)}.sim-controls{width:100%;overflow:auto}.queue-tools{width:100%}.panel-head{align-items:flex-start;flex-wrap:wrap}.or-grid{grid-template-columns:1fr 1fr}.bench-table{grid-template-columns:1fr}.chart-wrap{height:190px}}@media(max-width:520px){.top-actions button{padding:7px;font-size:10px}.clock-card{margin-left:0;width:100%}.harbor{height:370px}.or-grid{grid-template-columns:1fr}.harbor-status{grid-template-columns:1fr 1fr}.kpis b{font-size:20px}.triple{grid-template-columns:1fr 1fr 1fr}footer{flex-direction:column;gap:4px}}