:root{--ink: #0d1417;--ink-2: #111b1f;--panel: #142024;--panel-2: #18272c;--line: #2b3b41;--line-soft: #203035;--paper: #eae2cf;--paper-dim: #b9b3a1;--muted: #85959a;--brass: #c9a24b;--brass-dim: #8a713a;--sea: #4fa3a0;--amber: #d19436;--red: #c9604c;--green: #7ba05b;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html{background:var(--ink);color:var(--paper);font-family:var(--sans);-webkit-text-size-adjust:100%}body{margin:0;background:repeating-linear-gradient(0deg,transparent 0 31px,rgba(255,255,255,.012) 31px 32px),var(--ink);color:var(--paper);font-size:15px;line-height:1.45}.sheet{max-width:880px;margin:0 auto;padding:0 14px 72px}.masthead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:18px 2px 12px;border-bottom:2px solid var(--brass-dim);margin-bottom:14px}.masthead h1{font-family:var(--serif);font-size:26px;letter-spacing:.04em;margin:0;font-weight:600}.masthead h1 span{color:var(--brass);font-weight:400}.masthead .sub{font-family:var(--mono);font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;text-align:right;line-height:1.7}.alerts{display:grid;gap:6px;margin:0 0 14px}.alert{display:grid;grid-template-columns:86px 1fr;gap:10px;align-items:baseline;border:1px solid var(--line);border-left-width:3px;background:var(--ink-2);padding:8px 10px;font-size:13px}.alert .k{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.12em}.alert.warning{border-left-color:var(--red)}.alert.warning .k{color:var(--red)}.alert.caution{border-left-color:var(--amber)}.alert.caution .k{color:var(--amber)}.alert.info{border-left-color:var(--sea)}.alert.info .k{color:var(--sea)}.alert .t{color:var(--paper)}.alert .d{color:var(--paper-dim)}.alert a{color:var(--brass)}.panel{background:var(--panel);border:1px solid var(--line);margin-bottom:12px}.panel>header{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line-soft)}.panel>header h2{font-family:var(--mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--paper-dim);margin:0}.panel>header .meta{font-family:var(--mono);font-size:11px;color:var(--muted)}.panel .body{padding:12px}.panel .foot{padding:8px 12px;border-top:1px solid var(--line-soft);font-size:12px;color:var(--muted)}.readgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line-soft);border:1px solid var(--line-soft)}.read{background:var(--ink-2);padding:10px 10px 8px;min-width:0}.read .label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:4px}.read .val{font-family:var(--mono);font-size:20px;font-variant-numeric:tabular-nums;color:var(--paper);white-space:nowrap}.read .val small{font-size:11px;color:var(--muted);font-weight:400}.read .sub2{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:2px}.tidetable{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums}.tidetable th{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:600;text-align:left;padding:4px 6px;border-bottom:1px solid var(--line-soft)}.tidetable td{padding:5px 6px;border-bottom:1px solid var(--line-soft)}.tidetable tr:last-child td{border-bottom:0}.hw{color:var(--brass);font-weight:700}.lw{color:var(--sea);font-weight:700}.port{border-top:1px solid var(--line-soft);padding:10px 0}.port:first-child{border-top:0;padding-top:0}.port:last-child{padding-bottom:0}.port .row1{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.port .name{font-family:var(--serif);font-size:17px}.port .state{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em}.state.open{color:var(--green)}.state.shut{color:var(--amber)}.state.free{color:var(--muted)}.port .note{font-size:12.5px;color:var(--paper-dim);margin:2px 0 6px}.win{display:flex;justify-content:space-between;gap:8px;font-family:var(--mono);font-size:12px;padding:5px 8px;background:var(--ink-2);border:1px solid var(--line-soft);margin-bottom:4px;font-variant-numeric:tabular-nums}.win b{color:var(--brass);font-weight:600}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}label.f{display:grid;gap:4px;font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}select,input[type=datetime-local]{background:var(--ink-2);color:var(--paper);border:1px solid var(--line);padding:8px 9px;font-family:var(--mono);font-size:13px;width:100%}button.go{background:var(--brass);color:#161006;border:0;font-family:var(--mono);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:10px 14px;cursor:pointer;width:100%}button.go:active{transform:translateY(1px)}.leg{display:grid;grid-template-columns:52px 1fr auto;gap:8px;align-items:center;font-family:var(--mono);font-size:12px;padding:6px 0;border-bottom:1px solid var(--line-soft);font-variant-numeric:tabular-nums}.leg:last-child{border-bottom:0}.pill{font-size:10px;text-transform:uppercase;letter-spacing:.1em;padding:2px 7px;border:1px solid var(--line)}.pill.fair{color:var(--green);border-color:var(--green)}.pill.foul{color:var(--red);border-color:var(--red)}.pill.slack{color:var(--muted)}.reco{font-size:13.5px;color:var(--paper);border-left:3px solid var(--brass);padding-left:10px;margin:10px 0 4px}.cap{font-family:var(--mono);font-size:11px;color:var(--muted)}svg text{font-family:var(--mono)}.tick{stroke:var(--line-soft);stroke-width:1}.axis{fill:var(--muted);font-size:9px}.datum{border:1px dashed var(--line);padding:10px 12px;font-size:12.5px;color:var(--paper-dim)}.datum b{color:var(--paper)}.gloss{margin:0;display:grid}.gloss>div{display:grid;grid-template-columns:150px 1fr;gap:10px;padding:9px 0;border-bottom:1px solid var(--line-soft);align-items:baseline}.gloss>div:last-child{border-bottom:0;padding-bottom:0}.gloss>div:first-child{padding-top:0}.gloss dt{margin:0;font-family:var(--mono);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--brass)}.gloss dd{margin:0;font-size:13.5px;color:var(--paper)}@media(max-width:560px){.gloss>div{grid-template-columns:1fr;gap:2px}}@media(min-width:700px){.sheet{padding:0 20px 80px}.masthead h1{font-size:32px}.cols{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}.cols .panel{margin-bottom:0}.colstack{display:grid;gap:12px}}.portrow{display:flex;align-items:end;gap:8px;margin-bottom:14px}.portrow .f{min-width:190px}.autotag{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--brass);border:1px solid var(--brass-dim);padding:5px 8px;margin-bottom:1px}.controls{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.langset{display:inline-flex;border:1px solid var(--line)}.langset button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:var(--muted);border:0;border-right:1px solid var(--line-soft);font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;padding:4px 8px;cursor:pointer}.langset button:last-child{border-right:0}.navlink{align-self:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--brass);text-decoration:none;border-bottom:1px solid var(--brass-dim);padding-bottom:1px;margin-left:4px}.langset button.active{background:var(--brass);color:#161006;font-weight:700}[data-theme=light] .langset button.active{color:#fffdf4}[data-theme=light]{--ink: #ece5d0;--ink-2: #e0d7bc;--panel: #f7f2e3;--panel-2: #fffdf4;--line: #c4b896;--line-soft: #d9cfae;--paper: #1d2523;--paper-dim: #49534f;--muted: #68736f;--brass: #8a6d1f;--brass-dim: #a68e3f;--sea: #1e6e6c;--amber: #96590f;--red: #a23624;--green: #4c7534;--land: #cfdcc9}:root{--land: #1d2c2a}[data-theme=light] body{background:repeating-linear-gradient(0deg,transparent 0 31px,rgba(0,0,0,.025) 31px 32px),var(--ink)}
