:root { --max: 960px; }
*{box-sizing:border-box}
body { margin:0; font:16px/1.6 system-ui, -apple-system, Segoe UI, Roboto, Arial, 'Noto Sans JP', sans-serif; color:#111; }
a { color:#0a58ca; }
a:hover, a:focus { text-decoration: underline; }

.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); border:0; }
.skip { position:absolute; left:-9999px; top:auto; }
.skip:focus { left:16px; top:16px; background:#fff; padding:.5rem 1rem; border:2px solid #000; z-index:1000; }

.site-header, .site-footer { border-bottom:1px solid #e5e5e5; }
.site-footer { border-top:1px solid #e5e5e5; border-bottom:none; padding:1rem; text-align:center; color:#555; }

.nav { max-width:var(--max); margin:0 auto; padding:0.75rem 1rem; display:flex; align-items:center; justify-content:space-between; }
.brand { font-weight:700; color:#111; text-decoration:none; }
.nav-links a { margin-left:1rem; }

.container { max-width:var(--max); margin:0 auto; padding:1rem; }
.hero { background:#f7f7f7; border:1px solid #eee; padding:1rem; margin-bottom:1rem; }

.grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(280px,1fr)); gap:1rem; }
.card { border:1px solid #e5e5e5; padding:1rem; border-radius:8px; }
.links { margin-top:.5rem; }
.btn { display:inline-block; padding:.35rem .65rem; border:1px solid #111; border-radius:6px; text-decoration:none; color:#111; }
.btn:hover, .btn:focus { background:#111; color:#fff; }

.map-wrap { aspect-ratio:16/9; max-width:var(--max); border:1px solid #ddd; margin-top:.5rem; }
.map-wrap iframe { width:100%; height:100%; border:0; }
.map-note { font-size:.9rem; color:#555; margin-top:.5rem; }

:focus-visible { outline:3px solid #000; outline-offset:2px; }
@media (prefers-reduced-motion: reduce){ * { scroll-behavior:auto } }
