/* Additive shared page styles; the existing account/task layout stays in use. */
.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.metric-card strong{display:block;margin:8px 0;font-size:30px;line-height:1.2;color:var(--ink)}
.metric-card details{margin-top:12px;font-size:12px}.metric-card>a{display:block}
.overview-sections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}
.compact-list{list-style:none;padding:0;margin:16px 0 0}.compact-list li{padding:12px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.empty-state{color:var(--muted);padding:20px 0}.page-actions{display:flex;gap:10px;flex-wrap:wrap}
.audit-details{margin:20px 0}.audit-details dd{margin:0;overflow-wrap:anywhere}
.filter-form select[multiple]{min-height:90px;max-width:320px}.metric-card{overflow-wrap:anywhere}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:800px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-sections{grid-template-columns:1fr}.filter-form select[multiple]{max-width:100%}}
@media(max-width:390px){.metric-grid{gap:10px}.metric-card{padding:13px}.metric-card strong{font-size:27px}.page-actions .button{width:100%}.topbar{gap:8px}.identity{gap:8px}.nav-item{padding:8px}.compact-list{font-size:13px}}
/* Hide the entire prior account document while the server rechecks access. */
.pwa-locked .shell,.pwa-locked .skip{display:none!important}
[hidden]{display:none!important}
.connection-notice{max-width:480px;margin:12vh auto;padding:24px}
.stack-form fieldset{min-width:0;margin:16px 0;padding:12px;border:1px solid var(--line);border-radius:8px}
.stack-form fieldset legend{padding:0 6px}
@media(max-width:800px){
  .sidebar nav[aria-label="工作台导航"]{flex-wrap:nowrap;overflow-x:auto;padding:4px 0 8px}
  .sidebar nav[aria-label="工作台导航"] .nav-item{white-space:nowrap;flex-shrink:0;min-height:44px;display:flex;align-items:center}
  input,select,textarea{font-size:16px;min-height:44px}
  input[type=checkbox]{min-height:18px}
  .button,summary{min-height:44px}
  .stack-form input[type=datetime-local]{width:100%;min-width:0}
  .stack-form fieldset{padding:10px;margin-inline:0}
  .connection-notice{margin:12vh 16px}
  .pagination{flex-wrap:wrap}
}

/* ===== cece black & gold theme =====================================
   Deep charcoal base, refined gold accents used sparingly, warm off-white
   text. Text/background pairs below meet WCAG AA (>= 4.5:1) on #17171a. */
