.diag-app{background:var(--bg);}
.diag-map-shell{display:grid;grid-template-columns:minmax(280px,360px) 1fr minmax(300px,390px);min-height:calc(100vh - 68px);border-top:1px solid var(--line);}
.diag-side,.report-panel{padding:clamp(1.1rem,2vw,1.8rem);background:var(--bg-alt);border-right:1px solid var(--line);overflow:auto;}
.report-panel{border-right:0;border-left:1px solid var(--line);background:var(--card);scroll-margin-top:56px;}
.diag-side h1{font-size:clamp(2rem,4vw,3.4rem);line-height:1.05;margin:.7rem 0 1rem;}
.diag-side p{color:var(--lead);font-size:1rem;line-height:1.75;}
.diag-search,.diag-filter,.zoom-card,.coverage-card,.legend-card,.hint-card{margin-top:1rem;border:1px solid var(--line);background:var(--card);padding:1rem;}
.diag-search label,.diag-filter span{display:block;font-family:var(--mono);font-size:.68rem;font-weight:700;color:var(--heat);letter-spacing:.6px;margin-bottom:.55rem;}
.diag-search-row{display:grid;grid-template-columns:1fr auto;gap:.5rem;}
.diag-search input,.diag-filter select{width:100%;border:1px solid var(--line);background:var(--bg);color:var(--head);border-radius:8px;padding:.65rem .7rem;font:inherit;font-size:.88rem;}
.diag-search button{border:0;border-radius:8px;background:var(--green-ink);color:#fff;font-family:var(--mono);font-size:.76rem;font-weight:700;padding:.65rem .85rem;cursor:pointer;}
.diag-search button:hover{background:var(--heat);}
.diag-filter select{cursor:pointer;}
.zoom-card span,.hint-card{font-family:var(--mono);font-size:.72rem;color:var(--lead);}
.zoom-card strong{display:block;font-family:var(--serif);font-size:1.25rem;color:var(--head);margin:.25rem 0;}
.zoom-card em{font-style:normal;font-family:var(--mono);font-size:.7rem;color:var(--heat);}
.coverage-card{display:grid;grid-template-columns:repeat(3,1fr);gap:.65rem;}
.coverage-card div{min-width:0;border-left:2px solid var(--green);padding-left:.65rem;}
.coverage-card b{display:block;font-family:var(--display);font-size:1.45rem;line-height:1;color:var(--green-deep);}
.coverage-card span{display:block;margin-top:.25rem;font-family:var(--mono);font-size:.62rem;color:var(--lead);line-height:1.35;}
.legend-card{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;}
.legend-card span{font-family:var(--mono);font-size:.7rem;color:var(--lead);display:flex;align-items:center;gap:.4rem;}
.lv{width:11px;height:11px;border-radius:50%;display:inline-block;}
.lv.low,.lv.lead{background:#24b86f}.lv.mid{background:#ffc06b}.lv.high,.lv.lag{background:#ff7048}.lv.none{background:#8aa897}.lv.nodata{background:#d7dfd9;border:1px dashed #8aa897;}
.diag-map-wrap{position:relative;z-index:0;isolation:isolate;min-width:0;background:#07120d;}
.diagnosis-map{position:absolute;inset:0;background:radial-gradient(circle at 50% 48%,rgba(39,120,78,.24),transparent 50%),#07120d;}
.diagnosis-map .leaflet-container{font-family:var(--sans);}
.leaflet-control-attribution{font-family:var(--mono);font-size:.6rem;background:rgba(255,255,255,.75)!important;}
.map-toolbar{position:absolute;left:60px;top:16px;z-index:500;display:flex;gap:.5rem;}
.map-toolbar button{border:1px solid rgba(255,255,255,.22);background:rgba(8,22,16,.82);color:#eaf6ef;border-radius:999px;padding:.45rem .75rem;font-family:var(--mono);font-size:.72rem;cursor:pointer;}
.map-toolbar button:hover{background:#34c77b;color:#07120d;}
.map-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:520;border:1px solid rgba(255,255,255,.18);background:rgba(8,22,16,.88);color:#eaf6ef;border-radius:999px;padding:.6rem 1rem;font-family:var(--mono);font-size:.72rem;box-shadow:0 16px 40px rgba(0,0,0,.24);}
.map-loading[hidden]{display:none;}
.china-outline{fill:rgba(52,199,123,.07);stroke:rgba(190,230,209,.42);stroke-width:1.2;stroke-dasharray:4 5;}
.diag-marker{border-radius:50%;border:1.5px solid rgba(255,255,255,.88);box-shadow:0 0 0 7px rgba(255,255,255,.06),0 10px 24px rgba(0,0,0,.28);}
.diag-marker.low{background:#24b86f;}
.diag-marker.mid{background:#ffc06b;}
.diag-marker.high{background:#ff7048;}
.diag-marker.none{background:#8aa897;}
.diag-marker.active{box-shadow:0 0 0 10px rgba(255,112,72,.22),0 0 28px rgba(255,112,72,.72);}
.report-empty{min-height:100%;display:flex;flex-direction:column;justify-content:center;color:var(--lead);}
.report-empty span{font-family:var(--mono);font-size:.72rem;color:var(--heat);font-weight:700;}
.report-empty strong{font-family:var(--serif);font-size:1.8rem;color:var(--head);line-height:1.15;margin-top:.5rem;}
.report-head{border-bottom:1px solid var(--line);padding-bottom:1rem;margin-bottom:1rem;}
.report-k{font-family:var(--mono);font-size:.68rem;color:var(--heat);font-weight:700;letter-spacing:1px;}
.report-head h2{font-size:clamp(1.6rem,3vw,2.4rem);line-height:1.08;margin:.35rem 0;}
.report-meta{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.6rem;}
.report-meta span{font-family:var(--mono);font-size:.68rem;border:1px solid var(--line);border-radius:999px;padding:.18rem .5rem;color:var(--lead);}
.report-score{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:center;margin:1rem 0;padding:1rem;background:var(--bg-alt);border:1px solid var(--line);}
.report-score b{font-family:var(--display);font-size:3.2rem;line-height:1;color:var(--green-deep);}
.report-score p{color:var(--lead);font-size:.92rem;line-height:1.6;}
.weak-report{display:grid;gap:.75rem;}
.weak-report article{border:1px solid var(--line);padding:.85rem;background:var(--bg);}
.weak-report span{font-family:var(--mono);font-size:.62rem;color:var(--heat);font-weight:700;}
.weak-report h3{font-size:1.08rem;margin:.2rem 0;color:var(--head);}
.weak-report p{color:var(--lead);font-size:.84rem;line-height:1.55;}
.report-actions{margin-top:1rem;border-top:1px solid var(--line);padding-top:1rem;}
.report-actions h3{font-size:1.1rem;margin-bottom:.6rem;}
.report-actions li{margin-left:1.1rem;color:var(--lead);font-size:.9rem;line-height:1.7;}
@media(max-width:1100px){.diag-map-shell{grid-template-columns:1fr;}.diag-side,.report-panel{border:0;border-bottom:1px solid var(--line);}.diag-map-wrap{height:70vh;}.diagnosis-map{position:relative;height:100%;}}
@media(max-width:640px){.legend-card{grid-template-columns:1fr;}.map-toolbar{left:54px;right:10px;flex-wrap:wrap}.report-score{grid-template-columns:1fr;}}

.diag-tip{font-family:var(--mono);font-size:.68rem;color:#07120d;background:rgba(255,255,255,.92);border:1px solid rgba(11,42,26,.18);box-shadow:0 8px 20px rgba(0,0,0,.12);}.diag-area{transition:fill-opacity .16s,stroke-width .16s;}
.map-toolbar button[aria-pressed="true"]{background:#ffc06b;color:#07120d;border-color:#ffc06b;}
.diag-area.nodata{stroke-dasharray:3 4;}
.nodata-report b{color:#8aa897!important;}
@media(max-width:640px){.diag-search-row{grid-template-columns:1fr;}.coverage-card{grid-template-columns:1fr 1fr;}}

.legend-card em{font-style:normal;color:inherit;}
.report-rank{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:center;margin:1rem 0;padding:1rem;background:var(--bg-alt);border:1px solid var(--line);}
.report-rank b{font-family:var(--display);font-size:3rem;line-height:1;color:var(--green-deep);}
.report-rank p{color:var(--lead);font-size:.94rem;line-height:1.6;}
.report-rank span{display:block;font-family:var(--mono);font-size:.66rem;color:var(--heat);font-weight:700;letter-spacing:.8px;margin-bottom:.2rem;}
.report-note{margin-top:1rem;padding:1rem;border:1px solid var(--line);background:var(--bg-alt);color:var(--lead);line-height:1.7;}
.indicator-report p b{font-family:var(--display);font-size:1.35rem;color:var(--green-deep);}
.source-line{margin-top:.7rem;padding-top:.65rem;border-top:1px solid var(--line);font-size:.76rem;color:var(--lead);line-height:1.55;}
.source-line strong{display:inline-block;margin-right:.45rem;font-family:var(--mono);font-size:.62rem;color:var(--heat);letter-spacing:.6px;}
.knowledge-line{margin-top:.45rem;color:#6b8373;font-size:.72rem;line-height:1.55;}

.diag-data-note{margin:.7rem 0 0;color:var(--grey);font-size:.68rem;line-height:1.55;}
.diagnosis-map .leaflet-interactive:focus{outline:3px solid #fff;outline-offset:2px;filter:drop-shadow(0 0 4px rgba(4,34,23,.8));}

/* 2026-07 homepage alignment: paper, typography and shell hierarchy. */
:root{
  --diag-paper:#f0eee9;--diag-surface:#fbfaf7;--diag-card:#fbfaf7;
  --diag-ink:#171717;--diag-muted:#66635d;--diag-line:rgba(23,23,23,.14);
  --diag-line-strong:rgba(23,23,23,.3);--diag-accent:#a0b41c;--diag-olive:#455816;
  --green:var(--diag-accent);--green-deep:var(--diag-olive);--green-ink:var(--diag-ink);--green-soft:#e7e9cf;
  --heat:var(--diag-olive);--heat-soft:var(--diag-accent);--heat-bg:#e7e9cf;
  --ink:var(--diag-ink);--grey:var(--diag-muted);--bg:var(--diag-paper);--bg-alt:var(--diag-surface);
  --card:var(--diag-card);--line:var(--diag-line);--lead:#41413d;--head:var(--diag-ink);
  --nav-bg:rgba(240,238,233,.9);--pad:clamp(1.25rem,4.2vw,5.75rem);
}
:root[data-theme="dark"]{
  --diag-paper:#171717;--diag-surface:#242424;--diag-card:#2b2926;--diag-ink:#f0eee9;
  --diag-muted:#d8d4cc;--diag-line:rgba(240,238,233,.16);--diag-line-strong:rgba(240,238,233,.3);
  --green:#a0b41c;--green-deep:#c2d23f;--green-ink:#f0eee9;--green-soft:#30331e;
  --heat:#c2d23f;--heat-soft:#a0b41c;--heat-bg:#30331e;--lead:#d8d4cc;
  --nav-bg:rgba(23,23,23,.9);
}
body{background:var(--diag-paper);color:var(--diag-ink)}
:focus-visible{outline-color:var(--diag-accent);box-shadow:0 0 0 5px var(--diag-ink)}
.nav{height:76px;background:var(--nav-bg);border-bottom:1px solid var(--diag-line);backdrop-filter:blur(18px) saturate(1.15);-webkit-backdrop-filter:blur(18px) saturate(1.15)}
.nav-inner{width:100%;height:100%;padding:0 var(--pad);display:grid;grid-template-columns:minmax(245px,1fr) auto minmax(245px,1fr);align-items:center;gap:2rem}
.brand{justify-self:start;display:inline-flex;align-items:center;gap:.8rem;min-width:0;margin:0}
.brand-logo{width:44px;height:38px;object-fit:contain;flex:none}
.brand-text{display:flex;min-width:0;flex-direction:column;font-family:var(--serif);line-height:1.05;color:var(--diag-ink)}
.brand-text b{color:inherit;font-size:1.08rem;letter-spacing:.04em;white-space:nowrap}
.brand-text small{margin-top:.38rem;color:var(--diag-muted);font:700 .54rem/1 var(--mono);letter-spacing:.12em;white-space:nowrap}
.diag-nav-single{justify-self:center;gap:0}.diag-nav-single a{gap:.42rem;padding:.5rem 0;font-size:.87rem;letter-spacing:.05em}
.diag-nav-single a::after{height:1px;background:currentColor;bottom:.2rem}.diag-nav-single .idx{color:var(--diag-olive);font-size:.62rem}
.nav-tools{justify-self:end;display:flex;gap:.55rem}
.tg{width:42px;height:42px;min-width:42px;padding:0;border:1px solid var(--diag-line);border-radius:50%;background:transparent;color:var(--diag-ink);font:700 .69rem var(--mono);transition:background .25s,border-color .25s,transform .25s}
.tg:hover{background:var(--diag-surface);border-color:var(--diag-line-strong);color:var(--diag-ink);transform:translateY(-2px)}
.diag-app{background:var(--diag-paper)}
.diag-map-shell{grid-template-columns:minmax(290px,350px) minmax(380px,1fr) minmax(310px,390px);min-height:calc(100vh - 76px);min-height:calc(100dvh - 76px);border-top:0}
.diag-side,.report-panel{padding:clamp(1.5rem,2.4vw,2.4rem);background:var(--diag-paper)}
.diag-side{border-right:1px solid var(--diag-line)}.report-panel{border-left:1px solid var(--diag-line);border-right:0;background:var(--diag-surface);scroll-margin-top:76px}
.diag-eyebrow{display:flex;align-items:center;gap:.65rem;margin-bottom:1rem;color:var(--diag-olive);font-size:.76rem;font-weight:800;letter-spacing:.08em}
.diag-eyebrow::before{content:"";width:26px;height:3px;background:var(--diag-accent)}
.diag-side h1{max-width:7em;margin:0 0 1.05rem;font-family:var(--serif);font-size:clamp(2.6rem,4vw,4.4rem);font-weight:650;line-height:1.03;letter-spacing:-.05em;color:var(--diag-ink)}
.diag-side>p{margin:0;color:#41413d;font-size:clamp(.94rem,1vw,1.04rem);line-height:1.85}:root[data-theme="dark"] .diag-side>p{color:var(--diag-muted)}
.diag-search,.diag-filter,.zoom-card,.coverage-card,.legend-card,.hint-card{border:1px solid var(--diag-line);background:var(--diag-surface);padding:1rem}
.diag-search label,.diag-filter>span{margin-bottom:.55rem;color:var(--diag-olive);font-family:var(--sans);font-size:.74rem;font-weight:800;letter-spacing:.05em}
:root[data-theme="dark"] .diag-search label,:root[data-theme="dark"] .diag-filter>span{color:var(--diag-accent)}
.diag-search input,.diag-filter select{border:1px solid var(--diag-line-strong);border-radius:0;background:var(--diag-card);color:var(--diag-ink);padding:.7rem .75rem;font-size:.88rem;transition:border-color .2s,box-shadow .2s}
.diag-search input:focus,.diag-filter select:focus{border-color:var(--diag-olive);outline:0;box-shadow:inset 0 -2px 0 var(--diag-accent)}
.diag-search button{border:1px solid var(--diag-ink);border-radius:0;background:var(--diag-ink);color:var(--diag-paper);padding:.7rem .9rem;font-family:var(--sans);font-size:.78rem;font-weight:800;transition:background .2s,border-color .2s,color .2s}
.diag-search button:hover{border-color:var(--diag-accent);background:var(--diag-accent);color:#171717}
.zoom-card>span,.hint-card{font-family:var(--sans);font-size:.72rem;font-weight:750;color:var(--diag-muted)}
.zoom-card strong{margin:.35rem 0 .15rem;font-size:1.22rem;line-height:1.35;color:var(--diag-ink)}
.zoom-card em{font-family:var(--sans);font-size:.72rem;font-weight:750;color:var(--diag-olive)}
:root[data-theme="dark"] .zoom-card em{color:var(--diag-accent)}
.coverage-card{gap:.8rem}.coverage-card div{border-left:3px solid var(--diag-accent);padding-left:.65rem}
.coverage-card b{color:var(--diag-olive);font-size:1.25rem;letter-spacing:-.04em}.coverage-card span{font-family:var(--sans);font-size:.62rem;color:var(--diag-muted);line-height:1.4}
:root[data-theme="dark"] .coverage-card b{color:var(--diag-accent)}
.diag-data-note{margin:.8rem 0 0;color:var(--diag-muted);font-size:.7rem;line-height:1.65}
.legend-card{gap:.7rem}.legend-card span{font-family:var(--sans);font-size:.7rem;color:var(--diag-muted)}
.diag-map-wrap{background:#111712}.diagnosis-map{background:radial-gradient(circle at 50% 48%,rgba(160,180,28,.15),transparent 52%),#111712}
.leaflet-control-attribution{background:rgba(251,250,247,.88)!important;color:#171717;font-family:var(--sans);font-size:.62rem}
.map-toolbar button{border:1px solid rgba(240,238,233,.32);border-radius:2px;background:rgba(23,23,23,.86);color:#f0eee9;padding:.48rem .78rem;font-family:var(--sans);font-size:.72rem;font-weight:750;transition:background .2s,border-color .2s,color .2s}
.map-toolbar button:hover,.map-toolbar button[aria-pressed="true"]{border-color:var(--diag-accent);background:var(--diag-accent);color:#171717}
.map-loading{border:1px solid rgba(240,238,233,.25);border-radius:2px;background:rgba(23,23,23,.92);color:#f0eee9;font-family:var(--sans);font-size:.74rem;font-weight:750}
.china-outline{fill:rgba(160,180,28,.06);stroke:rgba(216,212,204,.48)}
.diag-tip{border:1px solid rgba(23,23,23,.18);background:rgba(251,250,247,.94);color:#171717;font-family:var(--sans);font-size:.7rem}
.report-empty{color:var(--diag-muted)}
.report-empty span{display:flex;align-items:center;gap:.65rem;color:var(--diag-olive);font-family:var(--sans);font-size:.74rem;font-weight:800;letter-spacing:.05em}
.report-empty span::before{content:"";width:26px;height:3px;background:var(--diag-accent)}
:root[data-theme="dark"] .report-empty span{color:var(--diag-accent)}
.report-empty strong{max-width:8em;margin-top:.75rem;color:var(--diag-ink);font-size:clamp(1.8rem,3vw,2.7rem);font-weight:650;line-height:1.12;letter-spacing:-.04em}
.report-head{border-bottom:1px solid var(--diag-line)}
.report-k{color:var(--diag-olive);font-family:var(--sans);font-size:.72rem;font-weight:800;letter-spacing:.06em}
:root[data-theme="dark"] .report-k{color:var(--diag-accent)}
.report-head h2{margin:.45rem 0;color:var(--diag-ink);font-size:clamp(1.8rem,3vw,2.7rem);font-weight:650;line-height:1.08;letter-spacing:-.04em}
.report-meta span{border:1px solid var(--diag-line-strong);border-radius:0;color:var(--diag-muted);font-family:var(--sans);font-size:.68rem}
.report-score,.report-rank{border:1px solid var(--diag-line);background:var(--diag-card)}
.report-score b,.report-rank b{color:var(--diag-olive);font-size:3rem;letter-spacing:-.06em}
:root[data-theme="dark"] .report-score b,:root[data-theme="dark"] .report-rank b{color:var(--diag-accent)}
.report-score p,.report-rank p{color:var(--diag-muted)}
.report-rank span{color:var(--diag-olive);font-family:var(--sans);font-size:.68rem;font-weight:800;letter-spacing:.05em}
:root[data-theme="dark"] .report-rank span{color:var(--diag-accent)}
.weak-report{gap:.8rem}.weak-report article{border:1px solid var(--diag-line);background:var(--diag-card);padding:1rem}
.weak-report article>span{color:var(--diag-olive);font-family:var(--sans);font-size:.67rem;font-weight:800;letter-spacing:.04em}
:root[data-theme="dark"] .weak-report article>span{color:var(--diag-accent)}
.weak-report h3{color:var(--diag-ink);line-height:1.4}.weak-report p{color:var(--diag-muted)}
.indicator-report p b{color:var(--diag-olive)}:root[data-theme="dark"] .indicator-report p b{color:var(--diag-accent)}
.source-line{border-top:1px solid var(--diag-line);color:var(--diag-muted)}
.source-line span{color:var(--diag-muted);font-family:var(--sans);font-size:.76rem;font-weight:400;letter-spacing:0}
.source-line strong{color:var(--diag-olive);font-family:var(--sans);font-size:.65rem;letter-spacing:.04em}
:root[data-theme="dark"] .source-line strong{color:var(--diag-accent)}
.knowledge-line{color:var(--diag-muted)}
.report-note{border:1px solid var(--diag-line);background:var(--diag-card);color:var(--diag-muted)}
.report-actions{border-top:1px solid var(--diag-line)}.report-actions li{color:var(--diag-muted)}
@media(max-width:1100px){
  .diag-side,.report-panel{border:0;border-bottom:1px solid var(--diag-line)}
  .diag-side h1{max-width:none}.diag-map-wrap{min-height:520px}.report-panel{min-height:420px}
}
@media(max-width:760px){
  .nav-inner{grid-template-columns:1fr auto auto;gap:.75rem}.diag-nav-single{justify-self:end}.diag-nav-single .idx{display:none}
  .nav-tools{gap:.35rem}.tg{width:36px;height:36px;min-width:36px}
}
@media(max-width:640px){
  .diag-nav-single span:not(.idx){font-size:.78rem}.diag-side,.report-panel{padding:1.25rem}
  .diag-side h1{font-size:clamp(2.5rem,13vw,3.8rem)}
  .nav-inner{padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));gap:.45rem}
  .brand-logo{width:34px;height:30px}.brand-text small{display:none}
  .diag-nav-single{display:none}
  .tg{width:44px;height:44px;min-width:44px}
  .diag-map-wrap{height:62svh;min-height:430px}
  .map-toolbar{left:52px;right:8px;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:none}
  .map-toolbar::-webkit-scrollbar{display:none}
  .map-toolbar button{min-width:44px;min-height:44px;flex:none}
  .diag-search-row button{min-height:44px}
  .coverage-card{grid-template-columns:1fr}
  .report-panel{padding-bottom:max(1.5rem,env(safe-area-inset-bottom))}
}
