:root{--ink:#173d5b;--muted:#718ba0;--line:#d5e4ed;--canvas:#edf5f9;--card:#fff;--blue:#2f7de7;--teal:#36a39b;--gold:#c99643;--shadow:0 18px 44px rgba(38,83,112,.09);--sans:Inter,"Microsoft YaHei",sans-serif;--mono:"Cascadia Code",Consolas,monospace}*{box-sizing:border-box}html{min-width:320px;background:var(--canvas)}body{margin:0;color:var(--ink);font-family:var(--sans);background:linear-gradient(180deg,#fafdff 0,var(--canvas) 58%,#f5f9fb 100%)}button,input,select{font:inherit}.maintainable-app{min-height:100vh}.maintain-header{position:sticky;top:0;z-index:10;border-bottom:1px solid #c7dce7;background:linear-gradient(135deg,#2b607e,#3b7897 62%,#4a8fa5);color:#fff;box-shadow:0 6px 22px rgba(35,89,118,.15)}.maintain-header__inner,.maintain-header__sub,.maintain-main,.maintain-footer{width:min(1280px,calc(100% - 36px));margin:0 auto}.maintain-header__inner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 0 14px}.maintain-brand{display:flex;align-items:center;gap:11px;color:#fff;text-decoration:none}.maintain-brand__mark{display:grid;place-items:center;width:39px;height:39px;border-radius:13px 13px 13px 4px;background:linear-gradient(145deg,#367fe4,#57b6c1);font-size:20px;font-weight:800}.maintain-brand strong,.maintain-brand small{display:block}.maintain-brand strong{letter-spacing:.08em}.maintain-brand small{margin-top:3px;color:rgba(255,255,255,.7);font:10px var(--mono);letter-spacing:.08em}.maintain-cycle-picker{display:flex;gap:5px;padding:4px;border:1px solid rgba(255,255,255,.32);border-radius:999px;background:rgba(255,255,255,.1)}.maintain-cycle-picker button{display:flex;align-items:baseline;gap:5px;padding:7px 12px;border:0;border-radius:999px;color:rgba(255,255,255,.85);background:transparent;cursor:pointer}.maintain-cycle-picker button:hover{background:rgba(255,255,255,.15)}.maintain-cycle-picker button.is-active{color:#245773;background:#f5fbff}.maintain-cycle-picker small{font-size:9px;opacity:.7}.maintain-header__sub{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 0 10px}.maintain-nav{display:flex;gap:4px;overflow:auto}.maintain-nav a{padding:8px 12px;border-bottom:2px solid transparent;color:rgba(255,255,255,.75);font-size:12px;text-decoration:none;white-space:nowrap}.maintain-nav a:hover,.maintain-nav a.is-active{color:#fff;border-bottom-color:#8dd1dc}.maintain-status{color:rgba(255,255,255,.76);font:10px var(--mono);white-space:nowrap}.maintain-status[data-tone=error]{color:#ffe0d6}.maintain-main{padding:30px 0 70px}.maint-hero{display:grid;grid-template-columns:minmax(0,1fr) 260px;align-items:end;gap:28px;padding:18px 0 30px;border-bottom:1px solid var(--line)}.maint-hero--compact{grid-template-columns:1fr}.maint-eyebrow{margin:0;color:#5c91b2;font:700 10px var(--mono);letter-spacing:.14em}.maint-hero h1{margin:8px 0 0;color:#143e61;font-size:clamp(30px,4vw,54px);line-height:1.08;letter-spacing:-.045em}.maint-hero p:not(.maint-eyebrow){max-width:700px;margin:15px 0 0;color:var(--muted);font-size:14px;line-height:1.8}.maint-hero__stamp{padding:18px;border:1px solid #c9e1e7;border-radius:15px;background:linear-gradient(145deg,#fff,#effaf8);box-shadow:var(--shadow)}.maint-hero__stamp span,.maint-hero__stamp small{display:block;color:#7692a4;font-size:11px}.maint-hero__stamp strong{display:block;margin:8px 0 4px;color:#267f7c;font:700 27px var(--mono)}.maint-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.maint-kpis article{min-height:105px;padding:16px;border:1px solid var(--line);border-radius:13px;background:rgba(255,255,255,.86);box-shadow:0 10px 24px rgba(38,83,112,.04)}.maint-kpis span,.maint-kpis small{display:block;color:#7d95a6;font-size:10px}.maint-kpis strong{display:block;margin:11px 0 4px;color:#255578;font:700 25px var(--mono)}.maint-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(250px,.75fr);gap:16px;margin-top:16px}.maint-panel{padding:20px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.9);box-shadow:var(--shadow)}.maint-panel>header,.maint-panel header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:15px}.maint-panel h2{margin:4px 0 0;color:#214d70;font-size:22px}.maint-panel header a,.maint-panel--note a{color:var(--blue);font-size:12px;font-weight:700;text-decoration:none}.maint-panel--note{background:linear-gradient(145deg,#fff,#f0faf8)}.maint-panel--note h2{margin:9px 0;color:#267b78}.maint-panel--note p:not(.maint-eyebrow){color:var(--muted);font-size:13px;line-height:1.75}.maint-action{display:inline-block;margin-top:8px;padding:8px 10px;border:1px solid #b9dcd9;border-radius:8px;background:#fff}.city-list{display:grid;gap:7px}.city-row{display:grid;grid-template-columns:28px 84px minmax(80px,1fr) 72px 80px;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #edf2f5}.city-row b{color:#6f9ab4;font:700 11px var(--mono)}.city-row span{font-weight:700}.city-row i{height:7px;overflow:hidden;border-radius:99px;background:#e8f0f5}.city-row i em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#4c9bdb,#61b7ac)}.city-row strong{color:#2e6a91;font:700 13px var(--mono);text-align:right}.city-row small{color:var(--muted);font-size:11px;text-align:right}.maint-toolbar{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin:18px 0 14px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}.maint-toolbar label{display:grid;gap:5px;color:#70879a;font-size:11px;font-weight:700}.maint-toolbar input,.maint-toolbar select{height:36px;min-width:210px;padding:0 10px;border:1px solid #cbdde8;border-radius:8px;outline:0;color:var(--ink);background:#fbfdff}.maint-toolbar select{min-width:125px}.maint-toolbar input:focus,.maint-toolbar select:focus{border-color:#62a1d1;box-shadow:0 0 0 3px rgba(47,125,231,.12)}.maint-toolbar__count{margin-left:auto;color:#64869b;font:600 11px var(--mono)}.maint-toolbar button{height:34px;padding:0 10px;border:1px solid #c1d7e4;border-radius:8px;color:#2c71af;background:#f5faff;cursor:pointer}.maint-toolbar button:hover{background:#eaf4ff}.table-scroll{overflow:auto}.maint-table{width:100%;min-width:760px;border-collapse:collapse}.maint-table th,.maint-table td{padding:12px 11px;border-bottom:1px solid #e8eff3;text-align:left;font-size:12px;vertical-align:top}.maint-table thead th{color:#6d8798;background:#f5f9fb;font-size:10px;letter-spacing:.04em;white-space:nowrap}.maint-table tbody tr:hover{background:#f7fbff}.maint-table th[scope=row],.maint-table .rank{color:#2f78b5;font-weight:700}.maint-table code{color:#557c94;font:11px var(--mono)}.maint-table--ranking{min-width:840px}.maint-table--search{min-width:1100px}.major-cell{max-width:310px;color:#668296;line-height:1.5}.empty{padding:35px!important;color:#8aa0af;text-align:center!important}.maint-callout{display:flex;gap:16px;margin-top:16px;padding:15px 18px;border:1px solid #d8e5e8;border-radius:12px;background:#f5fbfa;color:#5b7b83;font-size:12px;line-height:1.6}.maint-callout strong{color:#2c7e7b;white-space:nowrap}.boundary-list{display:grid;gap:9px}.boundary-list article{display:grid;grid-template-columns:130px 1fr;gap:5px 14px;padding:13px;border:1px solid #e1eaee;border-radius:10px;background:#fbfdfe}.boundary-list article span{grid-row:span 2;color:#ba8134;font:700 10px var(--mono);text-transform:uppercase}.boundary-list article strong{color:#2d526d;font-size:13px;line-height:1.5}.boundary-list article small{color:#8a9daa;font-size:11px}.maint-error{margin:60px auto;padding:28px;max-width:680px;border:1px solid #ead6cf;border-radius:15px;background:#fffaf8;text-align:center}.maint-error strong{display:block;color:#9d5d50;font-size:19px}.maint-error p{color:#7d8c96;font-size:13px;line-height:1.7}.maint-error code{padding:2px 5px;border-radius:5px;color:#2d607a;background:#edf5f8;font-family:var(--mono)}.maint-footer{display:flex;justify-content:space-between;gap:14px;padding:17px 0 26px;border-top:1px solid var(--line);color:#8196a5;font-size:11px}
@media(max-width:820px){.maintain-header__inner,.maintain-header__sub,.maintain-main,.maintain-footer{width:min(100% - 24px,680px)}.maintain-header__inner{align-items:flex-start;flex-direction:column;gap:12px}.maintain-cycle-picker{align-self:stretch;justify-content:space-between}.maintain-cycle-picker button{flex:1;justify-content:center}.maintain-header__sub{align-items:flex-start;flex-direction:column;gap:6px}.maintain-nav{width:100%}.maintain-status{font-size:9px}.maintain-main{padding-top:20px}.maint-hero{display:block;padding-top:10px}.maint-hero__stamp{margin-top:16px}.maint-kpis{grid-template-columns:repeat(2,1fr)}.maint-grid{grid-template-columns:1fr}.maint-toolbar__count{margin-left:0;flex:1 1 100%}.maint-toolbar--search label{flex:1 1 100%}.maint-toolbar input,.maint-toolbar select{width:100%;min-width:0}.maint-footer{display:block}.maint-footer span{display:block;margin-top:6px}}
@media(max-width:430px){.maint-hero h1{font-size:32px}.maint-kpis article{min-height:92px;padding:13px}.maint-kpis strong{font-size:21px}.city-row{grid-template-columns:24px 70px minmax(60px,1fr) 56px}.city-row small{display:none}.maint-panel{padding:14px}.boundary-list article{grid-template-columns:1fr}.boundary-list article span{grid-row:auto}}
.maintain-footer a{color:#3a82b1;font-weight:700;text-decoration:none}.maintain-footer a:hover{text-decoration:underline}

/* v13.3: keep the maintenance surface light, quiet, and easy to scan. */
html{background:#f5f7fa}body{background:#f5f7fa;color:#27384a}
.maintain-header{border-bottom-color:#e4e9ee;background:#f7f9fc;color:#27384a;box-shadow:0 1px 0 rgba(28,62,93,.03)}
.maintain-brand{color:#21384c}.maintain-brand strong{color:#21384c}.maintain-brand small{color:#8191a1}
.maintain-brand__mark{background:linear-gradient(145deg,#4b8fba,#65b2af);box-shadow:0 5px 12px rgba(64,135,171,.16)}
.maintain-cycle-picker{border-color:#e0e7ee;background:#fff;box-shadow:0 2px 8px rgba(39,70,96,.04)}
.maintain-cycle-picker button{color:#687c8e}.maintain-cycle-picker button:hover{color:#2f6f99;background:#f2f7fb}.maintain-cycle-picker button.is-active{color:#fff;background:#4b88b4;box-shadow:0 2px 6px rgba(54,113,151,.18)}
.maintain-header__sub{border-top-color:#edf1f4}.maintain-nav a{color:#718392}.maintain-nav a:hover,.maintain-nav a.is-active{color:#306f9a;border-bottom-color:#4b88b4}.maintain-status{color:#84929e}.maintain-status[data-tone=error]{color:#a25f55}
.maint-hero h1{color:#1e3e59}.maint-hero__stamp{border-color:#dce8ec;background:#fff;box-shadow:0 10px 24px rgba(38,83,112,.055)}
.maint-panel,.maint-kpis article{background:#fff;box-shadow:0 10px 24px rgba(38,83,112,.035)}.maint-panel--note{background:#f6fbfa}
.maint-toolbar{border-color:#e3e9ef;box-shadow:0 4px 14px rgba(45,77,103,.035)}
.maint-toolbar input,.maint-toolbar select{border-color:#d8e2ea;background:#fbfcfd}.maint-toolbar input:focus,.maint-toolbar select:focus{border-color:#73a7c7;box-shadow:0 0 0 3px rgba(75,136,180,.11)}
.maint-callout{background:#f6fbfa}

/* v13.4: audit center and truthful combination filters. */
.maint-toolbar--ranking{align-items:flex-end}
.maint-toolbar--ranking label{min-width:132px}
.maint-toolbar--ranking label:first-child{min-width:240px}
.maint-toolbar--ranking input,.maint-toolbar--ranking select{min-width:0;width:100%}
.maint-kpis--audit article:nth-child(3) strong{color:#9a6a2e}
.maint-kpis--audit article:nth-child(4) strong{color:#9c5f58}
.maint-audit-date{color:#8a9aa7;font:10px var(--mono);white-space:nowrap}
.maint-table--audit{min-width:900px}
.maint-table--audit tbody tr[data-maint-audit-cycle-row]:hover{background:#f5fafc}
.audit-chip{display:inline-block;padding:4px 7px;border:1px solid #d3e3ea;border-radius:6px;color:#4d7d98;background:#f5fafc;font:10px var(--mono)}
.audit-chain{display:grid;gap:8px;margin:17px 0;color:#4f7284;font-size:12px}
.audit-chain span{padding:8px 10px;border:1px solid #dce9ed;border-radius:8px;background:#fbfdfe}
.audit-chain b{color:#6a9bb0;font-size:14px;text-align:center}
.maint-grid--audit{align-items:start}
@media(max-width:980px){.maint-toolbar--ranking label{flex:1 1 130px}.maint-toolbar--ranking label:first-child{flex:1 1 100%}.maint-toolbar--ranking .maint-toolbar__count{margin-left:0;flex:1 1 100%}.maint-audit-date{white-space:normal;text-align:right}}

/* v14.0: calm product surface, comparison cards, evidence drawer, and local workspace. */
.maintain-header{background:rgba(247,249,252,.96);backdrop-filter:blur(14px)}
.maintain-main{max-width:1280px}
.maint-panel,.maint-kpis article,.maint-toolbar{border-radius:var(--radius-md);box-shadow:var(--shadow-soft)}
.maint-hero{padding-top:24px}
.maint-hero h1,.maint-panel h2{font-weight:760}
.maint-grid--compare{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.change-card{display:flex;min-height:240px;flex-direction:column;gap:16px;padding:20px;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-surface);box-shadow:var(--shadow-soft)}
.change-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.change-card h3{margin:5px 0 0;color:var(--text-strong);font-size:20px}
.audit-chip--good{color:var(--status-success);border-color:#cfe5dd;background:#f3faf7}
.audit-chip--warn{color:var(--status-warning);border-color:#eadbbd;background:#fffaf1}
.change-card__metric{display:flex;align-items:baseline;gap:10px;padding:14px 0;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle)}
.change-card__metric strong{color:var(--accent-primary);font:700 31px var(--mono)}
.change-card__metric span,.change-card__note{color:var(--text-muted);font-size:11px}
.change-card__stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.change-card__stats span{display:grid;gap:4px;color:var(--text-muted);font-size:10px}
.change-card__stats b{color:var(--text-strong);font:700 15px var(--mono)}
.change-card__note{margin:0;line-height:1.65}
.maint-inline-notice{margin:0 0 14px;padding:10px 13px;border:1px solid #cfe5dd;border-radius:var(--radius-sm);background:#f3faf7;color:var(--status-success);font-size:12px}
.maint-filter-hint{align-self:center;color:var(--text-muted);font-size:10px;white-space:nowrap}
.maint-row-action{padding:5px 8px;border:1px solid #cbdde8;border-radius:6px;color:var(--accent-primary);background:var(--accent-primary-soft);cursor:pointer;font-size:11px}
.maint-row-action:hover{background:#e3f0f8}
.maint-detail-backdrop{position:fixed;inset:0;z-index:30;display:flex;justify-content:flex-end;background:rgba(30,52,72,.22)}
.maint-detail-drawer{width:min(620px,100%);height:100%;overflow:auto;padding:24px;background:var(--bg-surface);box-shadow:-18px 0 42px rgba(30,52,72,.16)}
.maint-detail-head{display:flex;justify-content:space-between;gap:18px;padding-bottom:16px;border-bottom:1px solid var(--border-subtle)}
.maint-detail-head h2{margin:6px 0;color:var(--text-strong);font-size:22px}
.maint-detail-head p:not(.maint-eyebrow){margin:6px 0 0;color:var(--text-muted);font-size:12px}
.maint-detail-close{width:34px;height:34px;border:1px solid var(--border-subtle);border-radius:50%;color:var(--text-muted);background:var(--bg-surface-soft);cursor:pointer;font-size:20px;line-height:1}
.maint-detail-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;color:var(--text-muted);font-size:11px}
.maint-detail-actions button,.saved-item button,.review-filters button{padding:7px 10px;border:1px solid #cbdde8;border-radius:var(--radius-sm);color:var(--accent-primary);background:var(--accent-primary-soft);cursor:pointer;font-size:11px}
.maint-detail-actions button:hover,.saved-item button:hover,.review-filters button:hover{background:#e3f0f8}
.maint-detail-section{padding:16px 0;border-bottom:1px solid var(--border-subtle)}
.maint-detail-section h3{margin:0 0 12px;color:var(--text-strong);font-size:14px}
.maint-detail-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;margin:0}
.maint-detail-fields div{min-width:0}
.maint-detail-fields dt{color:var(--text-muted);font-size:10px}
.maint-detail-fields dd{margin:4px 0 0;color:var(--text-body);font-size:12px;line-height:1.55;overflow-wrap:anywhere}
.maint-detail-status{display:flex;align-items:center;gap:9px;margin-bottom:12px;color:var(--text-muted);font-size:11px}
.maint-detail-footnote{margin:16px 0;color:var(--text-muted);font-size:11px;line-height:1.7}
.maint-value-null{display:inline-flex;padding:2px 6px;border-radius:5px;color:var(--status-warning);background:#fff8e9;font-size:10px}
.review-filters{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px}
.review-filters button{padding:5px 8px;color:var(--text-muted);background:var(--bg-surface-soft)}
.review-filters button.is-active{color:var(--accent-primary);border-color:#b8d4e5;background:var(--accent-primary-soft)}
.review-list{display:grid;gap:9px}
.review-item{padding:14px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-surface-soft)}
.review-item__meta{display:flex;align-items:center;gap:8px;margin-bottom:8px;color:var(--text-muted);font:10px var(--mono)}
.review-item strong{display:block;color:var(--text-strong);font-size:13px;line-height:1.5}
.review-item p{margin:6px 0;color:var(--text-body);font-size:12px;line-height:1.65}
.review-item small{color:var(--text-muted);font-size:10px;line-height:1.5}
.saved-list{display:grid;gap:8px}
.saved-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-surface-soft)}
.saved-item strong,.saved-item small{display:block}.saved-item strong{color:var(--text-strong);font-size:12px}.saved-item small{margin-top:4px;color:var(--text-muted);font-size:10px}
.maint-pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border-subtle)}
.maint-pagination__buttons{display:flex;gap:6px}.maint-pagination button{padding:7px 10px;border:1px solid #cbdde8;border-radius:var(--radius-sm);color:var(--accent-primary);background:var(--accent-primary-soft);cursor:pointer;font-size:11px}.maint-pagination button:disabled{cursor:not-allowed;opacity:.45}
.maint-pagination__label{color:var(--text-muted);font:10px var(--mono)}
.maint-grid--guide{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}
.guide-step{position:relative;min-height:230px}.guide-step>span{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px;color:var(--accent-primary);background:var(--accent-primary-soft);font:700 12px var(--mono)}.guide-step h2{margin:18px 0 8px;font-size:20px}.guide-step p,.guide-note p,.changelog-list p{color:var(--text-muted);font-size:12px;line-height:1.75}.guide-step a{display:inline-block;margin-top:8px;color:var(--accent-primary);font-size:12px;font-weight:700;text-decoration:none}.guide-note{margin-top:16px}.guide-note h2{font-size:17px}.guide-note code{padding:2px 5px;border-radius:5px;color:var(--accent-primary);background:var(--accent-primary-soft);font-family:var(--mono)}
.changelog-list{display:grid;gap:0}.changelog-list article{display:grid;grid-template-columns:110px 1fr;gap:16px;padding:14px 0;border-top:1px solid var(--border-subtle)}.changelog-list article:first-child{border-top:0;padding-top:0}.changelog-list strong{color:var(--text-strong);font-size:13px}.changelog-list p{margin:0}
@media(max-width:820px){.maint-grid--compare{grid-template-columns:1fr}.change-card__stats{grid-template-columns:repeat(2,1fr)}.maint-filter-hint{flex:1 1 100%}.maint-detail-fields{grid-template-columns:1fr}.review-filters{justify-content:flex-start}}
@media(max-width:820px){.maint-grid--guide{grid-template-columns:1fr}.changelog-list article{grid-template-columns:1fr;gap:5px}}
@media(max-width:600px){.maint-detail-backdrop{align-items:flex-end}.maint-detail-drawer{width:100%;height:min(86vh,720px);border-radius:20px 20px 0 0;padding:18px 16px}.maint-detail-actions{align-items:flex-start;flex-direction:column}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* v14.1: restore the real GeoJSON map as one light, inspectable workbench view. */
.maint-map-workbench{padding:0;overflow:hidden}
.maint-map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;border-bottom:1px solid var(--border-subtle)}
.maint-map-toolbar h2{margin:4px 0 0;font-size:20px}
.maint-map-metric-toggle{display:flex;gap:4px;padding:4px;border:1px solid #dce6ec;border-radius:10px;background:#f6fafc}
.maint-map-metric-toggle button{padding:7px 11px;border:0;border-radius:7px;color:#718695;background:transparent;cursor:pointer;font-size:11px}
.maint-map-metric-toggle button:hover{color:var(--accent-primary);background:#edf5fa}
.maint-map-metric-toggle button.is-active{color:#fff;background:var(--accent-primary);box-shadow:0 2px 6px rgba(76,134,178,.18)}
.maint-map-layout{display:grid;grid-template-columns:minmax(0,1.42fr) minmax(260px,.58fr);gap:0;align-items:stretch}
.maint-map-canvas{position:relative;min-width:0;padding:24px 24px 16px;background:radial-gradient(circle at 50% 43%,#fff 0,#fbfdfe 55%,#f3f8fb 100%)}
.maint-map-svg{display:block;width:100%;height:auto;max-height:720px;min-height:560px;overflow:visible}
.maint-map-region{fill:var(--map-fill,#dcecf2);stroke:#fff;stroke-width:1.35;stroke-linejoin:round;cursor:pointer;outline:none;transition:fill .18s ease,stroke .18s ease,stroke-width .18s ease,filter .18s ease}
.maint-map-region:hover,.maint-map-region:focus-visible{filter:drop-shadow(0 4px 6px rgba(52,101,127,.18));stroke:#397fa1;stroke-width:2.25}
.maint-map-region.is-selected{stroke:#216e95;stroke-width:3;filter:drop-shadow(0 4px 7px rgba(52,101,127,.18))}
.maint-map-label{cursor:pointer;outline:none;user-select:none}
.maint-map-label text:first-child{fill:#385a6d;font-size:13px;font-weight:760;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}
.maint-map-label__value{fill:#6d8b9a;font:10px var(--mono);paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}
.maint-map-label:hover text:first-child,.maint-map-label:focus-visible text:first-child,.maint-map-label.is-selected text:first-child{fill:#216e95}
.maint-map-label.is-selected text:first-child{font-size:14px}
.maint-map-legend{position:absolute;top:24px;left:24px;display:flex;align-items:center;gap:7px;padding:7px 9px;border:1px solid #dce8ee;border-radius:8px;color:#728896;background:rgba(255,255,255,.9);font-size:10px;box-shadow:0 5px 14px rgba(44,86,111,.05)}
.maint-map-legend i{display:block;width:68px;height:8px;border-radius:999px;background:linear-gradient(90deg,#edf5f8,#c6e1e9,#79b9c8,#4b99ad)}
.maint-map-legend small{margin-left:4px;color:#95a5af;font-size:9px}
.maint-map-source{margin:0;color:#8295a1;font-size:10px;line-height:1.6;text-align:center}
.maint-map-source code{color:#5b8195}
.maint-map-inspector{display:flex;min-height:100%;flex-direction:column;padding:28px 24px;border-left:1px solid var(--border-subtle);background:#fbfdfe}
.maint-map-inspector__city{margin:8px 0 3px;color:var(--text-strong);font-size:26px;font-weight:760}
.maint-map-inspector__number{display:flex;align-items:baseline;gap:9px;padding:15px 0;border-bottom:1px solid var(--border-subtle)}
.maint-map-inspector__number strong{color:var(--accent-primary);font:700 38px var(--mono)}
.maint-map-inspector__number span{color:var(--text-muted);font-size:11px}
.maint-map-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0}
.maint-map-facts div{min-width:0}.maint-map-facts dt{color:var(--text-muted);font-size:10px}.maint-map-facts dd{margin:4px 0 0;color:var(--text-strong);font:700 15px var(--mono);overflow-wrap:anywhere}
.maint-map-facts div:last-child{grid-column:1/-1}.maint-map-facts div:last-child dd{font:12px/1.6 var(--sans);color:var(--text-body)}
.maint-map-note{margin:16px 0;color:var(--text-muted);font-size:11px;line-height:1.75}
.maint-primary-action{margin-top:auto;padding:10px 12px;border:1px solid #c4dce8;border-radius:9px;color:#2f7497;background:#edf7fb;cursor:pointer;font-size:11px;font-weight:700;text-align:left}
.maint-primary-action:hover{background:#e2f1f7}
.maint-map-city-panel{margin-top:16px}
.maint-map-city-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.maint-map-city-chip{display:grid;grid-template-columns:1fr auto;gap:3px 7px;padding:10px 11px;border:1px solid #dce7ed;border-radius:9px;color:var(--text-body);background:#fbfdfe;cursor:pointer;text-align:left;transition:border-color .18s ease,background .18s ease,transform .18s ease}
.maint-map-city-chip:hover{border-color:#a9ccdc;background:#f1f8fb;transform:translateY(-1px)}
.maint-map-city-chip.is-selected{border-color:#75adc4;background:#edf7fb;box-shadow:0 4px 12px rgba(76,134,178,.08)}
.maint-map-city-chip span{grid-column:1/-1;color:#456477;font-size:11px;font-weight:700}.maint-map-city-chip strong{color:var(--accent-primary);font:700 15px var(--mono)}.maint-map-city-chip small{align-self:end;color:#91a1ab;font-size:9px}
.maint-map-city-chip--direct{border-style:dashed;background:#fffaf1}.maint-map-city-chip--direct strong{color:#a87535}
@media(max-width:980px){.maint-map-city-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.maint-map-toolbar{flex-wrap:wrap}.maint-map-toolbar .maint-action{margin-left:auto}}
@media(max-width:820px){.maint-map-layout{grid-template-columns:1fr}.maint-map-inspector{min-height:0;border-top:1px solid var(--border-subtle);border-left:0}.maint-map-svg{min-height:430px}.maint-map-city-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:560px){.maint-map-toolbar{align-items:flex-start;flex-direction:column;padding:16px}.maint-map-toolbar .maint-action{margin-left:0}.maint-map-canvas{padding:18px 8px 12px}.maint-map-legend{top:14px;left:14px}.maint-map-legend small{display:none}.maint-map-svg{min-height:330px}.maint-map-label text:first-child{font-size:10px}.maint-map-label__value{font-size:8px}.maint-map-city-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.maint-map-inspector{padding:20px 16px}}

/* v14.3: reference blue calibration — use the supplied bright blue as the single primary accent. */
:root{--ink:#25466f;--muted:#748cac;--line:#dce8f8;--canvas:#f5f9ff;--card:#fff;--blue:#3a83f7;--teal:#b7d1f8;--shadow:0 18px 44px rgba(39,88,150,.1)}
html,body{background:#f5f9ff;color:#25466f}
body{background:linear-gradient(180deg,#fcfdff 0,#f5f9ff 62%,#f8fbff 100%)}
.maintain-header{border-bottom-color:#dae7f8;background:rgba(251,253,255,.98);color:#25466f;box-shadow:0 5px 18px rgba(39,88,150,.07)}
.maintain-brand,.maintain-brand strong{color:#25466f}.maintain-brand small{color:#8299b8}.maintain-brand__mark{background:linear-gradient(145deg,#3a83f7,#8cb5fa);box-shadow:0 5px 12px rgba(58,131,247,.2)}
.maintain-cycle-picker{border-color:#dce8f8;background:#fff;box-shadow:0 2px 8px rgba(39,88,150,.06)}.maintain-cycle-picker button{color:#7189aa}.maintain-cycle-picker button:hover{color:#2f6fd5;background:#eff5ff}.maintain-cycle-picker button.is-active{color:#fff;background:#3a83f7;box-shadow:0 2px 6px rgba(58,131,247,.24)}
.maintain-header__sub{border-top-color:#e5eefb}.maintain-nav a{color:#7189aa}.maintain-nav a:hover,.maintain-nav a.is-active{color:#2f6fd5;border-bottom-color:#5e98f8}.maintain-status{color:#8299b8}.maintain-status[data-tone=error]{color:#a25f55}
.maint-hero h1{color:#274f83}.maint-eyebrow{color:#4a86e9}.maint-hero__stamp{border-color:#d6e5fa;background:linear-gradient(145deg,#fff,#f0f6ff);box-shadow:0 10px 24px rgba(39,88,150,.07)}.maint-hero__stamp strong{color:#3272cf}
.maint-panel,.maint-kpis article{border-color:#dce8f8;background:#fff;box-shadow:0 10px 24px rgba(39,88,150,.05)}.maint-panel--note{background:linear-gradient(145deg,#fff,#f5f9ff)}.maint-panel--note h2{color:#3c73bd}.maint-toolbar{border-color:#dce8f8;box-shadow:0 4px 14px rgba(39,88,150,.05)}
.maint-kpis strong{color:#376fbd}.maint-callout{border-color:#d8e6fa;background:#f5f9ff;color:#607fa8}.maint-callout strong{color:#3e77c1}.maint-action{border-color:#c7dcfa;background:#f4f8ff}.city-row i em{background:linear-gradient(90deg,#6a9df4,#b7d1f8)}
.maint-map-region{fill:var(--map-fill,#e7f0ff)}.maint-map-region:hover,.maint-map-region:focus-visible{stroke:#3a83f7}.maint-map-region.is-selected{stroke:#2868cb}.maint-map-label text:first-child{fill:#416995}.maint-map-label__value{fill:#7b95b5}.maint-map-label:hover text:first-child,.maint-map-label:focus-visible text:first-child,.maint-map-label.is-selected text:first-child{fill:#2868cb}.maint-map-legend i{background:linear-gradient(90deg,#edf4ff,#c9ddff,#79a8f4,#3a83f7)}.maint-map-inspector{background:#fcfdff}.maint-map-inspector__number strong{color:#3a83f7}.maint-primary-action{border-color:#c1d8fa;color:#3475d8;background:#eef5ff}.maint-primary-action:hover{background:#e4efff}.maint-map-city-chip:hover{border-color:#a9c9f4;background:#f5f9ff}.maint-map-city-chip.is-selected{border-color:#8eb8f2;background:#eef5ff}.maint-map-city-chip strong{color:#3a83f7}
.audit-chip--good,.maint-inline-notice{border-color:#cadcf7;background:#f1f6ff;color:#4f7fc4}.maint-inline-notice{color:#4f7fc4}.review-filters button.is-active{border-color:#b8d2f5;background:#eef5ff}.maint-row-action,.maint-detail-actions button,.saved-item button,.review-filters button{border-color:#cbdcf7;color:#4f7fc4;background:#eef5ff}.maint-row-action:hover,.maint-detail-actions button:hover,.saved-item button:hover,.review-filters button:hover{background:#e4efff}
.maint-footer a{color:#4b82d2}

/* v14.4: make audit labels and long source text safe at every viewport. */
.boundary-list article span,.boundary-list article strong,.boundary-list article small{min-width:0;overflow-wrap:anywhere;word-break:break-word;line-height:1.4}
.boundary-list article span{color:#5d80b5;font-weight:700}
.major-cell{max-width:310px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.saved-item__link{flex:1;min-width:0;border:0;padding:0;background:transparent;color:inherit;text-align:left;cursor:pointer}
.saved-item__link:hover{background:transparent}
.saved-item__link:disabled{cursor:not-allowed;opacity:.68}
.saved-item__link strong,.saved-item__link small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.maint-grid--saved{grid-template-columns:repeat(2,minmax(0,1fr))}
.maint-source-details{margin-top:10px;border-top:1px solid #e7eef9;padding-top:8px}
.maint-source-details summary{color:#6684b0;cursor:pointer;font-size:11px;font-weight:700;list-style:none}
.maint-source-details summary::-webkit-details-marker{display:none}
.maint-source-details summary::before{content:'+';display:inline-grid;width:16px;height:16px;margin-right:5px;place-items:center;border:1px solid #cbdcf7;border-radius:50%;color:#4f7fc4;font-size:12px;vertical-align:-3px}
.maint-source-details[open] summary::before{content:'−'}
.maint-active-filters{display:flex;flex:1 1 100%;flex-wrap:wrap;align-items:center;gap:6px;border-top:1px solid #e7eef9;padding:8px 0 0;color:#7189aa;font-size:10px}
.maint-active-filters button{height:auto;min-height:25px;border:1px solid #cbdcf7;border-radius:999px;padding:4px 9px;color:#4f7fc4;background:#f4f8ff;cursor:pointer;font-size:10px}
.maint-active-filters button:hover{border-color:#9fc0f2;background:#e8f1ff}
.maint-major-tools{display:flex;flex:1 1 100%;flex-wrap:wrap;align-items:center;gap:5px}
.maint-major-tools>span{margin-right:2px;color:#7189aa;font-size:10px}
.maint-major-tools button{height:auto;min-height:25px;border:1px solid #d2e1f7;border-radius:999px;padding:4px 8px;color:#5a7eaf;background:#f8fbff;cursor:pointer;font-size:10px}
.maint-major-tools button:hover{border-color:#9fc0f2;background:#eef5ff;color:#3a76cc}
.maint-major-tools small{margin-left:4px;color:#8ba1bf;font-size:9px}
.maint-detail-action-group{display:flex;flex-wrap:wrap;gap:7px}
@media(max-width:820px){.maint-grid--saved{grid-template-columns:1fr}}

/* ============================================================
   v15.0 "数据驾驶舱" — Token v3 双主题、玻璃壳层、主题切换、克制动效。
   本段组件样式只引用 maintainable-tokens.css 的变量;
   [data-theme="dark"] 覆盖与浅色逐对面成对,禁止硬编码主题色。 */
html{scroll-behavior:smooth}
.maintain-app{font-variant-numeric:tabular-nums}
body{background:repeating-linear-gradient(0deg,var(--grid-line) 0,var(--grid-line) 1px,transparent 1px,transparent 52px),repeating-linear-gradient(90deg,var(--grid-line) 0,var(--grid-line) 1px,transparent 1px,transparent 52px),linear-gradient(180deg,var(--canvas-top) 0%,var(--canvas) 58%,var(--canvas-bottom) 100%);background-attachment:fixed;color:var(--text-body)}
h1,h2,h3{font-family:var(--font-display)}
.maintain-header{border-bottom-color:var(--glass-border);background:var(--glass-bg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--text-strong);box-shadow:0 1px 0 var(--glass-border)}
.maintain-brand,.maintain-brand strong{color:var(--text-strong)}
.maintain-brand small{color:var(--text-muted)}
.maintain-brand__mark{background:var(--grad-display);box-shadow:0 5px 14px rgba(58,131,247,.24);color:#fff}
.maintain-cycle-picker{border-color:var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-soft)}
.maintain-cycle-picker button{color:var(--text-muted);transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.maintain-cycle-picker button:hover{color:var(--accent-primary);background:var(--accent-primary-soft)}
.maintain-cycle-picker button.is-active{color:#fff;background:var(--accent-primary);box-shadow:0 2px 8px rgba(58,131,247,.28)}
.maintain-header__sub{border-top-color:var(--border-subtle)}
.maintain-header__tools{display:flex;align-items:center;gap:8px}
.maintain-theme-toggle{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-pill);color:var(--text-muted);background:var(--bg-surface);cursor:pointer;font-size:15px;line-height:1;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.maintain-theme-toggle:hover{color:var(--accent-primary);border-color:var(--accent-primary);transform:rotate(14deg)}
.maintain-nav a{color:var(--text-muted);border-bottom:0;border-radius:var(--radius-pill);transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.maintain-nav a:hover{color:var(--accent-primary);background:var(--accent-primary-soft)}
.maintain-nav a.is-active{color:var(--accent-primary);background:var(--accent-primary-soft);font-weight:700}
.maintain-status{color:var(--text-muted)}
.maintain-status[data-tone=error]{color:var(--status-danger)}
.maint-eyebrow{color:var(--accent-primary)}
.maint-hero h1{color:var(--text-display)}
.maint-hero p:not(.maint-eyebrow){color:var(--text-muted)}
.maint-hero__stamp{border-color:var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-soft)}
.maint-hero__stamp strong{background:var(--grad-display);-webkit-background-clip:text;background-clip:text;color:transparent;font-family:var(--font-display)}
.maint-hero__stamp span,.maint-hero__stamp small{color:var(--text-muted)}
.maint-panel,.maint-kpis article{border-color:var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-soft);transition:box-shadow var(--dur-med) var(--ease),transform var(--dur-med) var(--ease)}
.maint-panel h2{color:var(--text-display)}
.maint-panel header a{color:var(--accent-primary)}
.maint-panel--note{background:var(--bg-surface-soft)}
.maint-panel--note h2{color:var(--accent-primary)}
.maint-action{border-color:var(--border-subtle);background:var(--bg-surface-soft);color:var(--accent-primary);transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.maint-action:hover{border-color:var(--accent-primary);background:var(--accent-primary-soft)}
.maint-kpis span,.maint-kpis small{color:var(--text-muted)}
.maint-kpis strong{color:var(--text-strong);font-family:var(--font-display)}
.maint-toolbar{border-color:var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-soft)}
.maint-toolbar label{color:var(--text-muted)}
.maint-toolbar input,.maint-toolbar select{border-color:var(--border-subtle);color:var(--text-strong);background:var(--bg-surface-soft)}
.maint-toolbar input:focus,.maint-toolbar select:focus{border-color:var(--accent-primary);box-shadow:var(--focus-ring)}
.maint-toolbar button{border-color:var(--border-subtle);color:var(--accent-primary);background:var(--accent-primary-soft)}
.maint-toolbar button:hover{border-color:var(--accent-primary)}
.maint-toolbar__count{color:var(--text-muted)}
.city-row b{color:var(--text-muted)}
.city-row span{color:var(--text-strong)}
.city-row i{background:var(--bg-sunken)}
.city-row strong{color:var(--text-strong)}
.city-row small{color:var(--text-muted)}
.maint-table th,.maint-table td{border-bottom-color:var(--bg-sunken)}
.maint-table thead th{color:var(--text-muted);background:var(--bg-surface-soft)}
.maint-table tbody tr:hover{background:var(--accent-primary-soft)}
.maint-table .rank,.maint-table th[scope=row]{color:var(--accent-primary)}
.maint-table code{color:var(--text-muted)}
.major-cell{color:var(--text-muted)}
.empty{color:var(--text-muted)}
.maint-callout{border-color:var(--border-subtle);background:var(--bg-surface-soft);color:var(--text-body)}
.maint-callout strong{color:var(--accent-primary)}
.maint-footer{border-top-color:var(--border-subtle);color:var(--text-muted)}
.maint-footer a{color:var(--accent-primary)}
.maint-error{border-color:var(--border-subtle);background:var(--bg-surface)}
.maint-error strong{color:var(--status-danger)}
.maint-error p{color:var(--text-muted)}
.maint-error code{color:var(--accent-primary);background:var(--accent-primary-soft)}
.change-card{border-color:var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-soft)}
.change-card h3{color:var(--text-display)}
.change-card__metric strong{color:var(--accent-primary)}
.change-card__metric span,.change-card__note{color:var(--text-muted)}
.change-card__stats b{color:var(--text-strong)}
.audit-chip{border-color:var(--border-subtle);color:var(--text-muted);background:var(--bg-surface-soft)}
.audit-chip--good{color:var(--status-success);border-color:var(--border-subtle);background:var(--bg-surface-soft)}
.audit-chip--warn{color:var(--status-warning);border-color:var(--border-subtle);background:var(--bg-surface-soft)}
.audit-chain span{border-color:var(--border-subtle);background:var(--bg-surface-soft);color:var(--text-body)}
.audit-chain b{color:var(--accent-primary)}
.maint-inline-notice{border-color:var(--border-subtle);background:var(--bg-surface-soft);color:var(--status-success)}
.maint-row-action,.maint-detail-actions button,.saved-item button,.review-filters button,.maint-pagination button{border-color:var(--border-subtle);color:var(--accent-primary);background:var(--accent-primary-soft);transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.maint-row-action:hover,.maint-detail-actions button:hover,.saved-item button:hover,.review-filters button:hover,.maint-pagination button:hover{border-color:var(--accent-primary)}
.review-filters button.is-active{border-color:var(--accent-primary);background:var(--accent-primary-soft)}
.maint-detail-backdrop{background:rgba(4,10,20,.45)}
.maint-detail-drawer{background:var(--bg-surface);box-shadow:-18px 0 42px rgba(0,0,0,.4)}
.maint-detail-close{border-color:var(--border-subtle);color:var(--text-muted);background:var(--bg-surface-soft)}
.maint-detail-head h2{color:var(--text-display)}
.maint-detail-head p:not(.maint-eyebrow){color:var(--text-muted)}
.maint-detail-section{border-bottom-color:var(--border-subtle)}
.maint-detail-section h3{color:var(--text-strong)}
.maint-detail-fields dt{color:var(--text-muted)}
.maint-detail-fields dd{color:var(--text-body)}
.maint-detail-status,.maint-detail-actions,.maint-detail-footnote{color:var(--text-muted)}
.maint-value-null{color:var(--status-warning);background:transparent;border:1px dashed var(--status-warning)}
.review-item{border-color:var(--border-subtle);background:var(--bg-surface-soft)}
.review-item__meta{color:var(--text-muted)}
.review-item strong{color:var(--text-strong)}
.review-item p{color:var(--text-body)}
.review-item small{color:var(--text-muted)}
.saved-item{border-color:var(--border-subtle);background:var(--bg-surface-soft)}
.saved-item strong{color:var(--text-strong)}
.saved-item small{color:var(--text-muted)}
.maint-pagination__label{color:var(--text-muted)}
.guide-step>span{color:var(--accent-primary);background:var(--accent-primary-soft)}
.guide-step p,.guide-note p,.changelog-list p{color:var(--text-muted)}
.guide-step a{color:var(--accent-primary)}
.guide-note code{color:var(--accent-primary);background:var(--accent-primary-soft)}
.changelog-list strong{color:var(--text-strong)}
.boundary-list article{border-color:var(--border-subtle);background:var(--bg-surface-soft)}
.boundary-list article span{color:var(--accent-primary)}
.boundary-list article strong{color:var(--text-strong)}
.boundary-list article small{color:var(--text-muted)}
.maint-source-details{border-top-color:var(--border-subtle)}
.maint-source-details summary{color:var(--text-muted)}
.maint-source-details summary::before{border-color:var(--border-subtle);color:var(--accent-primary)}
.maint-active-filters{border-top-color:var(--border-subtle);color:var(--text-muted)}
.maint-active-filters button{border-color:var(--border-subtle);color:var(--accent-primary);background:var(--accent-primary-soft)}
.maint-major-tools>span{color:var(--text-muted)}
.maint-major-tools button{border-color:var(--border-subtle);color:var(--text-body);background:var(--bg-surface-soft)}
.maint-major-tools button:hover{border-color:var(--accent-primary);color:var(--accent-primary);background:var(--accent-primary-soft)}
.maint-major-tools small{color:var(--text-muted)}
.maint-map-toolbar{border-bottom-color:var(--border-subtle);background:var(--bg-surface)}
.maint-map-metric-toggle{border-color:var(--border-subtle);background:var(--bg-surface-soft)}
.maint-map-metric-toggle button{color:var(--text-muted)}
.maint-map-metric-toggle button:hover{color:var(--accent-primary);background:var(--accent-primary-soft)}
.maint-map-metric-toggle button.is-active{color:#fff;background:var(--accent-primary)}
.maint-map-canvas{background:var(--bg-surface-soft)}
.maint-map-region{stroke:var(--bg-canvas)}
.maint-map-region:hover,.maint-map-region:focus-visible{stroke:var(--accent-primary)}
.maint-map-region.is-selected{stroke:var(--accent-primary)}
.maint-map-label text:first-child{fill:var(--text-strong);stroke:var(--bg-canvas)}
.maint-map-label__value{fill:var(--text-muted);stroke:var(--bg-canvas)}
.maint-map-label:hover text:first-child,.maint-map-label:focus-visible text:first-child,.maint-map-label.is-selected text:first-child{fill:var(--accent-primary)}
.maint-map-legend{border-color:var(--border-subtle);color:var(--text-muted);background:var(--glass-bg)}
.maint-map-legend i{background:linear-gradient(90deg,var(--viz-1),color-mix(in srgb,var(--viz-1) 55%,var(--viz-2)))}
.maint-map-source{color:var(--text-muted)}
.maint-map-source code{color:var(--text-body)}
.maint-map-inspector{border-left-color:var(--border-subtle);background:var(--bg-surface-soft)}
.maint-map-inspector__city{color:var(--text-display)}
.maint-map-inspector__number{border-bottom-color:var(--border-subtle)}
.maint-map-inspector__number strong{background:var(--grad-display);-webkit-background-clip:text;background-clip:text;color:transparent}
.maint-map-inspector__number span{color:var(--text-muted)}
.maint-map-facts dt{color:var(--text-muted)}
.maint-map-facts dd{color:var(--text-strong)}
.maint-map-facts div:last-child dd{color:var(--text-body)}
.maint-map-note{color:var(--text-muted)}
.maint-primary-action{border-color:var(--border-subtle);color:var(--accent-primary);background:var(--accent-primary-soft)}
.maint-primary-action:hover{border-color:var(--accent-primary)}
.maint-map-city-chip{border-color:var(--border-subtle);color:var(--text-body);background:var(--bg-surface);transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.maint-map-city-chip:hover{border-color:var(--accent-primary);background:var(--accent-primary-soft);transform:translateY(-1px)}
.maint-map-city-chip.is-selected{border-color:var(--accent-primary);background:var(--accent-primary-soft)}
.maint-map-city-chip span{color:var(--text-strong)}
.maint-map-city-chip strong{color:var(--accent-primary)}
.maint-map-city-chip small{color:var(--text-muted)}
.maint-map-city-chip--direct{border-style:dashed;background:var(--bg-surface-soft)}
.maint-map-city-chip--direct strong{color:var(--warn)}

/* 深色主题显式微调:仅处理变量换值无法表达的差异(阴影、辉光、饱和度)。 */
[data-theme="dark"] .maintain-header{box-shadow:0 1px 0 var(--glass-border),0 8px 24px rgba(0,0,0,.35)}
[data-theme="dark"] .maint-panel,[data-theme="dark"] .maint-kpis article,[data-theme="dark"] .maint-toolbar,[data-theme="dark"] .change-card,[data-theme="dark"] .maint-hero__stamp{box-shadow:0 8px 22px rgba(0,0,0,.28)}
[data-theme="dark"] .maint-hero__stamp strong,[data-theme="dark"] .maint-map-inspector__number strong{text-shadow:0 0 22px rgba(91,155,255,.35)}
[data-theme="dark"] .maint-map-region{filter:saturate(1.05)}
[data-theme="dark"] .maint-detail-backdrop{background:rgba(2,6,12,.62)}

/* v15.0 M1:总览 bento 网格、渐变大数字、环比徽标、考试构成条、城市趋势 sparkline。 */
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:14px;margin:18px 0}
.bento__cell{display:flex;min-width:0;flex-direction:column;gap:7px;padding:20px;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-surface);box-shadow:var(--shadow-soft)}
.bento__label{color:var(--text-muted);font-size:11px}
.bento__metric{color:var(--text-display);font:800 36px/1.05 var(--font-display);letter-spacing:-.02em;background:var(--grad-display);-webkit-background-clip:text;background-clip:text;color:transparent}
.bento__cell small{color:var(--text-muted);font-size:10px;line-height:1.5}
.bento__cell--metric{grid-column:span 3}
.bento__cell--mix{grid-column:span 4}
.bento__cell--note{grid-column:span 2}
.bento__cell--note strong{color:var(--status-success);font-size:15px;line-height:1.35}
.bento__cell--note a{margin-top:auto;color:var(--accent-primary);font-size:11px;font-weight:700;text-decoration:none}
.delta-chip{align-self:flex-start;padding:3px 8px;border-radius:var(--radius-pill);background:var(--accent-primary-soft);color:var(--accent-primary);font:700 10px var(--mono)}
.delta-chip small{color:var(--text-muted);font-size:9px}
.mixbar{position:relative;height:12px;border-radius:var(--radius-pill);background:var(--bg-sunken);overflow:hidden}
.mixbar__seg{position:absolute;top:0;height:100%}
.mixbar__legends{display:flex;flex-wrap:wrap;gap:4px 10px}
.mixbar__legend{display:inline-flex;align-items:center;gap:5px;color:var(--text-muted);font-size:10px}
.mixbar__legend i{display:inline-block;width:8px;height:8px;border-radius:2px}
.city-row{grid-template-columns:28px 84px minmax(80px,1fr) auto 72px 80px}
.city-row .sparkline{align-self:center;color:var(--accent-primary);opacity:.8}
@media(max-width:980px){.bento__cell--metric{grid-column:span 6}.bento__cell--mix{grid-column:span 6}.bento__cell--note{grid-column:span 12}}
@media(max-width:600px){.bento__cell--metric,.bento__cell--mix{grid-column:span 12}.city-row{grid-template-columns:24px 76px minmax(60px,1fr) 64px 56px}.city-row .sparkline{display:none}}

/* v15.0 M2:榜单徽标与内联占比条、竞争观测覆盖率、地图城市卡均值分层。 */
.rank-med{display:inline-grid;place-items:center;min-width:32px;height:22px;padding:0 7px;border-radius:8px;background:var(--bg-sunken);color:var(--text-muted);font:700 11px var(--mono)}
.rank-med--1{background:#f7c948;color:#3a2c05;box-shadow:0 3px 8px rgba(199,143,10,.3)}
.rank-med--2{background:#d9dfe8;color:#2c3440}
.rank-med--3{background:#e2a679;color:#3a230d}
.num-bar{min-width:120px}
.num-bar i{display:inline-block;height:8px;border-radius:var(--radius-pill);background:var(--accent-primary-soft)}
.num-bar b{margin-left:8px;color:var(--text-strong);font:700 12px var(--mono)}
.ratio-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:var(--radius-pill);background:var(--accent-primary-soft);color:var(--accent-primary);font:700 10px var(--mono);white-space:nowrap}
.ratio-chip small{color:var(--text-muted);font-size:9px}
.ratio-chip--none{background:var(--bg-sunken);color:var(--status-unknown)}
.maint-map-city-chip strong{color:var(--text-muted)}
.maint-map-city-chip.is-above-mean strong{color:var(--accent-primary)}
.maint-map-city-chip.is-selected strong{color:var(--accent-primary)}

/* v15.0 M3:对比差异高亮、检索行密度、分享链接抽屉。 */
.maint-table--compare-diff th[scope=row]{color:var(--text-muted);font-weight:600;white-space:nowrap}
.maint-table--compare-diff td.is-diff{box-shadow:inset 3px 0 0 var(--warn);background:color-mix(in srgb, var(--warn) 8%, transparent)}
.diff-mark{color:var(--warn);font-weight:800}
.maint-table--compact th,.maint-table--compact td{padding:6px 9px;font-size:11px}
.row-actions{display:inline-flex;gap:5px;flex-wrap:wrap}
.maint-panel--compare .maint-detail-actions{padding-top:12px}
.maint-panel--compare .maint-detail-actions small{color:var(--text-muted)}

/* v15.0 M4:命令面板(Ctrl+K / /)玻璃覆盖层与结果列表。 */
.maint-palette{position:fixed;inset:0;z-index:50;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 0;background:rgba(4,10,20,.42);backdrop-filter:blur(3px)}
.maint-palette__panel{width:min(560px,100%);border:1px solid var(--glass-border);border-radius:var(--radius-lg);background:var(--glass-bg);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:var(--shadow-lift);overflow:hidden}
.maint-palette__panel input{width:100%;height:52px;padding:0 18px;border:0;border-bottom:1px solid var(--border-subtle);outline:0;color:var(--text-strong);background:transparent;font-size:15px}
.maint-palette__list{max-height:46vh;overflow:auto;padding:8px}
.maint-palette__item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;border:0;border-radius:10px;background:transparent;color:var(--text-body);cursor:pointer;text-align:left}
.maint-palette__item span{overflow:hidden;font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}
.maint-palette__item small{color:var(--text-muted);font:10px var(--mono);white-space:nowrap}
.maint-palette__item:hover,.maint-palette__item.is-active{background:var(--accent-primary-soft);color:var(--accent-primary)}
.maint-palette__empty{padding:18px;color:var(--text-muted);font-size:12px;text-align:center}
.maint-palette__hint{margin:0;padding:9px 14px;border-top:1px solid var(--border-subtle);color:var(--text-muted);font:10px var(--mono)}

/* v15.0 M5:三年坡度图与打印样式。 */
.maint-slope-wrap{display:grid;gap:14px}
.maint-slope{display:block;width:100%;height:auto}
.maint-slope__line{fill:none;stroke:var(--viz-1);stroke-opacity:.5;stroke-width:1.6;transition:stroke-opacity var(--dur-fast) var(--ease),stroke-width var(--dur-fast) var(--ease)}
.maint-slope__line:hover{stroke-opacity:1;stroke-width:2.8}
.maint-slope__year{fill:var(--text-muted);font:700 12px var(--mono)}
.maint-slope__legend{display:flex;flex-wrap:wrap;gap:5px 12px}
.maint-slope__legend-item{display:inline-flex;align-items:center;gap:5px;color:var(--text-muted);font-size:11px}
.maint-slope__legend-item i{width:8px;height:2px;background:var(--viz-1);border-radius:2px}
.maint-slope__legend-item b{color:var(--text-body);font:600 10px var(--mono)}
@media print{
  html,body{background:#fff!important;color:#111!important}
  body{background:none!important}
  .maintain-header,.maintain-footer,.maint-palette,.maint-detail-backdrop,.maint-toolbar,.maint-row-action,.maint-map-metric-toggle,.maint-theme-toggle{display:none!important}
  .maintain-main{width:100%!important;max-width:none!important;padding:0!important}
  .maint-panel,.bento__cell,.change-card,.saved-item,.review-item,.maint-hero__stamp{box-shadow:none!important;border-color:#ddd!important;background:#fff!important}
  .maint-hero__stamp strong,.bento__metric,.maint-map-inspector__number strong{background:none!important;-webkit-text-fill-color:currentColor!important;color:#111!important}
  .maint-panel,.bento__cell,section{break-inside:avoid}
  .maint-table thead th{background:#f2f2f2!important}
}


/* v15.1 M-A: skeleton loading state (token-driven; adapts to both themes) */
.maint-skeleton{display:grid;gap:14px;padding:22px}
.maint-skeleton i{display:block;height:18px;border-radius:var(--radius-pill,999px);background:linear-gradient(90deg,var(--grid-line) 25%,var(--accent-primary-soft) 50%,var(--grid-line) 75%);background-size:200% 100%;animation:maint-skeleton 1.2s var(--ease,cubic-bezier(.22,.61,.36,1)) infinite}
.maint-skeleton i:last-child{width:55%}
@keyframes maint-skeleton{0%{background-position:200% 0}100%{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.maint-skeleton i{animation:none;background:var(--grid-line)}}
@media print{.maint-skeleton{display:none}}

/* v15.1 M-C/M-E: skip link + nav wrap on narrow screens (no horizontal scrolling to reach views) */
.maintain-skip-link{position:fixed;top:-48px;left:12px;z-index:40;padding:9px 14px;border-radius:10px;background:var(--accent-primary);color:#fff;font-weight:700;text-decoration:none;transition:top var(--dur-fast) var(--ease)}
.maintain-skip-link:focus{top:12px}
@media(max-width:820px){.maintain-nav{flex-wrap:wrap;overflow:visible}}

/* v16-M1: PWA offline badge (amber pill; honest state, never implies fresh data) */
.maintain-offline-badge{padding:5px 10px;border-radius:var(--radius-pill,999px);background:var(--warn,#d59a42);color:#3d2c05;font:700 10px var(--mono,var(--sans));letter-spacing:.06em}
.maintain-status[data-tone=offline]{color:var(--warn,#d59a42)}

/* v16-M2: workspace actions + update checklist */
.maint-workspace-actions{display:flex;align-items:center;gap:8px}
.maint-update-checklist{display:grid;gap:9px;margin:12px 0}
.maint-check-item{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border:1px solid var(--line,#dfe7f1);border-radius:10px;background:var(--bg-surface,#fff);cursor:pointer;font-size:13px;line-height:1.65}
.maint-check-item input{margin-top:4px;accent-color:var(--accent-primary,#3a83f7)}
.maint-check-item code{font:12px var(--mono,var(--mono));color:var(--text-muted,#668296);word-break:break-all}
.maint-check-item .maint-row-action{flex:0 0 auto;align-self:center}