:root{--bg:#0f0f10;--panel:#17171a;--panel2:#1e1e22;--line:#2b2b30;--line-soft:#232327;--ink:#efe9de;--muted:#aaa397;--gold:#d4b06a;--gold-hi:#ecd29a;--gold-lo:#b38b45;--red:#e0968a;--amber:#e1b15f;--green:#93c4a0;--purple:var(--gold);--navy:#0f0f10;--canvas:var(--bg);--gold-grad:linear-gradient(135deg,#e6c98a,#c9a45c)}
html{background:var(--bg);color-scheme:dark}
body{background:radial-gradient(1200px 600px at 85% -10%,#1d1a14 0,transparent 60%),var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Noto Sans CJK SC","Source Han Sans SC","Microsoft YaHei",sans-serif;letter-spacing:.2px}
a{color:var(--gold-hi)}a:hover{color:#f6e4bb}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--gold-hi);outline-offset:3px}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.icon{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
/* Sidebar */
.sidebar{background:#0b0b0c;border-right:1px solid var(--line-soft);color:var(--muted);padding:26px 14px;overflow-y:auto}
.sidebar-head{display:flex;align-items:center;justify-content:space-between}
.brand{color:var(--ink);font-weight:600;letter-spacing:1px}
.brand-icon{background:var(--gold-grad);color:#16120a;font:600 20px/1 Georgia,"Songti SC",serif;border-radius:10px;box-shadow:0 0 0 1px #00000040,0 6px 18px #c9a45c26}
.brand small{color:#8f887c;letter-spacing:2.4px}
.nav-label{color:#8f887c;letter-spacing:3px;margin:38px 12px 10px}
nav{gap:2px}
.nav-item{display:flex;align-items:center;gap:12px;color:#c9c2b5;padding:11px 14px;border-radius:9px;border:1px solid transparent;position:relative}
.nav-item .icon{color:#8f887c}
.nav-item:hover{background:#17171a;color:var(--ink)}
.nav-item[aria-current="page"]{background:linear-gradient(90deg,#c9a45c1f,#c9a45c05);border-color:#c9a45c33;color:var(--gold-hi)}
.nav-item[aria-current="page"] .icon{color:var(--gold)}
.nav-item[aria-current="page"]::before{content:"";position:absolute;left:-14px;top:10px;bottom:10px;width:2px;border-radius:2px;background:var(--gold-grad)}
.nav-close{display:none;color:var(--muted)}
.sidebar-foot{color:#8f887c;border-top:1px solid var(--line-soft);margin-top:24px}
.tabbar{display:none}
/* Top bar */
.topbar{background:#0f0f10d9;backdrop-filter:blur(10px);border-bottom:1px solid var(--line-soft);position:sticky;top:0;z-index:20;padding:14px 32px}
.top-search{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:0 14px;color:var(--muted);flex:0 1 360px;min-width:0}
.top-search input{border:0;background:transparent;color:var(--ink);padding:9px 0;width:100%;min-height:40px}
.top-search input::placeholder{color:#8f887c}
.top-search:focus-within{border-color:var(--gold-lo)}
.identity{gap:16px;color:var(--muted)}
.today{color:var(--gold-hi);font-variant-numeric:tabular-nums;letter-spacing:.5px;white-space:nowrap}.today span{color:var(--muted);margin-left:4px}
.icon-button{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);color:var(--ink);background:var(--panel)}
.icon-button:hover{border-color:var(--gold-lo);color:var(--gold-hi)}
.person{display:flex;align-items:center;gap:10px;min-width:0}
.avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--gold-grad);color:#16120a;font-weight:700;flex-shrink:0}
.person-text{color:var(--ink);overflow-wrap:anywhere}
.breadcrumb{color:var(--muted)}
/* Surfaces */
main{max-width:1320px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 0 #ffffff06 inset,0 12px 32px #00000040}
.eyebrow{color:var(--gold);letter-spacing:4px;font-weight:600}
h1{font-weight:600;letter-spacing:1.5px;color:var(--ink)}
h1::after{content:"";display:block;width:48px;height:2px;margin-top:10px;background:var(--gold-grad);border-radius:2px}
h2{font-weight:600;letter-spacing:.8px;color:var(--ink)}
.subtitle,.helptext,.empty-state{color:var(--muted)}
.notice{background:#1d1a12;border-color:#3a3020;color:#e8d6ac}
.form-error,.errorlist{color:var(--red)}.form-error{background:#2a1714}
.button{background:transparent;border:1px solid #3a3a40;color:var(--ink);border-radius:8px}
.button:hover{border-color:var(--gold-lo);color:var(--gold-hi)}
.button.primary{background:var(--gold-grad);border-color:#c9a45c;color:#16120a;font-weight:600;box-shadow:0 6px 18px #c9a45c2e}
.button.primary:hover{color:#16120a;filter:brightness(1.06)}
.button.ghost{padding:5px 12px;font-size:12px;color:var(--muted)}
input,select,textarea{background:#111113;border:1px solid var(--line);color:var(--ink)}
select option{background:#17171a;color:var(--ink)}
.filter-form label,.stack-form label,.access-form label{color:var(--muted)}
summary{color:var(--ink)}
.field{background:var(--panel2)}.field dt{color:var(--muted)}
.badge{background:#26262b;color:#d4cec3}
.badge.accepted,.status-ACCEPTED{background:#1d2b22;color:var(--green)}
.status-IN_REVIEW{background:#2b2416;color:var(--gold-hi)}
.status-IN_PROGRESS{background:#1e2530;color:#a9c4e0}
.status-CANCELLED{background:#232326;color:#aaa397}
.warning{background:#2a1714;color:var(--red)}
.task-table th{color:var(--muted);font-weight:500;letter-spacing:.6px;border-bottom:1px solid var(--line)}
.task-table th,.task-table td{border-bottom:1px solid var(--line-soft)}
.compact-list li{border-top:1px solid var(--line-soft)}
footer{color:#8f887c}footer a{color:#b9b2a5}
.skip{background:var(--panel);color:var(--gold-hi)}
.login-brand{color:var(--ink)}
.connection-notice{background:var(--panel)}
.metric-card strong{color:var(--gold-hi);font-weight:500;font-variant-numeric:tabular-nums}
.section-title{font-size:13px;color:var(--muted);letter-spacing:3px;margin:28px 0 12px;font-weight:500}
/* KPI cards */
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.kpi{position:relative;overflow:hidden;padding:20px 22px}
.kpi::before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:var(--accent)}
.kpi-gold{--accent:var(--gold-grad);--tone:var(--gold)}.kpi-red{--accent:var(--red);--tone:var(--red)}.kpi-amber{--accent:var(--amber);--tone:var(--amber)}.kpi-green{--accent:var(--green);--tone:var(--green)}
.kpi-head{display:flex;align-items:center;gap:10px}
.kpi-head h2{font-size:13px;color:var(--muted);font-weight:500;letter-spacing:1.5px}
.kpi-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;border:1px solid currentColor;color:var(--tone);font-size:14px;opacity:.95}
.kpi-value{display:block;margin:12px 0 10px;font:300 40px/1.1 "Helvetica Neue",-apple-system,"PingFang SC",sans-serif;color:var(--ink);font-variant-numeric:tabular-nums}
.kpi-gold .kpi-value{background:var(--gold-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.kpi-meta{display:flex;gap:22px;margin:0}.kpi-meta div{min-width:0}.kpi-meta dt{font-size:11px;color:var(--muted)}.kpi-meta dd{margin:2px 0 0;font-size:16px;color:var(--ink);font-variant-numeric:tabular-nums}
.progress{display:block;width:100%;height:4px;margin-top:14px}.progress-track{fill:#2b2b30}.progress-bar{fill:var(--gold)}
/* Charts */
.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.chart-card .card-head{margin-bottom:8px}
.donut-wrap{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.donut{width:168px;height:168px;flex-shrink:0;transform:rotate(0deg)}
.donut circle{fill:none;stroke-width:4.2}
.donut-track{stroke:#26262b}
.donut-total{fill:var(--ink);font-size:8px;font-weight:300;text-anchor:middle}
.donut-caption{fill:var(--muted);font-size:2.6px;text-anchor:middle;letter-spacing:.3px}
.seg-gold{stroke:#d4b06a;background:#d4b06a}.seg-champagne{stroke:#efdcae;background:#efdcae}.seg-bronze{stroke:#9c7a3e;background:#9c7a3e}.seg-stone{stroke:#726d64;background:#726d64}
.seg-red{stroke:#d98b7e;background:#d98b7e}.seg-amber{stroke:#d9a85b;background:#d9a85b}.seg-green{stroke:#8fbf9a;background:#8fbf9a}
.legend{list-style:none;margin:0;padding:0;flex:1;min-width:180px}
.legend li{display:grid;grid-template-columns:12px 1fr auto 44px;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line-soft)}
.legend li:last-child{border-bottom:0}
.legend strong{color:var(--ink);font-weight:500;font-variant-numeric:tabular-nums}
.legend-share{color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;font-size:12px}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%}
.legend-inline{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);flex-wrap:wrap}.legend-inline .dot{margin-left:8px}
.line-key{display:inline-block;width:16px;height:2px;margin-left:8px}.line-key.planned{background:repeating-linear-gradient(90deg,#efdcae 0 4px,transparent 4px 7px)}.line-key.actual{background:var(--gold)}
.bars,.trend{display:block;width:100%;height:auto;max-height:240px}
.grid{stroke:#2b2b30;stroke-width:1}
.bar-done{fill:#d4b06a}.bar-open{fill:#4a4741}
.bar-value{fill:var(--ink);font-size:10px;text-anchor:middle;font-variant-numeric:tabular-nums}
.axis-label{fill:var(--muted);font-size:10px;text-anchor:middle}.axis-label.tick{text-anchor:end;dominant-baseline:middle}
.today-label{fill:var(--gold-hi);font-weight:600}
.line-planned{fill:none;stroke:#efdcae;stroke-width:1.5;stroke-dasharray:4 3}
.line-actual{fill:none;stroke:#d4b06a;stroke-width:2.2;stroke-linejoin:round}
.area-actual{fill:url(#trend-fill)}
.pt-planned{fill:#17171a;stroke:#efdcae;stroke-width:1.2}.pt-actual{fill:#d4b06a;stroke:#17171a;stroke-width:1.5}
/* Review summary */
.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:6px}
.summary-col{border:1px solid var(--line);border-radius:12px;padding:16px 18px;background:var(--panel2);position:relative}
.summary-col h3{margin:0 0 10px;font-size:14px;font-weight:600;letter-spacing:1px;display:flex;align-items:center;gap:8px}
.summary-col h3::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--tone)}
.summary-col.good{--tone:var(--green)}.summary-col.improve{--tone:var(--amber)}.summary-col.next{--tone:var(--gold)}
.summary-col ul{margin:0;padding-left:18px;color:#d9d3c8}.summary-col li{padding:3px 0}.summary-col li::marker{color:var(--tone)}.summary-col .muted{color:var(--muted);list-style:none;margin-left:-18px}
/* Task tables */
.table-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:16px}
.dash-table td{vertical-align:middle;padding:11px 10px}.dash-table td small{display:block;font-size:11px}
.dash-table .reason{color:#d9d3c8;max-width:220px}
.chip{display:inline-block;min-width:36px;text-align:center;border-radius:6px;padding:2px 8px;font-size:12px;border:1px solid}
.priority-HIGH{color:var(--red);border-color:#6b3a33;background:#2a1916}.priority-NORMAL{color:var(--amber);border-color:#5e4a26;background:#241e12}.priority-LOW{color:var(--green);border-color:#355040;background:#16211a}
.count{display:inline-block;margin-left:6px;padding:0 8px;border-radius:999px;background:#26262b;color:var(--gold-hi);font-size:12px;font-weight:500;vertical-align:middle}
@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.table-grid{grid-template-columns:1fr}}
/* Phones: stacked cards, bottom tab bar, slide-in drawer */
@media(max-width:800px){
  .sidebar{position:fixed;inset:0 auto 0 0;width:min(84vw,300px);z-index:60;transform:translateX(-102%);transition:transform .2s ease;box-shadow:24px 0 60px #000a;display:flex}
  .sidebar:target{transform:none}
  .sidebar .nav-label,.sidebar-foot{display:block}
  .sidebar nav[aria-label="工作台导航"]{flex-direction:column;flex-wrap:nowrap;overflow:visible;margin-top:0}
  .sidebar nav[aria-label="工作台导航"] .nav-item{white-space:normal;font-size:14px;padding:12px 14px}
  .nav-close{display:grid;place-items:center;width:44px;height:44px}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;background:#0b0b0cf2;backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:48px;justify-content:center;color:#bdb6aa;font-size:11px;border-radius:10px}
  .tabbar a[aria-current="page"]{color:var(--gold-hi)}
  .workspace{padding-bottom:78px}
  .topbar{flex-wrap:wrap;padding:10px 14px;gap:10px}
  .top-search{flex:1 1 100%;order:2}
  .identity{gap:10px}
  .person-text{font-size:12px}
  .today span{display:none}
  main{padding:20px 14px}
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .kpi{padding:16px}.kpi-value{font-size:32px}.kpi-meta{gap:14px}.kpi-icon{width:26px;height:26px}
  .chart-grid,.summary-grid,.table-grid{grid-template-columns:1fr}
  .donut-wrap{justify-content:center;gap:18px}.donut{width:150px;height:150px}
  .dash-table{min-width:520px}
}
@media(max-width:390px){.kpi-grid{grid-template-columns:1fr 1fr}.kpi-value{font-size:28px}.kpi-head h2{font-size:12px;letter-spacing:.5px}.person-text{display:none}}
@media(prefers-reduced-motion:reduce){.sidebar{transition:none}}
/* polish after preview */
.dash-table th,.dash-table td{white-space:nowrap}
.dash-table td:first-child{white-space:normal;min-width:9em}
.dash-table td.reason{white-space:normal;min-width:8em}
.card-head .button,.card-head a{white-space:nowrap}
select[multiple]{min-width:min(100%,440px);min-height:5.5em}
.mobile-brand{display:none}
@media(max-width:800px){.mobile-brand{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:600;text-decoration:none;margin-right:auto}.mobile-brand .brand-icon{width:28px;height:28px;font-size:15px}.identity .today{display:none}}
@media(max-width:800px){
  .mobile-brand{flex:1 0 auto}
  .topbar .identity{flex:0 0 auto;width:auto;margin-left:auto;justify-content:flex-end}
  .logout-button{padding:6px 12px;min-height:40px;font-size:13px}
  .filter-form{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end}
  .filter-form > :first-child{grid-column:1 / -1}
  .filter-form select[multiple]{min-height:3.4em;min-width:0;width:100%}
  .filter-form button{grid-column:1 / -1;width:100%}
  .filter-form select{width:100%;min-width:0}
}
@media(max-width:800px){.filter-form label{display:grid;gap:4px;min-width:0}}
@media(max-width:800px){.filter-form select[multiple]{height:3.6em}}
.card-head .button{flex:0 0 auto;width:auto}
