
:root{--ink:#0f172a;--sub:#64748b;--line:#e2e8f0;--bg:#f8fafc;--card:#fff;--acc:#2563eb;--acc-ink:#fff;--track:#f1f5f9;--f-body:Inter,"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;--f-head:var(--f-body);--f-num:var(--f-body)}
*{box-sizing:border-box}body{margin:0;font-family:var(--f-body);color:var(--ink);background:var(--bg);font-size:15px;line-height:1.65}
a{color:var(--acc);text-decoration:none}
header.top{display:flex;gap:8px 16px;align-items:center;padding:12px 20px;background:var(--card);border-bottom:1px solid var(--line);position:relative;z-index:10;flex-wrap:wrap}
.logo{font-weight:800;color:var(--ink);font-size:18px}.q{flex:1;min-width:160px;max-width:360px;border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-size:14px;background:var(--bg)}
header nav{display:flex;gap:14px;font-size:14px;flex-wrap:wrap}header nav a{color:var(--sub);padding:2px 0;border-bottom:2px solid transparent}header nav a.on{color:var(--ink);font-weight:700;border-bottom-color:var(--acc)}
.crumb{max-width:1080px;margin:12px auto 0;padding:0 20px;font-size:12px;color:var(--sub)}.crumb a{color:var(--sub)}
main{max-width:1080px;margin:0 auto;padding:8px 20px 40px}
footer{max-width:1080px;margin:0 auto;padding:20px;font-size:11px;color:var(--sub);border-top:1px solid var(--line)}
h1,h2,h3,.logo{font-family:var(--f-head)}.kpi .v,.counts b,.keys b,.res b,td.num{font-family:var(--f-num)}
h1{font-size:30px;margin:6px 0 4px;letter-spacing:-.03em;font-weight:700}h2{font-size:19px;margin:0 0 10px;letter-spacing:-.03em;font-weight:700}h3{font-size:15px;margin:14px 0 6px}
.lead{color:var(--sub);margin:0 0 16px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin:14px 0}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:14px 0}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}.kpi .v{font-size:30px;font-weight:800;letter-spacing:-.02em}.kpi .u{font-size:13px;color:var(--sub);margin-left:3px}.kpi .l{font-size:12px;color:var(--sub)}
.badge{display:inline-block;padding:3px 10px;border-radius:999px;color:#fff;font-weight:700;font-size:13px}
.pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;background:#ecfdf5;color:#047857;font-weight:600}.pill.dn{background:#fef2f2;color:#b91c1c}
.cmp{font-size:12px;color:var(--sub);margin-top:4px}
.dist{position:relative;height:10px;border-radius:999px;background:linear-gradient(90deg,#e2e8f0,#cbd5e1);margin:22px 0 22px}.dist .m{position:absolute;top:-6px;width:4px;height:22px;background:var(--ink);border-radius:2px}
.dist .t{position:absolute;top:14px;font-size:11px;color:var(--sub);transform:translateX(-50%);white-space:nowrap}.dist .me{position:absolute;top:-24px;font-size:11px;font-weight:700;transform:translateX(-50%);white-space:nowrap}
.bars .row{display:grid;grid-template-columns:120px 1fr 92px;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.bars .track{background:var(--track);border-radius:999px;height:14px;position:relative}.bars .fill{height:14px;border-radius:999px}.bars .mid{position:absolute;left:50%;top:-3px;width:1px;height:20px;background:#94a3b8}
.toc{position:sticky;top:0;background:var(--bg);padding:8px 0;z-index:5;display:flex;gap:8px;overflow-x:auto;border-bottom:1px solid var(--line)}.toc a{white-space:nowrap;font-size:13px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:4px 12px}
table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{color:var(--sub);font-weight:500}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.ctas{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.btn{display:inline-block;background:var(--acc);color:var(--acc-ink);border-radius:10px;padding:10px 16px;font-weight:600;font-size:14px}.btn.ghost{background:var(--card);color:var(--acc);border:1px solid var(--acc)}button.btn{border:0;cursor:pointer;font:inherit;font-weight:600;font-size:14px}.btn small{opacity:.75;font-weight:400;font-size:11px;margin-left:4px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:5px 12px;font-size:13px;cursor:pointer}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
#map{height:420px;border-radius:14px;border:1px solid var(--line)}.lbl{background:var(--card);border-radius:999px;padding:1px 7px;font-size:11px;font-weight:700;border:2px solid;white-space:nowrap}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.tile{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px;color:var(--ink)}.tile b{display:block;font-size:16px}.tile span{font-size:12px;color:var(--sub)}
.hero{text-align:center;padding:36px 0 10px}.hero h1{font-size:36px}.hero .q{max-width:520px;width:100%;padding:14px 18px;font-size:16px}
.counts{display:flex;justify-content:center;gap:28px;flex-wrap:wrap;margin:22px 0}.counts div{text-align:center}.counts b{display:block;font-size:26px;font-weight:800}.counts span{font-size:12px;color:var(--sub)}
.note{font-size:12px;color:var(--sub)}
.sbox{position:relative;flex:1;min-width:160px;max-width:360px}.sbox .q{width:100%;max-width:none}.sres{position:absolute;top:110%;left:0;right:0;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.12);z-index:1200;max-height:60vh;overflow:auto}.sres a{display:flex;justify-content:space-between;gap:8px;padding:8px 12px;color:var(--ink);font-size:14px}.sres a:hover,.sres a.on{background:var(--bg)}.sres a span{color:var(--sub);font-size:12px}
.h4{--m-bg:#111111;--m-bg2:#1e1c1a;--m-0:#3a3631;--m-1:#d8c39a;--m-3:#f6ead0;position:relative;overflow:hidden;color:#fff;background:radial-gradient(ellipse at 70% 40%,var(--m-bg2),var(--m-bg) 70%);text-align:center}
.h4 svg{position:absolute;inset:0;width:100%;height:100%}
.h4:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 42% 60% at 50% 50%,color-mix(in srgb,var(--m-bg) 78%,transparent),transparent 100%);pointer-events:none}
.h4 circle{opacity:0;transform-box:fill-box;transform-origin:center;animation:pop .9s ease-out var(--d) forwards}
.h4 .y0{fill:var(--m-0)}.h4 .y1{fill:var(--m-1);fill-opacity:.55}
.h4 .y3{fill:var(--m-3);filter:drop-shadow(0 0 4px var(--m-1));animation:pop .9s ease-out var(--d) forwards,tw 4.8s ease-in-out calc(var(--d) + 1s + var(--tw)) infinite}
.h4 a:hover circle{fill:#fff;fill-opacity:1}
@keyframes pop{0%{opacity:0;transform:scale(.2)}100%{opacity:1;transform:scale(1)}}@keyframes tw{0%,100%{opacity:1}50%{opacity:.35}}
.h4in{position:relative;z-index:2;max-width:640px;margin:0 auto;padding:78px 20px 64px;pointer-events:none}.h4in::before{content:'';position:absolute;inset:-40px -120px;z-index:-1;background:radial-gradient(ellipse at center,rgba(17,17,17,.92) 0%,rgba(17,17,17,.82) 45%,rgba(17,17,17,0) 75%);pointer-events:none}.h4in>*{pointer-events:auto}
.h4 .eb{font-size:12px;letter-spacing:.18em;color:var(--m-1)}.h4 h1{font-size:44px;color:#fff;margin:10px 0 8px}.h4 .sp{display:none}.h4 .lead{color:rgba(255,255,255,.82)}
.h4 .q{display:block;margin:22px auto 0;max-width:520px;width:100%;padding:14px 18px;font-size:16px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.96);color:var(--ink)}
.h4 .counts b{color:#fff}.h4 .counts span{color:rgba(255,255,255,.62)}.h4 .counts div{border-top:1px solid var(--m-1);padding:8px 4px 0;min-width:96px}
.lg4{position:absolute;z-index:3;right:16px;bottom:16px;font-size:11px;color:rgba(255,255,255,.65);display:flex;gap:12px}.lg4 i{display:inline-block;width:8px;height:8px;border-radius:9px;margin-right:4px}.lg4 .k3{background:var(--m-3)}.lg4 .k1{background:var(--m-1);opacity:.6}.lg4 .k0{background:var(--m-0)}
.wrap{max-width:1080px;margin:0 auto;padding:26px 20px 0}
@media(prefers-reduced-motion:reduce){.h4 circle{animation:none!important;opacity:1}}
@media(max-width:700px){.h4 h1{font-size:30px}.h4 .sp{display:inline}.h4in{padding:56px 16px 70px}.lg4{left:16px;right:auto}}
@media print{header.top,.crumb,.toc,.ctas,footer,#map,.chips,.legend{display:none!important}body{background:#fff;font-size:12px}.card,.kpi{break-inside:avoid;box-shadow:none}main{max-width:none;padding:0}}
@media(max-width:700px){.grid2{grid-template-columns:1fr}.bars .row{grid-template-columns:90px 1fr 76px}h1{font-size:24px}header nav{width:100%;overflow-x:auto;flex-wrap:nowrap;white-space:nowrap;font-size:13px;gap:12px}}
