.task-progress { margin-top: 14px; }
.task-progress-label { margin: 0 0 7px; color: var(--accent); font-size: 12px; font-variant-numeric: tabular-nums; }
.task-progress-bar { display: block; width: 100%; height: 6px; border: 0; border-radius: 8px; overflow: hidden; accent-color: var(--accent); background: var(--line); }
.task-progress-bar::-webkit-progress-bar { background: var(--line); border-radius: 8px; }
.task-progress-bar::-webkit-progress-value { background: var(--accent); border-radius: 8px; }
.task-progress-bar::-moz-progress-bar { background: var(--accent); border-radius: 8px; }

:root {
  color-scheme: light;
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-synthesis: none;
  line-height: 1.6;
  --page-bg: #f7f9fb;
  --text: #263643;
  --surface-bg: #fff;
  --input-bg: #fff;
  --accent: #167a76;
  --accent-hover: #106b67;
  --accent-text: #fff;
  --muted: #60707b;
  --line: #e0e7eb;
  --input-border: #c8d3db;
  --placeholder: #60707b;
  --focus-ring: #167a7624;
  --focus-outline: #3c8e84;
  --notice-bg: #eff8f5;
  --notice-text: #336a59;
  --warning-bg: #faf3e8;
  --warning-text: #886232;
  --badge-bg: #eaf5f1;
  --badge-text: #37705e;
  --error-text: #b34e46;
  --empty-icon: #6d8790;
  --table-head-bg: #f1f5f7;
  --code-bg: #f5f8f9;
  --card-shadow: #2b465407;
  --backdrop: #223b4c45;
  color: var(--text);
  background: var(--page-bg);
}

