@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+KR:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
@import url('./tokens.css');
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.55 var(--font);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:var(--clear)}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button,a,select,input{outline-offset:4px}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--mint)}button{color:inherit;border:0;background:none}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h3{font-size:14px;font-weight:600}svg.lucide{width:18px;height:18px;stroke-width:1.7;flex-shrink:0}button{transition:background .15s,color .15s,border-color .15s}button:hover{color:var(--mint)}button:disabled:hover{color:inherit}[hidden]{display:none!important}.muted{color:var(--muted)}.tiny{font-size:12px}.unit{font-size:14px;color:var(--muted);margin-left:3px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px}.topbar{height:74px;padding:0 30px;display:flex;align-items:center;border-bottom:1px solid var(--border);gap:60px;background:var(--surface)}.brand{font-size:24px;font-weight:800;display:flex;align-items:center;gap:10px;letter-spacing:.03em;white-space:nowrap}.brand-light{font-size:18px;font-weight:500;letter-spacing:-.6px;color:var(--muted)}.brand-symbol{display:grid;place-items:center;width:34px;height:36px;color:var(--mint)}.brand-symbol svg{height:31px;width:31px;transform:rotate(-15deg);fill:var(--accent-glow)}.topbar nav{align-self:stretch;display:flex;gap:31px;font-size:14px;color:var(--muted)}.topbar nav>*{display:flex;align-items:center;position:relative;padding:0 3px}.topbar nav .nav-active{color:var(--mint)}.nav-active:after{content:'';height:2px;background:var(--mint);position:absolute;bottom:0;left:0;right:0}.top-right{margin-left:auto;display:flex;align-items:center;gap:18px}.concept-badge{font-size:11px;letter-spacing:1.5px;color:var(--muted);border:1px solid var(--line-strong);border-radius:5px;padding:5px 9px}.avatar{background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink);border-radius:50%;width:31px;height:31px;display:grid;place-items:center;font-size:13px;font-weight:700}.icon-button{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;flex-shrink:0}.icon-button:hover,.icon-button[aria-pressed=true]{background:var(--accent-soft);color:var(--mint)}.workspace{display:grid;grid-template-columns:270px minmax(0,1fr);gap:24px;padding:24px;max-width:2000px;margin:auto;align-items:start}.planner{padding:22px 20px;position:sticky;top:20px}.section-eyebrow{font-size:10px;font-weight:700;letter-spacing:1.6px;color:var(--muted);display:flex;justify-content:space-between;align-items:center}.section-eyebrow span{font-size:12px;letter-spacing:0}.planner h1{font-size:19px;letter-spacing:-.7px;margin:9px 0 5px;font-weight:600}.intro{font-size:12px;margin-bottom:25px}.port-form{position:relative;display:flex;gap:13px}.port-line{display:flex;align-items:center;flex-direction:column;flex-shrink:0;width:12px;padding:39px 0 20px}.port-line span{width:9px;height:9px;border-radius:50%;border:2px solid var(--mint)}.port-line span:last-child{border-color:var(--line-strong);border-radius:2px}.port-line b{height:67px;border-left:1px dashed var(--line-strong);margin:6px 0}.port-fields{flex:1;min-width:0}.port-fields label{display:block;font-size:12px;color:var(--muted);margin:0 0 6px}.port-fields label small{font-size:9px;margin-left:7px;letter-spacing:1px;color:var(--muted)}.port-fields select{font-size:15px;padding:9px 28px 9px 11px;font-weight:600;height:43px}.port-fields label:nth-of-type(2){margin-top:18px}.swap{position:absolute;right:7px;top:68px;background:var(--surface-2);border:1px solid var(--line-strong);width:29px;height:27px;z-index:1}.swap svg{width:14px;height:14px}select{appearance:none;width:100%;background-color:var(--surface-2);border:1px solid var(--line-strong);border-radius:7px;color:var(--text);padding:10px 28px 10px 11px;background-image:var(--select-arrow);background-repeat:no-repeat;background-position:right 9px center;cursor:pointer;font-size:13px}select:hover{border-color:var(--line-strong)}.field-heading{display:flex;justify-content:space-between;align-items:center;margin:22px 0 9px;font-size:13px}.field-heading svg{width:15px;height:15px;color:var(--muted)}.segment-heading{margin-top:22px}.segment-options{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.segment-options button{padding:8px 0;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:6px;font-size:13px}.segment-options button.active{background:var(--accent-soft);color:var(--mint);border-color:var(--line-strong);box-shadow:inset 0 0 0 1px var(--accent-glow)}.field-hint{font-size:11px;color:var(--muted);margin:8px 0 21px}.primary-button{display:flex;gap:9px;justify-content:center;align-items:center;width:100%;padding:13px 8px;color:var(--accent-ink);background:var(--mint);border-radius:7px;font-size:14px;font-weight:700;box-shadow:0 3px 16px var(--accent-glow)}.primary-button:hover{color:var(--accent-ink);background:var(--accent-hover)}.primary-button svg{width:17px;height:17px}.divider{height:1px;background:var(--border);margin:25px 0 20px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.section-heading h2{font-size:14px;font-weight:600}.section-heading>svg{color:var(--muted);width:16px;height:16px}.route-presets{display:flex;flex-direction:column;gap:5px;margin-top:13px;max-height:305px;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) var(--clear)}.route-preset{text-align:left;border:1px solid var(--clear);padding:11px 10px;border-radius:7px;width:100%;display:flex;align-items:center;gap:9px}.route-preset:hover{background:var(--surface-2)}.route-preset.selected{background:var(--surface-2);border-color:var(--line-strong)}.route-preset .preset-icon{color:var(--muted);width:27px;display:grid;place-items:center}.route-preset .preset-icon svg{height:16px;width:16px}.route-preset.selected .preset-icon{color:var(--mint)}.route-preset strong{display:block;font-size:13px;font-weight:500}.route-preset small{display:block;font-size:10px;color:var(--muted);margin-top:2px}.route-preset .route-index{margin-left:auto;font-size:10px;color:var(--muted)}.planner-foot{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11px;border-top:1px solid var(--border);margin-top:20px;padding-top:16px}.planner-foot svg{width:20px;height:20px}.planner-foot button{padding:0;font-size:11px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}.dashboard{min-width:0}.dashboard-title{display:flex;justify-content:space-between;align-items:center;margin:1px 0 18px;gap:15px;min-height:55px}.dashboard-title h2{font-size:26px;letter-spacing:-.6px;font-weight:600;margin-top:3px}.dashboard-title h2 span{font-weight:300;color:var(--muted);margin:0 7px}.plan-status{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--ink)}.status-dot{width:6px;height:6px;border-radius:50%;display:inline-block;background:var(--mint);box-shadow:0 0 7px var(--accent-glow)}.small-chip{font-size:10px;padding:3px 6px;border:1px solid var(--line-strong);color:var(--muted);border-radius:4px;letter-spacing:.5px;white-space:nowrap}.overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:19px}.stat{position:relative;border:1px solid var(--border);border-radius:9px;background:var(--surface);padding:14px 18px 12px}.stat-label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:7px;margin-bottom:7px;white-space:nowrap}.stat-label svg{width:14px;height:14px;color:var(--muted)}.stat strong{font-size:25px;letter-spacing:-.6px;font-weight:600;line-height:1.2;font-variant-numeric:tabular-nums}.stat small{display:block;font-size:10px;color:var(--muted);margin-top:6px}.saving-stat{background:linear-gradient(115deg,var(--accent-soft),var(--accent-soft));border-color:var(--line-strong)}.saving-stat strong,.saving-stat>.unit{color:var(--mint)}.saving-stat small{color:var(--muted)}.saving-stat .stat-label svg{color:var(--mint)}.voyage-grid{display:grid;grid-template-columns:minmax(0,1fr) 244px;gap:17px}.map-column{min-width:0}.map-card{position:relative;isolation:isolate;height:425px;border:1px solid var(--line-strong);border-radius:11px;overflow:hidden;background:var(--surface-2)}#map{width:100%;height:100%;z-index:0;background:var(--surface-2)}.leaflet-container{font-family:var(--font);background:var(--surface-2)}.leaflet-tile-pane{filter:brightness(1.22) sepia(.25) hue-rotate(150deg) saturate(1.4)}.leaflet-control-attribution{background:var(--overlay)!important;color:var(--muted)!important;font-size:8px!important;max-width:95%}.leaflet-control-attribution a{color:var(--muted)!important}.leaflet-bottom .leaflet-control{margin-bottom:2px}.map-top{position:absolute;top:16px;left:17px;right:17px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;z-index:500}.map-mode{font-size:10px;letter-spacing:1.8px;color:var(--muted);display:flex;align-items:center;gap:7px;background:var(--overlay);padding:5px 8px;border-radius:4px}.map-top>span:last-child{font-size:10px;color:var(--muted);background:var(--overlay);padding:5px 8px;border-radius:4px}.navigation-banner{position:absolute;top:55px;left:18px;display:flex;align-items:center;gap:12px;background:var(--overlay);border:1px solid var(--line-strong);box-shadow:0 6px 24px var(--shadow);border-radius:9px;padding:13px 15px;max-width:calc(100% - 82px);z-index:500;backdrop-filter:blur(10px)}.nav-icon{background:var(--accent-soft);color:var(--mint);display:grid;place-items:center;min-width:35px;height:35px;border:1px solid var(--line-strong);border-radius:8px}.nav-icon svg{width:20px;height:20px}.nav-kicker{font-size:8px;letter-spacing:1.35px;color:var(--muted);display:block;margin-bottom:3px}.navigation-banner p{font-size:13px;color:var(--ink);line-height:1.5}.navigation-banner p strong{color:var(--mint);font-weight:600}.next-speed{border-left:1px solid var(--line-strong);padding-left:13px;margin-left:8px;font-size:24px;line-height:1.1;color:var(--mint);font-weight:600;text-align:center}.next-speed small{display:block;font-size:9px;font-weight:400;color:var(--muted);margin-top:4px}.map-tools{display:flex;flex-direction:column;position:absolute;top:150px;right:13px;gap:4px;background:var(--overlay);border:1px solid var(--line-strong);padding:4px;border-radius:8px;z-index:500}.map-tools .icon-button{height:30px;width:30px;color:var(--ink)}.map-tools svg{width:16px;height:16px}.map-tools>span{height:1px;background:var(--surface-2);margin:2px 4px}.map-legend{display:flex;gap:10px;align-items:center;position:absolute;left:16px;bottom:29px;background:var(--overlay);padding:7px 9px;border:1px solid var(--line-strong);border-radius:5px;z-index:500;color:var(--muted);font-size:9px;pointer-events:none}.map-legend span{display:flex;align-items:center;gap:5px;white-space:nowrap}.map-legend b{width:5px;height:5px;border-radius:50%;background:var(--mint)}.map-legend b.legend-line{width:14px;height:2px;border-radius:0}.map-coordinate{position:absolute;right:14px;bottom:14px;font-size:9px;color:var(--muted);z-index:500;background:var(--overlay);padding:3px 5px;pointer-events:none}.map-notice{position:absolute;bottom:62px;left:16px;right:60px;padding:10px;border-radius:6px;background:var(--overlay);color:var(--warn);z-index:600;font-size:12px}.loading{display:flex;align-items:center;justify-content:center;gap:12px;position:absolute;inset:0;background:var(--overlay);z-index:800;color:var(--ink)}.loading svg{animation:spin 1.2s linear infinite}.ship-icon{border:0;background:none}.ship-symbol{width:34px;height:34px;transform-origin:center;filter:drop-shadow(0 0 8px var(--accent-glow));position:relative}.ship-symbol svg{width:34px;height:34px;color:var(--ink);fill:var(--accent);stroke-width:1.5}.ship-symbol:after{content:'';position:absolute;left:13px;top:27px;width:8px;height:25px;background:linear-gradient(var(--overlay),var(--clear));border-radius:80%;transform-origin:50% 0;z-index:-1;opacity:0}.is-sailing .ship-symbol:after{opacity:1}.port-label{background:var(--overlay);border:1px solid var(--line-strong);border-radius:5px;padding:5px 8px;color:var(--ink);font-size:11px;font-weight:600;box-shadow:none}.leaflet-tooltip-top:before{border-top-color:var(--line-strong)}.leaflet-tooltip-bottom:before{border-bottom-color:var(--line-strong)}.segment-tooltip{background:var(--surface-2);color:var(--ink);border:1px solid var(--line-strong);border-radius:6px;box-shadow:0 3px 15px var(--shadow);font-size:12px}.leaflet-tooltip.segment-tooltip:before{border-top-color:var(--line-strong)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--surface-2);color:var(--ink)}.leaflet-popup-content{font:13px/1.7 var(--font);margin:12px 16px}.leaflet-popup-content b{color:var(--mint)}.leaflet-popup-close-button{color:var(--muted)!important}.playback{margin-top:12px;padding:13px 16px 9px}.playback-top,.playback-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px}.playback-heading{display:flex;align-items:center;gap:7px}.playback-heading>svg{color:var(--muted);width:15px;height:15px}.playback-heading h3{font-size:12px}.playback-heading>span{font-size:8px;letter-spacing:1px;margin-left:2px;color:var(--muted)}.playback-time{display:flex;gap:7px;font-variant-numeric:tabular-nums;font-size:11px;color:var(--muted)}.playback-time span:first-child{color:var(--ink)}.playback input[type=range]{width:100%;margin:13px 0 12px;display:block;height:4px;appearance:none;background:linear-gradient(to right,var(--mint) 0%,var(--surface-2) 0%);border-radius:10px;cursor:pointer}.playback input[type=range]::-webkit-slider-thumb{appearance:none;width:12px;height:12px;border:2px solid var(--line-strong);border-radius:50%;background:var(--mint);box-shadow:0 0 0 3px var(--accent-glow)}.playback input[type=range]::-moz-range-thumb{width:10px;height:10px;border:2px solid var(--line-strong);border-radius:50%;background:var(--mint)}.transport{display:flex;align-items:center;gap:5px}.transport .icon-button{width:27px;height:29px}.transport .icon-button svg{height:14px;width:14px}.play-button{display:flex;align-items:center;justify-content:center;gap:7px;background:var(--mint);color:var(--accent-ink);border-radius:5px;padding:8px 15px;font-weight:700;font-size:12px;min-width:100px}.play-button:hover{background:var(--accent-hover);color:var(--accent-ink)}.play-button svg{width:13px;height:13px;fill:currentColor}.speed-controls{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--muted)}.speed-controls select{padding:6px 21px 6px 8px;width:98px;font-size:11px;background-color:var(--surface-2)}.speed-controls button{font-size:10px;border:1px solid var(--line-strong);border-radius:5px;color:var(--muted);padding:6px 8px;white-space:nowrap}.speed-controls button.active{background:var(--accent-soft);border-color:var(--mint)}.playback-note{display:flex;justify-content:space-between;margin-top:8px;font-size:9px;color:var(--muted)}.profile{margin-top:12px;padding:14px 16px 10px}.profile h3{font-size:12px}.profile-legend{display:flex;align-items:center;gap:12px;font-size:9px;color:var(--muted)}.profile-legend>span{display:flex;align-items:center;gap:5px}.profile-legend b{width:12px;height:2px;background:var(--mint)}.baseline-key:before{content:'';width:13px;border-top:1px dashed var(--line-strong)}.text-button{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:5px;padding:0}.text-button svg{width:12px;height:12px}.chart-wrap{position:relative;margin:8px 0 0}.chart-wrap svg{display:block;width:100%;height:100px;overflow:visible;cursor:crosshair}.chart-axis-unit{position:absolute;left:0;top:-2px;font-size:8px;color:var(--muted)}.chart-caption{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:8px}.telemetry{display:flex;flex-direction:column;gap:12px;min-width:0}.telemetry .panel{padding:16px}.telemetry h3{font-size:13px}.gauge{position:relative;margin:13px auto 0;max-width:215px;height:135px}.gauge>svg{width:100%;height:100%;overflow:visible}.gauge-track,.gauge-value,.gauge-inner{fill:none;stroke:var(--line-strong);stroke-width:8;stroke-linecap:round}.gauge-value{stroke:var(--mint);stroke-dasharray:70 100;transition:stroke-dasharray .5s;filter:drop-shadow(0 0 4px var(--accent-glow))}.gauge-inner{stroke:var(--line-strong);stroke-width:1;stroke-dasharray:1 9;stroke-linecap:butt}.speed-readout{position:absolute;inset:25px 0 0;display:flex;flex-direction:column;justify-content:center;align-items:center;pointer-events:none}.speed-readout strong{font-size:47px;font-weight:500;line-height:1.1;letter-spacing:-2px;font-variant-numeric:tabular-nums}.speed-readout span{font-size:12px;color:var(--muted);letter-spacing:1px;margin-top:4px}.gauge-min,.gauge-max{position:absolute;bottom:-1px;font-size:10px;color:var(--muted)}.gauge-min{left:21px}.gauge-max{right:16px}.current-segment{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:10px}.current-segment span:first-child{color:var(--ink)}.current-segment span:last-child{color:var(--mint);font-size:9px}.vessel-tag{display:flex;gap:8px;align-items:center;justify-content:center;color:var(--muted);border-top:1px solid var(--border);padding-top:11px;margin-top:13px;font-size:9px;letter-spacing:1.5px}.vessel-tag svg{width:13px;height:13px}.fuel-value{margin:12px 0 10px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.fuel-value strong{font-size:28px;font-weight:600;letter-spacing:-.4px;line-height:1}.fuel-value>span{color:var(--muted);font-size:12px}.fuel-value small{font-size:9px;color:var(--muted);margin-left:auto}.fuel-progress{height:3px;border-radius:4px;background:var(--surface-2);margin-bottom:14px}.fuel-progress span{height:100%;width:0;display:block;background:var(--mint);border-radius:4px}.mini-row{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:9px}.mini-row b{color:var(--ink);font-weight:500;font-variant-numeric:tabular-nums}.environment-grid{display:grid;grid-template-columns:1fr 1fr;margin-top:14px;gap:10px}.environment-grid>div{display:grid;grid-template-columns:20px 1fr;gap:3px 6px;align-items:center}.environment-grid>div+div{border-left:1px solid var(--line-strong);padding-left:12px}.environment-grid svg{color:var(--muted);width:18px;height:18px;grid-row:span 2}.environment-grid strong{font-size:18px;font-weight:500;white-space:nowrap}.environment-grid strong small{font-size:9px;color:var(--muted);margin-left:3px}.environment-grid span{font-size:9px;color:var(--muted)}.upcoming-card{flex:1}.upcoming-row{display:flex;align-items:center;padding-top:15px;gap:10px;text-align:left;width:100%}.upcoming-number{width:25px;height:25px;border:1px solid var(--line-strong);border-radius:6px;font-size:10px;color:var(--muted);display:grid;place-items:center}.upcoming-row .upcoming-detail{flex:1}.upcoming-row strong{display:block;color:var(--ink);font-size:11px;font-weight:500}.upcoming-row small{font-size:9px;color:var(--muted)}.upcoming-speed{font-size:15px;color:var(--mint);font-variant-numeric:tabular-nums}.upcoming-speed small{font-size:9px}.dashboard-footer{display:flex;justify-content:space-between;gap:15px;font-size:9px;color:var(--muted);margin-top:14px}.dashboard-footer>span{display:flex;gap:6px;align-items:center}.dashboard-footer svg{width:12px;height:12px}.dashboard-footer button{font-size:9px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,12px);background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink);box-shadow:0 6px 24px var(--shadow);padding:12px 20px;border-radius:8px;z-index:2000;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:90vw}.toast.visible{opacity:1;transform:translate(-50%,0)}.form-error{color:var(--bad);font-size:12px;margin-top:10px}dialog{background:var(--surface);border:1px solid var(--line-strong);border-radius:15px;color:var(--ink);width:min(820px,92vw);max-height:85vh;padding:0;box-shadow:0 24px 100px var(--shadow)}dialog::backdrop{background:var(--overlay);backdrop-filter:blur(6px)}.dialog-heading{padding:24px 26px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line-strong);position:sticky;top:0;background:var(--surface);z-index:2}.dialog-heading h2{font-size:22px;margin-top:5px}.dialog-heading .section-eyebrow{font-size:10px}.dialog-content{padding:24px 26px;font-size:14px;line-height:1.9}.dialog-content h3{font-size:16px;margin:24px 0 10px}.dialog-content p{margin-bottom:15px;color:var(--muted)}.notice-box{padding:16px 18px;background:var(--accent-soft);border-left:3px solid var(--mint);border-radius:4px;color:var(--ink)!important}.source-item{border-bottom:1px solid var(--line-strong);padding:13px 0}.source-item a{color:var(--mint);text-decoration:underline;text-underline-offset:4px}.source-item small{margin-left:8px;color:var(--muted);font-size:11px}.source-item p{font-size:12px;margin:7px 0 0}.dialog-subtitle{padding:17px 26px;color:var(--muted)}.table-wrap{overflow:auto;padding:0 26px 25px}table{border-collapse:collapse;min-width:600px;width:100%;font-size:13px;text-align:right}th{font-weight:500;color:var(--muted);padding:12px 8px;border-bottom:1px solid var(--line-strong);font-size:12px}td{padding:12px 8px;border-bottom:1px solid var(--line-strong);font-variant-numeric:tabular-nums}td:first-child,th:first-child{text-align:left}td button{border:1px solid var(--line-strong);padding:4px 9px;border-radius:5px;color:var(--mint);font-size:12px}tr.current td{background:var(--accent-soft)}tr:hover td{background:var(--surface-2)}.arrival-card{font-size:12px;color:var(--muted);padding:20px 0 10px;text-align:center}.arrival-card strong{display:block;color:var(--mint);font-size:20px;margin-bottom:8px}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:1650px){.workspace{grid-template-columns:292px minmax(0,1fr);gap:28px;padding:28px 32px}.planner{padding:25px}.voyage-grid{grid-template-columns:minmax(0,1fr) 280px}.map-card{height:480px}.telemetry .panel{padding:19px}.stat{padding:18px 22px}.stat strong{font-size:29px}.navigation-banner p{font-size:15px}.navigation-banner{padding:15px 18px}.profile .chart-wrap svg{height:120px}.route-presets{max-height:350px}}
@media(max-width:1279px){.workspace{grid-template-columns:240px minmax(0,1fr);gap:17px;padding:19px}.planner{padding:19px 16px}.planner h1{font-size:17px}.voyage-grid{grid-template-columns:minmax(0,1fr) 215px;gap:12px}.telemetry .panel{padding:13px}.stat{padding:12px}.stat strong{font-size:22px}.stat-label{font-size:11px}.map-card{height:410px}.speed-controls label{display:none}.playback-bottom{gap:5px}.speed-controls{gap:5px}.speed-controls select{width:85px}.speed-controls button{padding:6px;font-size:9px}.play-button{min-width:85px;padding:8px 10px}.navigation-banner{padding:10px;gap:9px}.navigation-banner p{font-size:11px}.next-speed{font-size:21px;padding-left:9px;margin-left:0}.map-legend{gap:7px;font-size:8px}.map-coordinate{bottom:13px}.profile-legend{gap:8px}.profile-legend .baseline-key{display:none}.fuel-value small{width:100%;margin-left:0}.overview-grid{gap:10px}.dashboard-title h2{font-size:24px}.plan-status{font-size:10px}}
@media(max-width:1080px){.voyage-grid{grid-template-columns:minmax(0,1fr)}.telemetry{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.telemetry .speed-card{grid-row:span 2}.upcoming-card{display:none}.map-card{height:450px}.stat strong{font-size:21px}.stat-label svg{display:none}.stat small{font-size:9px}.dashboard-title{align-items:flex-start}.dashboard-title .plan-status{margin-top:7px}.plan-status .small-chip{display:none}.stat{padding:12px 10px}.overview-grid{gap:8px}.playback-bottom{gap:12px}.speed-controls label{display:block}.speed-controls select{width:100px}.playback-note{font-size:10px}.profile-legend .baseline-key{display:flex}.chart-caption{font-size:9px}.navigation-banner p{font-size:13px}.fuel-value small{width:auto;margin-left:auto}.telemetry .gauge{margin-top:25px;height:160px}.telemetry .speed-readout strong{font-size:54px}.telemetry .vessel-tag{padding-top:18px;margin-top:22px}}
@media(max-width:800px){.topbar{padding:0 20px;gap:24px;height:65px}.topbar nav{gap:18px;font-size:12px}.top-right{gap:8px}.concept-badge{display:none}.brand{font-size:21px}.brand-light{font-size:15px}.workspace{grid-template-columns:1fr;padding:18px;gap:18px}.planner{position:static;padding:20px}.planner h1{font-size:20px}.planner .intro{margin-bottom:15px}.planner .section-eyebrow{font-size:10px}#voyage-form{display:grid;grid-template-columns:1fr 1fr;column-gap:22px;align-items:center}.port-form{grid-row:1 / span 4}.field-heading{margin-top:0}.segment-heading{margin-top:15px}.field-hint{grid-column:2;margin:8px 0 15px}.primary-button{grid-column:1 / -1}.form-error{grid-column:1 / -1}.divider{margin:19px 0 15px}.route-presets{display:grid;grid-template-columns:repeat(4,160px);overflow-x:auto;max-height:160px;gap:5px;padding-bottom:3px}.route-preset{padding:9px 8px}.route-preset .route-index{display:none}.planner-foot{display:none}.route-preset strong{font-size:11px}.route-preset small{font-size:9px}.dashboard-title{margin-bottom:15px}.dashboard-title h2{font-size:26px}.stat-label svg{display:block}.stat-label{font-size:11px}.stat{padding:15px}.stat strong{font-size:25px}.stat small{font-size:10px}.map-card{height:480px}.voyage-grid{gap:15px}.telemetry{grid-template-columns:repeat(3,minmax(0,1fr))}.telemetry .speed-card{grid-row:span 2}.telemetry .environment-card{grid-column:3}.telemetry .fuel-card{grid-column:2;grid-row:span 2}.telemetry .upcoming-card{display:block;grid-column:3}.telemetry .gauge{height:135px}.telemetry .speed-readout strong{font-size:43px}.telemetry .vessel-tag{font-size:8px;margin-top:15px}.telemetry .current-segment{flex-direction:column;gap:4px}.environment-grid{grid-template-columns:1fr;gap:12px}.environment-grid>div+div{border:0;padding:0}.fuel-value small{width:100%;margin:0}.upcoming-row{padding-top:10px}.upcoming-row:nth-child(n+2){display:none}.upcoming-number{display:none}.mini-row{font-size:10px;flex-wrap:wrap;gap:4px}.mini-row b{margin-left:auto}}
@media(max-width:540px){.topbar{padding:0 14px;gap:16px;height:60px}.brand{font-size:20px;gap:4px}.brand-symbol{width:28px}.brand-symbol svg{width:25px}.brand-light{font-size:13px}.topbar nav{margin-left:auto;gap:10px}.topbar nav button{display:none}.top-right{margin-left:0}.avatar{display:none}.top-right .icon-button{width:24px}.workspace{padding:12px;gap:18px}.planner{padding:17px}.planner h1{font-size:20px}#voyage-form{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:14px}.port-form{gap:7px}.port-fields select{font-size:12px;padding-left:8px}.port-fields label{font-size:11px}.port-fields label small{display:none}.port-line{width:8px}.port-line b{height:65px}.swap{top:67px}.field-heading{font-size:12px}.field-heading .tiny{font-size:9px}#vessel{font-size:10px;padding-left:7px}.segment-options{gap:3px}.segment-options button{font-size:11px;padding:6px 0}.field-hint{font-size:9px;margin-bottom:9px}.section-heading h2{font-size:13px}.route-presets{grid-template-columns:repeat(4,155px);max-height:150px}.overview-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:13px}.stat{padding:14px 15px}.stat strong{font-size:26px}.stat-label{font-size:12px}.stat small{font-size:10px}.dashboard-title h2{font-size:24px}.dashboard-title .section-eyebrow{font-size:9px}.plan-status{font-size:9px;gap:4px}.map-card{height:425px;border-radius:9px}.map-top{left:11px;right:11px;top:12px}.map-top>span:last-child{font-size:9px}.navigation-banner{left:11px;top:47px;max-width:calc(100% - 22px);padding:10px;gap:8px}.navigation-banner p{font-size:11px}.nav-kicker{font-size:7px}.nav-icon{min-width:29px;height:32px}.next-speed{font-size:20px}.map-tools{right:10px;top:133px}.map-legend{left:10px;right:auto;bottom:31px;gap:8px;font-size:8px;padding:6px 8px}.map-legend span:first-child{display:none}.map-coordinate{right:10px;bottom:16px;font-size:8px}.playback{padding:13px 12px 9px}.playback-heading h3{font-size:11px}.playback-heading>span{display:none}.playback-time{font-size:10px}.playback-bottom{flex-wrap:wrap;justify-content:space-between;gap:10px}.speed-controls label{display:none}.speed-controls{gap:5px}.speed-controls select{width:89px;font-size:10px}.speed-controls button{font-size:9px;padding:7px 5px}.transport{gap:2px}.transport .icon-button{width:24px}.play-button{min-width:82px;font-size:11px;padding:8px 10px}.playback-note{font-size:9px}.profile{padding:14px 12px 11px}.profile h3{font-size:11px}.profile-legend{gap:8px}.profile-legend .baseline-key{display:none}.profile-legend>span{font-size:8px}.chart-caption{font-size:8px}.chart-caption span:nth-child(2){max-width:220px;text-align:center}.telemetry{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.telemetry .speed-card,.telemetry .fuel-card{grid-row:auto;grid-column:auto}.telemetry .environment-card,.telemetry .upcoming-card{grid-column:auto}.telemetry .gauge{height:117px;margin:15px auto 0}.telemetry .speed-readout strong{font-size:40px}.telemetry .vessel-tag{margin-top:13px;padding-top:12px;font-size:8px;letter-spacing:1px}.telemetry .current-segment{font-size:10px;flex-direction:row;flex-wrap:wrap;gap:4px}.telemetry .current-segment span:last-child{font-size:8px}.fuel-value{margin:21px 0 13px}.fuel-value strong{font-size:29px}.mini-row{font-size:10px;margin-top:13px}.environment-grid{grid-template-columns:1fr 1fr;gap:4px}.environment-grid>div{grid-template-columns:1fr;gap:2px}.environment-grid svg{grid-row:auto;width:16px}.environment-grid strong{font-size:17px}.upcoming-row:nth-child(2){display:flex}.upcoming-row .upcoming-detail small{font-size:8px}.upcoming-row strong{font-size:10px}.upcoming-speed{font-size:13px}.dashboard-footer{flex-direction:column;align-items:flex-start;gap:6px;font-size:8px}.dashboard-footer button{font-size:9px}.dialog-heading{padding:19px}.dialog-heading h2{font-size:19px}.dialog-content{padding:19px;font-size:13px}.source-item a{font-size:13px}.source-item small{display:block;margin:4px 0}.dialog-subtitle{padding:15px 19px;font-size:12px}}
#globe{position:absolute;inset:0;z-index:1;background:var(--surface-2);touch-action:none}#globe canvas{display:block;outline:none}.view-switch{position:absolute;bottom:62px;left:16px;z-index:510;display:flex;align-items:center;gap:2px;background:var(--overlay);padding:4px;border:1px solid var(--line-strong);border-radius:7px;box-shadow:0 4px 14px var(--shadow)}.view-switch button{display:flex;align-items:center;gap:5px;padding:6px 9px;font-size:10px;border-radius:4px;color:var(--muted)}.view-switch button svg{width:13px;height:13px}.view-switch button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.view-switch button:last-child{border-left:1px solid var(--line-strong);margin-left:4px;padding:6px 7px;border-radius:0}.map-card:fullscreen{width:100vw;height:100vh;border:0;border-radius:0}.map-card:fullscreen .navigation-banner{top:70px;left:30px;font-size:16px}.map-card:fullscreen .view-switch{bottom:80px;left:30px}.map-card:fullscreen .map-legend{bottom:40px;left:30px}.map-card:fullscreen #globe-hint{bottom:84px}#globe-hint{position:absolute;bottom:77px;right:15px;color:var(--muted);z-index:510;font-size:9px;pointer-events:none}.globe-port{display:flex;gap:7px;align-items:center;color:var(--ink);font-size:11px;white-space:nowrap;pointer-events:none;text-shadow:0 1px 4px var(--shadow);background:var(--overlay);border:1px solid var(--line-strong);border-radius:5px;padding:5px 8px;transform:translateY(-19px)}.globe-port small{font-size:8px;display:block;color:var(--muted);letter-spacing:1px}.globe-port b{width:6px;height:6px;background:var(--mint);border-radius:50%}.globe-port.arrival{transform:translateY(19px)}.globe-port.arrival b{background:var(--accent)}.globe-ship{display:flex;align-items:center;gap:5px;pointer-events:none;filter:drop-shadow(0 0 7px var(--accent-glow))}.globe-ship svg{width:23px;height:23px}.globe-ship span{font-size:10px;white-space:nowrap;color:var(--ink);background:var(--overlay);border:1px solid var(--line-strong);padding:2px 5px;border-radius:4px}.scene-tooltip{background:var(--overlay);color:var(--ink);border:1px solid var(--line-strong);border-radius:6px;padding:8px;font:12px var(--font)}
@media(max-width:540px){.view-switch{left:10px;bottom:59px}.view-switch button{padding:5px 7px;font-size:9px}#globe-hint{bottom:105px;left:12px;right:auto;font-size:8px}.map-card:fullscreen #globe-hint{bottom:130px}.globe-port{font-size:10px;padding:4px 6px}}
.system-brand{font-size:19px;letter-spacing:-.6px;line-height:1.4}.system-brand small{display:block;font-size:8px;letter-spacing:1.6px;font-weight:500;color:var(--muted)}.planner h1{line-height:1.5}.planner .intro{font-size:13px;line-height:1.8;margin-top:7px}.model-premise{margin-top:20px;padding:16px 14px;border:1px solid var(--line-strong);border-radius:8px;background:linear-gradient(140deg,var(--accent-soft),var(--surface-2))}.premise-label{font-size:9px;letter-spacing:1.5px;color:var(--muted);display:block;margin-bottom:6px}.model-premise strong{font-size:15px;font-weight:600;color:var(--accent)}.model-premise p{font-size:12px;color:var(--muted);line-height:1.85;margin:8px 0 11px;word-break:keep-all}.model-premise>div{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:11px}.model-premise>div>span{background:var(--accent-soft);border:1px solid var(--line-strong);padding:3px 7px;border-radius:4px}.model-premise svg{width:12px;height:12px}.country-label{color:var(--muted);text-align:center;font:12px var(--font);text-shadow:0 1px 3px var(--accent-glow);white-space:nowrap;pointer-events:none}.ocean-label{color:var(--muted);font:italic 11px var(--font);letter-spacing:2px;text-align:center;white-space:nowrap;pointer-events:none}.map-segment-number{background:var(--overlay);border:1px solid var(--line-strong);border-radius:4px;text-align:center;line-height:18px;font-size:11px;font-weight:700;color:var(--ink);box-shadow:0 2px 7px var(--shadow)}.anchor-marker,.globe-port.anchor-marker,.globe-ship.anchor-marker{width:0;height:0;min-width:0;min-height:0;display:block;position:absolute;overflow:visible;background:none;border:0;padding:0;gap:0;pointer-events:none;white-space:nowrap}.globe-ship.anchor-marker svg{position:absolute;width:28px;height:28px;left:-14px;top:-14px;transform-origin:50% 50%;z-index:3}.globe-ship .ship-speed-label{position:absolute;left:23px;top:-11px;display:block;background:var(--overlay);border:1px solid var(--line-strong);border-radius:5px;padding:3px 7px;color:var(--ink);font-size:12px;line-height:18px;white-space:nowrap}.ship-anchor-ring{position:absolute;left:-16px;top:-16px;width:32px;height:32px;border:1px solid var(--line-strong);border-radius:50%;background:var(--accent-glow);box-shadow:0 0 12px var(--accent-glow);z-index:1}.globe-port .port-anchor-dot{position:absolute;left:-5px;top:-5px;width:10px;height:10px;background:var(--accent);border:2px solid var(--line-strong);border-radius:50%;box-shadow:0 0 0 4px var(--accent-glow)}.globe-port .port-caption{position:absolute;left:0;top:-48px;transform:translateX(-50%);display:block;background:var(--overlay);border:1px solid var(--line-strong);border-radius:5px;padding:5px 9px;text-align:center;font-size:12px;line-height:16px;white-space:nowrap}.globe-port.arrival .port-caption{top:16px}.globe-port.arrival .port-anchor-dot{background:var(--accent)}.globe-port .port-caption small{font-size:9px;letter-spacing:1px;color:var(--muted);display:block}.boundary-dot{position:absolute;left:-7px;top:-7px;width:14px;height:14px;padding:0;border:2px solid var(--line-strong);border-radius:50%;background:var(--point-color);box-shadow:0 0 0 3px var(--accent-glow),0 0 8px var(--accent-glow);pointer-events:auto;cursor:pointer}.boundary-dot:hover{box-shadow:0 0 0 5px var(--accent-glow)}.boundary-number{display:none;position:absolute;left:50%;top:-24px;transform:translateX(-50%);background:var(--overlay);border:1px solid var(--line-strong);border-radius:4px;min-width:22px;padding:1px 4px;font-size:11px;line-height:16px;color:var(--ink);pointer-events:none}.boundary-number.numbered,.globe-boundary.current .boundary-number,.globe-boundary.next .boundary-number,.boundary-dot:hover .boundary-number,.boundary-dot:focus-visible .boundary-number{display:block}.globe-boundary.current .boundary-dot,.globe-boundary.next .boundary-dot{width:18px;height:18px;left:-9px;top:-9px;border-width:3px;box-shadow:0 0 0 4px var(--accent-glow),0 0 14px var(--accent-glow)}.globe-boundary.passed .boundary-dot{background:var(--surface-2);box-shadow:0 0 0 2px var(--accent-glow)}.leaflet-container{background:var(--surface-2)}
@media(max-width:800px){.topbar{gap:20px}.system-brand{font-size:17px}.system-brand small{font-size:7px;letter-spacing:1px}.model-premise{display:grid;grid-template-columns:1fr auto;column-gap:20px}.model-premise .premise-label{grid-column:1}.model-premise strong{grid-column:1}.model-premise p{grid-column:1;margin-bottom:0}.model-premise>div{grid-column:2;grid-row:1 / span 3}.planner .intro{font-size:13px}}
@media(max-width:540px){.topbar{gap:8px}.system-brand{font-size:15px;gap:5px}.system-brand small{font-size:6px;letter-spacing:.6px}.topbar nav{font-size:11px}.model-premise{display:block}.model-premise p{margin-bottom:10px}.model-premise>div{font-size:12px}.globe-ship .ship-speed-label{font-size:11px}.boundary-dot{width:14px;height:14px}.planner h1{font-size:20px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.loading svg{animation:none}}

/* Requested palette, schedule and instructions; existing layout rules retained. */
#map,#globe,.leaflet-container,.map-card{background:var(--sea)}
.panel,.stat{background:var(--surface)}
.saving-stat{background:var(--surface);border-color:var(--line-strong)}
.country-label{color:var(--ink);text-shadow:0 1px 3px var(--land)}
.ocean-label{color:var(--muted)}
.globe-ship svg{fill:var(--accent);stroke:var(--ink)}
.globe-boundary.passed .boundary-dot{background:var(--point-color)}
.screen-mode{display:inline-flex;align-items:center;padding:3px;gap:2px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface-2);white-space:nowrap}
.screen-mode button{font-size:11px;padding:4px 7px;border-radius:4px;color:var(--muted)}
.screen-mode button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}
.schedule-fields{margin-top:18px;min-width:0}
.schedule-fields label{display:block;color:var(--muted);font-size:12px;margin:12px 0 6px}
.schedule-fields input{display:block;width:100%;max-width:100%;min-width:0;padding:8px 6px;font-size:11px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface-2);color:var(--ink)}
.schedule-chip-label{display:block;color:var(--muted);font-size:10px;margin-top:12px}
.schedule-chips{display:flex;gap:5px;margin:7px 0}
.schedule-chips button{flex:1;border:1px solid var(--line-strong);border-radius:5px;background:var(--surface-2);color:var(--ink);padding:5px 3px;font-size:11px}
.schedule-chips button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.required-speed{font-size:11px;color:var(--muted)}.required-speed strong{color:var(--ink)}
.schedule-message{font-size:11px;margin-top:8px;line-height:1.7;overflow-wrap:anywhere}
[data-level=bad]{color:var(--bad)}[data-level=warn]{color:var(--warn)}[data-level=good]{color:var(--good)}
.stat .arrival-time{color:var(--muted);font-size:10px;white-space:normal}
.arrival-status{display:inline-block;font-size:10px;margin-top:6px;padding:2px 5px;border:1px solid currentColor;border-radius:4px}
.speed-legend .speed-gradient{display:block;width:72px;height:4px;border-radius:3px;background:var(--speed-gradient)}
.speed-legend span:first-child{display:flex}.profile-legend>span>b{background:var(--speed-gradient)}
.instructions{margin-top:12px;padding:14px 16px;min-width:0;max-width:100%}
.instructions h3{font-size:12px}.instructions-scroll{overflow-x:auto;max-width:100%;margin-top:12px;overscroll-behavior-x:contain;scrollbar-color:var(--line-strong) var(--surface)}
.instructions-table{min-width:1060px;font-size:11px;white-space:nowrap}.instructions-table th{font-size:10px;color:var(--muted)}
.instructions-table td:nth-child(10),.instructions-table th:nth-child(10){text-align:left}.instructions-table tr{cursor:pointer}
.instructions-table tbody tr.current td,.instructions-table tbody tr.current:hover td{background:var(--accent-soft)}
.instructions-table tbody tr.current td:first-child{box-shadow:inset 3px 0 var(--accent)}
.instructions-table tr:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.speed-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--segment-color);margin-right:6px;vertical-align:middle}
.change-fast{color:var(--fast)}.change-slow{color:var(--slow)}
.environment-card .environment-grid{grid-template-columns:1fr 1fr}
.environment-card .environment-grid>div:first-child{grid-column:1/-1}
.environment-card .environment-grid>div:nth-child(2){border:0;padding-left:0}
.environment-card .environment-grid>div:nth-child(3){border-left:1px solid var(--line);padding-left:10px}
.environment-card #wave-height{font-size:12px;white-space:normal}.environment-card #segment-course{font-size:18px}
@media(max-width:800px){.schedule-fields{grid-column:1/-1;grid-row:5}.top-right{gap:5px}.screen-mode button{padding:4px 5px}.topbar{gap:12px}}
@media(max-width:540px){.screen-mode{padding:2px;gap:0}.screen-mode button{font-size:10px;padding:3px 4px}.topbar{flex-wrap:wrap;height:auto;min-height:60px;padding-top:9px;padding-bottom:9px}.top-right{margin-left:auto}.schedule-fields{display:grid;grid-template-columns:minmax(0,1fr);margin-top:8px}.instructions{padding:14px 12px}.environment-card #wave-height{font-size:11px}.speed-legend .speed-gradient{width:55px}}
