/* 2026-09-09 合并版唯一配色入口。旧令牌保留兼容，新增色值仅在此定义。 */
:root{
 --deep-bg:#3d5257;--deep-surface:#4b5e63;--deep-border:#68787c;--deep-input-bg:#324347;
 --deep-ink:#ffd9c2;--deep-sub:#d6bdac;--deep-weak:#a89c92;
 --lite-bg:#faf2e8;--lite-card:#ffffff;--lite-border:#ccd6d9;
 --lite-ink:#3d5257;--lite-sub:#476066;--lite-weak:#72949c;
 --pressed:#344145;--ink-rgb:61,82,87;--shadow-rgb:30,42,50;--warm-rgb:255,217,194;
 --button-active:#f4f7f7;--button-disabled:#eef1f1;--button-disabled-ink:#94a5a9;
 --axis-ink:#1e2a32;--atmosphere-blue-rgb:84,120,158;--light-hover:#eaf0f1;
 --accent:#e8541f;--accent-bright:#ff8a45;
 --ink:var(--lite-ink);--sub:var(--lite-sub);--muted:var(--lite-sub);--faint:var(--lite-weak);
 --paper:var(--lite-bg);--cream:var(--lite-bg);--bg:var(--lite-bg);--card:var(--lite-card);--white:var(--lite-card);
 --line:var(--lite-border);--line-warm:var(--lite-border);--line-strong:var(--lite-border);
 --brand:var(--deep-bg);--deep:var(--lite-ink);--blue:var(--lite-sub);
 --b1:var(--lite-sub);--b2:var(--deep-bg);--b3:var(--pressed);
 --indigo-1:var(--lite-sub);--indigo-2:var(--deep-bg);--indigo-3:var(--pressed);
 --grad-topbar:var(--deep-bg);/* Legacy token name; solid surface, not a gradient. */
 --space:var(--deep-bg);--mist:var(--deep-bg);--warm:var(--accent-bright);
}
/* 背景氛围例外：保留原渐变形状，只同步青黛色值；不用于实体顶栏/按钮。 */
.stage,.greeting{background-color:var(--deep-bg);background-image:radial-gradient(ellipse at 50% 22%,rgba(var(--atmosphere-blue-rgb),.24),transparent 48%),linear-gradient(115deg,var(--pressed) 0%,var(--deep-bg) 24%,var(--deep-bg) 70%,var(--pressed) 89%,var(--axis-ink) 100%);color:var(--deep-ink)}
.topbar,.dsh-topbar{background:var(--deep-bg);color:var(--deep-ink)}
.topbar .gitem,.dsh-topbar .tb-home,.dsh-topbar .tb-right a,.dsh-topbar .tb-switch a{color:var(--deep-ink)}
/* 🔴 2026-09-14 爆文接线后暴露的洞：上面那行 .topbar 把顶栏刷成深底，
   但补浅色的这一行只认主站的子元素类名（.gitem）。爆文顶栏的子元素叫 .logo / .tb-link，
   它们各自写着 color:var(--ink) / var(--sub) —— 这两个令牌在第 11 行已被重映射成深色，
   于是深字压深底，整条顶栏隐形（实测对比度 13.64 → 1.0，就是同色）。
   下面三行只新增选择器，不改上面任何一条，主站零影响。 */
