:root{color-scheme:light dark;--sea: #dde6eb;--sea-deep: #cbd8e0;--land: #fbf7ef;--land-2: #f2ece0;--ink: #0d1e29;--ink-2: #47606e;--ink-3: #455c69;--rule: #c3d0d8;--rule-2: #93a7b3;--invert: #fbf7ef;--caution: #c2006b;--caution-bg: #fbe6f0;--fair: #0a6551;--fair-bg: #e2f0eb;--high: #8a5a00;--high-bg: #f7edd9;--shadow: 0 1px 2px rgba(13, 30, 41, .07), 0 6px 20px -8px rgba(13, 30, 41, .16);--shadow-lift: 0 2px 6px rgba(13, 30, 41, .1), 0 18px 40px -14px rgba(13, 30, 41, .28);--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-display: ui-serif, "New York", "Iowan Old Style", Georgia, "Times New Roman", serif;--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--r-card: 12px;--r-ctl: 9px;--tap: 46px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--sea: #071219;--sea-deep: #040c11;--land: #0f2029;--land-2: #162c37;--ink: #e8eef2;--ink-2: #9db2be;--ink-3: #8ba3b0;--rule: #1e3541;--rule-2: #33525f;--invert: #071219;--caution: #ff6bae;--caution-bg: #3a0e27;--fair: #45d3b0;--fair-bg: #06302a;--high: #f0b657;--high-bg: #3a2a08;--shadow: 0 1px 2px rgba(0,0,0,.4), 0 6px 20px -8px rgba(0,0,0,.6);--shadow-lift: 0 2px 6px rgba(0,0,0,.5), 0 18px 40px -14px rgba(0,0,0,.7)}}:root[data-theme=dark]{--sea: #071219;--sea-deep: #040c11;--land: #0f2029;--land-2: #162c37;--ink: #e8eef2;--ink-2: #9db2be;--ink-3: #8ba3b0;--rule: #1e3541;--rule-2: #33525f;--invert: #071219;--caution: #ff6bae;--caution-bg: #3a0e27;--fair: #45d3b0;--fair-bg: #06302a;--high: #f0b657;--high-bg: #3a2a08;--shadow: 0 1px 2px rgba(0,0,0,.4), 0 6px 20px -8px rgba(0,0,0,.6);--shadow-lift: 0 2px 6px rgba(0,0,0,.5), 0 18px 40px -14px rgba(0,0,0,.7)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;padding:0;min-height:100%}body{background:var(--sea);color:var(--ink);font-family:var(--font-ui);font-size:17px;line-height:1.45;-webkit-text-size-adjust:100%;padding-top:var(--safe-t)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}:focus-visible{outline:3px solid var(--caution);outline-offset:2px;border-radius:5px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}.serif{font-family:var(--font-display);letter-spacing:-.015em}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);font-weight:500}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.03em}.muted{color:var(--ink-2)}.dim{color:var(--ink-3)}.small{font-size:13.5px;line-height:1.45}.tiny{font-size:12px;line-height:1.4}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.015em}.wrap{max-width:620px;margin:0 auto;padding:0 16px 40px}.topbar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--sea) 88%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--rule);padding:12px 16px;margin-bottom:16px;display:flex;align-items:center;gap:10px}.topbar h1{font-size:18px;flex:1}.row{display:flex;gap:10px;align-items:center}.between{display:flex;gap:10px;align-items:center;justify-content:space-between}.grow{flex:1;min-width:0}.stack>*+*{margin-top:12px}.card{background:var(--land);border:1px solid var(--rule);border-radius:var(--r-card);padding:16px;box-shadow:var(--shadow)}.card+.card{margin-top:12px}.section{display:flex;align-items:center;gap:10px;margin:26px 0 10px}.section:after{content:"";flex:1;height:1px;background:var(--rule)}label.field{display:block}.label{display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;font-weight:500}input[type=text],input[type=number],input[type=search],input[type=password],input[type=date],select{width:100%;min-height:var(--tap);padding:10px 12px;background:var(--land-2);border:1px solid var(--rule);border-radius:var(--r-ctl);color:var(--ink);appearance:none;-webkit-appearance:none}select{background-image:linear-gradient(45deg,transparent 50%,var(--ink-2) 50%),linear-gradient(135deg,var(--ink-2) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:34px}input:focus,select:focus{border-color:var(--rule-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:var(--tap);padding:0 18px;border-radius:var(--r-ctl);border:1px solid var(--rule-2);background:var(--land-2);color:var(--ink);font-size:15px;font-weight:550;transition:transform .08s ease}.btn:active{transform:scale(.985)}.btn.primary{background:var(--ink);color:var(--invert);border-color:var(--ink)}.btn.ghost{background:transparent;border-color:var(--rule)}.btn.block{display:flex;width:100%}.btn.sm{min-height:36px;font-size:13.5px;padding:0 12px}.seg{display:flex;background:var(--land-2);border:1px solid var(--rule);border-radius:var(--r-ctl);padding:3px;gap:3px}.seg button{flex:1;min-height:36px;border-radius:6px;font-size:13.5px;font-weight:550;color:var(--ink-2)}.seg button.on{background:var(--land);color:var(--ink);box-shadow:0 1px 2px #0000001a}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:44px;background:transparent;padding:0;border:none;margin:0}input[type=range]::-webkit-slider-runnable-track{height:4px;background:var(--rule);border-radius:2px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:32px;height:32px;border-radius:50%;background:var(--land);border:2px solid var(--ink);margin-top:-14px;box-shadow:var(--shadow)}input[type=range]::-moz-range-track{height:4px;background:var(--rule);border-radius:2px}input[type=range]::-moz-range-thumb{width:28px;height:28px;border-radius:50%;background:var(--land);border:2px solid var(--ink)}.sw{position:relative;width:50px;height:30px;border-radius:999px;background:var(--rule-2);flex:none;transition:background .16s ease}.sw:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .16s cubic-bezier(.3,1.4,.5,1);box-shadow:0 1px 3px #0000004d}.sw.on{background:var(--fair)}.sw.on:after{transform:translate(20px)}.headline{text-align:center;padding:6px 0 2px}.headline .cost{font-family:var(--font-mono);font-size:54px;font-weight:600;letter-spacing:-.045em;line-height:1}.headline .band{margin-top:8px;font-family:var(--font-mono);font-size:14px;color:var(--ink-2)}.headline .meta{margin-top:6px;font-size:13.5px;color:var(--ink-3)}.rangebar{margin-top:16px}.rangebar .track{position:relative;height:34px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.rangebar .band{position:absolute;top:0;bottom:0;background:var(--sea-deep);border-left:1px solid var(--rule-2);border-right:1px solid var(--rule-2)}.rangebar .exp{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink)}.rangebar .quote{position:absolute;top:-9px;bottom:-9px;width:2px;background:var(--caution)}.rangebar .quote:before{content:"";position:absolute;top:-5px;left:-4px;border:5px solid transparent;border-top-color:var(--caution)}.rangebar .scale{display:flex;justify-content:space-between;margin-top:6px}.advice{border-radius:var(--r-card);border:1px solid;padding:16px;display:flex;gap:14px;align-items:flex-start}.advice.save{background:var(--fair-bg);border-color:color-mix(in srgb,var(--fair) 38%,transparent)}.advice.flat{background:var(--land-2);border-color:var(--rule)}.advice .lead{font-family:var(--font-display);font-size:19px;line-height:1.3}.advice.save .lead{color:var(--fair)}.advice .sub{margin-top:6px;font-size:13.5px;line-height:1.5;color:var(--ink-2)}.verdict{border-radius:var(--r-card);border:1px solid;padding:18px}.verdict .lead{font-family:var(--font-display);font-size:22px;line-height:1.25}.verdict .sub{margin-top:8px;font-size:14px;line-height:1.5}.verdict.fair{background:var(--fair-bg);border-color:color-mix(in srgb,var(--fair) 38%,transparent)}.verdict.fair .lead{color:var(--fair)}.verdict.high{background:var(--high-bg);border-color:color-mix(in srgb,var(--high) 38%,transparent)}.verdict.high .lead{color:var(--high)}.verdict.investigate{background:var(--caution-bg);border-color:color-mix(in srgb,var(--caution) 40%,transparent)}.verdict.investigate .lead{color:var(--caution)}.verdict.neutral{background:var(--land-2);border-color:var(--rule)}table.speeds{width:100%;border-collapse:collapse}table.speeds th,table.speeds td{padding:9px 6px;border-bottom:1px solid var(--rule);text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13.5px}table.speeds th{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:500}table.speeds td:first-child,table.speeds th:first-child{text-align:left}table.speeds tr.chosen td{background:var(--sea-deep);font-weight:650}table.speeds tr.cheapest td:first-child:after{content:" ✓";color:var(--fair)}table.speeds tbody tr{cursor:pointer}table.speeds tbody tr:active td{background:var(--land-2)}.plate{background:var(--land);border:1px solid var(--rule-2);border-radius:var(--r-card);padding:14px 12px 10px}.plate .head{display:flex;justify-content:space-between;align-items:baseline;padding:0 4px 10px;border-bottom:1px solid var(--rule);margin-bottom:10px}.plate svg{display:block;width:100%;height:auto;overflow:visible}.plate .legend{display:flex;flex-wrap:wrap;gap:12px;padding:10px 4px 0;border-top:1px solid var(--rule);margin-top:8px}.plate .legend span{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-2);font-family:var(--font-mono)}.plate .legend i{width:14px;height:2px;display:block;flex:none}.kv{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--rule)}.kv:last-child{border-bottom:none}.kv .k{color:var(--ink-2);font-size:14px}.kv .v{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:14px;font-weight:550;text-align:right}.note{background:var(--land-2);border:1px solid var(--rule);border-left:3px solid var(--rule-2);border-radius:0 var(--r-ctl) var(--r-ctl) 0;padding:12px 13px;font-size:13.5px;line-height:1.5;color:var(--ink-2)}.note strong{color:var(--ink);font-weight:600}.warn{background:var(--caution-bg);color:var(--caution);border:1px solid color-mix(in srgb,var(--caution) 35%,transparent);border-radius:var(--r-ctl);padding:11px 13px;font-size:13.5px;line-height:1.45;font-weight:500}.tag{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--rule);border-radius:4px;padding:2px 5px}details.disclose{border-top:1px solid var(--rule)}details.disclose>summary{list-style:none;cursor:pointer;padding:13px 0;display:flex;align-items:center;justify-content:space-between;font-size:14px;font-weight:550;color:var(--ink-2)}details.disclose>summary::-webkit-details-marker{display:none}details.disclose>summary:after{content:"+";font-family:var(--font-mono);color:var(--ink-3);font-size:18px}details.disclose[open]>summary:after{content:"–"}details.disclose>.body{padding-bottom:16px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.swap{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;border:1px solid var(--rule);background:var(--land-2);color:var(--ink-2);flex:none}hr.rule{border:none;border-top:1px solid var(--rule);margin:16px 0}.amount-row{display:flex;align-items:baseline;justify-content:center;gap:8px;padding:14px 0 4px}.amount-row .cur{font-family:var(--font-mono);font-size:22px;color:var(--ink-3);font-weight:500}.amount-row .amount{font-family:var(--font-mono);font-size:44px;font-weight:600;letter-spacing:-.04em;background:none;border:none;padding:0;min-height:0;max-width:60%;text-align:center;color:var(--ink);width:auto;field-sizing:content;min-width:1.5ch}.amount-row .amount:focus{outline:none}.amount-row .amount::placeholder{color:var(--ink-3)}.catgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.catgrid button{min-height:56px;padding:8px 6px;border-radius:var(--r-ctl);border:1px solid var(--rule);background:var(--land-2);font-size:11.5px;font-weight:550;line-height:1.25;color:var(--ink-2);transition:transform .08s ease}.catgrid button:active{transform:scale(.97)}.catgrid button.on{background:var(--ink);color:var(--invert);border-color:var(--ink)}.chip{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--rule);background:var(--land-2);font-size:13px;font-weight:500;color:var(--ink-2);white-space:nowrap}.meter{height:10px;border-radius:5px;background:var(--sea-deep);overflow:hidden;display:flex}.meter i{display:block;height:100%}.bar-track{height:7px;border-radius:4px;background:var(--sea-deep);overflow:hidden}.bar-track i{display:block;height:100%;background:var(--ink-2)}.entry{border-bottom:1px solid var(--rule)}.entry:last-child{border-bottom:none}.entry-main{display:flex;gap:12px;align-items:center;width:100%;padding:12px 16px;text-align:left}.entry-main:active{background:var(--land-2)}.entry-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--ink-3);margin-top:2px}.entry-meta span:after{content:""}.entry-edit{padding:0 16px 14px}.hero{padding:4px 2px 0}.hero h2{font-family:var(--font-display);font-size:26px;line-height:1.15;letter-spacing:-.02em;margin:0 0 6px}.hero p{margin:0 0 16px;color:var(--ink-2);font-size:14.5px;line-height:1.55}.btn.big{padding:16px 18px;font-size:16px}.btn.block{display:block;width:100%}.btn.danger{background:var(--high);color:#fff;border-color:transparent}.btn.ghost.danger{background:transparent;color:var(--high);border-color:var(--high)}.section-head{font-family:var(--font-mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin:18px 2px 2px}.charter-card{display:block;width:100%;text-align:left;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.charter-card:active{transform:scale(.995)}@media(hover:hover){.charter-card:hover{box-shadow:var(--shadow-lift)}}.charter-name{font-family:var(--font-display);font-size:18px;font-weight:600;letter-spacing:-.01em;line-height:1.25}.tag.live{color:var(--fair);border-color:var(--fair);background:var(--fair-bg)}.route-line{margin-top:10px;font-size:13.5px;color:var(--ink-2);line-height:1.5;overflow-wrap:anywhere}.card-figs,.head-figs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid var(--rule)}.card-figs>div,.head-figs>div{display:flex;flex-direction:column;gap:3px;min-width:0}.card-figs .k,.head-figs .k{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.card-figs .v,.head-figs .v{font-family:var(--font-mono);font-size:15px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.card.empty{text-align:left}.steps{display:flex;gap:6px;margin:0 0 4px}.step{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}.step .dot{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-mono);font-size:12px;font-weight:600;background:var(--land-2);color:var(--ink-3);border:1px solid var(--rule)}.step.on .dot{background:var(--ink);color:var(--invert);border-color:var(--ink)}.step.done .dot{background:var(--fair-bg);color:var(--fair);border-color:var(--fair)}.step .lbl{font-size:11px;color:var(--ink-3);text-align:center;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.step.on .lbl{color:var(--ink);font-weight:600}.charter-head{background:var(--land-2);border:1px solid var(--rule);border-radius:var(--r-card);padding:14px 16px 16px}.backlink{background:none;border:0;padding:0;margin:0 0 8px;color:var(--ink-3);font-size:13px;cursor:pointer;min-height:var(--tap);display:inline-flex;align-items:center}@media(hover:hover){.backlink:hover{color:var(--ink)}}.charter-head h2{font-family:var(--font-display);font-size:21px;line-height:1.2;letter-spacing:-.015em;margin:0 0 3px}.seg.tabs{position:sticky;top:var(--safe-t);z-index:5}.port-select{margin-top:8px;font-size:16px}.card.bunker{border-left:3px solid var(--rule-2)}.card.bunker.plenty,.card.bunker.adequate{border-left-color:var(--fair)}.card.bunker.tight{border-left-color:var(--caution)}.card.bunker.insufficient{border-left-color:var(--high)}.card.bunker.unknown{border-left-color:var(--rule-2)}.fuel-bar{position:relative;display:flex;height:12px;margin-top:12px;background:var(--land-2);border-radius:999px;overflow:hidden;border:1px solid var(--rule)}.fuel-fill{background:var(--fair)}.fuel-need{background:var(--caution);opacity:.75}.leg-row{padding:11px 0;border-bottom:1px solid var(--rule)}.leg-row:last-of-type{border-bottom:0}.leg-main{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.leg-route{font-size:14.5px;font-weight:600;line-height:1.35}.leg-cost{font-family:var(--font-mono);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.leg-meta{margin-top:3px}.code-plate{margin-top:10px;padding:14px;text-align:center;font-family:var(--font-mono);font-size:22px;font-weight:700;letter-spacing:.12em;background:var(--land-2);border:1px dashed var(--rule-2);border-radius:var(--r-ctl);user-select:all}.code-input{font-family:var(--font-mono);font-size:18px;letter-spacing:.1em;text-transform:uppercase}.note.ok{border-left-color:var(--fair)}.card.danger-zone{border-color:var(--high)}.fuel-litres{margin-top:10px;padding:12px;border-radius:var(--r-ctl);background:var(--land-2);border:1px solid var(--rule)}.charter-name,.charter-head h2,.topbar h1,.leg-route,.hero h2{overflow-wrap:anywhere;word-break:break-word}.charter-head .tiny.dim,.charter-card .tiny.dim{overflow-wrap:anywhere}html,body{overflow-x:hidden}.wrap{max-width:min(620px,100%)}.seg button{min-height:44px}.chip{min-height:44px;padding-top:0;padding-bottom:0;display:inline-flex;align-items:center}.btn.sm{min-height:44px}.leg-open{width:100%;background:none;border:0;padding:0;cursor:pointer;text-align:left}.seg.wrap{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;height:auto;padding:4px}.seg.wrap button{border-radius:calc(var(--r-ctl) - 4px)}