/* 两页共用主题；未保存选择时跟随系统，手动选择优先。 */
:root[data-theme="dark"] {
  color-scheme: dark;
  --page-bg: #11191f;
  --text: #e1e9ee;
  --surface-bg: #19252d;
  --input-bg: #131e25;
  --accent: #76d4c3;
  --accent-hover: #a0e5d8;
  --accent-text: #10332e;
  --muted: #a0b0bb;
  --line: #31414d;
  --input-border: #425763;
  --placeholder: #92a5b2;
  --focus-ring: #76d4c329;
  --focus-outline: #76d4c3;
  --notice-bg: #1c3931;
  --notice-text: #a2d9bc;
  --warning-bg: #392f21;
  --warning-text: #efcb8f;
  --badge-bg: #233d34;
  --badge-text: #a2d9bc;
  --error-text: #ffada5;
  --empty-icon: #91b2bc;
  --table-head-bg: #1d2c36;
  --code-bg: #131e25;
  --card-shadow: #00000026;
  --backdrop: #050c14a6;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    color-scheme: dark;
    --page-bg: #11191f;
    --text: #e1e9ee;
    --surface-bg: #19252d;
    --input-bg: #131e25;
    --accent: #76d4c3;
    --accent-hover: #a0e5d8;
    --accent-text: #10332e;
    --muted: #a0b0bb;
    --line: #31414d;
    --input-border: #425763;
    --placeholder: #92a5b2;
    --focus-ring: #76d4c329;
    --focus-outline: #76d4c3;
    --notice-bg: #1c3931;
    --notice-text: #a2d9bc;
    --warning-bg: #392f21;
    --warning-text: #efcb8f;
    --badge-bg: #233d34;
    --badge-text: #a2d9bc;
    --error-text: #ffada5;
    --empty-icon: #91b2bc;
    --table-head-bg: #1d2c36;
    --code-bg: #131e25;
    --card-shadow: #00000026;
    --backdrop: #050c14a6;
  }
}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,input,textarea,select{color:inherit}button,a,input,textarea{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.site-header{max-width:1120px;margin:auto;min-height:96px;display:flex;align-items:center;justify-content:space-between;padding:20px 32px;gap:18px}.brand{display:flex;align-items:center;gap:10px;font-weight:650;font-size:17px;white-space:nowrap}.brand-mark{display:block;flex-shrink:0;width:32px;height:32px;background:var(--accent);-webkit-mask:url("/assets/logo.svg") center/contain no-repeat;mask:url("/assets/logo.svg") center/contain no-repeat}.account{display:flex;gap:14px;align-items:center;font-size:13px;color:var(--muted)}.text-button{border:0;background:transparent;color:var(--accent);padding:4px 0;font-size:13px;white-space:nowrap}.main-shell{width:min(100% - 40px,640px);margin:36px auto 0}.intro{text-align:center;margin-bottom:32px}.eyebrow{font-size:12px;letter-spacing:3px;color:var(--accent);margin:0 0 12px}.intro h1{font-size:34px;letter-spacing:-1.2px;font-weight:650;margin:0 0 9px}.intro>p:last-child{font-size:14px;color:var(--muted);margin:0}.download-card{padding:30px 32px;background:var(--surface-bg);border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 32px var(--card-shadow)}.field{margin-bottom:20px}label,.payment-heading{font-size:14px;font-weight:550}label{display:block;margin-bottom:8px}input[type=text],input[type=tel],input[type=password],input[type=number],input[type=datetime-local],textarea,select{width:100%;padding:12px 14px;color:var(--text);border:1px solid var(--input-border);border-radius:9px;background:var(--input-bg);outline:none;transition:border-color .15s,box-shadow .15s;min-width:0}textarea{resize:vertical;min-height:110px;line-height:1.8}input::placeholder,textarea::placeholder{color:var(--placeholder);font-weight:400}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus-ring)}.field-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12px;color:var(--muted);margin-top:6px}.notice{padding:11px 13px;border-radius:9px;background:var(--notice-bg);color:var(--notice-text);font-size:13px;margin:0 0 18px}.notice.unsupported{background:var(--warning-bg);color:var(--warning-text)}.payment-area{border-top:1px solid var(--line);padding-top:20px}.payment-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;gap:10px}.payment-heading label{margin:0}.badge{background:var(--badge-bg);color:var(--badge-text);border-radius:5px;padding:2px 7px;font-size:11px}.field-help{font-size:12px;color:var(--muted);margin:7px 0 0}.muted{color:var(--muted);font-size:12px;font-weight:400}.consent{display:flex;align-items:flex-start;gap:8px;color:var(--muted);font-size:12px;font-weight:400;margin:24px 0 18px}.consent input{margin:4px 0 0;accent-color:var(--accent);flex-shrink:0}.primary-button{background:var(--accent);color:var(--accent-text);width:100%;border:0;border-radius:10px;padding:13px 18px;font-size:15px;font-weight:550;display:flex;align-items:center;justify-content:space-between;gap:10px;transition:background .15s}.primary-button:hover{background:var(--accent-hover)}.under-button{margin:10px 0 0;text-align:center;font-size:11px;color:var(--muted)}.error{color:var(--error-text);font-size:13px;margin:8px 0 12px}.tasks-section{margin-top:34px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}h2{font-size:17px;font-weight:600;margin:0}.empty-state{text-align:center;padding:25px;border:1px dashed var(--input-border);border-radius:12px;color:var(--muted)}.empty-icon{font-size:25px;color:var(--empty-icon);line-height:1}.empty-state p{font-size:13px;margin:5px 0}.empty-state>span:last-child{font-size:11px}.task{background:var(--surface-bg);border:1px solid var(--line);padding:16px 18px;border-radius:11px;margin-bottom:10px}.task-head{display:flex;justify-content:space-between;gap:12px;font-size:13px}.task-title{overflow-wrap:anywhere;font-weight:550}.task-status{color:var(--accent);white-space:nowrap;font-size:12px}.task-meta{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:var(--muted);margin-top:7px}.task-actions{display:flex;gap:15px;margin-top:10px}.task-note{font-size:12px;color:var(--muted);margin:7px 0 0}.help-section{margin:28px 0 18px}details{border-bottom:1px solid var(--line);padding:12px 0}summary{font-size:12px;color:var(--muted);cursor:pointer}details p{font-size:12px;color:var(--muted);padding:0 15px;line-height:1.8}footer{text-align:center;color:var(--muted);font-size:11px;padding:24px 20px 32px}dialog{width:min(100% - 40px,400px);padding:32px;border:1px solid var(--line);border-radius:16px;background:var(--surface-bg);color:var(--text)}dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(3px)}dialog p{font-size:14px;color:var(--muted)}dialog .primary-button{margin-top:24px}.dialog-close{position:absolute;right:18px;top:9px;font-size:25px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--focus-outline);outline-offset:4px}.admin-shell{width:min(100% - 48px,1040px);margin:32px auto}.admin-title{margin-bottom:25px}.admin-title h1{font-size:28px;font-weight:600;margin:0}.admin-panel{background:var(--surface-bg);border:1px solid var(--line);border-radius:14px;padding:25px;margin:20px 0}.admin-grid{display:grid;grid-template-columns:2fr 1fr 1fr 2fr;gap:16px;align-items:start}.admin-grid label{font-size:12px}.admin-grid input{font-size:13px}.admin-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:22px}.admin-actions .primary-button{width:auto;min-width:140px;justify-content:center}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap}th,td{text-align:left;border-bottom:1px solid var(--line);padding:13px 12px;font-weight:400}th{font-size:11px;color:var(--muted);background:var(--table-head-bg)}.admin-login{max-width:390px;margin:90px auto}.admin-login input{margin-bottom:18px}.admin-login h1{font-size:24px;margin:0 0 25px}.codes-table{max-height:320px;margin:12px 0}.redemption-code{font-family:ui-monospace,monospace}.text-button.danger-button{color:var(--error-text)}.grant-controls{display:flex;gap:9px;align-items:center}.grant-controls input{width:78px;padding:5px 8px;font-size:12px}@media(max-width:640px){.site-header{min-height:72px;padding:17px 20px}.brand{font-size:15px}.brand-mark{width:28px;height:28px}.account{gap:8px;font-size:11px}.main-shell{margin-top:26px;width:calc(100% - 32px)}.intro{margin-bottom:24px}.intro h1{font-size:27px;letter-spacing:-.8px}.intro>p:last-child{font-size:12px}.eyebrow{font-size:10px;letter-spacing:2px}.download-card{padding:23px 20px;border-radius:14px}.field-bottom{font-size:10px}.text-button{font-size:12px}.tasks-section{margin-top:28px}.admin-shell{width:calc(100% - 32px);margin-top:20px}.admin-grid{grid-template-columns:1fr 1fr}.admin-grid .wide{grid-column:1/-1}.admin-panel{padding:20px}.admin-login{margin-top:50px}.admin-title h1{font-size:24px}.task-meta{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:18px;flex-wrap:wrap}
.theme-switch{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);border-radius:9px;background:var(--surface-bg);flex-shrink:0}
.theme-switch button{border:0;border-radius:6px;padding:5px 9px;min-height:32px;font-size:12px;background:transparent;color:var(--muted);white-space:nowrap}
.theme-switch button[aria-pressed="true"]{background:var(--badge-bg);color:var(--badge-text);font-weight:600}
.theme-switch button:hover{color:var(--accent)}
.console-label{font-size:12px;color:var(--muted);font-weight:400}
@media(max-width:640px){.site-header{flex-wrap:wrap;gap:12px}.header-actions{gap:10px;margin-left:auto}.account:has(#account-label:not(:empty)){flex-basis:100%;justify-content:flex-end}.theme-switch button{padding:5px 8px}.brand{flex-wrap:wrap;row-gap:2px}}
@media(max-width:440px){.site-header{align-items:flex-start}.header-actions{justify-content:space-between;flex-basis:100%;margin-left:0}.theme-switch button{min-height:36px}.console-label{font-size:11px}}

.batch-actions{display:flex;align-items:center;gap:14px}
.delete-dialog-actions{display:flex;align-items:center;justify-content:flex-end;gap:24px;margin-top:24px}
.delete-dialog-actions .primary-button{width:auto;margin:0;justify-content:center}
.delete-dialog-actions .delete-confirm{background:var(--error-text);color:var(--surface-bg)}
#delete-message{overflow-wrap:anywhere}
.download-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.download-stats>div{padding:18px 20px;border:1px solid var(--line);border-radius:12px;background:var(--surface-bg)}.download-stats span{display:block;font-size:12px;color:var(--muted)}.download-stats strong{display:block;font-size:28px;font-weight:600;margin-top:10px}.download-filters{display:flex;gap:16px;align-items:center}.download-filters select{max-width:160px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;color:var(--text);background:var(--surface-bg)}.downloads-table td:first-child{white-space:normal;min-width:230px;max-width:320px;overflow-wrap:anywhere}.download-secondary{margin-top:5px;font-size:11px}.download-row-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;min-width:120px}.study-dialog{width:min(1000px,calc(100vw - 32px));max-width:none;max-height:85vh;overflow:auto}.study-meta{display:grid;grid-template-columns:130px 1fr;gap:12px 20px;font-size:13px}.study-meta dt{color:var(--muted)}.study-meta dd{margin:0;overflow-wrap:anywhere}.console-nav{margin-top:16px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:640px){.download-stats{grid-template-columns:repeat(2,1fr)}.download-stats>div:last-child{grid-column:1/-1}.download-stats strong{font-size:23px}.download-filters{gap:10px}.study-meta{grid-template-columns:1fr;gap:4px}.study-meta dd{margin-bottom:12px}}

.download-search{display:flex;gap:12px;align-items:center;max-width:620px;margin:16px 0}.download-search input{flex:1;min-width:0}.download-secondary{overflow-wrap:anywhere}#failure-content dd{white-space:pre-wrap}

.node-deployments { display: grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap: 10px; }
.node-deployments label { display: flex; align-items: center; gap: 8px; }
.node-deployments input { width: auto; margin: 0; }
#node-token { width: 100%; font-family: monospace; overflow-wrap: anywhere; }

.field-bottom{justify-content:flex-end}
.task-heading{min-width:0}.task-title{margin:0;font-size:15px;line-height:1.5;font-weight:600}.task-summary{margin:5px 0 0;font-size:12px;line-height:1.65;color:var(--muted);overflow-wrap:anywhere}.task-status{padding-top:3px}.task-meta{row-gap:4px}
.verification-options{margin:0 0 22px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.verification-options summary{cursor:pointer;font-size:14px;font-weight:500}
.verification-options select{width:100%;margin:12px 0;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-bg);color:var(--text)}
.verification-options .field{margin:16px 0 0}
#inputs-dialog{width:min(520px,calc(100vw - 32px));max-height:85vh;overflow:auto}
#request-content dd{white-space:pre-wrap;overflow-wrap:anywhere}
