:root{--flood:#7fd4ff;--ebb:#ff6e40;--tide:#8ae59a;--forecast:#c7a6ff;--sun:#ffc24b;--sunset:#ff9a3d;--bg:#0b1013;--surface:#141b1f;--surface-variant:#1e272c;--raised:#29353b;--on-surface:#edf3f5;--on-surface-variant:#bfccd2;--outline:#54636a;--error:#ff8a80;--on-primary:#00212e;--touch:56px;--k:1;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:calc(16px * var(--k));line-height:1.35}:root.large{--k:1.25}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--on-surface);-webkit-tap-highlight-color:transparent;margin:0;overflow:hidden}#app{height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:flex}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.4;cursor:default}:focus-visible{outline:2px solid var(--flood);outline-offset:2px}.muted{color:var(--on-surface-variant)}.center{text-align:center}.error{color:var(--error)}.shell,.main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.topbar{align-items:center;gap:4px;min-height:60px;padding:4px 4px 4px 16px;display:flex;position:relative}.topbar h1{white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;font-size:1.35rem;font-weight:500;overflow:hidden}@media (width<=420px){.topbar h1{clip-path:inset(50%)}}.icon-btn{background:0 0;border:0;border-radius:50%;flex:none;place-items:center;width:48px;height:48px;display:grid}.icon-btn:hover:not(:disabled){background:#ffffff14}.icon-btn.on{color:var(--flood)}.icon-btn svg{fill:currentColor;width:24px;height:24px}.progress{background:#7fd4ff33;height:3px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.progress:after{content:"";background:var(--flood);width:40%;animation:1.2s ease-in-out infinite slide;position:absolute;inset:0}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(250%)}}.tabs{background:var(--surface);flex:none;order:1;display:flex}.tab{background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;min-height:72px;font-size:.8rem;font-weight:500;display:flex}.tab .pill{border-radius:16px;place-items:center;width:64px;height:32px;display:grid}.tab.selected .pill{background:#7fd4ff38}.tab svg{fill:currentColor;width:24px;height:24px}@media (orientation:landscape) and (height<=600px),(width>=840px) and (height>=601px){.tabs{flex-direction:column;order:-1;justify-content:center;width:80px}.tab{flex:none;min-height:80px}.shell{flex-direction:row}}.screen,.content{flex-direction:column;flex:1;min-height:0;display:flex}.fill-center{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex}.chips{scrollbar-width:none;flex:none;gap:8px;padding:4px 16px;display:flex;overflow-x:auto}.chip{border:1px solid var(--outline);min-height:var(--touch);white-space:nowrap;background:0 0;border-radius:8px;flex:none;align-items:center;display:inline-flex}.chip.selected{background:#7fd4ff38;border-color:#0000}.chip .chip-label{min-height:var(--touch);background:0 0;border:0;padding:0 4px 0 16px;font-weight:500}.chip .chip-remove{width:44px;min-height:var(--touch);background:0 0;border:0;place-items:center;display:grid}.chip-remove svg{fill:currentColor;width:18px;height:18px}.readout{text-align:center;flex-direction:column;align-items:center;gap:2px;padding:0 16px;display:flex}.readout-row{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:10px;display:flex}.headline{font-size:2rem;font-weight:700;line-height:1.2}.compact .headline{font-size:1.75rem}.headline-sm{font-size:1.5rem;font-weight:600}.title{font-size:1.1rem;font-weight:500}.tide-headline{margin-top:10px;font-size:1.75rem;font-weight:600}.compact .tide-headline{margin-top:0;font-size:1.35rem}.body{font-size:.9rem}.water-line{color:var(--forecast);flex-wrap:wrap;justify-content:center;column-gap:12px;margin-top:4px;display:flex}.water-line .model-tag{letter-spacing:.04em;text-transform:uppercase;opacity:.8;align-self:center;font-size:.75rem}.forecast-badge{color:var(--forecast);letter-spacing:.05em;font-size:.9rem;font-weight:600}.speed-btn{color:inherit;background:0 0;border:0;padding:0;position:relative}.speed-btn .unit{color:var(--flood);background:#7fd4ff29;text-decoration:underline}.menu{z-index:10;background:var(--raised);border-radius:4px;min-width:140px;padding:8px 0;font-size:1rem;font-weight:400;position:absolute;top:100%;left:0;box-shadow:0 4px 16px #00000080}.menu button{text-align:left;background:0 0;border:0;width:100%;min-height:48px;padding:0 16px;display:block}.menu button:hover{background:#ffffff14}.station-line{width:100%;min-height:var(--touch);text-align:center;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;padding:2px 16px;display:flex}.station-line .src{color:var(--flood);font-size:.9rem}.station-line .note{color:var(--on-surface-variant);font-size:.8rem}.probe{text-align:center;justify-content:center;align-items:center;min-height:calc(1.5rem + 4px);padding:2px 16px;font-size:1.05rem;font-weight:500;display:flex}.probe.hint{color:var(--on-surface-variant);font-size:.9rem;font-weight:400}.controls{min-height:var(--touch);scrollbar-width:none;flex:none;align-items:center;gap:6px;padding:0 16px;font-size:16px;display:flex;overflow-x:auto}.controls .chip{min-height:48px;padding:0 16px;font-weight:500}.divider-v{background:var(--outline);flex:none;width:1px;height:32px}.segmented{flex:none;display:flex}.segmented button{border:1px solid var(--outline);background:0 0;min-height:48px;padding:0 12px;font-weight:500}.segmented button:first-child{border-radius:24px 0 0 24px}.segmented button:last-child{border-left:0;border-radius:0 24px 24px 0}.segmented button.selected{background:#7fd4ff38}.chart{flex-direction:column;flex:1;min-height:0;padding:0 16px;display:flex}.chart-plots{border-radius:4px;flex-direction:column;flex:1;gap:4px;min-height:0;display:flex}.chart-canvas{touch-action:none;cursor:crosshair;flex:1;width:100%;min-height:0;display:block}.legend{color:var(--on-surface-variant);gap:12px;padding-top:4px;font-size:.8rem;display:flex}.legend-item{align-items:center;gap:4px;display:inline-flex}.dot{border-radius:50%;width:8px;height:8px}.caption{color:var(--on-surface-variant);padding-top:2px;font-size:.85rem;font-weight:500}.portrait-layout{flex-direction:column;flex:1;justify-content:center;min-height:0;display:flex}.portrait-layout .chart{flex:55%;min-height:200px}.large .portrait-layout .chart{min-height:250px}.landscape-layout{flex:1;gap:8px;min-height:0;display:flex}.landscape-layout>.left{flex-direction:column;flex:1;justify-content:center;display:flex;overflow-y:auto}.landscape-layout>.right{flex-direction:column;flex:1;min-height:0;display:flex}.wide-layout{flex:1;gap:8px;min-height:0;display:flex}.wide-layout>.side{width:calc(340px * var(--k));border-right:1px solid var(--outline);flex-direction:column;flex:none;justify-content:center;display:flex;overflow-y:auto}.wide-layout>.main-col{flex-direction:column;flex:1;min-width:0;padding-top:4px;display:flex}.wide-layout .chart-bar{flex:none;align-items:center;min-width:0;display:flex}.wide-layout .chart-bar .probe{text-align:right;flex:1;justify-content:flex-end;min-width:0}@media (width>=840px) and (height>=601px){.plan-header{flex-wrap:wrap;align-items:center;column-gap:16px;display:flex}.plan-header hr{flex-basis:100%}}.locked-card{background:var(--surface-variant);border-radius:12px;margin:8px 16px;padding:16px}.footer{border:0;border-top:1px solid var(--outline);text-align:left;background:0 0;flex-direction:column;flex:none;margin:0 16px;padding:4px 0;font-size:.9rem;display:flex}.footer .nav{color:var(--on-surface-variant);font-weight:600}.footer .row{align-items:center;gap:8px;min-width:0;display:flex}.footer .row .through{color:var(--on-surface-variant);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.footer .link{color:var(--flood);white-space:nowrap}.btn{min-height:var(--touch);background:var(--flood);color:var(--on-primary);border:0;border-radius:28px;padding:0 24px;font-weight:500}.btn-outline{min-height:var(--touch);border:1px solid var(--outline);color:var(--flood);white-space:nowrap;background:0 0;border-radius:28px;flex:none;padding:0 20px;font-weight:500}.btn-text{min-height:48px;color:var(--flood);white-space:nowrap;background:0 0;border:0;border-radius:24px;padding:0 12px;font-weight:500}.btn-text:hover,.btn-outline:hover{background:#7fd4ff14}.plan-header{flex:none;padding:4px 16px 0}.plan-header .label{font-size:1.35rem}.plan-header .buttons{scrollbar-width:none;align-items:center;gap:8px;padding:4px 0;display:flex;overflow-x:auto}.plan-header hr{border:0;border-top:1px solid var(--outline);margin:8px 0 0}.plan-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.scrim{z-index:100;background:#0009;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog{background:var(--surface-variant);border-radius:28px;flex-direction:column;gap:12px;width:100%;max-width:560px;max-height:calc(100dvh - 48px);padding:24px;display:flex;overflow-y:auto}.dialog h2{margin:0;font-size:1.5rem;font-weight:400}.dialog p{margin:0}.dialog .actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.scrim.sheet{align-items:flex-end;padding:0}.sheet-body{background:var(--surface);width:100%;max-width:640px;max-height:85dvh;padding:8px 16px calc(24px + env(safe-area-inset-bottom));border-radius:28px 28px 0 0;flex-direction:column;display:flex}.sheet-body.wide{max-width:min(1200px,100%);max-height:92dvh}.sheet-body .handle{background:var(--outline);border-radius:2px;width:32px;height:4px;margin:8px auto 16px}.sheet-body h2{margin:0;font-size:1.75rem;font-weight:400}.sheet-scroll{min-height:0;overflow-y:auto}.section-header{color:var(--on-surface-variant);padding:8px 0;font-size:1.05rem;font-weight:500}hr.sep{border:0;border-top:1px solid var(--outline);margin:8px 0}.station-row{text-align:left;width:100%;min-height:var(--touch);background:0 0;border:0;align-items:center;gap:12px;padding:8px 0;display:flex}.radio{border:2px solid var(--on-surface-variant);border-radius:50%;flex:none;place-items:center;width:20px;height:20px;display:grid}.radio.on{border-color:var(--flood)}.radio.on:after{content:"";background:var(--flood);border-radius:50%;width:10px;height:10px}.table-row{grid-template-columns:1.2fr 1fr .8fr;align-items:center;padding:8px 0;font-size:1.05rem;font-weight:500;display:grid}.table-row.past{opacity:.5}.table-row .h{text-align:right}.table-row .kind-tide{color:var(--flood);font-weight:600}.table-row .kind-sun{color:var(--sun);align-items:center;gap:6px;font-weight:600;display:flex}.kind-sun svg{fill:currentColor;width:20px;height:20px}.almanac{border-collapse:collapse;width:100%;font-size:1.05rem}.almanac th,.almanac td{text-align:left;white-space:nowrap;font-variant-numeric:tabular-nums;padding:10px 12px}.almanac thead th{background:var(--surface);color:var(--on-surface-variant);border-bottom:1px solid var(--outline);font-weight:600;position:sticky;top:0}.almanac tbody th{font-weight:600}.almanac tbody tr{border-bottom:1px solid var(--surface-variant)}.almanac tbody:not(:last-child) tr:last-child{border-bottom-color:var(--outline)}.almanac tr.past{opacity:.5}.almanac .num{text-align:right}.almanac .high{color:var(--flood)}.almanac .sunrise{color:var(--sun)}.almanac .sunset{color:var(--sunset)}.field{flex-direction:column;gap:4px;display:flex}.field input{font:inherit;color:inherit;border:1px solid var(--outline);background:0 0;border-radius:4px;padding:14px 16px}.field input:focus{outline:2px solid var(--flood);border-color:#0000}.map-dialog{z-index:100;background:var(--bg);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex;position:fixed;inset:0}.map-dialog .map{flex:1}.map-dialog .bar{align-items:center;gap:8px;padding:8px 16px;display:flex}.map-dialog .bar .hint{color:var(--on-surface-variant);flex:1}.start{flex-direction:column;gap:12px;width:100%;max-width:440px;display:flex}.start h2{margin:0 0 4px;font-size:1.35rem;font-weight:500}.start p{margin:0}.start-note{font-size:.9rem}.choices{flex-direction:column;gap:12px;display:flex}.choice{min-height:var(--touch);border:1px solid var(--outline);background:var(--surface-variant);text-align:left;border-radius:16px;align-items:flex-start;gap:16px;padding:16px;display:flex}.choice:hover:not(:disabled){background:var(--raised)}.choice svg{width:28px;height:28px;fill:var(--flood);flex:none}.choice-title{font-size:1.1rem;font-weight:500;display:block}.choice-text{color:var(--on-surface-variant);margin-top:4px;font-size:.9rem;display:block}.install-banner{background:var(--raised);flex:none;align-items:center;gap:8px;padding:4px 16px;font-size:.9rem;display:flex}.install-banner span{flex:1}.spinner{border:4px solid #7fd4ff33;border-top-color:var(--flood);border-radius:50%;width:48px;height:48px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dialog h3{margin:8px 0 0;font-size:1.1rem;font-weight:500}.dialog a{color:var(--flood)}.credits{flex-direction:column;gap:8px;margin:0;padding-left:20px;display:flex}.credits-license summary{min-height:var(--touch);cursor:pointer;align-items:center;display:flex}.credits-license pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--on-surface-variant);background:var(--surface);border-radius:12px;margin:8px 0 0;padding:12px;font-size:.8rem}.dialog .note{color:var(--on-surface-variant);font-size:.9rem}
