:root{--ink:#153d42;--muted:#658084;--aqua:#168f90;--orange:#e79346;--paper:#fbfdfa;--line:#dce7e4;--header:80px;--nav:66px}*{box-sizing:border-box}html,body{height:100%;margin:0}body{color:var(--ink);background:#f2f6f3;font:14px/1.45 system-ui,'Malgun Gothic',sans-serif}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #49b7c3;outline-offset:2px}[hidden]{display:none!important}header{height:var(--header);display:flex;gap:18px;align-items:center;padding:0 24px;background:var(--paper);border-bottom:1px solid var(--line);position:relative;z-index:1000}.brand{font-size:23px;font-weight:900;letter-spacing:-1px}.brand span{color:var(--aqua);margin-left:3px}.brand small{display:block;font-size:9px;font-weight:500;letter-spacing:2px}form{position:relative;display:flex;align-items:center;width:340px;background:#edf3ef;border-radius:12px;padding:0 12px}form input{border:0;background:none;min-width:0;flex:1;height:43px;outline:none}form button{font-size:27px;width:32px}.icon{width:39px;height:39px;display:grid;place-items:center;font-size:24px;background:var(--paper);border-radius:10px}header>.icon{margin-left:auto}#searchResults{position:absolute;top:50px;left:0;right:0;border-radius:12px;background:var(--paper);box-shadow:0 8px 26px #173b3e25;overflow:hidden}#searchResults button{display:block;text-align:left;width:100%;padding:13px 16px;border-bottom:1px solid var(--line)}#searchResults button:hover{background:#edf5f2}main{height:calc(100dvh - var(--header) - var(--nav));overflow:hidden}.screen{height:100%}.home{overflow-y:auto;max-width:850px;margin:auto;padding:24px 28px 28px}.home-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.eyebrow{color:var(--muted);font-size:10px}.home h1{font-size:25px;margin:4px 0 0}.update{font-size:10px;color:var(--muted)}.week{display:flex;overflow-x:auto;gap:4px;padding:0 0 17px;margin-bottom:8px;scrollbar-width:thin}.week>button{flex:1;min-width:76px;display:grid;gap:4px;text-align:center;padding:10px 6px;border-radius:12px;font-size:12px}.week button.active{background:#dceee7}.week b{font-size:20px;font-weight:700}.week b small{font-size:10px;margin-left:2px;font-weight:400}.week em{font-size:11px;font-style:normal;color:var(--muted)}.week .dayrain{color:#6888a2;font-size:11px}.week>span{padding:12px;color:var(--muted)}.wind-panel,.tide-panel{padding:22px 0;border-top:1px solid #d3e1da}.section-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-top h2{font-size:16px;margin:0;font-weight:700}.section-top>span{font-size:11px;color:var(--muted)}.weather-now{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.weather-now strong{display:block;font-size:49px;line-height:1.1;letter-spacing:-1.5px}.weather-now strong small{font-size:14px;font-weight:400;letter-spacing:0}.weather-now #windArrow{display:inline-block;font-size:31px;color:var(--aqua)}.weather-now #windDirection{font-size:17px;font-weight:500;display:block;margin:10px 0 0 4px}.rain-now{display:grid;text-align:right;gap:6px}.rain-now>span{font-size:12px;color:var(--muted)}.rain-now b{font-size:24px}.rain-now small{font-size:10px;color:var(--muted)}.hours{display:flex;gap:4px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#b5cdca transparent}.hours button{flex:1;min-width:65px;display:grid;gap:6px;border-radius:9px;padding:10px 4px;font-size:11px;text-align:center}.hours button.active{background:#e4f0eb}.hours em{font-size:10px;font-style:normal;color:var(--muted)}.hours small{font-size:9px;font-weight:400;color:var(--muted)}.hours b{font-size:13px}.hours button>span{font-size:10px;color:var(--muted)}.weather-scrub{display:flex;align-items:center;gap:13px;margin-top:17px;font-size:11px;color:var(--muted)}.weather-scrub input{flex:1;accent-color:var(--aqua)}.weather-scrub output{font-size:13px;font-variant-numeric:tabular-nums}.wind-panel #weatherStatus{font-size:10px;color:var(--muted);margin:8px 0 0;min-height:15px}.tides{display:flex;margin:10px 0 18px}.tides>div{width:25%;display:grid;gap:7px}.tides span{color:var(--muted);font-size:12px}.tides b{font-weight:650;font-size:17px}.tidal-range{display:flex;justify-content:space-between;align-items:center;font-size:12px}.tidal-range span{font-size:10px;color:var(--muted)}.home-footer{display:flex;justify-content:space-between;align-items:center;gap:15px;border-top:1px solid var(--line);padding-top:18px;font-size:10px;color:var(--muted)}.home-footer button{background:var(--ink);color:white;padding:12px 18px;border-radius:11px;font-size:12px}.map-screen{position:relative;background:#d7e8e6}#map{height:100%;width:100%;background:#d7e8e6}.map-plan{position:absolute;left:18px;top:16px;z-index:900;display:flex;background:var(--paper);border-radius:13px;padding:10px 2px;box-shadow:0 4px 20px #173b3e15}.map-plan label{display:flex;flex-direction:column;border-right:1px solid var(--line);padding:0 13px;gap:3px}.map-plan label:last-child{border:0}.map-plan span{color:var(--muted);font-size:9px}.map-plan input,.map-plan select{background:none;border:0;font-size:12px;max-width:132px;padding:0;min-height:25px}.map-tools{position:absolute;top:17px;right:18px;z-index:900;display:grid;gap:8px}.map-tools .icon{box-shadow:0 3px 15px #173b3e12}.hint{position:absolute;top:90px;left:20px;z-index:850;color:var(--ink);background:#ffffffe0;border-radius:8px;padding:6px 10px;font-size:11px;pointer-events:none}.legend{position:absolute;bottom:157px;left:20px;z-index:850;display:flex;align-items:center;gap:7px;font-size:10px;background:#fbfdfae8;padding:6px 10px;border-radius:8px}.line{display:inline-block;width:16px;border-top:3px solid var(--ink)}.dot{width:7px;height:7px;border-radius:50%;display:inline-block}.khoa{background:var(--aqua)}.windy{background:var(--orange)}.map-dock{position:absolute;z-index:950;bottom:28px;left:18px;width:430px;max-width:calc(100% - 36px);padding:12px 16px 9px;background:#fbfdfaf7;border-radius:17px;box-shadow:0 7px 30px #183e4224;backdrop-filter:blur(10px)}.summary{display:flex;justify-content:space-between;align-items:center;gap:10px}.summary strong{font-size:30px;letter-spacing:-1px;line-height:1.1}.summary strong small{font-size:12px;letter-spacing:0;font-weight:500}.summary-right{text-align:right;display:grid;gap:3px;flex:1}.summary-right b{font-size:12px}.summary-right span{font-size:10px;color:var(--muted)}#details{border-left:1px solid var(--line);padding-left:10px;font-size:11px}.timeline{display:flex;gap:12px;align-items:center;padding-top:11px}.timeline button{font-size:10px;white-space:nowrap;border:1px solid var(--line);border-radius:7px;padding:6px}.timeline input{flex:1;min-width:0;accent-color:var(--aqua)}.timeline output{font-size:12px;font-variant-numeric:tabular-nums}.footnote{display:flex;justify-content:space-between;gap:8px;font-size:9px;color:var(--muted);padding-top:7px}.leaflet-top.leaflet-left{top:127px;left:9px}.leaflet-control-zoom{border:0!important;box-shadow:0 3px 15px #173b3e12!important}.leaflet-control-attribution{font-size:9px!important}.waypoint{border:2px solid white;border-radius:50%;background:var(--ink);color:white;text-align:center;line-height:22px;font-size:10px;box-shadow:0 2px 5px #0004}.flow-icon{background:none;border:0}.flow-shell{height:32px;width:32px;position:relative}.flow-motion{position:absolute;font-size:23px;line-height:1;left:5px;top:6px;animation:flow 1.5s linear infinite;filter:drop-shadow(0 1px 1px #fff);font-weight:900}.flow-motion:nth-child(2){animation-delay:-.75s}@keyframes flow{0%{transform:translateY(9px);opacity:0}30%{opacity:1}100%{transform:translateY(-10px);opacity:0}}@media(prefers-reduced-motion:reduce){.flow-motion{animation:none}.flow-motion:nth-child(2){display:none}}.leaflet-popup-content{font-size:12px;line-height:1.7}.leaflet-popup-content b{font-size:13px}.warning{color:#ad6130}.bottom-nav{height:var(--nav);padding-bottom:env(safe-area-inset-bottom);display:flex;justify-content:center;gap:10px;background:var(--paper);border-top:1px solid var(--line);position:relative;z-index:1000}.bottom-nav button{width:150px;display:flex;justify-content:center;align-items:center;gap:8px;color:var(--muted);font-size:12px}.bottom-nav button span{font-size:22px}.bottom-nav button.active{color:var(--ink);font-weight:750}.bottom-nav button.active:after{content:'';height:3px;width:24px;position:absolute;bottom:5px;background:var(--aqua);border-radius:3px}dialog{border:0;background:var(--paper);color:var(--ink);width:620px;max-width:calc(100% - 28px);max-height:82dvh;border-radius:22px;padding:22px;box-shadow:0 16px 80px #153d4244}dialog::backdrop{background:#14383d50;backdrop-filter:blur(3px)}.sheet-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.sheet-top h2{font-size:20px;margin:0}#sheetBody p{font-size:12px;color:var(--muted)}.source-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.status-dot{width:8px;height:8px;border-radius:50%;background:#b7c8c7;display:inline-block;margin-right:8px}.status-dot.ok{background:var(--aqua)}table{width:100%;border-collapse:collapse;font-size:11px}th{text-align:left;color:var(--muted);font-weight:500}td,th{padding:12px 4px;border-bottom:1px solid var(--line)}tr[data-row]{cursor:pointer}.actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}.actions button{border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:12px}a{color:var(--aqua)}
@media(max-width:600px){:root{--header:68px;--nav:calc(60px + env(safe-area-inset-bottom))}header{padding:0 12px;gap:10px}.brand{font-size:19px}.brand small{letter-spacing:1px;font-size:8px}form{width:auto;flex:1;padding:0 8px}form input{width:100%;height:39px;font-size:12px}form button{font-size:22px;width:24px}header>.icon{width:30px;font-size:21px}.home{padding:18px 17px 25px}.home h1{font-size:22px}.home-heading{margin-bottom:13px}.update{font-size:9px;max-width:45%;text-align:right}.week{gap:2px;padding-bottom:13px;margin-bottom:0}.week>button{min-width:47px;gap:3px;font-size:10px;padding:8px 3px}.week b{font-size:14px}.week b small{font-size:8px}.week em,.week .dayrain{font-size:9px}.wind-panel,.tide-panel{padding:18px 0}.weather-now strong{font-size:42px}.weather-now #windDirection{font-size:15px}.rain-now b{font-size:19px}.rain-now>span{font-size:10px}.rain-now small{font-size:9px}.hours button{min-width:56px;font-size:10px;padding:8px 3px;gap:5px}.hours b{font-size:12px}.tides b{font-size:13px}.tides span{font-size:10px}.tidal-range{font-size:11px}.tidal-range span{font-size:9px}.home-footer{flex-direction:column;align-items:stretch;text-align:center;gap:12px}.map-plan{left:10px;right:10px;top:10px;padding:8px 0}.map-plan label{padding:0 8px;flex:1;min-width:0}.map-plan input,.map-plan select{width:100%;max-width:none;font-size:11px}.map-plan input[type=date]{min-width:100px}.map-tools{right:10px;top:85px;gap:7px}.map-tools .icon{width:35px;height:35px;font-size:22px}.hint{top:83px;left:10px;font-size:10px;max-width:calc(100% - 63px)}.leaflet-top.leaflet-left{top:122px;left:1px}.legend{left:10px;bottom:145px;font-size:9px}.map-dock{left:10px;right:10px;width:auto;max-width:none;bottom:24px;padding:11px 13px 8px}.summary strong{font-size:27px}.summary-right b{font-size:11px}.summary-right span{font-size:9px}.footnote{font-size:8px}.bottom-nav button{flex:1;max-width:190px}.bottom-nav button.active:after{bottom:calc(4px + env(safe-area-inset-bottom))}}

.week-tides{border-top:1px solid var(--line);padding:20px 0}.week-tides h2{font-size:14px}.week-tides p{font-size:10px;color:var(--muted);margin:0 0 13px}.tide-week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.tide-day{border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:11px 8px;text-align:left}.tide-day.active{border-color:var(--aqua);background:#e9f3ed}.tide-day header{height:auto;display:flex;align-items:center;justify-content:space-between;padding:0;border:0;background:none;font-size:11px}.tide-day header b{font-size:14px}.tide-day .tag{font-size:8px;display:block;color:#976a39;margin:7px 0}.tide-day dl{margin:0;font-size:10px}.tide-day dl>div{margin-top:8px}.tide-day dt{color:var(--muted);font-size:9px}.tide-day dd{margin:2px 0 0;font-size:11px}.draw-controls{position:absolute;top:89px;left:18px;z-index:910;display:flex;gap:7px}.draw-controls button{background:var(--paper);padding:9px 14px;border-radius:9px;font-size:11px;box-shadow:0 3px 15px #173b3e14}.draw-controls button.active{background:var(--ink);color:white}.hint{top:135px}.leaflet-top.leaflet-left{top:178px}.waypoint.start{background:#168f90}.waypoint.end{background:#e79346}#map[data-drawing=true]{cursor:crosshair}@media(max-width:600px){.tide-week-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.tide-day{padding:12px}.tide-day dl{display:grid;grid-template-columns:1fr 1fr;gap:1px 8px}.tide-day dd{font-size:12px}.tide-day header b{font-size:15px}.draw-controls{top:84px;left:10px}.draw-controls button{padding:8px 11px;font-size:10px}.hint{top:127px}.leaflet-top.leaflet-left{top:169px}.map-tools{top:84px}}

.follow{background:#178772}.against{background:#d66549}.cross{background:#8a6cc4}#briefing{font-size:11px;border-left:1px solid var(--line);padding-left:8px}.brief-lead{font-size:16px!important;color:var(--ink)!important;line-height:1.75!important}.brief-metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 0}.brief-metrics>div{background:#edf3ee;padding:12px;border-radius:10px;font-size:11px}.brief-metrics b{display:block;font-size:16px;margin-top:5px}.brief-list{padding:0;margin:14px 0;list-style:none}.brief-list li{padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}.brief-loading{color:var(--muted);padding:18px 0}

@media(max-width:600px){.summary{gap:6px}#briefing,#details{font-size:10px;padding-left:6px;padding-right:6px}.summary-right{min-width:0;max-width:120px}}

#favorites{display:flex;gap:7px;overflow-x:auto;padding:0 0 15px}#favorites button{white-space:nowrap;border:1px solid var(--line);border-radius:20px;padding:8px 12px;font-size:12px}#favorites button.active{background:var(--ink);color:white}.home-heading h1{display:inline}#saveFavorite{font-size:22px;color:var(--aqua);margin-left:8px}#retryTides{font-size:11px;color:var(--aqua)}.week-tides .tide-error{color:#b45534;font-weight:600}#searchResults{z-index:2000}#tideStatus{white-space:normal;overflow-wrap:anywhere}
/* 3.7 · original two-tab SEA FLOW restored with a compact week and SwimUp links */
.home{max-width:850px;padding-top:18px;padding-bottom:12px;display:flex;flex-direction:column}.home-heading{margin-bottom:10px}.home h1{margin-right:3px}.week-title{display:flex;justify-content:space-between;align-items:center;padding:7px 0 12px}.week-title h2{font-size:14px;margin:0}.week-title button{font-size:10px;color:var(--muted)}#favorites{padding-bottom:9px;flex-shrink:0;scrollbar-width:none}#favorites button{font-size:10px;padding:5px 9px}.forecast-head,.forecast-day{display:grid;grid-template-columns:58px 1.1fr 1.35fr .8fr;align-items:center;gap:10px}.forecast-head{font-size:10px;color:var(--muted);padding:8px 11px;border-bottom:1px solid var(--line)}.forecast-day{width:100%;text-align:left;padding:10px 11px;border-bottom:1px solid var(--line);min-height:66px;border-radius:9px}.forecast-day.active{background:#e0eee7}.forecast-day>div{min-width:0}.forecast-date strong{font-size:15px;display:block}.forecast-date small{font-size:10px;color:var(--muted)}.forecast-weather b{display:block;font-size:12px;font-weight:600}.forecast-weather small,.forecast-weather em{display:block;font-size:10px;color:var(--muted);font-style:normal;line-height:1.6}.forecast-tide{font-size:11px;line-height:1.9;font-variant-numeric:tabular-nums}.forecast-tide span{display:block;white-space:nowrap}.forecast-tide .hi{color:#147f7c}.forecast-tide .lo{color:#788584}.forecast-sun{font-size:11px;line-height:1.9;font-variant-numeric:tabular-nums}.forecast-sun span{display:block;white-space:nowrap}.forecast-sun i{font-style:normal;color:#b28240;margin-right:3px}.week-overview{flex-shrink:0}.week-note{font-size:10px;color:var(--muted);margin:10px 4px;line-height:1.5}.week-note.tide-error{color:#9c6b39}.home-actions{display:flex;gap:10px;justify-content:space-between;margin-top:auto;padding-top:10px;flex-shrink:0}.home-actions button{padding:9px 12px;border:1px solid var(--line);border-radius:9px;font-size:11px}.home-actions #goMap{background:var(--ink);color:#fff;border-color:var(--ink)}.bottom-nav button{position:relative;max-width:230px}.bottom-nav button.active:after{left:calc(50% - 12px)}.sea-screen{overflow-y:auto;max-width:850px;margin:auto;padding:22px 28px}.sea-heading h1{font-size:24px;margin:5px 0}.sea-heading p,.sea-note{font-size:11px;color:var(--muted);line-height:1.7}.sea-place-label{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:12px;padding:13px 16px;margin:18px 0;font-size:12px}.sea-place-label select{max-width:65%;border:0;background:transparent;font-weight:700}.sea-links{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sea-link-card{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:18px;border:1px solid #d4e4dd;border-radius:15px;background:#e9f2ed;color:var(--ink);text-decoration:none;min-height:100px}.sea-link-card:hover{background:#dceee7}.sea-link-card strong{font-size:17px;display:block}.sea-link-card small{font-size:11px;color:var(--muted);display:block;margin-top:5px}.sea-link-card .ico{font-size:37px}.sea-note{margin-top:16px}.departure-tools{display:flex;gap:8px;align-items:center;padding-top:11px;color:var(--muted);font-size:10px}.departure-tools span{margin-right:auto}.departure-tools button{background:#e8f1eb;border-radius:6px;padding:4px 8px;font-size:11px}.departure-tools output{font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink)}.map-dock{width:470px}.legend{bottom:193px}.summary-right{max-width:none}#details{font-weight:700;color:var(--aqua)}.result-metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:15px 0}.result-metrics div{padding:13px;background:#eaf2ec;border-radius:10px;font-size:11px}.result-metrics b{font-size:19px;display:block;margin-top:6px}.course-sentence{font-size:14px;line-height:1.8}.flow-summary{display:flex;gap:7px;flex-wrap:wrap;font-size:11px}.flow-summary span{padding:7px 10px;border-radius:20px;background:#eaf2ec}.result-source{font-size:10px!important}.depth-profile{height:155px;display:grid;place-items:center;font-size:11px;color:var(--muted);margin-top:16px}.depth-profile svg{width:100%;height:100%}.saved-row{display:block;width:100%;padding:14px 6px;text-align:left;border-bottom:1px solid var(--line);font-size:13px}#sheetBody .wind-panel{border-top:0;padding-top:0}.map-plan label{padding:0 10px}.map-plan select{max-width:100px}
@media(max-width:600px){.home{padding:14px 13px 9px}.home-heading{margin-bottom:8px}.home h1{font-size:23px}.eyebrow{font-size:9px}.forecast-head,.forecast-day{grid-template-columns:34px minmax(92px,1.1fr) minmax(101px,1.2fr) 66px;gap:5px}.forecast-head{font-size:8px;padding:7px 5px}.forecast-day{padding:8px 5px;min-height:65px}.forecast-date strong{font-size:14px}.forecast-date small{font-size:9px}.forecast-weather b{font-size:10px}.forecast-weather small,.forecast-weather em{font-size:9px}.forecast-tide,.forecast-sun{font-size:10px;line-height:1.9}.week-title{padding:4px 1px 8px}.week-title h2{font-size:12px}.week-note{font-size:9px;margin:8px 2px}.home-actions{padding-top:6px}.home-actions button{font-size:10px;padding:8px 10px}.bottom-nav button{font-size:11px;gap:6px}.bottom-nav button span{font-size:20px}.sea-screen{padding:16px 15px}.sea-heading h1{font-size:22px}.sea-place-label{padding:11px 13px;margin:14px 0}.sea-links{gap:9px}.sea-link-card{padding:15px 12px;min-height:88px;border-radius:14px}.sea-link-card strong{font-size:15px}.sea-link-card small{font-size:10px}.sea-link-card .ico{font-size:31px}.sea-note{font-size:10px}.map-plan label{padding:0 6px}.map-plan label:first-child{flex:1.4}.map-plan input[type=date]{min-width:90px;font-size:10px}.map-plan input,.map-plan select{font-size:10px}.draw-controls button{font-size:10px;padding:8px 9px}.map-dock{bottom:19px}.legend{bottom:185px}.departure-tools{font-size:9px}.departure-tools button{font-size:10px}.summary-right{max-width:120px}#details,#briefing{font-size:10px}}
@media(max-width:370px){.home{padding-left:9px;padding-right:9px}.forecast-head,.forecast-day{grid-template-columns:31px minmax(83px,1fr) minmax(98px,1.2fr) 61px;gap:4px}.forecast-sun,.forecast-tide{font-size:9px}.forecast-weather b{font-size:9px}.forecast-weather small,.forecast-weather em{font-size:8px}.sea-link-card .ico{font-size:27px}}
@media(max-height:740px) and (max-width:600px){.home{padding-top:10px}.home-heading{margin-bottom:5px}.home h1{font-size:20px}#favorites{padding-bottom:5px}#favorites button{padding:4px 8px}.forecast-day{min-height:55px;padding-top:5px;padding-bottom:5px}.forecast-head{padding-top:4px;padding-bottom:4px}.week-note{margin:5px 2px}.home-actions button{padding-top:6px;padding-bottom:6px}}
.wind-time{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--muted);margin-left:auto;margin-right:12px}.wind-time input{font-size:11px;border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:4px;max-width:84px}.forecast-weather .inline-unit{display:inline;font-size:9px}.forecast-weather em{font-size:8px}.week-title h2{margin-right:8px}@media(max-width:600px){.week-title h2{font-size:11px}.wind-time{font-size:9px;margin-right:5px}.wind-time input{font-size:10px;max-width:74px}.week-title #retryTides{font-size:9px;padding:0}}

/* 3.8: one weekly subject per view. Keep labels readable on narrow phones. */
.home{overflow:hidden;min-height:0;padding-top:12px;padding-bottom:10px}
.home-heading,#favorites,.week-title,.forecast-tabs,.forecast-head,.forecast-footer,.home-actions{flex-shrink:0}
.home .home-heading{margin-bottom:8px}.home h1{font-size:24px}.home .eyebrow{display:none}.home .update{font-size:12px}
.home #favorites{padding-bottom:7px}.home #favorites button{font-size:13px;padding:6px 10px}
.home .week-title{padding:4px 0 9px;gap:8px}.home .week-title h2{font-size:15px;margin:0}
.home .wind-time{font-size:13px;gap:6px;margin:0 0 0 auto;white-space:nowrap}.home .wind-time input{font-size:14px;padding:5px;max-width:92px}.home #retryTides{font-size:22px;min-width:36px;min-height:36px;padding:0}
.forecast-tabs{display:flex;padding:4px;background:#e3ede7;border-radius:12px;gap:4px}
.forecast-tabs button{flex:1;min-height:42px;padding:6px 4px;font-size:15px;font-weight:650;border-radius:9px}
.forecast-tabs button[aria-selected=true]{background:var(--paper);box-shadow:0 2px 5px #153d4210;color:#087c7d}
.home .forecast-head,.home .forecast-day{display:grid;grid-template-columns:46px minmax(0,1fr);gap:12px;padding-left:12px;padding-right:12px}
.home .forecast-head{font-size:13px;color:#4d6f71;padding-top:9px;padding-bottom:8px;border:0}
.forecast-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:center}
.home .week-overview{min-height:76px;flex:1 1 auto;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:thin;scrollbar-color:#a9c7be transparent;padding:1px 2px 2px}
.home .forecast-day{min-height:68px;margin-bottom:5px;background:var(--paper);border:1px solid #dce7e0;border-radius:12px;padding-top:9px;padding-bottom:9px;width:100%;text-align:left}
.home .forecast-day.active{background:#e0eee7;border-color:#8cbbb0;box-shadow:inset 3px 0 #168f90}
.home .forecast-date strong{font-size:20px;line-height:1.1}.home .forecast-date small{font-size:12px;color:#547578;line-height:1.5}
.forecast-value{display:flex;min-width:0;flex-direction:column;gap:3px;font-variant-numeric:tabular-nums}
.home .forecast-value b{display:block;font-size:22px;line-height:1.2;font-weight:750;white-space:nowrap;letter-spacing:-.4px}
.home .forecast-value b small{font-size:13px;font-weight:500;letter-spacing:0}
.home .forecast-value>span{display:block;font-size:13px;line-height:1.35;color:#527174;overflow-wrap:anywhere}
.home .daily-peak b{font-size:20px;font-weight:650}.home .tide-high b{color:#0b7774}.home .tide-low b{color:#526c70}.home .tide-high,.home .tide-low{gap:5px}
.forecast-footer{display:flex;align-items:center;justify-content:space-between;gap:6px;padding-top:5px;flex-wrap:wrap}
.home .week-note{font-size:12px;line-height:1.5;margin:0}.home .tide-error{color:#9a5930}.text-help{font-size:13px;color:#087d7e;padding:7px 0;min-height:32px}
.home .home-actions{padding-top:5px;margin-top:0;gap:10px}.home .home-actions button{font-size:14px;padding:10px 12px;min-height:42px}
.result-basis{padding:14px 16px;border-radius:12px;background:#e4f1e9;line-height:1.65;font-size:15px}.result-basis.caution{background:#fcf0df;border:1px solid #ead3b0}.result-basis strong{font-size:18px}.result-basis p{margin:7px 0 0!important;font-size:15px!important}.result-basis .baseline-note{font-weight:650;color:#754d24}
.result-metrics{gap:10px}.result-metrics div{font-size:14px;padding:15px 13px}.result-metrics b{font-size:25px;margin-top:6px;line-height:1.25}.result-actions{display:flex;gap:10px;margin:12px 0}.result-actions button{flex:1;padding:12px 6px;border:1px solid #bbd4c9;background:#e9f3ed;border-radius:10px;font-size:15px}.result-source{font-size:12px!important}.depth-profile{height:140px;margin-top:9px}
@media(max-width:600px){.home{padding-left:12px;padding-right:12px}.home .forecast-head,.home .forecast-day{grid-template-columns:38px minmax(0,1fr);gap:9px;padding-left:10px;padding-right:10px}.home .week-title h2{font-size:14px}.forecast-columns{gap:10px}.home .forecast-value b{font-size:22px}.home .daily-peak b{font-size:20px}.home .forecast-value>span{font-size:13px}.home .forecast-head{font-size:13px}.home .forecast-day{min-height:68px}.home .forecast-date strong{font-size:20px}.home .forecast-date small{font-size:12px}.bottom-nav button{font-size:13px}.home .home-actions button{font-size:13px}#sheet{padding:20px;max-height:90dvh}.result-metrics div{font-size:13px}.result-metrics b{font-size:23px}}
@media(max-width:360px){.home{padding-left:9px;padding-right:9px}.home .wind-time{font-size:12px}.home .wind-time input{max-width:82px;font-size:13px}.home .week-title{gap:4px}.home .week-title h2{font-size:13px}.home .forecast-head,.home .forecast-day{padding-left:8px;padding-right:8px;gap:8px}.forecast-columns{gap:8px}.home .forecast-value>span{font-size:12px}.home .forecast-value b{font-size:21px}.home .daily-peak b{font-size:20px}}
@media(max-height:650px){.home{padding-top:8px}.home .home-heading{margin-bottom:4px}.home #favorites{padding-bottom:4px}.home #favorites button{padding:4px 10px}.home .forecast-day{min-height:64px;padding-top:7px;padding-bottom:7px}.home .forecast-footer{padding-top:2px}}
/* 3.9: course analysis starts with places and causes rather than calculation diagnostics. */
.insight-lead{padding:4px 0 10px;border-bottom:1px solid var(--line)}.insight-lead>strong{font-size:21px;line-height:1.45}.insight-lead p{font-size:13px!important;margin:7px 0 0}.insight-ai-state{font-size:12px!important;margin:9px 0 13px;color:#087d7e!important}#sheetBody>h3,.insight-timing h3{font-size:17px;margin:15px 0 12px}
.insight-card{border:1px solid #d0e1d9;background:#edf5ef;border-left:4px solid #69a38f;border-radius:12px;padding:13px 15px;margin:10px 0}.insight-card.against{border-left-color:#cc6746;background:#fbf1e9}.insight-card.cross{border-left-color:#8b6bbb;background:#f4eff8}.insight-card.unknown{border-left-color:#879b9d;background:#f0f3f2}.insight-card-top{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:0;min-height:30px;text-align:left}.insight-card-top strong{font-size:17px}.insight-card-top span{font-size:13px;white-space:nowrap;color:#86533b}.insight-place{font-size:16px;display:block;margin:5px 0}.insight-card>small{font-size:12px;color:var(--muted)}#sheetBody .insight-card>p{font-size:15px;line-height:1.8;color:var(--ink);margin:9px 0}.insight-card details{border-top:1px solid #d5e2da;margin-top:10px;padding-top:8px}.insight-card details p{font-size:13px!important;line-height:1.7}.insight-card summary{font-size:13px;cursor:pointer}.insight-context,.insight-extra,.insight-more{margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:10px}.insight-context summary,.insight-extra summary,.insight-more>summary{font-size:15px;cursor:pointer}.insight-context p{font-size:14px!important;line-height:1.8}.insight-timing{margin-top:18px}.insight-timing>p{font-size:13px!important;line-height:1.7}.timing-option{display:flex;justify-content:space-between;align-items:center;text-align:left;width:100%;border:1px solid var(--line);border-radius:10px;padding:11px 13px;margin:7px 0;gap:8px;background:#f2f7f3}.timing-option.current{border-color:#67aaa1;background:#e2f1e9}.timing-option>span{font-size:14px}.timing-option b{font-size:19px;display:block}.timing-option small{display:block;font-size:12px;color:var(--muted);margin-top:2px}.timing-option>span:last-child{text-align:right}.insight-source{font-size:11px!important;line-height:1.7}.insight-marker{border-radius:50%;background:#db6a35;color:white;text-align:center;line-height:30px;font-size:22px;font-weight:800;border:2px solid white;box-shadow:0 2px 7px #153d4240}
@media(max-width:600px){.insight-card{padding:12px}.insight-card-top strong{font-size:16px}.insight-card-top span{font-size:12px}.insight-lead>strong{font-size:20px}#sheetBody .insight-card>p{font-size:15px}.insight-place{font-size:15px}}
/* 3.10: currents belong to the drawn course; swim direction is a separate white chevron. */
/* 3.12: concise continuous ranges and a reusable place list. */
/* 3.13: native expanding search works independently of dialog handlers. */
.inline-place-search{position:relative;display:flex;align-items:center;gap:8px;width:100%;flex:none;min-height:43px;margin:0 0 8px;padding:3px 9px;background:#fff;border:1px solid #bfd7cd;border-radius:10px}.inline-place-search input{min-width:0;width:auto;flex:1;font-size:15px;height:35px}.inline-place-search button{flex:none;width:auto;font-size:14px;font-weight:700;padding:4px 9px;color:#087c7d}.home .place-search-message{flex:none;margin:0 0 7px;font-size:12px!important}.home .place-search-results{flex:none;max-height:170px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:9px;margin-bottom:8px}.sea-place-search{margin-bottom:14px}.sea-place-search>.sea-add-place{cursor:pointer;list-style:none;text-align:center;margin:0 0 10px}.sea-place-search>.sea-add-place::-webkit-details-marker{display:none}.sea-place-search[open]>.sea-add-place{background:#d8ede5}.sea-place-search .place-search-results{max-height:240px;overflow:auto}.saved-place-manager{font-size:13px;padding:8px 0}.saved-place-manager>summary{cursor:pointer}.sea-link-card{text-align:left;width:100%}.legend .strongest{background:#a82625}.legend-water{color:#d6533e}.strongest-summary{display:block;width:100%;font-size:13px;font-weight:750;text-align:left;color:#a82625;background:#fff0e9;border-radius:8px;padding:7px 9px;margin:8px 0 0}.point-current{display:block;font-size:23px;margin:14px 0}.home .inline-place-search{flex-shrink:0}
.insight-plain{padding:5px 0 16px}.insight-range{display:block;width:100%;padding:12px 0 16px;border-bottom:1px solid var(--line);text-align:left;font-size:21px;font-weight:750;line-height:1.6;color:#a3442d}.insight-plain>strong{font-size:20px;line-height:1.6}.insight-plain>p{font-size:16px!important;line-height:1.7!important}.insight-plain>small{display:block;font-size:12px;color:var(--muted);line-height:1.6}.insight-detail{margin-top:3px}.insight-map-link{font-size:14px;padding:8px 0;color:var(--aqua)}.sea-add-place{display:block;width:100%;margin:-3px 0 16px;padding:11px;border:1px solid #b6d5c9;border-radius:10px;background:#e7f3ed;font-size:14px;font-weight:700;color:#176a62}.place-search-form{display:flex;gap:8px}.place-search-form input{min-width:0;flex:1;padding:12px;border:1px solid var(--line);border-radius:10px;font-size:16px;background:#fff}.place-search-form button{flex-shrink:0;background:var(--ink);color:#fff;border-radius:10px;padding:10px 15px;font-size:15px}.place-search-message{font-size:14px!important;line-height:1.6!important}.place-search-results>button{display:block;text-align:left;width:100%;padding:14px 6px;border-bottom:1px solid var(--line)}.place-search-results strong{display:block;font-size:17px}.place-search-results small{display:block;color:var(--muted);font-size:12px;line-height:1.6;margin-top:4px}.saved-place-row{display:flex;gap:10px;border-bottom:1px solid var(--line)}.saved-place-row>button:first-child{flex:1;text-align:left;padding:12px 0;font-size:15px}.saved-place-row>button:last-child{font-size:13px;color:#9b553d;padding:8px}.place-search-form button:disabled{opacity:.5}
.course-current-marker,.course-swim-marker{background:none;border:0}.course-flow-glyph{position:relative;width:36px;height:36px;display:block;color:var(--flow-color);filter:drop-shadow(0 2px 2px #16464a55)}.course-water-arrow,.swim-chevron{display:block;transform-origin:center}.course-flow-badge{position:absolute;top:37px;left:18px;transform:translateX(-50%);padding:3px 7px;border-radius:7px;background:#fff;color:var(--flow-color);border:1px solid currentColor;font-size:12px;font-weight:800;line-height:1.2;white-space:nowrap;filter:none;box-shadow:0 1px 5px #173b3e20}.current-unavailable,.current-calm{display:block;width:30px;height:30px;margin:3px;border-radius:50%;border:2px solid #fff;background:#88999c;color:white;font-size:21px;font-weight:800;text-align:center;line-height:26px}.current-calm{background:#587b87}.course-swim-marker{pointer-events:none!important}.waypoint-small{width:24px;height:24px;border:6px solid transparent!important;background-clip:padding-box!important;box-shadow:none!important;font-size:0!important;background-color:#274b50!important;border-radius:50%;color:transparent!important}.waypoint-small:hover{border-color:#ffffffb0!important}
.map-screen .legend{left:12px;right:auto;bottom:calc(var(--dock-height,162px) + 25px);max-width:calc(100% - 24px);display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding:8px 10px;font-size:11px;background:#fffffff2;border:1px solid #d6e5e0;pointer-events:none}.legend-types{display:flex;flex-wrap:wrap;gap:6px 12px}.legend-types>span{display:flex;gap:5px;align-items:center;white-space:nowrap}.legend .dot{height:8px;width:8px}.legend .follow{background:#12866e}.legend .against{background:#d6533e}.legend .cross{background:#8258b5}.legend .unknown{background:#88999c}.legend-arrows{display:flex;align-items:center;gap:5px;font-size:10px;color:#547174}.legend-swim{color:#fff;text-shadow:-1px 0 #204c54,0 1px #204c54,1px 0 #204c54,0 -1px #204c54;font-size:17px;line-height:1}.legend-water{color:#12866e;font-size:20px;line-height:1;margin-left:7px}#backgroundTime{margin-left:7px;color:#2b5e63;font-size:10px}
.map-screen .map-dock{left:12px;right:auto;width:min(470px,calc(100% - 24px));max-width:calc(100% - 24px);bottom:12px;padding:11px 13px 9px;overflow:hidden}.map-dock .summary{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:2px 10px}.map-dock .summary>strong{grid-column:1;grid-row:1;font-size:27px;white-space:nowrap}.map-dock .summary-right{grid-column:1;grid-row:2;text-align:left;max-width:none;display:flex;flex-wrap:wrap;gap:1px 7px;min-width:0}.map-dock .summary-right b{font-size:11px}.map-dock .summary-right span{font-size:10px}.map-dock #details{grid-column:2;grid-row:1/span 2}.map-dock #briefing{grid-column:3;grid-row:1/span 2}.map-dock #details,.map-dock #briefing{font-size:12px;padding:8px 7px;white-space:nowrap;border:1px solid #d5e4dc;border-radius:8px;min-height:38px;background:#e8f3ec}.map-dock .departure-tools{padding-top:8px;gap:7px;font-size:12px;min-width:0;display:flex;flex-wrap:wrap}.map-dock .departure-tools>span{margin-right:auto;white-space:nowrap}.map-dock .departure-tools button{font-size:12px;padding:5px 8px;white-space:nowrap}.map-dock .departure-tools output{font-size:13px}.map-dock .timeline{padding-top:7px;gap:8px;min-width:0}.map-dock .timeline button{font-size:11px;padding:6px 8px}.map-dock .timeline input{min-width:0;max-width:100%;flex:1 1 60px}.map-dock .timeline output{font-size:12px;white-space:nowrap;margin-left:auto}.map-dock .footnote{font-size:10px;line-height:1.4;flex-wrap:wrap;padding-top:5px;gap:1px 8px}.map-dock .footnote>span{min-width:0;overflow-wrap:anywhere}
@media(max-width:600px){.map-screen .map-dock{left:10px;width:calc(100% - 20px);max-width:calc(100% - 20px);bottom:10px}.map-screen .legend{left:10px;max-width:calc(100% - 20px);bottom:calc(var(--dock-height,162px) + 20px)}.map-dock .summary{gap:2px 6px}.map-dock .summary>strong{font-size:25px}.map-dock #details,.map-dock #briefing{font-size:11px;padding-left:6px;padding-right:6px}.map-dock .summary-right{display:grid}.map-dock .departure-tools{font-size:11px;gap:5px}.map-dock .departure-tools button{font-size:12px;padding:5px 7px}.map-dock .timeline{gap:6px}.map-dock .timeline button{font-size:10px}.map-dock .footnote{font-size:9px}.course-flow-badge{font-size:11px}.map-screen .legend-arrows{font-size:10px}}
@media(max-width:360px){.map-dock .summary>strong{font-size:23px}.map-dock #details,.map-dock #briefing{font-size:10px;padding:7px 5px}.map-dock .summary{gap:2px 5px}.map-dock .departure-tools>span{font-size:10px}.map-screen .legend{font-size:10px;padding:7px 8px}.legend-types{gap:5px 10px}#backgroundTime{margin-left:3px;font-size:9px}}
/* 3.14: map legend is part of the dock, never a floating map box. */
.map-screen .map-dock .legend{position:static;left:auto;right:auto;bottom:auto;max-width:none;width:100%;margin:0 0 8px;padding:0 0 7px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;gap:4px;pointer-events:auto}.map-dock .legend-types{gap:8px 13px}.map-dock .legend-arrows{font-size:10px}.map-dock #backgroundTime{margin-left:auto}.map-screen .hint[hidden]{display:none!important}
/* Place selection uses one name in a large search entry. */
.home-place-trigger{display:flex;align-items:center;justify-content:space-between;gap:15px;min-width:0;flex:1;max-width:470px;text-align:left;border:1px solid #bfd7cd;border-radius:12px;background:#fbfdfa;padding:9px 13px}.home-place-trigger>span:first-child{min-width:0}.home-place-trigger small{display:block;color:var(--muted);font-size:12px}.home-place-trigger strong{display:block;font-size:23px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-place-trigger>span:last-child{font-size:29px;color:var(--aqua)}.home .home-heading{gap:12px}.place-heading-meta{display:grid;gap:4px;justify-items:end;flex-shrink:0}.place-heading-meta #saveFavorite{position:static;font-size:22px;padding:0 5px;min-height:27px}.place-heading-meta .update{font-size:11px}.location-picker>form{position:sticky;top:0;z-index:1;min-height:48px}.location-picker>form input{font-size:16px}.location-picker h3{font-size:16px;margin:15px 0 9px}.region-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.region-grid button{background:#e8f3ec;border:1px solid #cfdfd6;border-radius:10px;text-align:left;padding:12px;font-size:16px;min-height:48px}.region-grid button:hover{background:#d6ece1}.region-back,.sea-browse{font-size:14px;color:var(--aqua);padding:8px 0}.recent-query-chips{display:flex;gap:7px;flex-wrap:wrap}.recent-query-chips button{font-size:14px;background:#e8f3ec;border-radius:20px;padding:7px 12px}.location-picker .place-search-results>button{min-height:56px}.map-screen .map-dock .legend-arrows{flex-wrap:wrap}.map-screen .map-dock .legend-water{color:#d6533e}
@media(max-width:600px){.home-place-trigger{padding:7px 11px}.home-place-trigger strong{font-size:22px}.home .home-heading{gap:9px}.place-heading-meta .update{font-size:10px}.region-grid{gap:8px}.region-grid button{font-size:15px;padding:10px}.location-picker>form{top:0}}

/* Keep update status on one line beside the location entry. */
.home .place-heading-meta{min-width:94px}.home .place-heading-meta .update{white-space:nowrap}
