/* Pinterest 参考：浅暖灰底、白色大圆角卡片、珊瑚橙与炭黑，业务色由服务端注入。 */
:root{
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--ink);background:var(--canvas);font-size:14px;line-height:1.65;
  --canvas:#efefed;--accent:#f46b45;--accent-soft:#fff0e9;--ink:#252620;
  --blue:var(--business-0);--link-blue:#ae3e22;--muted:#65685f;--line:#e5e6e1;
  --surface:#fff;--soft:#f6f6f4;--radius:20px;--shadow:0 4px 24px #25262004;
  --metric-card-height:220px;--metric-heading-height:48px;--metric-value-height:56px;
  --chart-height:280px;--panel-height:480px;
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;
}
*{box-sizing:border-box}body{margin:0}main{max-width:1600px;margin:0 auto;padding:32px 32px 48px}
h1{font-size:24px;line-height:1.35;letter-spacing:-.5px;margin:0 0 24px;font-weight:650}
h2{font-size:18px;line-height:1.5;margin:0 0 16px;font-weight:600}
h3{font-size:14px;line-height:1.5;margin:0;font-weight:600}h4{font-size:14px;margin:16px 0 8px}
p{color:var(--muted);margin:8px 0 16px;overflow-wrap:anywhere}small{font-size:12px;font-weight:400;color:var(--muted);margin-left:8px}
a{color:var(--link-blue);text-decoration:none}a:hover{text-decoration:underline}
button,input,select{font:inherit;min-height:40px;border:1px solid #e5e6e1;background:var(--surface);color:#252620;border-radius:12px;padding:8px 12px;max-width:100%}
button{cursor:pointer;font-weight:500;transition:background .15s,border-color .15s,color .15s}
button:hover{background:#f3f3f0;border-color:#cdd0c7}button:disabled{opacity:.45;cursor:not-allowed}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #f46b4580;outline-offset:3px}
input,select{min-width:0}button,input,select,.formatted-number,.last-sync-time{font-variant-numeric:tabular-nums}
.primary{display:inline-flex;align-items:center;justify-content:center;background:var(--ink);border:1px solid var(--ink);color:#fff;border-radius:999px;padding:10px 16px}
a.primary:hover{color:#fff;background:#3c3d35;border-color:#3c3d35;text-decoration:none}
.toolbar,form,.pager{display:flex;align-items:center;gap:12px;flex-wrap:wrap}label{color:#5f625a}
.toolbar{justify-content:space-between;margin:20px 0 12px}.toolbar>span,.scope{font-size:12px;color:var(--muted)}
summary{cursor:pointer;min-height:40px;padding:8px 0;color:#5f625a;font-size:13px}
details>summary:hover{color:#252620}details[open]>summary{margin-bottom:8px}details p{font-size:13px}
.state-panel{padding:10px 14px;border:1px solid var(--line);border-left:3px solid #8a94a6;border-radius:12px;background:#f6f6f4;margin:12px 0 24px;font-size:13px;overflow-wrap:anywhere}
.badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:6px;background:#f1f2ed;color:#5f625a;font-size:12px;white-space:nowrap}
.badge[data-status=partial],.badge[data-status=stale],.badge[data-status=idle]{background:#fff4df;color:#855b0c}
.state-panel[data-status=partial],.state-panel[data-status=stale]{background:#fffbf3;border-left-color:#b47b13}
.badge[data-status=empty],.badge[data-status=succeeded],.badge[data-status=observed]{background:#eaf6ef;color:#21683f}
.state-panel[data-status=empty]{background:#f2faf5;border-left-color:#369766}
.badge[data-status=loading],.badge[data-status=running]{background:#eef4ff;color:var(--link-blue)}
.state-panel[data-status=loading]{border-left-color:var(--blue)}
.badge[data-status=missing]{background:#f1edf8;color:#70528e}.state-panel[data-status=missing]{border-left-color:#9474b4}
.badge[data-status=failed]{background:#fcebec;color:#a52d3a}.state-panel[data-status=failed]{background:#fff5f6;border-left-color:#b33f4a}
.badge[data-status=forbidden]{background:#e7eaf0;color:#33435f}.state-panel[data-status=forbidden]{border-left-color:#33435f}
.card-grid{display:grid;gap:16px;margin-bottom:24px}.primary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.funds,.derived{grid-template-columns:repeat(3,minmax(0,1fr))}.scale,.refund-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.metric-card{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}
.card-heading{display:flex;justify-content:space-between;align-items:center;gap:8px}.card-heading :is(h2,h3){min-width:0;overflow-wrap:anywhere;color:#6e7169;font-size:13px;font-weight:500}
.info{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;min-height:44px;padding:0;border:0;background:transparent;color:#7c7f77;font-size:13px;border-radius:0}
.metric-value{display:block;border:0;background:transparent;color:#252620;font-size:32px;line-height:1.3;letter-spacing:-.8px;font-weight:600;padding:14px 0 4px;max-width:100%;overflow-wrap:anywhere;text-align:left}
.metric-value:hover{color:var(--link-blue);background:transparent}.number-unit{font-size:13px;font-weight:400;margin-left:4px;color:var(--muted);letter-spacing:0}
.metric-caption{min-width:0;overflow-wrap:anywhere;display:block;font-size:12px;font-weight:400;line-height:1.65;color:var(--muted);margin:4px 0 0;font-variant-numeric:tabular-nums}
.metric-card p{font-size:12px;margin:8px 0 0}.secondary{background:var(--soft);box-shadow:none}.secondary .metric-value{font-size:28px}
.panel,.observation-panel{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);overflow-wrap:anywhere}
.panel{margin-bottom:24px}.panel h2{font-size:16px}.composition-category{margin-top:16px}.composition-category>h3{margin-bottom:16px}.composition-category .card-grid{margin-bottom:0}
.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.chart{width:100%;min-width:0;min-height:0;height:var(--chart-height);flex:none}.chart+p{font-size:12px;margin-bottom:0}
.observation-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:20px 0}
.observation-chart-card{min-width:0}.observation-chart-card h2{font-size:17px}.observation-chart-meta,.observation-gap{color:var(--muted);font-size:13px}
.observation-chart-card details{font-size:12px}
@media(max-width:800px){.observation-chart-grid{grid-template-columns:minmax(0,1fr)}}
.sku-missing{color:var(--muted);font-size:13px}
.table-scroll{max-width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;margin:16px 0;text-align:left;font-size:13px;white-space:nowrap;font-variant-numeric:tabular-nums}
th{background:var(--soft);color:#6e7169;font-weight:500}th,td{padding:12px 14px;border-bottom:1px solid var(--line)}th .info{margin-left:4px}
tbody tr:hover{background:#f6f6f4}td button{padding:2px 0;background:transparent;border:0;color:var(--link-blue);font-size:inherit}
.department td:first-child{padding-left:32px}.department td{color:var(--muted)}
dl{display:grid;grid-template-columns:160px minmax(0,1fr);font-size:13px;margin:12px 0}dt,dd{margin:0;padding:10px 12px;border-bottom:1px solid var(--line)}
dt{color:var(--muted);background:var(--soft)}dd{white-space:pre-wrap;overflow-wrap:anywhere}
.audit summary{color:var(--muted)}.audit>p,.audit>ul{font-size:13px}.audit article{padding:16px;border:1px solid var(--line);border-radius:12px;margin:12px 0}
.audit a{display:inline-block;margin:6px 12px 6px 0}.audit details{margin:8px 0}.state-legend{display:flex;gap:8px;flex-wrap:wrap;padding:8px 0;color:var(--muted)}
.missing-data{margin:16px 0;color:var(--muted);font-size:13px}.placeholder{border-style:dashed;background:transparent}.placeholder p{margin-bottom:0}
.tile-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:var(--space-2);align-items:stretch}
.data-tile{min-width:0;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--soft);overflow-wrap:anywhere;font-size:13px}
.data-tile>button{width:100%;text-align:left;padding:4px;background:transparent;border:0;color:var(--link-blue);font-weight:600}
.data-tile p{margin:8px 0}.data-tile small{display:block;margin:8px 0 0}.data-tile summary .formatted-number{display:block;margin-top:8px}.data-tile[open]{max-height:var(--panel-height);overflow:auto}
.organization-charts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.organization-card{min-width:0;border:1px solid var(--line);border-top:3px solid var(--business-color);border-radius:16px;padding:16px;background:var(--soft)}
.organization-card h3{font-size:15px}.organization-card>button{margin-top:12px;font-size:12px}.organization-card p{font-size:12px}.organization-card .state-panel{margin:12px 0 0}
.secondary-metrics{gap:12px}.secondary-metrics .metric-card{padding:16px 12px}.secondary-metrics .metric-value{font-size:22px}.secondary-metrics h3{font-size:12px}
.business-marker{display:inline-block;width:9px;height:9px;flex:none;border-radius:50%;background:var(--business-color);margin-right:8px;vertical-align:middle}
.business-marker{border:1px solid #34455f}
/* 桌面侧栏与移动抽屉。色标只表达业务，选中态由背景和文字共同表达。 */
.app-layout{--sidebar-width:236px;height:100dvh;overflow:hidden}
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);background:#f7f7f5;border-right:1px solid var(--line);padding:20px 12px;color:#252620;overflow-y:auto;z-index:30;transition:width .2s,transform .2s}
.sidebar-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px;margin-bottom:28px;padding:0 4px}
.sidebar nav{display:grid;gap:4px}.sidebar a,.sidebar summary{position:relative;display:flex;align-items:center;gap:12px;min-height:44px;padding:10px 12px;border-radius:12px;color:#6e7169;cursor:pointer;white-space:nowrap;font-size:13px;font-weight:500}
.nav-icon{display:block;width:24px;height:24px;flex:none}.sidebar .nav-icon{width:20px;height:20px;color:#7c7f77}
.sidebar a:hover,.sidebar summary:hover{background:#eeeeea;color:#252620;text-decoration:none}.sidebar a:hover .nav-icon,.sidebar summary:hover .nav-icon{color:#5f625a}
.sidebar a[aria-current=page]{background:var(--ink);color:#fff;font-weight:600;box-shadow:0 4px 12px #25262012}
.sidebar a[aria-current=page] .nav-icon{color:#fff}.sidebar .submenu{display:grid;gap:4px;padding:4px 0 0 12px}
.sidebar .business-marker{position:absolute;left:3px;margin:0;width:4px;height:14px;border-radius:2px}
.business-nav>summary::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);margin-left:auto}
.business-nav[open]>summary::after{transform:rotate(45deg)}
.app-content{height:100dvh;overflow:auto;margin-left:var(--sidebar-width);transition:margin-left .2s;min-width:0}
.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:12px 32px;border-bottom:1px solid var(--line);background:#ffffffed;color:var(--muted);font-size:13px}
.topbar-title{min-width:0;overflow-wrap:anywhere;flex:1}
.topbar-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px}
.topbar-actions a{white-space:nowrap}
#fullscreen-toggle{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-size:13px}
#fullscreen-toggle .nav-icon{width:18px;height:18px}
#fullscreen-toggle[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}
#fullscreen-status{flex-basis:100%;overflow-wrap:anywhere;color:#a32c38}
.topbar a{color:#5f625a}.app-content main{width:100%}.app-layout.sidebar-collapsed{--sidebar-width:76px}.sidebar-collapsed .nav-label{display:none}.sidebar-collapsed .submenu{padding-left:0}.sidebar-collapsed .business-nav>summary::after{display:none}
#drawer-menu{display:none}#sidebar-toggle,#drawer-menu{align-items:center;justify-content:center;min-width:36px;min-height:36px;padding:6px;border:0;background:transparent;color:#7c7f77}#sidebar-toggle{display:flex}#sidebar-toggle:hover,#drawer-menu:hover{background:#f1f2ed}
.sidebar-backdrop{position:fixed;inset:0;background:#25262066;border:0;border-radius:0;z-index:20}.sidebar-backdrop:hover{background:#25262066;border:0}
.brand{display:flex;align-items:center;gap:8px;min-width:0;color:#252620}.brand-mark{display:block;flex:none;width:28px;height:28px}.brand-frame{fill:#f46b45}.brand-pane{fill:#fff}.brand-accent{fill:#252620}.brand-wordmark{font-size:14px;font-weight:600;line-height:1.5}
/* 筛选、同步与标题：辅助信息按行排列，窄屏自然换行。 */
.overview{display:block;margin-bottom:12px}.overview-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}
.overview h1{font-size:24px;margin:0;min-width:0;overflow-wrap:anywhere}.overview-details{display:flex;align-items:center;gap:16px;margin-top:16px}
.month-form{flex:none;gap:8px;font-size:13px}.month-form label{display:flex;align-items:center;gap:8px}.month-form input,.month-form button{font-size:13px}
.overview-meta{display:flex;align-items:center;flex-wrap:wrap;gap:0 8px;min-width:0;font-size:12px;color:var(--muted)}.overview-meta>span{overflow-wrap:anywhere}.overview-meta>span+span::before{content:"·";margin-right:8px}
.refresh-controls{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px 12px;min-width:0}.refresh-form{justify-content:flex-end;font-size:13px}.refresh-form button{white-space:nowrap}.last-sync-time{font-size:12px;color:var(--muted);overflow-wrap:anywhere}
#sync-message[data-status=failed]{color:#a32c38}#sync-message[data-status=stale]{color:#855b0c}
.source-sync{margin:0 0 16px;font-size:12px}.source-sync ul{list-style:none;padding:0;margin:0}.source-sync li{padding:8px 0;overflow-wrap:anywhere}
.sync-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;padding:16px 24px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--muted);font-size:12px}.sync-strip strong{display:block;margin-top:4px;color:#252620;font-weight:500}
/* 登录与弹窗复用同一中性卡片系统。 */
.login-page{background:radial-gradient(ellipse at 50% 25%,#fff0e9 0%,#efefed 65%)}
.login-layout{display:grid;place-items:center;min-height:100vh;min-height:100svh;padding:32px 20px}
.login-card{width:100%;max-width:420px;padding:40px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 40px #25262009;text-align:center}
.login-card .brand{flex-direction:column;gap:12px;margin-bottom:28px}.login-card .brand-mark{width:48px;height:48px}.login-card .brand-wordmark{font-size:13px;color:var(--muted)}
.login-card h1{font-size:24px;margin:0 0 8px}.login-subtitle{font-size:13px;margin:0 0 28px}.login-button{display:flex;width:100%;min-height:44px;font-size:14px;font-weight:600}.login-notice{margin:20px 0 0;font-size:13px;color:#a32c38}
dialog{border:1px solid var(--line);border-radius:16px;width:min(1200px,94vw);max-height:88vh;padding:24px;color:#252620;box-shadow:0 24px 100px #25262030}
dialog::backdrop{background:#25262066;backdrop-filter:blur(3px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:-24px;background:#fff;z-index:2;padding:12px 0;border-bottom:1px solid var(--line)}.dialog-heading h2{margin:0;min-width:0;overflow-wrap:anywhere}
.dialog-heading>button{flex:none;white-space:nowrap}
#dialog-content{min-width:0;overflow-wrap:anywhere}
#detail-dialog .table-scroll{overflow-x:auto}
#detail-dialog td{max-width:24rem;white-space:normal;overflow-wrap:anywhere}
#detail-dialog :is(dl,dt,dd){min-width:0;overflow-wrap:anywhere}
.breadcrumbs,.drill-nodes{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:16px 0}.pager{justify-content:center;margin-top:24px}#dialog-content>button{margin-right:8px}
#users-list input{max-width:200px;width:100%}#users-list td{vertical-align:middle}#users-list button{margin:4px}.user-protection{display:block;max-width:240px;color:var(--muted);font-size:12px}
/* 所有来源与指标卡共用间距与可展开口径。 */
.observation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr));gap:16px}
.observation-panel :is(th,td){overflow-wrap:anywhere;vertical-align:top}
.observation-panel table{width:100%;table-layout:fixed;white-space:normal}.observation-panel>article{padding:20px 0;border-bottom:1px solid var(--line)}.observation-panel>article:first-of-type{margin-top:12px}.observation-panel>h2{margin-top:24px}
.observation-panel>article>h2{font-size:14px;color:var(--muted)}.metric-figure{font-size:28px;color:#252620;font-weight:600;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.observation-panel a{display:inline-block;margin:6px 12px 6px 0}.contract-card h2{font-size:16px}.contract-card section{padding-top:16px;margin-top:16px;border-top:1px solid var(--line)}
.contract-section{min-width:0;margin-block:24px;overflow-wrap:anywhere}.contract-section h2,.contract-section h3,.contract-section h4{white-space:normal}.contract-section a{display:inline-block;margin:6px;padding:6px;overflow-wrap:anywhere}
.contract-section summary{white-space:normal}.contract-section table{table-layout:fixed;width:100%;white-space:normal}.contract-filters,.contract-navigation{display:flex;flex-wrap:wrap;gap:8px}.contract-navigation{margin:16px 0}.contract-navigation a{border:1px solid var(--line);border-radius:12px;padding:8px 12px;background:#fff;margin:0}
.contract-filters label{display:flex;flex-direction:column;min-width:0;max-width:100%;gap:4px}.contract-filters input,.contract-filters select{min-width:0;max-width:100%;font-size:inherit}.contract-filters{align-items:flex-end}
.contract-dialog{width:min(56rem,calc(100% - 1rem));max-width:calc(100% - 1rem);max-height:90vh;overflow:auto;padding:16px}.contract-dialog .observation-panel{margin-block:16px}
@media(max-width:1399px){.overview-details{align-items:flex-start;flex-direction:column;gap:8px}}
@media(max-width:1199px){.organization-charts{grid-template-columns:1fr}.chart-grid{grid-template-columns:1fr}}
@media(max-width:1100px){
  .teaching-details thead,.student-details thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .teaching-details tbody,.teaching-details tr,.teaching-details td,.student-details tbody,.student-details tr,.student-details td{display:block;width:100%}
  .teaching-details tr,.student-details tr{border:1px solid var(--line);margin-block:16px;border-radius:12px}
  .teaching-details td,.student-details td{white-space:normal;overflow-wrap:anywhere}
  .teaching-details td::before,.student-details td::before{content:attr(data-label) "：";font-weight:600;margin-right:8px}
}
@media(max-width:1023px){.primary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tile-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.funds,.derived{grid-template-columns:repeat(2,minmax(0,1fr))}.sync-strip{grid-template-columns:1fr;gap:12px}main{padding:24px}}
@media(min-width:600px){.sidebar-collapsed .sidebar-heading{flex-direction:column;gap:12px}}
@media(max-width:599px){
  main{padding:24px 16px}h1{font-size:22px}.primary-grid{grid-template-columns:1fr}.funds,.derived,.scale,.refund-grid{grid-template-columns:1fr}.tile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .panel,.metric-card,.observation-panel{padding:16px}.metric-value{font-size:30px}small{display:block;margin:4px 0}.overview-heading{align-items:flex-start;flex-wrap:wrap}.overview h1{font-size:24px}.refresh-controls{width:100%;justify-content:space-between}.last-sync-time{flex:1;min-width:0}
  .app-layout,.app-layout.sidebar-collapsed{--sidebar-width:236px}.sidebar{transform:translateX(-100%);width:min(280px,85vw)}.app-content{margin-left:0}#drawer-menu{display:flex}.sidebar-collapsed .nav-label{display:inline}.sidebar-open .sidebar{transform:translateX(0)}.sidebar-open .app-content{overflow:hidden}.sidebar .submenu{padding-left:12px}.sidebar-collapsed .business-nav>summary::after{display:block}.topbar{padding:12px 16px}
  button,input,select,.primary,summary{min-height:44px}.info{min-height:32px;width:32px;height:32px}dl{grid-template-columns:110px minmax(0,1fr)}dt,dd{padding:8px}
  .login-card{padding:32px 24px}dialog{padding:16px}.dialog-heading{top:-16px}.dialog-heading h2{font-size:18px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto;transition:none!important}}

.status-details{margin:8px 0 16px}.status-details summary{font-size:12px}.metric-gap summary{font-size:13px}.metric-gap p{margin:8px 0}.metric-gap strong{font-weight:500}

/* 学员余额页复用主看板核心卡与响应式网格。 */
.student-overview{margin-top:20px}

/* 核心收款卡呼应参考图橙色重点卡；状态及业务色仍独立表达。 */
.metric-card[data-metric=revenue]{background:linear-gradient(135deg,#ff8b65,var(--accent));border-color:transparent}
.metric-card[data-metric=revenue] :is(h3,.metric-value,.metric-caption,.number-unit){color:var(--ink)}
.metric-card[data-metric=revenue] .info{background:#ffffff66;color:var(--ink)}
.metric-card[data-metric=revenue] .metric-value:hover{color:#000}
.chart{background:var(--soft);border-radius:16px}
.sidebar a,.sidebar summary{border-radius:999px}
.contract-navigation a{border-radius:999px}
button{border-radius:999px}

/* 共享尺寸合同：标题、数值与说明占固定区域；展开资料在卡内滚动。 */
.card-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch}
.department-page{--department-color:#f46b45}
.department-page[data-theme=blue]{--department-color:#6486bd}
.department-page[data-theme=green]{--department-color:#62a38b}
.department-page[data-theme=gray]{--department-color:#969992}
.department-page>.overview{border-top:3px solid var(--department-color)}
.department-chart-empty{padding:16px;overflow:auto;background:var(--soft);border-radius:var(--radius);overflow-wrap:anywhere;font-size:14px}
.department-nav>summary{min-height:44px;display:flex;align-items:center;padding:10px 12px;cursor:pointer}
.department-nav .submenu>span{padding:8px 12px;color:var(--muted)}
.primary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.refund-grid,.scale{grid-template-columns:repeat(2,minmax(0,1fr))}
.metric-card{display:flex;flex-direction:column;height:var(--metric-card-height);min-height:var(--metric-card-height);overflow:auto}
.metric-card>.card-heading{height:var(--metric-heading-height);min-height:var(--metric-heading-height);flex:none;align-items:center}
.metric-card>.card-heading :is(h2,h3){margin:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.metric-card>h3{height:var(--metric-heading-height);min-height:var(--metric-heading-height);margin:0;overflow:hidden;line-height:1.5}
.metric-card>:is(.metric-value,.metric-figure){display:flex;align-items:center;height:var(--metric-value-height);min-height:var(--metric-value-height);flex:none;padding:0;margin:0;font-size:clamp(22px,2.4vw,32px);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.metric-card>:is(p,small,.metric-caption,.observation-gap):not(.metric-figure){flex:none;margin:4px 0 0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.metric-card>details{min-height:0;margin-top:auto;flex:none}
.metric-card>details[open]{overflow:visible}
.number-unit{flex:none}
.panel,.observation-panel{min-height:var(--metric-card-height)}
details.panel{min-height:0}
.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.composition-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-bottom:24px}
.observation-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.panel:has(>.chart){display:flex;flex-direction:column;height:var(--panel-height);min-height:0;overflow:auto}
.panel:has(>.chart)>:is(h2,.card-heading){height:42px;min-height:42px;flex:none;margin:0 0 8px;overflow:hidden}
.panel:has(>.chart)>.card-heading h2{margin:0}
.panel:has(>.chart)>p{font-size:12px;line-height:1.5;flex:none;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin:6px 0}
.panel:has(>.chart)>.observation-chart-meta{height:18px;-webkit-line-clamp:1}
.panel:has(>.chart)>details{margin-top:auto;flex:none}
.composition-grid>.panel{height:var(--panel-height);margin:0;min-height:0;overflow:auto}
.composition-grid .composition-category{margin-top:0}
.observation-grid>.observation-panel:not(.metric-card){height:var(--panel-height);overflow:auto}
.observation-panel>.metric-card{max-width:24rem}
.organization-charts{align-items:stretch}
.organization-card{display:flex;flex-direction:column;min-height:calc(var(--chart-height) + 90px);overflow:auto}
.organization-card h3{height:24px;min-height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.organization-card>button{align-self:flex-start;flex:none;margin:8px 0}
.organization-card .chart{margin-top:auto}
.data-tile{min-height:var(--metric-card-height);max-height:var(--panel-height);overflow:auto}
@media(max-width:1023px){.card-grid,.primary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){
  .chart-grid,.composition-grid,.observation-chart-grid{grid-template-columns:minmax(0,1fr)}
  .observation-grid{grid-template-columns:minmax(0,1fr)}
  .organization-charts{grid-template-columns:minmax(0,1fr)}
  .composition-grid>.panel:has(.organization-charts){height:var(--panel-height);overflow:auto}
}
@media(max-width:599px){
  .card-grid,.primary-grid,.refund-grid,.scale{grid-template-columns:minmax(0,1fr)}
  :root{--panel-height:456px;--chart-height:260px}
}

/* 管理层沿用共享尺寸；容纳观察标签、日增、比较与状态，不挡数值。 */
.department-page{--metric-card-height:calc(var(--metric-heading-height) + var(--metric-value-height) + 188px)}
.department-scope-options{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}
.department-scope-options form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.department-scope-options small{color:var(--muted);font-size:12px}

/* DR-12：部门实图与空态共用面板；断点只调整共享尺寸与列数。 */
.department-page{--metric-heading-height:48px}
.department-page .info{width:44px;height:44px;min-height:44px}
.department-page>.chart-grid>.panel>.card-heading{height:48px;min-height:48px}
.department-page>.chart-grid>.panel>.card-heading h2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.department-page>.chart-grid>.panel>.chart{margin-top:0}
.department-page .month-form,.department-scope-options form{max-width:100%;min-width:0}
.department-page .month-form label{min-width:0;flex-wrap:wrap}
.department-scope-options :is(form,select,button){min-width:0;max-width:100%}
.department-nav>summary{gap:12px}
.department-nav>summary::before{content:"部";display:grid;place-items:center;flex:none;width:20px;height:20px;border:1px solid currentColor;border-radius:4px;font-size:12px}
@media(min-width:600px){
  .sidebar-collapsed .department-nav>summary{justify-content:center;padding-inline:6px}
  .sidebar-collapsed .department-nav>summary .nav-label{display:block;font-size:12px}
  .sidebar-collapsed .department-nav>summary::before{display:none}
}
@media(min-width:1024px) and (max-width:1199px){
  .department-page .card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .department-page{--chart-height:260px;--panel-height:456px}
}
@media(min-width:600px) and (max-width:1023px){
  .department-page{--chart-height:260px;--panel-height:456px}
  .department-page .card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:599px){
  .department-page{--metric-heading-height:48px;--metric-value-height:48px}
  .department-page .card-grid{grid-template-columns:minmax(0,1fr)}
  #sidebar-toggle,#drawer-menu,.info{min-width:44px;width:44px;height:44px;min-height:44px}
}

/* i 的透明方形按钮承接完整热区；圆形底色独立绘制，字形与视觉尺寸不放大。 */
.info::before{content:"";position:absolute;z-index:-1;pointer-events:none;width:var(--info-disc-size,28px);height:var(--info-disc-size,28px);border-radius:50%;background:var(--info-fill,transparent)}
.info:hover{background:transparent}
.info:hover::before{background:#f3f3f0}
.metric-card[data-metric=revenue] .info{background:transparent;--info-fill:#ffffff66}
.panel:has(>.chart)>.card-heading{height:48px;min-height:48px;overflow:visible}
@media(any-pointer:coarse){
  summary{min-height:44px}
}

/* 全屏专属密度：核心卡和图表按视口等分，明细留在普通观察页。 */
.fullscreen-layout{background:var(--canvas);min-height:100dvh;height:100dvh;padding-top:56px;overflow:hidden;--fullscreen-gap:12px;--fullscreen-padding:16px;--fullscreen-font:14px;--fullscreen-value:28px;--metric-card-height:100%;--metric-heading-height:44px;--metric-value-height:28px;--fullscreen-chart-height:clamp(120px,22dvh,280px);font-size:var(--fullscreen-font);line-height:1.4}
.fullscreen-layout main{max-width:none;width:100%;min-height:0;height:calc(100dvh - 56px);overflow:hidden;padding:var(--fullscreen-padding);display:grid;grid-template-rows:auto minmax(354px,2fr) minmax(0,3fr);gap:var(--fullscreen-gap)}
.fullscreen-actions{position:fixed;top:0;right:0;left:0;z-index:30;display:flex;justify-content:flex-end;align-items:center;gap:8px;height:56px;padding:6px 12px;background:var(--canvas);border-bottom:1px solid var(--line)}
.fullscreen-actions #fullscreen-toggle{min-height:44px;padding:6px 12px;background:var(--accent-soft);border-color:var(--accent);color:var(--link-blue)}
.fullscreen-actions #fullscreen-toggle[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}
.fullscreen-actions .primary{min-height:44px;padding:6px 12px;font-size:12px}
.fullscreen-layout .overview{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;min-width:0}
.fullscreen-layout .overview-heading{display:flex;align-items:center;gap:16px;min-width:0}
.fullscreen-layout .overview h1{font-size:20px;margin:0}
.fullscreen-layout .overview-details{flex-direction:row;align-items:center;gap:8px;margin:0}
.fullscreen-layout .refresh-controls{width:auto;margin:0}
.fullscreen-layout form{gap:6px;flex-wrap:nowrap;font-size:12px}
.fullscreen-layout :is(button,input){min-height:44px;padding:4px 8px}
.fullscreen-layout main>section{min-height:0}
.fullscreen-layout .fullscreen-metrics{height:100%;min-height:0;margin:0;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:var(--fullscreen-gap)}
.fullscreen-layout .metric-card{position:relative;height:100%;min-height:0;padding:6px 12px;overflow:hidden;border-radius:12px}
.fullscreen-layout .metric-card>.card-heading{height:44px;min-height:44px;align-items:center;gap:4px}
.fullscreen-layout .card-heading h3{font-size:13px;margin:0}
.fullscreen-layout .info{--info-disc-size:20px;width:44px;height:44px;min-height:44px;padding:0;border-radius:0}
.fullscreen-layout .metric-card>:is(.metric-value,.metric-figure){height:var(--metric-value-height);min-height:var(--metric-value-height);font-size:var(--fullscreen-value);padding:0}
.fullscreen-layout .metric-caption{font-size:12px;line-height:1.6;margin:2px 0}
.fullscreen-layout .metric-card>.fullscreen-data-mark{position:absolute;bottom:4px;right:8px}
.fullscreen-data-mark{color:var(--muted);font-size:12px;line-height:1.4}
.fullscreen-core-charts{display:grid;min-height:0;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:var(--fullscreen-gap);align-items:stretch}
.fullscreen-core-charts>.panel{display:flex;flex-direction:column;min-height:0;height:100%;margin:0;padding:8px;overflow:hidden;border-radius:12px}
.fullscreen-core-charts>.panel>:is(h2,h3,.card-heading){height:44px;min-height:44px;flex:none;margin:0 0 4px;font-size:13px}
.fullscreen-core-charts .card-heading h2{font-size:13px;margin:0}
.fullscreen-core-charts .chart{height:auto;min-height:0;flex:1;border-radius:8px}
.fullscreen-core-charts .organization-charts{flex:1;min-height:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.fullscreen-core-charts .organization-card{position:relative;min-height:0;height:100%;padding:0;border:0;box-shadow:inset 0 3px var(--business-color);overflow:hidden}
.fullscreen-core-charts .organization-card h3{position:absolute;top:4px;left:4px;right:4px;z-index:1;font-size:12px;height:18px;min-height:18px}
.fullscreen-core-charts .organization-card .chart{height:100%;min-height:0;flex:1}
.fullscreen-layout #detail-dialog{width:min(900px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:12px;overflow:hidden}
.fullscreen-layout .dialog-heading{position:static;gap:8px;padding:0 0 8px}
.fullscreen-layout .dialog-heading h2{font-size:16px}
.fullscreen-layout #dialog-content{overflow:hidden}
.fullscreen-layout #dialog-content dl{grid-template-columns:96px minmax(0,1fr);font-size:13px;margin:8px 0}
.fullscreen-layout #dialog-content :is(dt,dd){padding:6px 8px;min-width:0;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}
.fullscreen-layout .fullscreen-info-more{display:inline-block;padding:8px 0;font-size:13px}
@media(max-width:1100px){
 .fullscreen-layout{--fullscreen-gap:8px;--fullscreen-padding:12px;--fullscreen-value:24px}
 .fullscreen-layout .overview{flex-wrap:wrap}
 .fullscreen-layout .overview-heading{flex:1;justify-content:space-between}
 .fullscreen-layout .overview h1{font-size:18px}
}
@media(max-width:650px){
 .fullscreen-layout{--fullscreen-gap:6px;--fullscreen-padding:6px;--fullscreen-value:18px;--metric-value-height:24px}
 .fullscreen-layout main{grid-template-rows:auto minmax(0,5fr) minmax(0,3fr)}
 .fullscreen-layout .overview-heading{gap:4px;width:100%}
 .fullscreen-layout .overview h1{font-size:16px}
 .fullscreen-layout .overview-details{width:100%;justify-content:space-between}
 .fullscreen-layout .fullscreen-metrics{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(5,minmax(0,1fr))}
 .fullscreen-layout .metric-card{padding:2px 4px}
 .fullscreen-layout .metric-card>.card-heading{position:relative;height:28px;min-height:28px;align-items:flex-start}
 .fullscreen-layout .metric-card>.card-heading h3{line-height:14px;max-width:calc(100% - 40px)}
 .fullscreen-layout .metric-card>.card-heading .info{position:absolute;right:-4px;top:-2px}
 .fullscreen-layout .metric-card>.metric-caption{white-space:nowrap;line-height:16px;margin:2px 0}
 .fullscreen-layout .metric-card>.observation-gap{line-height:16px;margin:2px 0}
 .fullscreen-layout .card-heading h3{font-size:12px}
 .fullscreen-layout .fullscreen-core-charts{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr))}
 .fullscreen-layout .fullscreen-core-charts>.panel{padding:4px}
 .fullscreen-layout #dialog-content :is(dt,dd){font-size:12px;padding:4px;-webkit-line-clamp:3}
}