.topbar .logo,.topbar>span,.topbar .tb-link{color:var(--deep-ink)}
.topbar .logo small{color:var(--deep-sub)}
.topbar .tb-link:hover{background:var(--pressed);color:var(--deep-ink)}
.topbar .avatar,.dsh-topbar .tb-avatar,.dsh-topbar .tb-switch a.on{background:var(--deep-ink);color:var(--lite-ink)}
.topbar .divider,.dsh-topbar .tb-sep{background:var(--deep-border)}
.btn,.ec-go,.ec-go.up{background:var(--pressed);color:var(--deep-ink)}
.greeting .hub-hi,.greeting .hub-hi b,.greeting .tagline{color:var(--deep-ink)}
.greeting .hub-sub>div:last-child{color:var(--deep-sub)!important}
.hub-hi{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:760px){.greeting .hub-hi{max-width:calc(100% - 65px)}}
[data-surface=home] .ec-glance{background:var(--lite-bg);color:var(--lite-sub)}
[data-surface=home] .ec-glance b{color:inherit}
[data-surface=home] .ec-desc{color:var(--lite-sub)}
[data-surface=home] .ecard.locked .ec-name,[data-surface=home] .ecard.locked .ec-desc{color:var(--lite-weak)}
[data-surface=home] .lock-pill{background:var(--deep-ink);color:var(--lite-ink);border-color:var(--lite-border)}
/* 登录深色面板/输入；白色主按钮是任务书明确例外。 */
[data-surface=login]{--orb:235px}
[data-surface=login] .orb-space{--orb:235px;margin-bottom:0}
[data-surface=login] .mid{padding-top:max(30px,calc((100svh - 810px)/2))}
[data-surface=login] .headline{margin-top:38px;margin-bottom:28px}
[data-surface=login] .headline .t,[data-surface=login] .headline .tagline{color:var(--deep-ink)}
[data-surface=login] .card{background:var(--deep-surface);border-color:var(--deep-border);color:var(--deep-ink)}
[data-surface=login] .field label{color:var(--deep-ink)}
/* 输入框＝「纸」：大叔 09-12 定「米白底、青黛字」。549 号换暖底后 #faf2e8 上 #3d5257 实测 7.44:1（仍 AAA）。 */
[data-surface=login] .field .in,[data-surface=login] .field .in:focus{background:var(--lite-bg);color:var(--lite-ink);border-color:var(--lite-border)}
[data-surface=login] .field .in:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(232,84,31,.18)}
[data-surface=login] .field .in::placeholder{color:var(--lite-weak)}
[data-surface=login] .hint,[data-surface=login] .foot,[data-surface=login] .brandbar{color:var(--deep-sub)}
[data-surface=login] .hint b{color:var(--deep-ink)}
[data-surface=login] .badges svg *{--indigo-2:var(--deep-ink);--indigo-3:var(--deep-ink)}
[data-surface=login] .news{background:var(--deep-input-bg);border-color:var(--deep-border);color:var(--deep-sub)}
[data-surface=login] .btn{background:var(--lite-card);color:var(--lite-ink);border:1px solid rgba(var(--ink-rgb),.22);box-shadow:0 10px 24px -10px rgba(var(--shadow-rgb),.22)}
[data-surface=login] .btn:hover{background:var(--lite-card);border-color:rgba(var(--ink-rgb),.42);box-shadow:0 12px 28px -10px rgba(var(--shadow-rgb),.3)}
[data-surface=login] .btn:active{background:var(--button-active);box-shadow:0 4px 12px -6px rgba(var(--shadow-rgb),.3)}
[data-surface=login] .btn:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px}
[data-surface=login] .btn:disabled{opacity:1;background:var(--button-disabled);color:var(--button-disabled-ink);border-color:rgba(var(--ink-rgb),.12);box-shadow:none}
/* 线框：仅色彩，无尺寸、间距、位置、字体或业务逻辑变更。 */
[data-surface=prototype] .top,[data-surface=prototype] .hero{background:var(--deep-bg);color:var(--deep-ink)}
[data-surface=prototype] .hero .muted{color:var(--deep-sub)}
[data-surface=prototype] .switch{background:var(--deep-surface)}
[data-surface=prototype] .switch button{background:transparent;color:var(--deep-ink)}
[data-surface=prototype] .switch button[aria-current=page],[data-surface=prototype] .hero .pill{background:var(--deep-ink);color:var(--lite-ink)}
[data-surface=prototype] .primary,[data-surface=prototype] .primary:hover:not(:disabled){background:var(--pressed);color:var(--deep-ink)}
[data-surface=prototype] .tabs button.active,[data-surface=prototype] .steps .hot{color:var(--deep-ink)}
[data-surface=prototype] button{border-color:var(--lite-border)}
[data-surface=prototype] button:hover:not(:disabled){border-color:var(--deep-bg)}
[data-surface=prototype] input,[data-surface=prototype] select,[data-surface=prototype] textarea{background:var(--lite-card);color:var(--lite-ink);border-color:var(--lite-border)}
[data-surface=prototype] input::placeholder,[data-surface=prototype] textarea::placeholder{color:var(--lite-weak)}
[data-surface=prototype] input:focus,[data-surface=prototype] select:focus,[data-surface=prototype] textarea:focus{border-color:var(--lite-ink);outline:none;box-shadow:0 0 0 3px rgba(var(--ink-rgb),.14)}
[data-surface=prototype] #live{background:var(--lite-card);color:var(--lite-ink)}
