html,body{background:#05070a;height:100%;overflow:hidden}#app{position:fixed;inset:0}#app canvas{width:100%;height:100%;display:block}.panel{-webkit-backdrop-filter:blur(14px)saturate(120%);color:var(--text-1);background:#0c0f13a8;border:1px solid #ffffff12;border-radius:12px;box-shadow:0 10px 40px #00000040}.hud{pointer-events:none;position:fixed;inset:0}.hud>*{pointer-events:auto}.title{pointer-events:none;text-shadow:0 1px 12px #0000008c;position:absolute;top:22px;left:28px}.title .eyebrow{letter-spacing:.12em;text-transform:uppercase;color:#f1eee6bf;font-size:11px}.title h1{margin-top:4px;font-size:40px;line-height:1.05}.title .sub{color:#f1eee6d9;margin-top:2px;font-size:17px;font-style:italic}.kpis{flex-direction:column;gap:10px;width:300px;display:flex;position:absolute;top:22px;right:22px}.kpi{padding:12px 14px}.k-head{letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.k-body .big{letter-spacing:-.01em;margin-top:6px;font-size:26px;font-weight:600}.k-body .big small{color:var(--text-2);font-size:13px;font-weight:400}.k-body .row{color:var(--text-2);margin-top:2px;font-size:12px}.fps{color:#ffffff73;font-size:11px;position:absolute;bottom:118px;right:24px}.presets{flex-direction:column;align-items:stretch;gap:1px;min-width:168px;padding:6px;display:flex;position:absolute;top:150px;left:22px}.presets .p-head{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);padding:4px 10px 6px;font-size:10.5px}.presets button{text-align:left}.presets button,.speeds button{font:500 12px var(--font-ui);color:var(--text-2);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:6px 10px}.presets button:hover,.speeds button:hover{color:var(--text-1);background:#ffffff0f}.presets button.on,.speeds button.on{color:#0b0e11;background:var(--text-1)}.timeline{grid-template-rows:1fr auto;grid-template-columns:52px 120px auto minmax(0,1fr);align-items:center;gap:0 14px;height:84px;padding:10px 16px 8px;display:grid;position:fixed;bottom:20px;left:22px;right:22px}.timeline .play{background:var(--text-1);color:#0b0e11;cursor:pointer;border:0;border-radius:50%;grid-row:1/span 2;width:46px;height:46px;font-size:16px}.timeline .clock{grid-row:1/span 2}.timeline .clock .t{letter-spacing:-.02em;font-size:30px;font-weight:600}.timeline .clock .d{color:var(--text-2);font-size:11.5px}.timeline .speeds{grid-row:1/span 2;gap:2px;display:flex}.timeline .track{cursor:pointer;border-radius:6px;outline:none;height:50px;position:relative}.timeline .track svg{width:100%;height:44px;position:absolute;inset:0;overflow:visible}.timeline .nightband{fill:#506eaa1f}.timeline .tide{fill:none;stroke:var(--mode-ship);stroke-width:2px;vector-effect:non-scaling-stroke}.timeline .zero{stroke:#ffffff1f;stroke-width:1px;vector-effect:non-scaling-stroke}.timeline .tidelabels text{fill:var(--text-2);text-anchor:middle;font-size:10px;font-family:var(--font-ui)}.timeline .tidelabels circle{fill:var(--mode-ship);stroke:#0b0e11;stroke-width:2px;vector-effect:non-scaling-stroke}.timeline .hours{height:12px;position:absolute;top:44px;left:0;right:0}.timeline .hours span{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:10px;position:absolute;transform:translate(-50%)}.timeline .head{background:var(--text-1);width:2px;height:52px;position:absolute;top:-4px;transform:translate(-1px);box-shadow:0 0 0 1px #0006}.timeline .head:before{content:"";background:var(--text-1);border-radius:50%;width:10px;height:10px;position:absolute;top:-3px;left:-4px}.timeline .legend-t{color:var(--text-3);grid-column:4;align-items:center;gap:8px;font-size:11px;display:flex}.timeline .sw-tide{background:var(--mode-ship);width:14px;height:2px;display:inline-block}.loading{z-index:10;background:#05070a;place-items:center;transition:opacity .8s;display:grid;position:fixed;inset:0}.loading .inner{text-align:center}.loading h1{font-size:42px}.loading p{color:var(--text-2);min-height:18px;font-size:13px}.loading .bar{background:#ffffff1a;border-radius:2px;width:260px;height:2px;margin:14px auto 0;overflow:hidden}.loading .bar div{background:var(--text-1);width:30%;height:100%;animation:1.4s ease-in-out infinite ld}@keyframes ld{0%{transform:translate(-100%)}to{transform:translate(340%)}}.btn{font:500 12px var(--font-ui);color:var(--text-1);border:1px solid var(--line-strong);cursor:pointer;white-space:nowrap;-webkit-backdrop-filter:blur(10px);background:#0c0f13a8;border-radius:999px;padding:6px 12px}.btn:hover{background:#282d34cc}.btn.on{background:var(--text-1);color:#0b0e11;border-color:var(--text-1)}.btn:focus-visible,.row-btn:focus-visible,.tabs button:focus-visible{outline:2px solid var(--text-1);outline-offset:2px}.topbar{gap:8px;display:flex;position:fixed;top:22px;left:50%;transform:translate(-50%)}.sidebar{flex-direction:column;width:252px;max-height:calc(100vh - 278px);padding:6px;display:flex;position:absolute;top:150px;left:22px}.sidebar .tabs{border-bottom:1px solid var(--line);gap:2px;margin-bottom:4px;padding:2px 2px 6px;display:flex}.sidebar .tabs button{font:500 11.5px var(--font-ui);color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1;padding:6px 4px}.sidebar .tabs button.on{color:#0b0e11;background:var(--text-1)}.sidebar .tabpane{min-height:0;overflow-y:auto}.row-btn{text-align:left;width:100%;font:500 12.5px var(--font-ui);color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:7px 10px;display:block}.row-btn:hover{color:var(--text-1);background:#ffffff0f}.row-btn.on{color:var(--text-1);background:#ffffff1a}.layer{cursor:pointer;color:var(--text-1);border-radius:8px;grid-template-columns:16px 1fr auto;align-items:center;gap:8px;padding:5px 8px;font-size:12px;display:grid}.layer:hover{background:#ffffff0d}.layer input{accent-color:#f1eee6;margin:0}.layer .badge{padding:1px 6px 1px 5px;font-size:10px}.sidebar .more{color:var(--text-3);padding:8px 8px 4px;font-size:11px;display:block}.events{margin:0;padding:0;list-style:none}.events li{color:var(--text-1);cursor:pointer;border-radius:7px;grid-template-columns:38px 16px 1fr;align-items:baseline;gap:6px;padding:5px 8px;font-size:11.5px;display:grid}.events li:hover{background:#ffffff0f}.events li.past{color:var(--text-3)}.events li.now{color:var(--text-1);background:#3987e529}.events time{color:var(--text-2)}.events i{color:var(--mode-ship);text-align:center;font-style:normal}.events .ev-hw i,.events .ev-nw i{color:var(--text-2)}.events .ev-sonne i{color:#e3b862}.events .ev-stau i{color:#f0612a}.legend-lage{color:var(--text-2);flex-wrap:wrap;gap:4px 12px;padding:0 8px 6px 32px;font-size:11px;display:flex}.legend-lage span{align-items:center;gap:5px;display:inline-flex}.legend-lage i{border-radius:2px;width:14px;height:4px;display:inline-block}.kpis{max-height:calc(100vh - 140px)}.stats{grid-template-columns:1fr 1fr;gap:8px 12px;margin-top:8px;display:grid}.stat b{letter-spacing:-.01em;font-size:19px;font-weight:600;display:block}.stat span{color:var(--text-2);font-size:10.5px;line-height:1.25;display:block}.stat{border-left:2px solid var(--line-strong);padding-left:8px}.stat.m-ship{border-left-color:var(--mode-ship)}.stat.m-road{border-left-color:var(--mode-road)}.stat.m-rail{border-left-color:var(--mode-rail)}.inspector{width:340px;max-height:calc(100vh - 300px);padding:12px 14px;position:fixed;bottom:118px;left:288px;overflow-y:auto}.inspector .i-top{justify-content:space-between;align-items:center;display:flex}.i-kind{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-size:10.5px}.i-close{color:var(--text-2);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:20px;line-height:1}.i-close:hover{color:var(--text-1)}.i-title{margin-top:2px;font-size:22px;line-height:1.15}.i-sub{color:var(--text-2);margin-top:2px;font-size:12px}.i-badges{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.i-badges .badge{font-size:10px}.i-rows{grid-template-columns:auto 1fr;gap:3px 10px;margin:10px 0 0;font-size:12px;display:grid}.i-rows dt{color:var(--text-3)}.i-rows dd{color:var(--text-1);margin:0}.i-src{color:var(--text-3);margin:10px 0 0;font-size:10.5px;line-height:1.4}.i-actions{margin-top:10px}.overlay{pointer-events:none;position:fixed;inset:0;overflow:hidden}.ov-item{will-change:transform;position:absolute;top:0;left:0}.ov-item>span{white-space:nowrap;text-shadow:0 1px 6px #000c;position:absolute;transform:translate(-50%,-100%)}.lbl-water{font-family:var(--font-display);color:#a0c4eeeb;letter-spacing:.04em;font-size:15px;font-style:italic}.lbl-place{font-family:var(--font-display);color:#f1eee6db;font-size:13px}.lbl-term{color:var(--text-1);border:1px solid var(--line-strong);text-shadow:none;background:#0c0f1399;border-radius:999px;padding:2px 8px;font-size:11px}.lbl-term b{font-weight:650}.lbl-gauge,.lbl-count{color:var(--text-1);border:1px solid var(--line-strong);text-shadow:none;background:#0c0f13b8;border-radius:8px;align-items:baseline;gap:6px;padding:3px 8px;font-size:11px;display:flex}.lbl-gauge i,.lbl-count i{background:var(--text-1);border-radius:50%;align-self:center;width:7px;height:7px}.lbl-gauge b{color:var(--seq-1)}.lbl-count b{color:#6fd1a8}.lbl-gauge small,.lbl-count small{color:var(--text-2);font-size:10px}.modal{z-index:5;background:#04060899;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal[hidden]{display:none}.sheet{background:#0e1115f0;width:min(980px,100%);max-height:calc(100vh - 48px);padding:22px 28px 28px;overflow-y:auto}.sheet header{position:relative}.sheet header .i-close{font-size:26px;position:absolute;top:-6px;right:-8px}.sheet .eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);font-size:11px}.sheet h2{margin-top:4px;font-size:30px}.sheet h3{margin:22px 0 8px;font-size:19px}.sheet .lead{color:var(--text-2);max-width:76ch;font-size:13.5px}.sheet .muted,.tbl .muted{color:var(--text-3);font-size:12px}.sheet a{color:var(--seq-1)}.prov{color:var(--text-2);grid-template-columns:1fr 1fr;gap:6px 18px;padding:0;font-size:12.5px;list-style:none;display:grid}.tbl{border-collapse:collapse;width:100%;font-size:12px}.tbl th{text-align:left;color:var(--text-3);border-bottom:1px solid var(--line-strong);padding:6px 8px;font-size:11px;font-weight:500}.tbl td{border-bottom:1px solid var(--line);vertical-align:top;padding:6px 8px}.tbl .r{text-align:right;white-space:nowrap}.tbl .badge{font-size:10px}.limits,.sources{color:var(--text-2);padding-left:18px;font-size:12.5px}.limits li,.sources li{margin:4px 0}.timeline .mk{stroke:var(--mode-ship);stroke-width:1.5px;vector-effect:non-scaling-stroke}.timeline .mk-schiff_ab{stroke:var(--seq-1);opacity:.8}.btn-accent{background:var(--text-1);color:#0b0e11;border-color:var(--text-1)}.btn-accent:hover{background:#fff}.story{width:min(620px,100vw - 32px);padding:14px 18px 0;position:fixed;bottom:120px;left:50%;overflow:hidden;transform:translate(-50%)}.story .s-top{letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);justify-content:space-between;font-size:11px;display:flex}.story .s-time{color:var(--text-1);letter-spacing:0;text-transform:none;font-size:13px;font-weight:600}.story .s-title{margin-top:4px;font-size:26px}.story .s-text{color:var(--text-2);margin:6px 0 10px;font-size:13.5px;line-height:1.5}.story .s-foot{justify-content:space-between;align-items:center;gap:10px;padding-bottom:12px;display:flex}.story .s-ctl{gap:6px;display:flex}.story .s-prog{background:#ffffff14;height:2px;margin:0 -18px}.story .s-prog i{background:var(--text-1);width:0;height:100%;display:block}.story-pin{pointer-events:none;color:#0b0e11;white-space:nowrap;background:#f3e6c8;border-radius:999px;margin-left:0;padding:2px 9px;font-size:11px;font-weight:600;position:fixed;top:0;left:0;translate:-50% -130%}body.storymode .sidebar,body.storymode .inspector{opacity:0;pointer-events:none}.sidebar,.inspector{transition:opacity .4s}
