/* details.css - Webmap model explanation and data-source pages
   Extracted from tmp/model-sites-2026-06-17/details.html. */
:root{
  --bg:#070808;--bg2:#0d1010;--panel:#111515;--panel2:#171c1b;
  --paper:#f4f7f5;--ink:#101414;--ink2:#3c4643;
  --white:#fff;--text:#e7ece9;--muted:#b7c1bd;
  --line:rgba(255,255,255,.14);--line-strong:rgba(255,255,255,.24);
  --green:#5be52b;--cyan:#54c6d8;--amber:#d9b765;--maxw:1120px;
  --sans:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  --latin:Inter,Arial,Helvetica,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:130px}
body{
  font-family:var(--sans);color:var(--text);background:var(--bg);line-height:1.85;
  font-feature-settings:"palt" 1;-webkit-font-smoothing:antialiased;overflow-x:hidden;
}
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    linear-gradient(180deg,rgba(7,8,8,.16),var(--bg) 88%),
    repeating-linear-gradient(90deg,rgba(255,255,255,.022) 0 1px,transparent 1px 120px),
    repeating-linear-gradient(0deg,rgba(255,255,255,.016) 0 1px,transparent 1px 120px);
}
a{color:inherit;text-decoration:none}img{display:block;max-width:100%}
.latin{font-family:var(--latin)}
header{
  position:fixed;top:0;left:0;right:0;z-index:60;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:16px clamp(18px,4vw,54px);
  background:rgba(7,8,8,.76);backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(255,255,255,.08);
}
.brand img{height:30px;width:auto;mix-blend-mode:screen}
nav{display:flex;align-items:center;gap:22px}
nav a{font-family:var(--latin);font-size:13px;font-weight:800;letter-spacing:.04em;color:rgba(255,255,255,.74)}
nav a:hover{color:var(--white)}
.nav-cta{border:1px solid var(--line-strong);padding:8px 18px;border-radius:999px;color:var(--white)}
.nav-cta:hover{border-color:var(--green);color:var(--green)}

.page-hero{
  position:relative;overflow:hidden;padding:146px clamp(20px,5vw,56px) 72px;
  border-bottom:1px solid var(--line);
  background:
    radial-gradient(circle at 76% 20%,rgba(91,229,43,.16),transparent 28%),
    radial-gradient(circle at 88% 54%,rgba(84,198,216,.13),transparent 25%),
    var(--bg);
}
.page-hero::after{
  content:"";position:absolute;inset:0;background:url("/assets/noise.png") repeat;background-size:220px;
  opacity:.045;mix-blend-mode:screen;pointer-events:none;
}
.hero-inner{position:relative;z-index:2;max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr);gap:0;align-items:end}
.crumb{font-family:var(--latin);font-size:12px;color:var(--muted);margin-bottom:24px}
.crumb a:hover{color:var(--green)}
.eyebrow{display:flex;align-items:center;gap:13px;font-family:var(--latin);font-size:12px;font-weight:800;letter-spacing:.32em;color:var(--green);text-transform:uppercase;margin-bottom:18px}
.eyebrow::before{content:"";width:42px;height:1px;background:var(--green)}
h1{font-size:clamp(2rem,5vw,3.7rem);line-height:1.24;color:var(--white);font-weight:850;text-wrap:balance}
.lead{margin-top:22px;max-width:760px;color:var(--muted);font-size:15.5px;line-height:2.1}
.hero-panel{
  border:1px solid var(--line);background:rgba(17,21,21,.72);padding:22px;backdrop-filter:blur(8px);
}
.hero-panel b{display:block;color:var(--white);font-size:15px;line-height:1.55;margin-bottom:12px}
.hero-panel p{font-size:13px;color:var(--muted);line-height:1.8}
.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px}
.hero-stat{border-top:2px solid var(--green);background:rgba(0,0,0,.22);padding:12px 10px}
.hero-stat:nth-child(2){border-top-color:var(--cyan)}.hero-stat:nth-child(3){border-top-color:var(--amber)}
.hero-stat .v{font-family:var(--latin);font-weight:850;color:var(--white);font-size:21px;line-height:1}
.hero-stat .k{font-size:10.5px;color:var(--muted);line-height:1.5;margin-top:7px}

