:root { color-scheme: light; font-family: system-ui, -apple-system, "Noto Sans JP", sans-serif; --green: #147a3d; --ink: #17231b; --muted: #5d6b62; }
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; background: linear-gradient(145deg, #eaf6ed, #f8faf8 55%, #edf5ef); color: var(--ink); }
main { width: min(920px, calc(100% - 32px)); margin: 0 auto; padding: 48px 0 30px; }
.hero { display: flex; align-items: center; gap: 22px; padding: 28px; border-radius: 24px; background: rgba(255,255,255,.94); box-shadow: 0 14px 45px rgba(25,70,39,.1); }
.hero img { width: 82px; height: 82px; border-radius: 20px; }
.hero h1 { margin: 0; color: var(--green); font-size: clamp(2rem, 7vw, 3.25rem); line-height: 1.05; }
.hero p { margin: 8px 0 0; color: var(--muted); line-height: 1.65; }
.hero .eyebrow { margin: 0 0 5px; color: var(--green); font-size: .88rem; font-weight: 800; }
.directory { margin-top: 22px; padding: 26px; border: 1px solid #dce8df; border-radius: 22px; background: rgba(255,255,255,.96); box-shadow: 0 10px 35px rgba(25,70,39,.07); }
.directory h2 { margin: 0 0 18px; font-size: 1.25rem; }
.municipality-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.municipality-card { display: flex; min-height: 76px; align-items: center; justify-content: space-between; gap: 14px; padding: 16px 17px; border: 1px solid #cfe0d3; border-radius: 14px; color: var(--ink); text-decoration: none; transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease; }
.municipality-card:hover { transform: translateY(-2px); border-color: var(--green); box-shadow: 0 8px 20px rgba(20,122,61,.12); }
.municipality-card strong { font-size: 1.05rem; }
.municipality-card span { color: var(--green); font-size: 1.3rem; }
.message { grid-column: 1 / -1; margin: 0; padding: 18px; border-radius: 12px; background: #f1f6f2; color: var(--muted); text-align: center; }
.message.error { color: #b42318; }
footer { padding: 20px 4px 0; color: #68756c; font-size: .78rem; text-align: center; }
@media (max-width: 560px) { main { width: min(100% - 20px, 920px); padding-top: 18px; } .hero { align-items: flex-start; gap: 14px; padding: 21px; } .hero img { width: 58px; height: 58px; border-radius: 15px; } .directory { padding: 20px 16px; } }
