:root{font-family:"BIZ UDPGothic","Yu Gothic UI",Meiryo,sans-serif;color:#233734;background:#f5f7f5;font-size:16px;--green:#126b60;--blue:#4268b5;--line:#dfe7e3;--muted:#657874}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,select,summary{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid #edae44;outline-offset:3px}a{color:var(--green)}button{color:inherit}h1,h2,p{margin:0}h2{font-size:1rem;font-weight:700}.header{height:80px;display:flex;align-items:center;gap:24px;padding:16px 28px;background:#fff;border-bottom:1px solid var(--line);position:relative;z-index:1100}.brand{display:flex;align-items:center;gap:12px;white-space:nowrap;text-decoration:none;color:#203e36;font-weight:750;font-size:1.15rem}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--green);color:#fff;font-size:1.8rem}.brand-sub{color:var(--green);margin-left:8px}.search{display:flex;align-items:center;gap:10px;background:#f4f7f5;border:1px solid var(--line);border-radius:9px;padding:10px 14px;max-width:410px;flex:1}.search>span{font-size:1.5rem;line-height:1}.search input{background:none;border:0;width:100%;min-width:0;font-size:.9rem;outline:none}.header-status{margin-left:auto;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.875rem;white-space:nowrap}.live-dot{width:7px;height:7px;background:var(--green);border-radius:50%}.button{background:#fff;border:1px solid #ccd9d3;border-radius:8px;padding:9px 16px;font-size:.875rem;white-space:nowrap}.button:hover{background:#f0f5f2}.button:disabled{opacity:.55;cursor:wait}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 440px;height:calc(100dvh - 80px)}.map-pane{position:relative;min-height:360px;background:#e8eeea}#map{height:100%;width:100%;z-index:0}.surface{background:#fffffff5;border:1px solid #d7e1d9;border-radius:10px;box-shadow:0 4px 18px #27382c12}.map-controls{position:absolute;left:22px;top:22px;z-index:450;display:flex;gap:8px}.mode-control,.weather-toggle{padding:11px 13px;font-size:.875rem;display:flex;align-items:center;gap:8px}.mode-control label{color:var(--muted)}.mode-control select{border:0;background:transparent;color:#243e35}.weather-toggle input{accent-color:var(--green);width:16px;height:16px}.map-caption{position:absolute;top:86px;left:22px;max-width:340px;padding:15px 18px;display:flex;flex-direction:column;gap:7px;z-index:450}.eyebrow{font-size:.75rem;letter-spacing:.075em;color:var(--muted);line-height:1.6}.map-caption strong{font-size:1.05rem}.map-caption>span:last-child{font-size:.875rem;color:var(--muted);line-height:1.6}.legend{position:absolute;bottom:30px;left:22px;z-index:450;display:flex;align-items:center;gap:14px;padding:11px 15px;font-size:.875rem}.legend span{display:flex;align-items:center;gap:6px}.legend small{color:var(--muted);font-size:.75rem}.dot{display:inline-block;width:9px;height:9px;border-radius:50%}.zero{background:#c45641}.few{background:#dba13c}.enough{background:#278376}.unknown{background:#a0abaa}.radar-status{position:absolute;right:12px;bottom:32px;z-index:450;background:#fffffff0;border-radius:5px;font-size:.75rem;padding:5px}.radar-status:empty{display:none}.detail{overflow-y:auto;background:#fff;border-left:1px solid var(--line);padding:28px}.station-heading{padding-bottom:22px}.station-heading h1{font-size:1.35rem;line-height:1.55;letter-spacing:-.035em;margin:10px 0}.muted{color:var(--muted);line-height:1.7;font-size:.875rem}.small{font-size:.8125rem}.current-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:12px;margin-bottom:28px;background:#f9fbf9}.current-grid>div{padding:18px 21px}.current-grid>div+div{border-left:1px solid var(--line)}.current-grid span{font-size:.875rem;color:var(--muted)}.current-grid strong{display:flex;align-items:baseline;gap:7px;margin-top:7px;color:#29463c}.current-grid b{font-size:2.4rem;font-weight:650;font-variant-numeric:tabular-nums}.current-grid small{font-size:.875rem;font-weight:400}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.badge{background:#eef3f0;border:1px solid #e0e8e2;border-radius:5px;padding:4px 7px;color:#577064;font-size:.75rem}.horizons{display:flex;gap:3px;background:#f0f4f1;padding:4px;border-radius:9px;margin:18px 0 14px}.horizons button{flex:1;padding:10px 0;border:0;border-radius:6px;background:none;font-size:.8125rem;white-space:nowrap}.horizons button[aria-pressed=true]{background:var(--green);color:#fff;box-shadow:0 2px 4px #126b6022}.forecast-time{font-size:.8125rem;color:var(--muted);margin-bottom:14px}.probability-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.probability>span{font-size:.8125rem;display:block;line-height:1.7}.probability strong{font-size:2rem;line-height:1.7;font-weight:650;font-variant-numeric:tabular-nums}.probability.bikes{color:var(--green)}.probability.docks{color:var(--blue)}.track{height:5px;background:#edf0f0;border-radius:8px;overflow:hidden}.track i{display:block;height:100%;width:0;transition:width .25s;background:currentColor}.notice{background:#faf6ed;border:1px solid #ede4cd;color:#776038;font-size:.8125rem;line-height:1.75;padding:10px 12px;border-radius:7px;margin-top:18px}.chart{margin-top:20px}.chart svg{width:100%;height:auto;overflow:visible}.chart:empty{height:0;margin:0}.chart-key{display:flex;justify-content:flex-end;gap:14px;font-size:.75rem;margin-bottom:12px;color:var(--muted)}.chart-key span{display:flex;align-items:center;gap:5px}.prediction-table{border-collapse:collapse;width:100%;font-size:.875rem;margin:16px 0 12px;font-variant-numeric:tabular-nums}.prediction-table th{color:var(--muted);font-size:.75rem;font-weight:400;padding:9px;text-align:right;border-bottom:1px solid var(--line)}.prediction-table td{padding:11px 9px;text-align:right;border-bottom:1px solid #edf1ee}.prediction-table th:first-child,.prediction-table td:first-child{text-align:left}.prediction-table tr.selected td{background:#f0f7f3}.prediction-table .empty-state{text-align:center;color:var(--muted);padding:24px 8px}.weather-section{margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}.weather-data{display:flex;gap:18px;align-items:baseline;margin:16px 0 8px;font-size:1.4rem;font-weight:650}.weather-data small{font-size:.8125rem;color:var(--muted);font-weight:400}.notes{border-top:1px solid var(--line);margin-top:22px;padding-top:18px;font-size:.8125rem;line-height:1.8;color:var(--muted)}.notes summary{font-size:.875rem;color:#3e574c}.notes p{margin-top:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.leaflet-container{font-family:inherit}.leaflet-tooltip{font-family:inherit;font-size:.875rem}.leaflet-control-attribution{font-size:.75rem!important}
@media(min-width:1500px){.workspace{grid-template-columns:minmax(0,1fr) 480px}.detail{padding:30px 34px}}
@media(max-width:1000px){.header{gap:12px;padding:14px 18px}.header-status{display:none}.workspace{grid-template-columns:minmax(0,1fr) 390px}.detail{padding:22px}.brand{font-size:1rem}.legend{gap:9px;padding:10px;font-size:.75rem}.map-caption{max-width:260px}.map-controls,.map-caption{left:14px}}
@media(max-width:720px){.header{height:auto;min-height:116px;flex-wrap:wrap;padding:14px 16px;gap:12px}.brand{flex:1}.button{order:1}.search{order:2;flex-basis:100%;max-width:none}.workspace{display:block;height:auto}.map-pane{height:46dvh;min-height:300px}.detail{overflow:visible;border-left:0;padding:24px 20px}.map-caption{top:72px;padding:10px 13px;max-width:245px}.map-caption>span:last-child{font-size:.75rem}.map-caption .eyebrow{display:none}.map-controls{top:12px}.mode-control,.weather-toggle{padding:9px 11px}.legend{bottom:24px;left:12px}.station-heading{padding-bottom:18px}.current-grid{margin-bottom:24px}.chart svg{max-height:170px}.radar-status{bottom:60px}.notes{margin-bottom:15px}}
.locate-control{position:absolute;right:10px;top:86px;z-index:450;padding:10px 12px;font-size:.8125rem;color:var(--green)}
.distribution-select{display:flex;align-items:center;justify-content:space-between;font-size:.875rem;color:var(--muted);margin-top:18px}.distribution-select select{border:1px solid var(--line);border-radius:6px;padding:7px 10px;background:#fff;color:var(--green)}
.trajectory-section{margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}.trajectory-table th,.trajectory-table td{padding:9px 4px;font-size:.75rem}.distribution-title{font-size:.875rem;font-weight:650;margin-bottom:14px}.trajectory-section .chart-key{font-size:.65rem;gap:8px;justify-content:space-between}
.rain-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:.875rem;font-weight:400}.rain-grid>div{padding:12px;background:#f4f7fa;border:1px solid var(--line);border-radius:8px}.rain-grid small,.rain-grid strong{display:block}.rain-grid strong{font-size:1rem;color:#335783;margin-top:7px}
.locate-control:hover{background:#f0f5f2}.locate-control:disabled{opacity:.65;cursor:wait}
#location-status{font-size:.8125rem;color:var(--green);line-height:1.6}#location-status:empty{display:none}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
/* スマホでは地図に重なる情報を圧縮し、地図の可視領域を優先する。#map-message は
   これまでサイズ指定がなく16pxのまま3行になっていた。エラー表示も兼ねるので隠さず2行に抑える。 */
@media(max-width:720px){.map-pane{height:56dvh;min-height:320px}.map-caption{top:58px;left:10px;max-width:min(60vw,215px);padding:7px 9px;gap:2px;border-radius:8px}#visible-count{font-size:.75rem;line-height:1.4}#map-message,#location-status{font-size:.6875rem;line-height:1.45}#map-message{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.locate-control{top:58px;right:8px;padding:7px 9px;font-size:.75rem}.map-controls{top:10px;left:10px;gap:6px}.mode-control,.weather-toggle{padding:7px 9px;font-size:.75rem}.legend{bottom:20px;left:10px;gap:8px;padding:7px 9px;font-size:.6875rem}.legend small{font-size:.625rem}.radar-status{bottom:52px}.header{min-height:auto;padding:10px 14px;gap:8px}.brand{font-size:.9375rem;gap:8px}.brand-mark{width:30px;height:30px;font-size:1.35rem;border-radius:9px}.search{padding:8px 12px}.search input{font-size:.8125rem}.button{padding:7px 13px;font-size:.8125rem}.detail{padding:18px 16px}.station-heading h1{font-size:1.1rem;margin:6px 0}.current-grid>div{padding:13px 15px}.current-grid span{font-size:.8125rem}.current-grid b{font-size:1.9rem}.probability strong{font-size:1.6rem}h2{font-size:.9375rem}}
@media(max-width:400px){.map-caption{max-width:min(64vw,185px)}#visible-count{font-size:.6875rem}.legend{gap:6px;font-size:.625rem}}
/* 図の直下に置く折りたたみ注記。.notes と違い区切り線と大きな余白を持たせない。 */
.inline-notes{margin-top:10px;font-size:.8125rem;line-height:1.75;color:var(--muted)}
.inline-notes summary{font-size:.8125rem;color:#3e574c}
.inline-notes p{margin:8px 0 0}
