
:root{--mori:#0e5c4a;--umi:#1f9e8f;--yuhi:#e0864a;--kinari:#f7f5ee;--kasumi:#eaf0ea;--sumi:#14231d;--mute:#56655d;--line:#dfe3d6;--card:#fff}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--kinari);color:var(--sumi);font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic UI","Noto Sans JP","Segoe UI",sans-serif;line-height:1.8;font-size:15px}
a{color:var(--umi)}a:hover{color:var(--mori)}
.wrap{max-width:1040px;margin:0 auto;padding-inline:16px;padding-block:0 64px}
header.top{background:var(--mori);color:#fff;position:sticky;top:0;z-index:1000;box-shadow:0 2px 10px rgba(14,35,29,.18)}header.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-block:10px;flex-wrap:wrap}
@media (max-width:640px){header.top{position:static}}
header.top a{color:#fff;text-decoration:none}header.top .brand{font-weight:800;letter-spacing:.06em}header.top nav a{margin-left:16px;font-size:14px}
h1{font-size:clamp(22px,3.6vw,32px);line-height:1.35;margin:28px 0 8px;text-wrap:balance;color:var(--mori)}
h1 small{font-size:14px;color:var(--mute);margin-left:10px;font-weight:400}
h2{font-size:20px;margin:40px 0 12px;padding-bottom:6px;border-bottom:2px solid var(--mori)}
h3{font-size:16px;margin:20px 0 6px;color:var(--mori)}
.lede{color:var(--mute);max-width:66ch;margin:0 0 18px}
.hero img{width:100%;height:auto;border-radius:14px;display:block}
.cta{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:18px 0}
.cta a{display:block;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;text-decoration:none;color:var(--sumi)}
.cta a b{display:block;color:var(--mori);font-size:16px}.cta a span{font-size:13px;color:var(--mute)}
.cats{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.cat{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;text-decoration:none;color:var(--sumi)}
.cat img{width:100%;height:auto;display:block;aspect-ratio:16/9;object-fit:cover}.cat div{padding:10px 12px;font-size:14px}.cat b{color:var(--mori)}
.list{list-style:none;padding:0;margin:0}.list li{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0}
.list .meta{font-size:12px;color:var(--mute);display:flex;gap:10px;flex-wrap:wrap;margin-bottom:4px;align-items:center}
.badge{display:inline-block;border-radius:999px;padding:1px 9px;font-size:11px;color:#fff;background:var(--umi)}
.c1{background:#1f9e8f}.c2{background:#2f8fd0}.c3{background:#c77a2a}.c4{background:#9a6db0}.c5{background:#4a9a3a}.c6{background:#c95f45}.c7{background:#3f6fbf}.c8{background:#b85a7c}
.pv{font-weight:700;color:var(--mori)}
.list a.t{font-weight:700;text-decoration:none;color:var(--sumi);font-size:15px}.list a.t:hover{color:var(--mori)}
.list p{margin:4px 0 0;font-size:13.5px;color:#334}
.note{background:var(--kasumi);border-left:4px solid var(--umi);padding:10px 14px;border-radius:0 10px 10px 0;font-size:13.5px;margin:14px 0}
.small{font-size:12.5px;color:var(--mute)}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:12px 0}
.kv div{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.kv b{display:block;font-size:22px;color:var(--mori);font-variant-numeric:tabular-nums}.kv span{font-size:12px;color:var(--mute)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.chips a,.chips button{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:4px 12px;font-size:13px;color:var(--sumi);text-decoration:none;cursor:pointer;font-family:inherit}
.chips .on{background:var(--mori);color:#fff;border-color:var(--mori)}
.seg{display:inline-flex;border:2px solid var(--mori);border-radius:999px;overflow:hidden;margin:6px 0 8px}
.seg button{border:0;background:var(--card);color:var(--mori);font-size:15px;font-weight:700;padding:8px 18px;cursor:pointer;font-family:inherit}
.seg button[aria-pressed="true"]{background:var(--mori);color:#fff}
.mode-now{font-size:14px;margin:4px 0 10px;padding:8px 12px;border-radius:10px;background:#fff3e8;border:1px solid #f1c9a6}
.mode-now.muni{background:#e6f2ee;border-color:#a9d1c4}
.mode-now b{color:var(--mori)}
.mapbox{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px;overflow:hidden}
#lmap{width:100%;height:640px;border-radius:12px}
@media (max-width:640px){#lmap{height:480px}header.top nav a{margin-left:10px;font-size:13px}}
.mapbox > svg{width:100%;height:auto;display:block}
.sea{fill:#d9eef0}.land{fill:#cfe3d3;stroke:#8fb59c;stroke-width:1.2}.svg-lbl{font-size:11px;fill:#5b6b62}.svg-name{font-size:12px;fill:#0e5c4a;font-weight:700}
.pin{cursor:pointer}.pin circle{fill:var(--yuhi);stroke:#fff;stroke-width:1.6}.pin:hover circle{fill:#c96a2e}
.pin text{font-size:10px;fill:var(--sumi);paint-order:stroke;stroke:#f7f5ee;stroke-width:3px;stroke-linejoin:round;pointer-events:none}
.mpin circle{fill:var(--mori);stroke:#fff;stroke-width:2}.mpin text{font-size:13px;font-weight:700;fill:var(--mori)}
.is-off{display:none}
.lbl{background:rgba(247,245,238,.94);border:1px solid #dfe3d6;border-radius:6px;font-size:11px;color:#14231d;padding:1px 6px}
.lbl-muni{font-size:13px;font-weight:700;color:#0e5c4a;border-color:#a9d1c4}
.legend{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:12px;color:var(--mute);margin:8px 0}
.dot{display:inline-block;width:11px;height:11px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #ccc;vertical-align:-1px;margin-right:4px}
.dot.a{background:var(--yuhi)}.dot.m{background:var(--mori);width:14px;height:14px}
.muni-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.muni{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.muni h3{margin-top:0}.muni h3 a{text-decoration:none}.muni .acc{font-size:12px;color:var(--mute)}
.muni a.ar{display:block;text-decoration:none;font-size:14px;padding:3px 0}
footer{margin-top:48px;padding:24px 0;border-top:1px solid var(--line);font-size:12.5px;color:var(--mute)}
.trend{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin:16px 0 8px}
.trend h2{margin:0 0 4px;border:0;padding:0;font-size:19px;color:var(--mori)}
.trend .period{font-size:12.5px;color:var(--mute);margin:0 0 10px}
.trend .sum{margin:0 0 12px;padding-left:1.2em}.trend .sum li{margin:2px 0}
.trend .kv{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.trend .kv b{font-size:24px}
.trend h3{font-size:15px;margin:16px 0 6px}
.tcols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.tcols ol{list-style:none;margin:0;padding:0}.tcols li{margin:0 0 8px;font-size:14px}
.tcols li .row{display:flex;justify-content:space-between;gap:8px}.tcols li b{color:var(--mori);font-variant-numeric:tabular-nums}
svg.bar{display:block;width:100%;height:7px;margin-top:3px}svg.bar .bg{fill:#e6ebe3}svg.bar .fg{fill:var(--umi)}
.diffs{list-style:none;margin:0;padding:0}.diffs li{margin:4px 0;font-size:14px}
.diffs .up{color:#b5562a;font-weight:700}.diffs .down{color:#2f6fa8;font-weight:700}
table.season{border-collapse:collapse;width:100%;font-size:14px}table.season th,table.season td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
table.season th{color:var(--mute);font-weight:600;font-size:12.5px}
table.season th:nth-child(-n+2),table.season td:nth-child(-n+2){white-space:nowrap}
.tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0 4px}
.tools input[type=search]{flex:1 1 260px;min-width:0;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font-size:15px;font-family:inherit;background:var(--card);color:var(--sumi)}
.tools select{padding:8px 10px;border:1px solid var(--line);border-radius:10px;font-size:14px;font-family:inherit;background:var(--card);color:var(--sumi)}
.list li[hidden]{display:none}
.live{background:#fff8ef;border:1px solid #f1c9a6;border-radius:14px;padding:12px 16px;margin:16px 0}
.live h2{margin:0 0 4px;border:0;padding:0;font-size:18px;color:var(--mori)}.live[hidden]{display:none}
.follow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;background:var(--mori);color:#fff;border-radius:14px;padding:14px 18px;margin:18px 0}
.follow p{margin:0;font-size:14.5px;line-height:1.6}.follow p b{font-size:16px}
.follow .btns{display:flex;flex-wrap:wrap;gap:8px}
.btn{display:inline-block;border-radius:999px;padding:9px 16px;font-weight:700;font-size:14px;text-decoration:none;line-height:1.3}
.btn.pri{background:var(--yuhi);color:#fff}.btn.pri:hover{background:#c96a2e;color:#fff}
.btn.sec{background:#fff;color:var(--mori)}.btn.sec:hover{background:var(--kasumi);color:var(--mori)}
.follow-mini{text-align:center;font-size:14px;margin:28px 0 0;padding:14px;border:1px dashed var(--umi);border-radius:12px;background:var(--card)}
.follow-mini .btn{margin:6px 4px 0}
.pubs{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
.pub{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:6px}
.pub .tag{align-self:flex-start;font-size:11px;border-radius:999px;padding:1px 9px;background:var(--kasumi);color:var(--mori);font-weight:700}
.pub h3{margin:2px 0 0;font-size:17px}.pub p{margin:0;font-size:14px;color:#334}.pub .price{font-size:13px;color:var(--mute)}
.pub .btn{align-self:flex-start;margin-top:6px}
header.top nav a.hl{background:var(--yuhi);border-radius:999px;padding:3px 10px;white-space:nowrap;display:inline-block}
.pub .btn.sec{border:2px solid var(--mori)}