.subnav{position:sticky;top:63px;z-index:50;background:rgba(7,8,8,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.subnav .inner{max-width:var(--maxw);margin:0 auto;display:flex;gap:5px;overflow-x:auto;padding:0 clamp(16px,5vw,56px);scrollbar-width:none}
.subnav .inner::-webkit-scrollbar{display:none}
.subnav a{white-space:nowrap;padding:14px 14px;font-weight:800;font-size:13px;color:var(--muted);border-bottom:2px solid transparent}
.subnav a:hover,.subnav a.active{color:var(--green);border-bottom-color:var(--green)}

main{max-width:var(--maxw);margin:0 auto;padding:0 clamp(20px,5vw,56px)}
section.block{padding:clamp(64px,7vw,96px) 0;border-bottom:1px solid var(--line);scroll-margin-top:128px}
section.block:last-child{border-bottom:none}
.sec-head{margin-bottom:24px}
.sec-en{font-family:var(--latin);font-weight:850;font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:var(--green);margin-bottom:13px}
.sec-head h2{font-size:clamp(1.45rem,3vw,2.3rem);line-height:1.48;color:var(--white);text-wrap:balance}
.prose{max-width:820px;color:var(--muted);font-size:15px;line-height:2.05}
h3.sub{margin:40px 0 16px;padding-left:15px;border-left:3px solid var(--green);font-size:1.08rem;line-height:1.5;color:var(--white)}
.note{font-size:12.5px;color:#8f9a95;line-height:1.85;margin-top:14px}
code.inline{font-family:var(--latin);background:rgba(91,229,43,.13);color:var(--green);padding:1px 6px;border-radius:5px}

.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:32px}
.summary{background:var(--panel);border:1px solid var(--line);padding:22px 20px}
.summary .num{font-family:var(--latin);font-size:28px;line-height:1;font-weight:850;color:var(--white)}
.summary .num small{font-size:13px;color:var(--green);margin-left:3px}
.summary p{font-size:12.5px;color:var(--muted);line-height:1.7;margin-top:10px}

.tbl-wrap{overflow-x:auto;background:var(--paper);border:1px solid rgba(0,0,0,.08);margin:18px 0 8px}
table{width:100%;border-collapse:collapse;font-size:13.2px;min-width:720px}
table.data-table{min-width:980px}
thead th{background:#121615;color:#fff;text-align:left;padding:13px 15px;font-weight:800;font-size:12px;letter-spacing:.03em;vertical-align:bottom}
tbody th,tbody td{padding:12px 15px;border-bottom:1px solid rgba(13,20,16,.1);vertical-align:top;color:var(--ink2);line-height:1.65;text-align:left}
tbody tr:last-child th,tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:rgba(91,229,43,.07)}
tbody th{color:var(--ink);font-weight:800;background:rgba(0,0,0,.035);white-space:nowrap}
td.c,th.c{text-align:center;white-space:nowrap}
td.cat{color:var(--ink);font-weight:800;background:rgba(0,0,0,.035);white-space:nowrap}
.tag{display:inline-flex;padding:2px 9px;background:rgba(91,229,43,.17);color:#174319;font-family:var(--latin);font-size:10.5px;font-weight:850;letter-spacing:.08em;white-space:nowrap}
.tag.cyan{background:rgba(84,198,216,.17);color:#0f5260}.tag.amber{background:rgba(217,183,101,.22);color:#66501c}
.lic{display:inline-flex;align-items:center;min-height:22px;padding:2px 9px;border-radius:999px;background:rgba(91,229,43,.17);color:#174319;font-family:var(--latin);font-size:10.5px;font-weight:850;letter-spacing:.03em;white-space:nowrap}
.lic.neutral{background:rgba(16,20,20,.08);color:#2f3b37}.lic.cyan{background:rgba(84,198,216,.17);color:#0f5260}.lic.amber{background:rgba(217,183,101,.22);color:#66501c}
a.src{color:#17651e;font-family:var(--latin);font-weight:850;font-size:12px;word-break:break-word;text-decoration:none}
a.src:hover{text-decoration:underline}

.flow-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:30px}
.flow{background:var(--panel);padding:22px 18px;min-height:176px}
.flow b{display:block;font-family:var(--latin);font-size:12px;letter-spacing:.12em;color:var(--green);margin-bottom:14px}
.flow h3{font-size:16px;color:var(--white);line-height:1.45;margin-bottom:8px}
.flow p{font-size:12.8px;color:var(--muted);line-height:1.85}

.tech-details{display:grid;gap:12px;margin-top:24px}
details.tech{border:1px solid var(--line);background:var(--panel);overflow:hidden}
details.tech summary{cursor:pointer;list-style:none;display:flex;gap:16px;align-items:center;justify-content:space-between;padding:16px 18px;color:var(--white);font-weight:850}
details.tech summary::-webkit-details-marker{display:none}
details.tech .cap{display:block;color:var(--muted);font-weight:500;font-size:12px;line-height:1.6;margin-top:2px}
details.tech .body{padding:0 18px 18px}
details.tech[open] summary{border-bottom:1px solid var(--line);margin-bottom:16px}
.chev{width:18px;height:18px;flex:0 0 18px;color:var(--green);transition:transform .2s}
details.tech[open] .chev{transform:rotate(180deg)}
.clean{margin-top:16px;padding-left:1.2em;color:var(--muted);font-size:14px;line-height:2}
.clean li{margin-bottom:8px}

.section-diagram{border:1px solid var(--line);background:var(--panel);padding:26px}
.band{position:relative;display:grid;grid-template-columns:118px 1fr;gap:18px;align-items:center;padding:15px 16px;border:1px solid rgba(255,255,255,.13);margin-bottom:8px;background:rgba(0,0,0,.22);overflow:hidden}
.band:last-child{margin-bottom:0}.band::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--green)}
.band:nth-child(2)::after,.band:nth-child(5)::after{background:var(--cyan)}.band:nth-child(3)::after,.band:nth-child(6)::after{background:var(--amber)}
.band b{font-family:var(--latin);font-size:12px;letter-spacing:.08em;color:var(--white)}
.band span{font-size:12.5px;color:var(--muted);line-height:1.65}
.public-validation{display:grid;gap:18px;margin-top:32px}
.public-visual{background:#050a0a;border:1px solid rgba(91,229,43,.32);overflow:hidden}
.public-visual.hero{border-top:3px solid var(--green)}
.public-visual.regions{border-top:3px solid var(--cyan)}
.public-visual img{display:block;width:100%;height:auto;background:#050a0a}
.public-visual figcaption{padding:14px 16px;background:var(--panel);color:var(--muted);font-size:12.8px;line-height:1.7;border-top:1px solid var(--line)}
.validation-browser{display:grid;grid-template-columns:minmax(0,.54fr) minmax(0,.46fr);gap:18px;align-items:stretch;margin-top:32px}
.validation-map-panel,.validation-chart-panel{background:var(--panel);border:1px solid var(--line);overflow:hidden}
.validation-map-head,.validation-chart-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:16px 18px;border-bottom:1px solid var(--line)}
.validation-map-head h3,.validation-chart-head h3{font-size:18px;line-height:1.45;color:var(--white)}
.validation-map-head p,.validation-chart-head p{font-size:12.5px;color:var(--muted);line-height:1.7;margin-top:4px}
.validation-map-wrap{position:relative;background:#050a0a;overflow:hidden;touch-action:none}
.map-layer{--map-scale:1;position:relative;transform-origin:center center;transition:transform .18s ease;cursor:grab}
.validation-map-wrap.is-dragging .map-layer{transition:none;cursor:grabbing}
.validation-map-wrap img{display:block;width:100%;height:auto}
.map-fallback{position:relative;z-index:0;opacity:.24;filter:saturate(.82) brightness(.88)}
.gsi-tile-layer{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;background:rgba(5,10,10,.12)}
.gsi-tile-layer img{position:absolute;max-width:none;width:auto;height:auto;filter:saturate(.82) brightness(.7) contrast(1.08);opacity:.88}
.map-zoom-controls{position:absolute;top:12px;right:12px;z-index:12;display:flex;gap:6px;align-items:center;background:rgba(5,10,10,.78);border:1px solid var(--line);padding:6px;backdrop-filter:blur(8px)}
.map-zoom-controls button{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--line-strong);background:rgba(255,255,255,.05);color:var(--white);font-family:var(--latin);font-size:16px;font-weight:850;cursor:pointer}
.map-zoom-controls button:hover,.map-zoom-controls button:focus-visible{border-color:var(--green);color:var(--green);outline:none}
.map-zoom-level{min-width:34px;text-align:center;font-family:var(--latin);font-size:11px;font-weight:850;color:var(--muted)}
.map-attribution{position:absolute;left:10px;bottom:9px;z-index:12;display:inline-flex;align-items:center;max-width:calc(100% - 20px);padding:4px 7px;background:rgba(5,10,10,.74);border:1px solid rgba(255,255,255,.18);color:rgba(255,255,255,.78);font-size:10.5px;line-height:1.35}
.map-attribution:hover{color:var(--green);border-color:rgba(91,229,43,.48)}
.map-pin{position:absolute;display:inline-grid;place-items:center;width:11px;height:11px;border:1px solid rgba(255,255,255,.8);border-radius:50%;background:rgba(84,198,216,.92);color:#061006;font-family:var(--latin);font-size:0;font-weight:900;box-shadow:0 0 0 2px rgba(0,0,0,.42);cursor:pointer;transform:translate(-50%,-50%) scale(calc(1 / var(--map-scale)));transform-origin:center;z-index:2}
.map-pin:hover,.map-pin.active{width:22px;height:22px;background:var(--green);border-color:#fff;font-size:10px;box-shadow:0 0 0 4px rgba(91,229,43,.25);z-index:6}
.map-pin.overview{width:18px;height:18px;background:#061006;border:2px solid var(--green);color:#eaffdf;font-size:10px;z-index:4}
.map-pin.overview.active{background:var(--green);color:#061006}
.station-controls{display:grid;gap:10px;padding:12px 14px;border-top:1px solid var(--line)}
.station-select-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.station-select{width:100%;min-height:42px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text);padding:8px 10px;font-family:var(--sans);font-size:13px}
.station-count{font-family:var(--latin);font-size:11px;font-weight:850;color:var(--green);white-space:nowrap}
.station-shortcuts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.station-control{border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text);padding:10px 9px;text-align:left;cursor:pointer;font-family:var(--sans);min-height:54px}
.station-control b{display:block;font-size:12.5px;line-height:1.35;color:var(--white)}
.station-control span{display:block;font-size:10.5px;color:var(--muted);line-height:1.45;margin-top:3px}
.station-control:hover,.station-control.active{border-color:var(--green);background:rgba(91,229,43,.12)}
.station-summary{display:flex;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:12px;line-height:1.6}
.station-summary b{font-family:var(--latin);color:var(--white)}
.chart-frame{padding:18px;background:#050a0a}
.chart-frame img{width:100%;height:auto;border:1px solid rgba(255,255,255,.10);background:#071513}
.chart-meta{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:0 18px 18px;color:var(--muted);font-size:12px;line-height:1.6}
.chart-meta a{color:var(--green);font-weight:850}

.results-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:28px}
.result{background:var(--paper);color:var(--ink);border-top:3px solid var(--green);padding:18px 16px;min-height:158px}
.result:nth-child(3n+2){border-top-color:var(--cyan)}.result:nth-child(3n){border-top-color:var(--amber)}
.result .ic{width:34px;height:34px;color:var(--green);margin-bottom:12px}
.result:nth-child(3n+2) .ic{color:var(--cyan)}.result:nth-child(3n) .ic{color:var(--amber)}
.result h3{font-size:15px;line-height:1.45;margin-bottom:6px}.result p{font-size:12.5px;color:var(--ink2);line-height:1.7}
.result .unit{display:inline-flex;margin-top:10px;font-family:var(--latin);font-size:11px;font-weight:850;letter-spacing:.04em;color:#17651e}

.cta{margin:58px 0 10px;padding:30px;border:1px solid rgba(91,229,43,.32);background:linear-gradient(90deg,rgba(91,229,43,.10),rgba(84,198,216,.06))}
.cta h2{font-size:1.35rem;color:var(--white);line-height:1.5;margin-bottom:10px}.cta p{color:var(--muted);font-size:14px;line-height:1.9}
.btn-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}
.btn{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:12px 20px;border:1px solid var(--line-strong);font-weight:850;font-size:14px}
.btn.primary{background:var(--green);border-color:var(--green);color:#061006}.btn.secondary{color:var(--white);background:rgba(255,255,255,.04)}
.btn:hover{transform:translateY(-2px)}

footer{background:#0a0d0c;border-top:1px solid var(--line);padding:42px clamp(20px,5vw,56px) 34px;color:rgba(255,255,255,.55);margin-top:24px}
.foot{max-width:var(--maxw);margin:0 auto;display:flex;justify-content:space-between;gap:28px;align-items:flex-end}
.foot img{height:32px;width:auto;mix-blend-mode:screen;margin-bottom:12px}.foot b{display:block;color:#fff;font-size:14px;margin-bottom:4px}.foot p,.foot small{font-size:12px;line-height:1.8}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .75s ease,transform .75s ease}.reveal.in{opacity:1;transform:none}

@media(max-width:980px){
  .hero-inner{grid-template-columns:1fr}.summary-grid{grid-template-columns:repeat(2,1fr)}
  .flow-grid{grid-template-columns:repeat(2,1fr)}.validation-browser{grid-template-columns:1fr}.results-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:720px){
  header{padding:14px 18px}.brand img{height:26px}nav a:not(.nav-cta){display:none}
  .page-hero{padding-top:110px}.hero-stats,.summary-grid,.flow-grid,.results-grid{grid-template-columns:1fr}
  .station-select-row,.station-shortcuts{grid-template-columns:1fr}.map-pin{width:13px;height:13px}.map-pin.overview{width:20px;height:20px;font-size:10px}
  .band{grid-template-columns:1fr;gap:5px}table{min-width:680px}.foot{display:block}.foot small{display:block;margin-top:22px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.btn:hover{transform:none}}
