:root { color-scheme:light; --ink:#24282f; --muted:#7b818a; --line:#e7e9ec; --bg:#fff; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif; }
* { box-sizing:border-box; }
body { margin:0; background:#fff; color:var(--ink); font-size:13px; line-height:1.5; }
[hidden],.hidden { display:none !important; }
h1,h2,h3,p { margin-top:0; }h1 { font-size:18px; font-weight:600; margin:0; }h2,h3 { font-size:14px; font-weight:600; margin:0; }
.muted,.cell-sub { font-size:12px; color:var(--muted); }.error,.negative,.dash-value.negative { color:#b3474a; }.error { font-size:12px; min-height:18px; }
button,input,textarea { font:inherit; color:inherit; }
button { padding:6px 11px; border:1px solid #dfe2e6; border-radius:4px; background:#fff; cursor:pointer; font-size:12px; line-height:1.5; transition:background .12s; }
button:hover:not(:disabled) { background:#f5f6f7; }
button.primary { background:#30353d; border-color:#30353d; color:#fff; }button.primary:hover:not(:disabled) { background:#161a20; }
button:disabled { opacity:.4; cursor:default; }
:focus-visible { outline:2px solid #778fa8; outline-offset:3px; }
input:not([type=checkbox]),textarea { border:1px solid #dfe2e6; border-radius:4px; padding:7px 9px; background:#fff; min-width:0; }
input:not([type=checkbox]):focus,textarea:focus { outline:0; border-color:#8794a3; }
input::placeholder,textarea::placeholder { color:#a0a5ad; }input[type=checkbox] { accent-color:#4b5563; width:14px; height:14px; vertical-align:middle; cursor:pointer; }
button.tip-label { border:0; border-radius:0; padding:0; background:none; font-weight:400; color:var(--muted); text-align:left; cursor:help; text-decoration:underline dotted #c9cdd3; text-underline-offset:4px; font-size:12px; }
button.tip-label:hover { background:none; color:#30353d; }
button.plain-button { border:0; background:none; padding:0 4px; color:#555f6d; font-size:11px; }
#help-tooltip { position:fixed; z-index:150; width:max-content; max-width:min(310px,calc(100vw - 24px)); padding:9px 12px; border-radius:4px; background:#30353d; color:#fff; font-size:12px; line-height:1.7; overflow-wrap:anywhere; }
/* Layout */
header { position:sticky; top:0; z-index:20; display:flex; align-items:center; justify-content:space-between; gap:24px; padding:0 28px; border-bottom:1px solid var(--line); background:#fff; min-height:54px; }
.brand { color:#24282f; font-size:16px; font-weight:650; letter-spacing:.04em; white-space:nowrap; padding-right:4px; }
nav { display:flex; align-items:stretch; gap:24px; max-width:100%; overflow-x:auto; }
nav .tab { border:0; border-bottom:2px solid transparent; border-radius:0; padding:17px 0 14px; background:none; color:#767c85; font-size:13px; white-space:nowrap; }
nav .tab.active { color:#24282f; border-bottom-color:#30353d; font-weight:600; }nav .tab:hover { background:none; color:#24282f; }
.who { display:flex; align-items:center; gap:12px; }.who button { padding:4px 9px; }.who #logout-btn { border:0; color:#818792; }
#user-name { max-width:140px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-size:12px; }#poll-info { font-size:11px; white-space:nowrap; }
main { padding:24px 28px 36px; max-width:1880px; margin:auto; }
.page-heading { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; }
.section-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:16px; }.section-heading p { margin:5px 0 0; font-size:11px; }
/* Metrics */
.dash { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); border:1px solid var(--line); border-radius:4px; }
.dash-card { min-width:0; padding:17px 20px; }
.metric-note { margin-top:7px; color:var(--muted); font-size:11px; line-height:1.6; overflow-wrap:anywhere; }
.quota-help { display:flex; flex-wrap:wrap; align-items:baseline; gap:8px 20px; margin:12px 0 4px; font-size:12px; color:var(--muted); }
.quota-help details { flex:1 1 220px; }.quota-help summary { cursor:pointer; width:fit-content; color:var(--ink); }.quota-help p { max-width:860px; margin:10px 0; line-height:1.8; }.quota-help a { color:#476a90; text-underline-offset:3px; }
.dash > .dash-card + .dash-card { border-left:1px solid var(--line); }
.dash-label { display:block; font-size:12px; color:var(--muted); margin-bottom:10px; }
.dash-value,.estimate-total { font-size:25px; line-height:1.2; font-weight:550; letter-spacing:-.5px; font-variant-numeric:tabular-nums; }
.weekly-strip { display:flex; align-items:center; gap:32px; padding:15px 0; border-bottom:1px solid var(--line); margin-bottom:18px; }
.weekly-stat { display:flex; align-items:center; gap:12px; }.weekly-stat strong { font-size:19px; font-weight:550; font-variant-numeric:tabular-nums; }#weekly-coverage { margin-left:auto; font-size:11px; }
.finance-cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-bottom:1px solid var(--line); margin-bottom:22px; }
.finance-cards .dash-card { padding:0 24px 22px; }.finance-cards .dash-card:first-child { padding-left:0; }.finance-cards .dash-card + .dash-card { border-left:1px solid var(--line); }
.metric-heading { display:flex; justify-content:space-between; gap:10px; align-items:baseline; }
.estimate-panel { display:flex; gap:32px; align-items:center; padding:0 0 22px; margin-bottom:20px; border-bottom:1px solid var(--line); }
.estimate-main { min-width:210px; }.estimate-main .muted { display:block; margin-top:7px; font-size:11px; }
.estimate-breakdown { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:24px; flex:1; }
.estimate-breakdown > div { min-width:0; }.estimate-breakdown span { display:block; font-size:12px; color:var(--muted); }.estimate-breakdown strong { display:block; font-size:17px; font-weight:500; margin-top:8px; font-variant-numeric:tabular-nums; white-space:nowrap; }
/* Tables */
.toolbar { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:0 0 14px; }
#accounts-summary { flex:1; min-width:180px; }.selall { font-size:12px; color:#737a84; white-space:nowrap; }#account-search { width:170px; font-size:12px; padding:6px 9px; }
.table-scroll { max-width:100%; overflow:auto; border:1px solid var(--line); border-radius:4px; scrollbar-width:thin; scrollbar-color:#c4c8cf transparent; }
.accounts-scroll { max-height:calc(100vh - 310px); min-height:200px; }
table.tbl { width:100%; border-collapse:separate; border-spacing:0; background:#fff; font-size:12px; font-variant-numeric:tabular-nums; }
.tbl th,.tbl td { text-align:left; padding:10px 12px; border-bottom:1px solid #eff0f2; white-space:nowrap; }
.tbl th { background:#fafafa; color:#777e88; font-size:11px; font-weight:500; }.tbl tbody tr:last-child td { border-bottom:0; }.tbl tbody tr:hover { background:#fafbfc; }.tbl tbody tr:has(.sel:checked) { background:#f3f6f9; }
.accounts-scroll th { position:sticky; top:0; z-index:3; }.accounts-scroll th:first-child,.accounts-scroll td:first-child { position:sticky; left:0; background:#fff; z-index:2; padding:10px 8px; }.accounts-scroll th:first-child { z-index:4; background:#fafafa; }
.tbl th[data-sort] { padding:0; }.sort-button { display:flex; align-items:center; gap:7px; border:0; border-radius:0; background:none; color:inherit; font:inherit; padding:12px 10px; width:100%; white-space:nowrap; }.sort-button span { color:#c3c7ce; }.sort-button:hover { background:#f3f4f5; }th[aria-sort=ascending] button,th[aria-sort=descending] button,th[aria-sort=ascending] span,th[aria-sort=descending] span { color:#30353d; }
.account-email { max-width:220px; overflow:hidden; text-overflow:ellipsis; }.account-detail-link { display:inline-block; max-width:220px; overflow:hidden; text-overflow:ellipsis; padding:0; border:0; background:none; color:var(--ink); cursor:pointer; font-size:12px; text-align:left; text-decoration:underline; text-decoration-color:#c8cdd4; text-underline-offset:3px; }.account-detail-link:hover,.account-detail-link:focus-visible { color:#315f9e; }.tbl td b { font-weight:550; }
.tbl .note-cell,.tbl .wrap-cell { white-space:normal; min-width:125px; max-width:320px; overflow-wrap:anywhere; }.tbl .note-cell { white-space:pre-wrap; }
.account-state { display:flex; gap:6px; align-items:center; font-size:11px; }.pill { display:inline-flex; align-items:center; gap:5px; color:#77808c; font-size:11px; }.pill::before { content:""; width:5px; height:5px; border-radius:50%; background:currentColor; }.pill.serving { color:#427c60; }.pill.cooling { color:#99763c; }.pill.fault { color:#b94f53; }.pill.attention { color:#577da4; }
.signal-strip { display:flex; gap:8px; margin-top:5px; }.signal.tip-label { display:inline-flex; gap:4px; align-items:center; text-decoration:none; font-size:9px; color:#8b919a; white-space:nowrap; }.life-dot { width:5px; height:5px; border-radius:50%; background:#a3a9b1; flex-shrink:0; }.life-dot.week { background:#5888b1; }.life-dot.long { background:#579272; }.life-dot.ended { background:#b94f53; }
.signal-meter { display:block; width:18px; height:3px; background:#eceef0; border-radius:1px; overflow:hidden; }.signal-meter b { display:block; height:100%; background:#9aa4ae; }.signal-meter.very-low b,.signal-meter.low b { background:#6ca681; }.signal-meter.mid b { background:#8364ae; }.signal-meter.high b,.signal-meter.full b { background:#bd6a6e; }
.util-value.very-low,.util-value.low { color:#4f8b6b; }.util-value.mid { color:#7655a5; }.util-value.high,.util-value.full { color:#b3575d; }.util-value.weekly-low { color:#3f8a63; }.util-value.weekly-mid { color:#7655a5; }.util-value.weekly-full { color:#b84d57; }.life-value.ended { color:#b3575d; }.life-value.long { color:#54816a; }
.history-link { padding:0; border:0; background:none; font-size:12px; text-decoration:underline; text-decoration-color:#bec5ce; text-underline-offset:3px; }
.account-cycle { border-top:1px solid var(--line); padding:16px 0 4px; }.account-cycle:first-of-type { border-top:0; padding-top:0; }.account-cycle h3 { font-size:13px; font-weight:550; }.account-cycle .section-heading { margin-bottom:6px; }.account-cycle > p { font-size:11px; margin-bottom:10px; }.account-daily { margin:8px 0 12px 12px; border-left:2px solid #eef0f3; padding-left:10px; }
.group-card { display:flex; align-items:center; gap:16px; padding:9px 12px; margin-bottom:10px; border:1px solid var(--line); border-radius:4px; font-size:12px; }.group-card button { margin-left:auto; padding:3px 10px; }.gdate { font-weight:500; }.gamnt { color:#6a7380; }
.empty-state { text-align:center !important; white-space:normal !important; color:#8b929c; padding:32px 16px !important; }.batch-row { cursor:pointer; }.cell-sub { margin-top:3px; font-size:10px; }
tr.reversed td { color:#8b929c; }tr.reversed td b,tr.reversed .batch-amount { text-decoration:line-through; text-decoration-color:#c3c9d1; }.reverse-banner { border:1px solid #e5d3a8; background:#fdf6e3; color:#8a6d1f; border-radius:4px; padding:9px 12px; font-size:12px; }
.day-row { cursor:pointer; }.day-row.open td { border-bottom-color:transparent; background:#f7f8f9; }.day-detail td { background:#f7f8f9; padding:4px 12px 12px !important; }
.pager { display:flex; justify-content:flex-end; align-items:center; gap:12px; padding:14px 0; }.pager button { font-size:11px; padding:4px 9px; }
.segmented { display:flex; gap:4px; flex-wrap:wrap; }.segmented button { border-color:transparent; background:none; color:#808690; padding:6px 12px; }.segmented button.active { color:#24282f; background:#f0f1f3; }
.archive-toolbar { margin-bottom:12px; }.archive-toolbar #prepayment-open { margin-left:auto; }#settlements-summary { margin:0 0 10px; font-size:11px; }
.prepayment-history { margin-top:12px; border-top:1px solid var(--line); padding-top:16px; }.prepayment-history > summary { cursor:pointer; color:#6e7580; font-size:12px; }.prepayment-history[open] > summary { margin-bottom:14px; }
/* Output value */
.usage-controls { display:flex; align-items:center; flex-wrap:wrap; gap:16px; margin-bottom:12px; }.usage-help { margin-left:auto; }.usage-controls input { padding:5px 9px; font-size:12px; }#usage-status { font-size:11px; margin-bottom:20px; }
#usage-result.loading { opacity:.5; pointer-events:none; }.usage-cards { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border:1px solid var(--line); border-radius:4px; margin-bottom:26px; }.usage-cards .dash-card + .dash-card { border-left:1px solid var(--line); }.usage-cards .dash-value { font-size:24px; }
.chart-card { margin-bottom:28px; }.chart-card .section-heading { margin-bottom:20px; }.chart-card .section-heading p { font-size:11px; }.model-card { padding-top:20px; border-top:1px solid var(--line); }.model-card .table-scroll { border:0; border-radius:0; }
.cost-chart { display:flex; height:220px; gap:14px; padding-bottom:28px; margin:28px 4px 0; }.chart-y { width:65px; flex-shrink:0; display:flex; flex-direction:column; justify-content:space-between; text-align:right; font-size:10px; color:#959ca6; transform:translateY(-6px); }.chart-plot { flex:1; min-width:0; position:relative; border-bottom:1px solid var(--line); }.chart-grid { position:absolute; inset:0; border-top:1px solid #f0f1f3; pointer-events:none; }.chart-grid::after { content:""; position:absolute; left:0; right:0; top:50%; border-top:1px solid #f0f1f3; }
.chart-bars { position:absolute; inset:0 0 -1px; display:flex; align-items:flex-end; gap:6px; }.chart-column { position:relative; display:flex; justify-content:center; align-items:flex-end; height:100%; flex:1; min-width:0; }.chart-bar { padding:0; border:0; border-radius:2px 2px 0 0; width:100%; max-width:48px; height:max(2px,var(--bar-height)); background:#b4bec9; min-width:0; }.chart-bar.peak { background:#778797; }.chart-bar:hover:not(:disabled),.chart-bar:focus-visible { background:#5d7082; }.chart-x { position:absolute; top:calc(100% + 9px); left:50%; transform:translateX(-50%); white-space:nowrap; font-size:10px; color:#8e96a0; }.chart-selection { margin:16px 0 0; min-height:20px; font-size:11px; color:#7c8591; }.cost-share { color:#7b818a; font-size:11px; }
/* Forms */
.settings-card { max-width:740px; }.settings-card .grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin:28px 0; }.settings-card label { color:#7b818a; font-size:12px; }.settings-card input { display:block; width:100%; margin-top:8px; }.settings-card .section-heading { justify-content:flex-start; }
.finance-dialog { border:1px solid #dfe2e6; border-radius:6px; width:min(480px,calc(100vw - 32px)); max-height:85vh; padding:24px; color:var(--ink); background:#fff; }.finance-dialog.wide { width:min(1040px,calc(100vw - 32px)); }.finance-dialog::backdrop { background:#0005; }.dialog-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:20px; }.dialog-head h2 { font-size:16px; }.dialog-head button { border:0; color:#8b929c; padding:3px 8px; }.finance-dialog label { display:flex; flex-direction:column; gap:7px; font-size:12px; margin:18px 0; }.finance-dialog textarea { resize:vertical; }.finance-dialog p { line-height:1.7; }.dialog-actions { display:flex; justify-content:flex-end; gap:9px; padding-top:18px; margin-top:18px; border-top:1px solid var(--line); }.batch-note { border-top:1px solid var(--line); padding-top:12px; margin-bottom:20px; }.batch-note p { white-space:pre-wrap; overflow-wrap:anywhere; margin:7px 0 0; }.batch-note b { font-size:12px; font-weight:500; }
#toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); background:#30353d; color:#fff; padding:10px 16px; border-radius:4px; font-size:12px; z-index:100; max-width:calc(100vw - 32px); width:max-content; white-space:pre-line; }
#login-view { display:flex; justify-content:center; align-items:center; min-height:100dvh; padding:24px; }.login-card { width:300px; }.login-card h1 { margin-bottom:24px; }.login-card input { width:100%; margin-bottom:12px; }.login-card button { width:100%; }.login-card .error { margin:12px 0 0; }
#login-view.onboard-login { flex-direction:column; gap:36px; }
.onboard-login .login-card { max-width:100%; }
.onboard-login h2 { margin-bottom:20px; }
.onboard-login .login-card + .login-card { border-top:1px solid var(--line); padding-top:24px; }
@media (max-width:1100px) { .dash-card { padding:16px 12px; }.dash-value { font-size:22px; }.estimate-panel { gap:24px; }.estimate-main { min-width:175px; }.estimate-breakdown { gap:16px; grid-template-columns:repeat(3,minmax(0,1fr)); }.estimate-breakdown strong { font-size:16px; }.who #user-name { display:none; } }
@media (max-width:700px) {
  header { flex-wrap:wrap; gap:0; padding:0 16px; }nav { width:100%; justify-content:space-between; gap:18px; }nav .tab { padding:13px 0 11px; font-size:12px; }.who { margin-left:auto; padding:7px 0; gap:10px; }.who button { font-size:11px; padding:2px 7px; }#poll-info { font-size:10px; }main { padding:18px 16px 28px; }
  .dash { grid-template-columns:repeat(3,minmax(0,1fr)); }.dash > .dash-card { border-left:0 !important; padding:12px; }.dash > .dash-card:nth-child(n+4) { border-top:1px solid var(--line); }.dash > .dash-card:nth-child(3n+2),.dash > .dash-card:nth-child(3n+3) { border-left:1px solid var(--line) !important; }.dash-card:last-child:nth-child(3n+1) { grid-column:1/-1; display:flex; justify-content:space-between; align-items:center; }.dash-card:last-child:nth-child(3n+1) .dash-label { margin:0; }.dash-value { font-size:21px; }.dash-label { font-size:11px; margin-bottom:8px; }
  .weekly-strip { gap:20px; padding:13px 0; }.weekly-strip > .tip-label { font-size:11px; }.weekly-stat { gap:8px; }.weekly-stat strong { font-size:18px; }#weekly-coverage { display:none; }
  .toolbar { gap:10px; }#accounts-summary { flex-basis:100%; font-size:11px; }#account-search { flex:1; width:120px; }.toolbar button { font-size:11px; }.accounts-scroll { max-height:65vh; }.tbl td,.tbl th { padding:10px; }.group-card { gap:10px; font-size:11px; }.group-card button { font-size:11px; }
  .finance-cards { grid-template-columns:1fr; margin-bottom:18px; }.finance-cards .dash-card { display:flex; justify-content:space-between; align-items:center; padding:13px 0; border-left:0; }.finance-cards .dash-card + .dash-card { border-left:0; border-top:1px solid #f1f2f4; }.finance-cards .dash-label { margin:0; }.finance-cards .dash-value { font-size:21px; }.metric-heading { gap:12px; }
  .estimate-panel { display:block; margin-bottom:18px; padding-bottom:18px; }.estimate-main { display:grid; grid-template-columns:1fr auto; align-items:center; }.estimate-main .dash-label { margin:0; }.estimate-main .muted { grid-column:1/-1; }.estimate-total { font-size:23px; }.estimate-breakdown { margin-top:22px; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }.estimate-breakdown strong { font-size:16px; }.estimate-breakdown > div:last-child { grid-column:1/-1; display:flex; justify-content:space-between; border-top:1px solid #eff0f2; padding-top:12px; }.estimate-breakdown > div:last-child strong { margin:0; }
  .archive-toolbar .segmented { flex:1; gap:0; }.archive-toolbar .segmented button { padding:6px 9px; font-size:11px; }.archive-toolbar #prepayment-open { margin-left:0; }.archive-toolbar #finance-refresh { margin-right:auto; }.pager button { font-size:10px; }.pager .muted { font-size:11px; }
  .usage-controls { gap:10px; }.usage-controls .segmented { gap:0; }.usage-controls .segmented button { padding:6px 10px; font-size:11px; }.usage-help { font-size:10px !important; }.usage-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }.usage-cards .dash-card { padding:14px; }.usage-cards .dash-card:nth-child(3) { border-left:0; }.usage-cards .dash-card:nth-child(n+3) { border-top:1px solid var(--line); }.usage-cards .dash-value { font-size:22px; }.cost-chart { height:190px; gap:8px; }.chart-y { width:51px; font-size:9px; }.chart-bars { gap:3px; }.chart-x { font-size:8px; }.chart-column:nth-child(even) .chart-x { visibility:hidden; }.chart-selection { font-size:10px; }
  .settings-card .grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }.finance-dialog { padding:20px; }.dialog-actions button { font-size:11px; }#toast { font-size:11px; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { transition:none !important; } }

/* restrained semantic accents */
#d-serving,#d-5h { color:#3f8a63; }
#d-load,#d-7d { color:#7655a5; }
#d-fable { color:#54799a; }
#d-verdict.very-low { color:#7d858e; }#d-verdict.low { color:#4f8b6b; }#d-verdict.good,#d-verdict.normal { color:#4f8b6b; }#d-verdict.high { color:#b3575d; }
.verdict-value { display:flex; align-items:baseline; gap:9px; min-height:30px; font-size:25px; line-height:1.2; font-weight:550; letter-spacing:-.5px; font-variant-numeric:tabular-nums; }
.verdict-tag { display:inline-block; font-size:inherit; line-height:inherit; font-weight:inherit; letter-spacing:inherit; vertical-align:baseline; }.verdict-tag.very-low { color:#7d858e; }.verdict-tag.low { color:#4f8b6b; }.verdict-tag.good,.verdict-tag.normal { color:#4f8b6b; }.verdict-tag.high { color:#b3575d; }
@media (max-width:1100px) { .verdict-value { font-size:22px; } }
@media (max-width:700px) { .verdict-value { font-size:21px; white-space:nowrap; } }
#f-prepaid { color:#54799a; }#f-settled { color:#7655a5; }#f-balance { color:#3f8a63; }

/* ---------- 上号操作台 ---------- */
.ob-main { max-width:860px; }
.ob-card { border:1px solid var(--line); border-radius:6px; padding:22px 24px; margin-bottom:20px; }
.ob-card h2 { font-size:15px; margin-bottom:12px; }
#work-card h2 { font-size:19px; }
.ob-big { font-size:15px; padding:10px 26px; margin-top:10px; }
.ob-steps { margin:0; padding-left:24px; }
.ob-steps li { margin-bottom:26px; }
.ob-steps li::marker { font-size:17px; font-weight:700; }
.ob-steps li > span { display:block; margin-bottom:12px; font-size:17px; font-weight:700; color:#161a20; line-height:1.6; }
.ob-link-row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.ob-link { flex:1; min-width:200px; display:block; padding:13px 14px; background:#f6f7f8; border:1px solid #d5d9de; border-radius:4px; font-size:14px; color:#24282f; text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ob-link:hover { border-color:#8794a3; background:#eff1f3; }
.ob-link-row button { font-size:15px; padding:11px 20px; }
#code-input { width:100%; margin-top:6px; padding:13px 14px; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:15px; line-height:1.6; }
.ob-actions { display:flex; gap:12px; margin-top:14px; }
.ob-actions button { font-size:16px; font-weight:600; padding:13px 28px; }
.ob-shift-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }
.ob-shift-head h2 { margin:0; }
.ob-summary { grid-template-columns:repeat(4,minmax(0,1fr)); margin:8px 0 18px; }
.ob-add-form { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:6px; }
.ob-add-form input { flex:1; min-width:150px; }
.ob-admin-link { font-size:12px; color:#6e7580; text-decoration:underline; text-underline-offset:3px; }
.ob-op-actions { white-space:nowrap; }
.ob-op-actions button { font-size:11px; padding:3px 8px; margin-right:6px; }

/* 状态栏 */
.ob-banner { position:sticky; top:54px; z-index:15; display:flex; align-items:center; gap:12px; padding:13px 28px; font-size:15px; font-weight:600; border-bottom:1px solid var(--line); }
.ob-banner .ob-timer { margin-left:auto; font-variant-numeric:tabular-nums; font-size:17px; }
.ob-banner.ob-good { background:#e9f5ee; color:#2e6b4e; border-bottom-color:#cfe6d8; }
.ob-banner.ob-mid { background:#fdf4e3; color:#8a6420; border-bottom-color:#f2e3bd; }
.ob-banner.ob-warn { background:#fbdfc8; color:#8f3f0c; border-bottom-color:#f0c49d; }
.ob-banner.ob-bad { background:#d93636; color:#fff; border-bottom-color:#b32222; animation:ob-flash 0.8s step-start infinite; }
@keyframes ob-flash { 50% { background:#b32222; } }
.ob-jump { display:inline-block; font-size:20px; animation:ob-jump 0.5s ease-in-out infinite alternate; }
@keyframes ob-jump { from { transform:translateY(0) scale(1); } to { transform:translateY(-7px) scale(1.25); } }

/* 档位标签 */
.ob-tier { display:inline-block; padding:2px 9px; border-radius:10px; font-size:11px; font-weight:500; white-space:nowrap; }
.ob-tier-excellent { background:#e9f5ee; color:#2e6b4e; }
.ob-tier-ok { background:#fdf4e3; color:#8a6420; }
.ob-tier-slow { background:#fbe9e9; color:#b33636; }

@media (max-width:700px) {
  .ob-banner { padding:11px 16px; font-size:13px; top:0; }
  .ob-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ob-card { padding:16px; }
}
@media (prefers-reduced-motion:reduce) { .ob-banner.ob-bad,.ob-jump { animation:none !important; } }
