/* BPM school styles — extracted from school template */
:root{
  --red:#8E1B1F;--red-hover:#761519;--red-tint:#F4E2E3;--red-press:#5E1115;
  --ink:#0B0B0C;--ink-2:#2A2A2D;--ink-3:#5C5C61;--ink-4:#8A8A8F;
  --paper:#F5F1EA;--paper-2:#ECE7DD;--paper-3:#E2DCCE;--bone:#FBF8F2;
  --rule:#D8D5CE;--rule-2:#B7B2A6;--pos:#1F5C4A;--neg:#8E1B1F;
  --c-sub:#8E1B1F;--c-1:#3D3A36;--c-2:#8A7C68;--c-3:#BEB7A9;--c-mute:#CFC9BE;
  --serif:"Source Serif 4",Georgia,serif;--sans:"Inter","Noto Sans TC",system-ui,sans-serif;
  --cjk:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;--mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --topbar-h:64px;--sidebar-w:240px;--footer-h:48px;--ink-03:rgba(11,11,12,.03);--ink-05:rgba(11,11,12,.05);--tr-caps:.14em;
}
*{box-sizing:border-box}
html{font-size:16px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.55}
.num{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1,"lnum" 1}
.serif{font-family:var(--serif)}.cjk{font-family:var(--cjk)}.mono{font-family:var(--mono)}
a{color:inherit;text-decoration:none}
.eyebrow{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:var(--tr-caps);text-transform:uppercase;color:var(--ink-3)}
.eyebrow .zh{text-transform:none;letter-spacing:.04em}.eyebrow-red{color:var(--red)}
hr.rule{height:1px;background:var(--rule);border:0;margin:0}
.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--topbar-h) 1fr auto;grid-template-areas:"topbar topbar" "sidebar main" "footer footer";min-height:100vh}
.topbar{grid-area:topbar;position:sticky;top:0;z-index:30;height:var(--topbar-h);display:flex;align-items:center;gap:0;padding:0 32px;background:rgba(245,241,234,.85);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--rule)}
.sidebar{grid-area:sidebar;position:sticky;top:var(--topbar-h);align-self:start;height:calc(100vh - var(--topbar-h));overflow:auto;background:var(--bone);border-right:1px solid var(--rule);padding:20px 0 0;display:flex;flex-direction:column}
.app-main{grid-area:main;min-width:0;overflow:visible;padding:28px 32px 40px}
.app-foot{grid-area:footer;min-height:var(--footer-h);display:flex;align-items:center;gap:16px;padding:12px 32px;border-top:1px solid var(--rule);font-size:12px;color:var(--ink-3);background:var(--bone)}
.brand{display:inline-flex;align-items:center;gap:10px}.brand .wm{font-family:var(--sans);font-weight:800;font-size:24px;letter-spacing:-.04em;line-height:1;color:var(--ink)}
.brand .tri{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:6px solid var(--red);display:inline-block;margin-left:-4px;transform:translateY(-6px)}
.brand .sub{font-size:10px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin-left:2px}
.topnav{margin-left:48px;display:flex;gap:0;height:100%}.topnav a{font-size:13px;font-weight:500;color:var(--ink-3);padding:0 14px;height:100%;display:inline-flex;align-items:center;border-bottom:2px solid transparent}.topnav a:hover{color:var(--ink-2)}.topnav a.active{color:var(--ink);border-bottom-color:var(--ink)}
.top-right{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:13px;color:var(--ink-3)}
.live-tick{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.live-dot{width:6px;height:6px;border-radius:999px;background:var(--red);display:inline-block}
.top-divider{width:1px;height:18px;background:var(--rule)}
.locale{display:inline-flex;align-items:center;gap:4px;font-size:13px}.locale .sep{color:var(--ink-4)}.locale .off{color:var(--ink-3)}.locale b{font-weight:600;color:var(--ink)}
.nav-toggle{display:none;background:none;border:0;color:var(--ink);cursor:pointer}
.side-section{padding:0 16px 18px}.side-section.bottom{margin-top:auto;padding-bottom:16px}
.side-head{display:flex;align-items:center;justify-content:space-between;padding:0 4px 8px}
.side-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}
.side-row{display:flex;align-items:center;justify-content:space-between;gap:8px;border-left:2px solid transparent;padding:8px 4px 8px 8px;font-size:13px;color:var(--ink)}
.side-row:hover{background:var(--ink-03)}.side-row.active{background:var(--paper);border-left-color:var(--red);font-weight:500}
.side-row .l{display:inline-flex;align-items:center;gap:8px;min-width:0}.side-mark{width:6px;height:6px;border-radius:999px;background:transparent;flex:none}.side-row.active .side-mark{background:var(--red)}
.side-row .en{color:var(--ink-4);font-size:11px}.side-meta{color:var(--ink-3);font-family:var(--mono);font-size:11px}
.toc a{padding:6px 8px;font-size:12.5px;color:var(--ink-3);border-left:1px solid var(--rule);margin-left:4px;display:block}.toc a:hover{color:var(--ink);border-left-color:var(--red)}
.contact-card{border:1px solid var(--rule);background:var(--paper);padding:12px 14px;margin-top:6px}.contact-card .nm{font-family:var(--serif);font-size:18px;letter-spacing:-.01em;margin-top:4px}.contact-card .m{font-size:12px;color:var(--ink-3);margin-top:3px}
.contact-card .cta{display:inline-block;margin-top:10px;background:var(--red);color:var(--paper);font-size:12px;font-weight:500;padding:7px 12px;border-radius:2px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}
.crumb{font-size:12px;color:var(--ink-3);display:flex;gap:7px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.crumb .sep{color:var(--ink-4)}
.page-title{font-family:var(--cjk);font-weight:600;font-size:34px;letter-spacing:.005em;line-height:1.18;margin:6px 0 4px}
.page-sub{font-family:var(--serif);font-style:italic;font-size:16px;color:var(--ink-3);margin-top:4px}
.tags{display:flex;gap:7px;margin-top:13px;flex-wrap:wrap}.tag{font-size:11px;font-weight:500;border:1px solid var(--rule);background:var(--bone);color:var(--ink-2);border-radius:999px;padding:4px 11px}.tag.red{color:var(--red);border-color:var(--red-tint);background:var(--red-tint)}
.tag.lvltab{cursor:pointer;user-select:none}.tag.lvltab:hover{border-color:var(--rule-2)}.tag.lvltab.on{color:var(--red);border-color:var(--red);background:var(--red-tint);font-weight:600}
.ex-switch{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-4);margin-right:6px}.ex-switch a{cursor:pointer;padding:4px 9px;border:1px solid var(--rule);border-radius:999px;color:var(--ink-3)}.ex-switch a.on{color:var(--red);border-color:var(--red);background:var(--red-tint);font-weight:600}
.page-actions{display:flex;gap:8px;flex-shrink:0}
.btn{font-size:13px;font-weight:500;padding:8px 14px;border-radius:2px;border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;line-height:1}
.btn-primary{background:var(--red);color:var(--paper)}.btn-primary:hover{background:var(--red-hover)}
.btn-secondary{background:transparent;color:var(--ink);border-color:var(--ink)}.btn-secondary:hover{background:rgba(11,11,12,.05)}
.kpi-strip{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--rule);background:var(--bone);margin-top:22px}
.kpi{padding:18px 22px;border-right:1px solid var(--rule)}.kpi:last-child{border-right:0}
.kpi .lab{font-size:11px;font-weight:600;letter-spacing:.05em;color:var(--ink-3)}.kpi .lab .en{color:var(--ink-4);text-transform:uppercase;letter-spacing:.1em;font-size:10px}
.kpi .val{font-family:var(--serif);font-weight:500;font-size:38px;line-height:1;letter-spacing:-.022em;margin-top:10px}.kpi .val small{font-size:16px;color:var(--ink-3);margin-left:3px}
.kpi .delta{margin-top:8px;font-size:12px;color:var(--ink-3)}.up{color:var(--pos)}.down{color:var(--neg)}
.rankchip{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-family:var(--mono);color:var(--ink-3);background:var(--paper-2);border:1px solid var(--rule);border-radius:999px;padding:2px 8px;margin-top:9px}.rankchip b{color:var(--red)}
.grid-band{display:grid;grid-template-columns:1fr 1.25fr;gap:16px;margin-top:16px}
.card{border:1px solid var(--rule);background:var(--bone)}.card.alt{background:var(--paper-2)}.card.pad{padding:18px 20px}
.card-title{font-size:11px;font-weight:600;letter-spacing:var(--tr-caps);text-transform:uppercase;color:var(--ink-3);padding:16px 20px 0}.card-title .n{font-family:var(--mono);text-transform:none;letter-spacing:0;color:var(--ink-4);font-weight:400;margin-left:6px}
.summary-narrative{font-family:var(--cjk);font-size:14px;line-height:1.85;color:var(--ink-2);margin:10px 0 0}
.cols-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.mini-h{font-family:var(--cjk);font-size:15px;font-weight:600;margin-top:5px}.mini-m{font-size:12px;color:var(--ink-3);margin-top:3px}
section.block{margin-top:34px;padding-top:26px;border-top:2px solid var(--ink);scroll-margin-top:80px}
.section-header{display:flex;align-items:baseline;justify-content:space-between;gap:18px}
.sec-title{font-family:var(--cjk);font-weight:600;font-size:23px;margin:6px 0 0;letter-spacing:.01em}.sec-title .en{font-family:var(--serif);font-style:italic;font-weight:400;font-size:15px;color:var(--ink-3);margin-left:8px}
.section-note{font-size:12px;color:var(--ink-4);font-family:var(--mono)}
.narrative{font-family:var(--cjk);font-size:15px;line-height:1.85;color:var(--ink-2);max-width:74ch;margin:14px 0 22px;padding-left:16px;border-left:2px solid var(--red)}.narrative b{font-weight:600;color:var(--ink)}
.grid-2-3{display:grid;grid-template-columns:1.05fr 1.95fr;gap:16px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.mt16{margin-top:16px}
.map-info-grid{display:grid;grid-template-columns:1.8fr 1fr;gap:16px;align-items:stretch}.map-info-grid .card{margin:0}
.chart{height:300px;margin:8px 10px}.chart.tall{height:360px}
.src{font-size:11px;color:var(--ink-4);padding:0 20px 14px}.src .v{color:var(--ink-3)}
.kfcard{display:flex;flex-direction:column}
.kf{flex:1;display:flex;flex-direction:column;justify-content:space-between;padding:4px 20px 12px}
.kf-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--rule)}.kf-row:last-child{border-bottom:0}
.kf-row .l{font-size:12.5px;color:var(--ink-3)}.kf-row .v{font-family:var(--serif);font-size:27px;font-weight:500;letter-spacing:-.01em}.kf-row .v small{font-size:13px;color:var(--ink-3);margin-left:1px}
.kf-foot{padding:11px 20px;border-top:1px solid var(--rule);font-size:11px;color:var(--ink-4)}.kf-foot b{color:var(--red)}
.lvl{width:100%;border-collapse:collapse;font-size:13px}.lvl th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:600;padding:10px 14px;border-bottom:1px solid var(--ink);text-align:right}.lvl th:first-child{text-align:left}
.lvl td{padding:11px 14px;border-bottom:1px solid var(--rule);text-align:right;font-variant-numeric:tabular-nums}.lvl td:first-child{text-align:left;font-family:var(--cjk)}.lvl .subj{background:var(--red-tint);color:var(--red-press);font-weight:600}.lvl thead .subj{color:var(--red)}
.sm-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--rule);border-left:1px solid var(--rule);margin-top:14px}
.sm{border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:12px}.sm .t{font-size:12px;font-weight:600;color:var(--ink-2)}.sm .rk{font-size:10px;color:var(--ink-4);font-family:var(--mono);margin-top:2px}.sm .rk b{color:var(--red)}.sm .strip{height:88px;margin-top:4px}
table.dt{width:100%;border-collapse:collapse;font-size:13px}table.dt th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.05em;color:var(--ink-3);text-transform:uppercase;border-bottom:1px solid var(--ink);padding:10px 12px}
table.dt td{border-bottom:1px solid var(--rule);padding:10px 12px}table.dt td.r,table.dt th.r{text-align:right;font-variant-numeric:tabular-nums}table.dt tr:hover td{background:rgba(11,11,12,.03)}table.dt tr.me td{background:var(--red-tint)}table.dt .nm{font-family:var(--cjk);font-weight:500}table.dt tr.hide{display:none}
.go{font-size:12px;color:var(--red)}
.note-card{border:1px solid var(--rule);border-left:2px solid var(--c-2);background:var(--paper-2);padding:16px 20px;margin-top:16px;font-size:13px;color:var(--ink-3)}.note-card b{color:var(--ink-2)}
.expandbtn{margin:12px 0 2px;font-size:12px;color:var(--ink-2);background:var(--bone);border:1px solid var(--rule);border-radius:2px;padding:9px 16px;cursor:pointer;width:100%}.expandbtn:hover{background:var(--paper-2)}
.cta{margin-top:34px;border:1px solid var(--rule);border-left:2px solid var(--red);background:var(--paper-2);padding:24px 26px;display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}.cta .h{font-family:var(--cjk);font-size:21px;font-weight:600;margin-top:8px}.cta .p{font-size:14px;color:var(--ink-2);margin-top:6px;max-width:52ch}
@media(max-width:1080px){.app-shell{grid-template-columns:1fr;grid-template-rows:var(--topbar-h) 1fr auto;grid-template-areas:"topbar" "main" "footer";min-height:100vh}.app-main{overflow:visible}.sidebar{display:none}.nav-toggle{display:inline-flex}.grid-band,.grid-2-3,.grid-2,.map-info-grid{grid-template-columns:1fr}.kpi-strip{grid-template-columns:repeat(2,1fr)}.kpi:nth-child(2){border-right:0}.sm-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.app-main{padding:20px}.topnav{display:none}.page-title{font-size:30px}.kpi-strip{grid-template-columns:1fr 1fr}.sm-grid{grid-template-columns:1fr 1fr}}

.inforow{display:flex;gap:14px;padding:7px 0;border-bottom:1px solid var(--rule)}
.inforow:last-child{border-bottom:0}
.inforow .k{font-weight:600;color:var(--ink);min-width:48px;flex:none}
.inforow .v{color:var(--ink-2);font-size:14px}
.inforow .v a{color:inherit;border-bottom:1px solid var(--rule)}
