/* ============================================================
   名思 · 星图设计系统 (Mingsi Starfield Design System)
   全站共享：色板 / 字体 / 间距 / 圆角 / 玻璃卡片 / 按钮 / 导航 / 表单 / 诊断题
   本文件在每个页面的样式表之后加载，只做视觉统一，不改变结构与功能。
   ============================================================ */
:root{
  color-scheme:dark;
  /* 色板 —— 深空蓝黑 + 星辉靛蓝 + 冰青 + 少量暖金点缀 */
  --ms-bg:#060a14;
  --ms-bg-2:#0a1020;
  --ms-surface:rgba(16,23,40,.66);
  --ms-surface-2:rgba(24,33,56,.72);
  --ms-surface-solid:#0e1527;
  --ms-border:rgba(150,172,224,.14);
  --ms-border-strong:rgba(150,172,224,.26);
  --ms-text:#e9eef8;
  --ms-text-2:#c5cee0;
  --ms-text-3:#a2adc4;
  --ms-accent:#8a94ff;
  --ms-accent-2:#5cc6ff;
  --ms-accent-soft:rgba(138,148,255,.14);
  --ms-accent-grad:linear-gradient(120deg,#8a94ff 0%,#6aa8ff 55%,#5cc6ff 100%);
  --ms-gold:#e9c77b;
  --ms-success:#5fd6a0;
  --ms-danger:#f2849a;
  --ms-warning:#f0c262;
  --ms-focus:0 0 0 3px rgba(122,150,255,.38);
  /* 字体 */
  --ms-font:"Inter","PingFang SC","Noto Sans SC","HarmonyOS Sans SC","Source Han Sans SC","Microsoft YaHei",system-ui,sans-serif;
  --ms-font-num:"Inter","SF Pro Display","PingFang SC","Noto Sans SC",system-ui,sans-serif;
  --ms-fs-xs:12px;--ms-fs-sm:13px;--ms-fs-md:14px;--ms-fs-lg:16px;--ms-fs-xl:20px;--ms-fs-2xl:28px;--ms-fs-3xl:40px;
  /* 间距 (4px 基准) */
  --ms-s1:4px;--ms-s2:8px;--ms-s3:12px;--ms-s4:16px;--ms-s5:20px;--ms-s6:24px;--ms-s8:32px;--ms-s10:40px;
  /* 圆角 / 阴影 / 模糊 */
  --ms-r-sm:8px;--ms-r-md:12px;--ms-r-lg:18px;--ms-r-xl:24px;--ms-r-pill:999px;
  --ms-shadow:0 18px 48px -18px rgba(0,0,0,.7),0 1px 0 rgba(255,255,255,.04) inset;
  --ms-shadow-lg:0 30px 80px -24px rgba(0,0,0,.8),0 1px 0 rgba(255,255,255,.05) inset;
  --ms-blur:saturate(140%) blur(18px);
  --ms-subject:#8a94ff;--ms-spring:cubic-bezier(.34,1.56,.64,1);
  --ms-ease:cubic-bezier(.23,1,.32,1);

  /* 把各页面原有变量映射到统一令牌 */
  --bg:var(--ms-bg);--bg2:var(--ms-bg-2);--surface:var(--ms-surface-solid);--surface2:#141d33;
  --line:var(--ms-border);--text:var(--ms-text);--muted:var(--ms-text-2);--faint:var(--ms-text-3);
  --ink:var(--ms-text);--ink-dim:var(--ms-text-2);--ink-faint:var(--ms-text-3);
  --glass:var(--ms-surface);--glass-2:var(--ms-surface-2);--glass-brd:var(--ms-border);--glass-brd-2:var(--ms-border-strong);
  --accent:var(--ms-accent);--accent-2:var(--ms-accent-2);--cool:var(--ms-accent-2);
  --r-lg:var(--ms-r-lg);--r-md:var(--ms-r-md);--r-sm:var(--ms-r-sm);
  --shadow:var(--ms-shadow-lg);
  --sans:var(--ms-font);--serif:var(--ms-font);--display:var(--ms-font);--mono:var(--ms-font-num);
  font-family:var(--ms-font);
}
[data-theme="light"]{
  --ms-bg:#eef1f8;--ms-bg-2:#e4e9f4;--ms-surface:rgba(255,255,255,.7);--ms-surface-2:rgba(255,255,255,.82);--ms-surface-solid:#fff;
  --ms-border:rgba(40,60,120,.12);--ms-border-strong:rgba(40,60,120,.22);
  --ms-text:#18203a;--ms-text-2:#3f4862;--ms-text-3:#555e76;--ms-accent:#5b63e6;--ms-accent-2:#2f86e8;
  --ms-accent-soft:rgba(91,99,230,.1);--ms-accent-grad:linear-gradient(120deg,#5b63e6,#2f86e8);
  --ms-shadow:0 16px 40px -22px rgba(40,50,100,.35);--ms-shadow-lg:0 24px 60px -26px rgba(40,50,100,.4);
  --surface2:#f3f5fb;
}

/* ---------- 基础 ---------- */
html,body{font-family:var(--ms-font);color:var(--ms-text);-webkit-font-smoothing:antialiased;font-synthesis:none}
body{background-color:var(--ms-bg)}
body:not(:has(canvas)){background:
  radial-gradient(1100px 620px at 85% -10%,rgba(92,120,255,.16),transparent 60%),
  radial-gradient(900px 520px at -10% 110%,rgba(60,190,255,.09),transparent 60%),var(--ms-bg)}
h1,h2,h3,h4{font-family:var(--ms-font);letter-spacing:.01em;color:var(--ms-text)}
h1{font-weight:650}h2,h3{font-weight:600}
::selection{background:rgba(138,148,255,.35)}
:focus-visible{outline:none!important;box-shadow:var(--ms-focus)!important;border-radius:var(--ms-r-sm)}
*{scrollbar-width:thin;scrollbar-color:rgba(150,172,224,.25) transparent}
::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:rgba(150,172,224,.22);border-radius:8px}
.eyebrow,.portal-kicker,.panel-kind,.panel-overline{font-size:var(--ms-fs-xs)!important;letter-spacing:.14em!important;color:var(--ms-accent-2)!important;text-transform:uppercase;font-weight:500}
.fraunces,b.fraunces{font-family:var(--ms-font-num)!important;font-weight:650}

/* ---------- 玻璃面板 / 卡片 ---------- */
.glass,.panel,.sidebar,.overlay-card,.saved-dialog,.heatmap-card,.mobile-sheet-inner,
.login-dialog,.drawer,.about-dialog,.diagnostic-dialog,.constellation-panel,.domain-panel,
.subject-entry,.dh-galaxy,.dh-route,.dh-card,.dh-question,.dh-review,.dh-resume,.chain-card,.search-results,.tooltip,.star-tooltip{
  background:var(--ms-surface)!important;
  border:1px solid var(--ms-border)!important;
  border-radius:var(--ms-r-lg)!important;
  box-shadow:var(--ms-shadow);
  -webkit-backdrop-filter:var(--ms-blur);backdrop-filter:var(--ms-blur);
}
.drawer{border-radius:0!important;border-top:0!important;border-bottom:0!important}
.login-dialog,.about-dialog,.diagnostic-dialog,.overlay-card,.saved-dialog{box-shadow:var(--ms-shadow-lg);border-radius:var(--ms-r-xl)!important}
dialog::backdrop{background:rgba(3,6,14,.45)}
.tooltip,.star-tooltip{border-radius:var(--ms-r-md)!important;font-size:var(--ms-fs-sm)}

/* ---------- 顶部导航 ---------- */
.topbar,.header,.portal-header,.card-nav{font-family:var(--ms-font)}
.header{background:rgba(6,10,20,.72)!important;border-bottom:1px solid var(--ms-border)!important;-webkit-backdrop-filter:var(--ms-blur);backdrop-filter:var(--ms-blur)}
.card-nav{background:var(--ms-surface)!important;border:1px solid var(--ms-border)!important;border-radius:var(--ms-r-lg)!important;box-shadow:var(--ms-shadow)!important;-webkit-backdrop-filter:var(--ms-blur);backdrop-filter:var(--ms-blur)}
.topbar{background:var(--ms-surface)!important;border:1px solid var(--ms-border)!important;border-radius:var(--ms-r-lg)!important;box-shadow:var(--ms-shadow)}
.brand,.portal-brand,.navigation-brand{color:var(--ms-text)!important;font-weight:650}
.brand-sub,.portal-brand small,.navigation-brand-sub,.brand-name small{color:var(--ms-text-3)!important;border-color:var(--ms-border-strong)!important}
.nav,.portal-header nav a,.navigation-home-link{color:var(--ms-text-2)!important;transition:color .2s var(--ms-ease)}
.nav:hover,.portal-header nav a:hover{color:var(--ms-text)!important}
.nav.active,.portal-header nav [aria-current]{color:var(--ms-text)!important}
.nav.active:after{background:var(--ms-accent-grad)!important;border-radius:2px}
.portal-header nav [aria-current]{background:var(--ms-accent-soft);padding:6px 12px;border-radius:var(--ms-r-pill)}

/* ---------- 按钮 ---------- */
.primary,.btn-primary,.enter-subject,.galaxy-entry,.dh-subject-actions a:first-child{
  background:var(--ms-accent-grad)!important;color:#fff!important;border:0!important;
  border-radius:var(--ms-r-md)!important;font-weight:600!important;letter-spacing:.02em;
  box-shadow:0 10px 26px -10px rgba(106,140,255,.7)!important;transition:transform .2s var(--ms-ease),box-shadow .2s var(--ms-ease),filter .2s}
.primary:hover,.btn-primary:hover,.enter-subject:hover,.galaxy-entry:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 14px 32px -10px rgba(106,140,255,.85)!important}
.secondary,.btn-ghost,.enter-diagnostic,.text-btn,.home-view-btn,.ls-btn,.stage-btn,.tool-button,.overlay-close,.panel-close,.close,.icon-btn,.menu-btn,.cosmos-return,.motion-toggle,.legacy-link{
  border-radius:var(--ms-r-md)!important;transition:background .2s var(--ms-ease),color .2s,border-color .2s}
.secondary,.btn-ghost,.enter-diagnostic,.home-view-btn,.cosmos-return,.motion-toggle{
  background:rgba(255,255,255,.04)!important;border:1px solid var(--ms-border-strong)!important;color:var(--ms-text)!important}
.secondary:hover,.btn-ghost:hover,.enter-diagnostic:hover,.home-view-btn:hover,.cosmos-return:hover,.motion-toggle:hover,
.tool-button:hover,.icon-btn:hover,.menu-btn:hover,.text-btn:hover,.ls-btn:hover,.stage-btn:hover{
  background:var(--ms-accent-soft)!important;border-color:rgba(138,148,255,.4)!important;color:var(--ms-text)!important}
.tool-button,.text-btn{color:var(--ms-text-2)!important}
.tool-button small{color:var(--ms-accent-2)!important}
.ls-btn.active,.stage-btn.active,.stage-btn[aria-pressed="true"],.ls-btn[aria-pressed="true"],.chip.active,.chip[aria-pressed="true"]{
  background:var(--ms-accent-soft)!important;color:var(--ms-text)!important;border-color:rgba(138,148,255,.5)!important}

/* ---------- 标签 / 胶囊 ---------- */
.chip,.pub-chip,.dh-question-tag,.demo-tag,.subject-mark{border-radius:var(--ms-r-pill)!important;border:1px solid var(--ms-border)!important;background:rgba(150,172,224,.07)!important;color:var(--ms-text-2)!important}
.subject-mark{border-radius:10px!important;color:var(--ms-text)!important;background:var(--ms-accent-soft)!important;border-color:rgba(138,148,255,.3)!important}

/* ---------- 表单 ---------- */
input[type="text"],input[type="search"],input:not([type]),.field,#nickname,select,textarea,.search input,.navigation-search input{
  font-family:var(--ms-font);background:rgba(8,13,26,.6)!important;border:1px solid var(--ms-border-strong)!important;
  border-radius:var(--ms-r-md)!important;color:var(--ms-text)!important;transition:border-color .2s,box-shadow .2s}
input:focus,.field:focus,select:focus,textarea:focus{border-color:rgba(138,148,255,.6)!important;box-shadow:var(--ms-focus)!important;outline:none}
input::placeholder{color:var(--ms-text-3)}
.field-label{color:var(--ms-text-2)!important}
.role-picker span{border-radius:var(--ms-r-md)!important;border:1px solid var(--ms-border)!important;color:var(--ms-text-2)!important;transition:all .2s var(--ms-ease)}
.role-picker input:checked+span{color:var(--ms-text)!important;background:var(--ms-accent-soft)!important;border-color:rgba(138,148,255,.55)!important}
.login-dialog h2{font-weight:650}
.login-dialog p,.login-dialog small{color:var(--ms-text-3)!important}

/* ---------- 学科入口卡（subjects.html） ---------- */
.subject-entry{transition:transform .25s var(--ms-ease),border-color .25s,box-shadow .25s}
.subject-entry:hover{transform:translateY(-3px);border-color:rgba(138,148,255,.38)!important;box-shadow:0 24px 50px -22px rgba(80,110,255,.45)!important}
.entry-number,.portal-count{font-family:var(--ms-font-num);color:var(--ms-text-3)}
.portal-count strong,.portal-count b{background:var(--ms-accent-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.portal-intro h1{font-weight:650!important;letter-spacing:.02em}
.entry-meta,.portal-description{color:var(--ms-text-3)!important}

/* ---------- 诊断题 UI ---------- */
.choice,.dh-choice{border-radius:var(--ms-r-md)!important;border:1px solid var(--ms-border)!important;background:rgba(255,255,255,.03)!important;color:var(--ms-text)!important;transition:all .2s var(--ms-ease)}
.choice:hover,.dh-choice:hover{border-color:rgba(138,148,255,.45)!important;background:var(--ms-accent-soft)!important}
.choice.correct,.dh-choice.is-correct{border-color:rgba(95,214,160,.6)!important;background:rgba(95,214,160,.1)!important}
.choice.wrong,.dh-choice.is-wrong{border-color:rgba(242,132,154,.6)!important;background:rgba(242,132,154,.1)!important}
.option-index{border-radius:8px;background:var(--ms-accent-soft);color:var(--ms-accent)}
.progress-track,.dh-progress,.sb-track{background:rgba(150,172,224,.12)!important;border-radius:var(--ms-r-pill)!important;overflow:hidden}
.progress-track>*,.dh-progress>*,.sb-fill{background:var(--ms-accent-grad)!important;border-radius:inherit}
.answer-feedback,.dh-feedback,.dh-note,.dh-warning,.hint{border-radius:var(--ms-r-md)!important}
.dh-warning{border-color:rgba(240,194,98,.35)!important}

/* ---------- 统计数字 ---------- */
.intro-stats b,.real-stats b,.stats-grid b,.result-stat b,.sb-num,.dh-result-stats b{font-family:var(--ms-font-num);font-weight:650}
.intro-stats>*,.stats-grid>*{border-radius:var(--ms-r-md)!important;border-color:var(--ms-border)!important}

/* ---------- 吐司 / 加载 ---------- */
.toast{background:var(--ms-surface-2)!important;border:1px solid var(--ms-border-strong)!important;border-radius:var(--ms-r-pill)!important;-webkit-backdrop-filter:var(--ms-blur);backdrop-filter:var(--ms-blur)}
.loader-ring{border-top-color:var(--ms-accent)!important}

@media (max-width:720px){
  .subject-entry:hover{transform:none}
  .login-dialog{border-radius:var(--ms-r-xl)!important}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---------- 统一残留的暖金强调为星辉色 ---------- */
.role-picker input:focus-visible+span{outline:none!important;box-shadow:var(--ms-focus)}
.constellation-panel h2{color:var(--ms-text)!important;font-weight:600!important}
.constellation-actions button:first-child,.worked-example h3{color:var(--ms-accent-2)!important}
.star-label.constellation-label.current{color:#fff!important;border-color:rgba(138,148,255,.6)!important;background:rgba(30,36,70,.9)!important}
.scene-help button,#skip{border:1px solid var(--ms-border-strong)!important;background:var(--ms-surface-2)!important;color:var(--ms-text)!important;border-radius:var(--ms-r-pill)!important}
.subject-pill>span:first-child{color:var(--ms-accent-2)!important}


/* ============================================================
   第二轮：可读性 / 首页减负 / 学科色 / 动效
   ============================================================ */
:root{--subject:var(--ms-subject);--subject-rgb:138,148,255}

/* ---------- 可读性：正文 ≥14px，次级灰提亮（WCAG AA） ---------- */
p,li,dd,.panel-desc,.node-summary,.portal-description,.entry-meta,.login-dialog p,.drawer p,.help-item,.help-lead,
.dh-content p,.dh-note,.dh-feedback,.dh-card-meta,.question-title,.choice,.dh-choice,.panel-list li,.intro-sub{font-size:max(14px,1em)!important;line-height:1.7}
.sb-label,.field-label,.hm-legend-note,.age-hint{color:var(--ms-text-2)!important}
.intro-foot,.portal-footer,.login-dialog small,small{color:var(--ms-text-3)!important}

/* ---------- 登录卡：减弱背景模糊，让星系隐约可见 ---------- */
.login-dialog{-webkit-backdrop-filter:saturate(130%) blur(6px)!important;backdrop-filter:saturate(130%) blur(6px)!important;background:rgba(12,18,34,.72)!important}
.login-dialog::backdrop,dialog.login-dialog::backdrop{background:rgba(3,6,14,.18)!important;-webkit-backdrop-filter:blur(1.5px)!important;backdrop-filter:blur(1.5px)!important}

/* ---------- 首页 Hero：只留标题 / 一句话 / 一个主按钮 ---------- */
.page-home .intro{background:radial-gradient(80% 70% at 50% 46%,rgba(6,9,18,.05) 0%,rgba(6,9,18,.45) 70%,rgba(6,9,18,.8) 100%)!important}
.page-home .intro-inner{max-width:640px;padding:24px}
.intro-title{font-family:var(--ms-font)!important;font-weight:800!important;letter-spacing:.04em!important;background:linear-gradient(120deg,#fff 10%,#c9ceff 55%,#9fdcff)!important;-webkit-background-clip:text!important;background-clip:text!important}
.intro-sub{white-space:nowrap;color:var(--ms-text-2)!important;margin-bottom:28px!important}
@media (max-width:560px){.intro-sub{white-space:normal}}
#enter-btn{padding:14px 30px!important;font-size:16px!important;border-radius:var(--ms-r-pill)!important}
.entry-identity--compact{margin:18px auto 0!important;display:flex;justify-content:center;align-items:center;gap:10px;opacity:.9;font-size:13px}
.entry-identity--compact fieldset{display:inline-flex;gap:4px;border:1px solid var(--ms-border)!important;border-radius:var(--ms-r-pill);padding:3px!important;margin:0;background:rgba(10,15,30,.5)}
.entry-identity--compact fieldset label{padding:4px 12px;border-radius:var(--ms-r-pill);cursor:pointer;color:var(--ms-text-2)}
.entry-identity--compact fieldset label:has(input:checked){background:var(--ms-accent-soft);color:var(--ms-text)}
.entry-identity--compact fieldset input{position:absolute;opacity:0;width:1px;height:1px}
.entry-identity--compact #k12-nickname{width:190px!important;padding:6px 14px!important;border-radius:var(--ms-r-pill)!important;font-size:13px!important;background:rgba(10,15,30,.5)!important}
.intro-foot{font-size:12px!important;opacity:.8}

/* ---------- 控制台默认收起（桌面） ---------- */
.sidebar-toggle{position:fixed;left:14px;top:164px;z-index:23;display:inline-flex!important;align-items:center;gap:6px;height:36px;padding:0 12px!important;width:auto!important;
  background:var(--ms-surface)!important;border:1px solid var(--ms-border)!important;color:var(--ms-text-2)!important;font-size:13px;-webkit-backdrop-filter:var(--ms-blur);backdrop-filter:var(--ms-blur)}
.sidebar-toggle svg{width:16px;height:16px}
@media (min-width:881px){
  .page-home .sidebar{top:208px!important;max-height:calc(100dvh - 228px)!important;transition:transform .45s var(--ms-ease),opacity .3s}
  .page-home:not(.sidebar-open) .sidebar{transform:translateX(calc(-100% - 30px));opacity:0;pointer-events:none}
  .sidebar-open .sidebar-toggle{color:var(--ms-text)!important;border-color:rgba(138,148,255,.45)!important}
}
@media (max-width:880px){.sidebar-toggle{display:none!important}}

/* ---------- 鼠标视差 ---------- */
.page-home .aurora{transform:translate3d(calc(var(--px,0)*-36px),calc(var(--py,0)*-24px),0)}
/* v4.1：可交互的星图层（#graph-canvas / .nebula-stars）不再随鼠标位移，避免悬停提示与点击命中错位；视差只留给纯背景层 */
.page-home .galaxy-backdrop{transform:translate3d(calc(var(--px,0)*-14px),calc(var(--py,0)*-10px),0)}

/* ---------- 开场：粒子汇聚后标题淡入 ---------- */
.ms-intro-play #graph-canvas,.ms-intro-play .nebula-stars{animation:ms-galaxy-in 1.9s var(--ms-ease) both}
.ms-intro-play .intro-inner>*{animation:ms-rise .8s var(--ms-ease) both!important}
.ms-intro-play .intro-inner>:nth-child(1){animation-delay:1.25s!important}
.ms-intro-play .intro-inner>:nth-child(2){animation-delay:1.4s!important}
.ms-intro-play .intro-inner>:nth-child(3){animation-delay:1.55s!important}
.ms-intro-play .intro-inner>:nth-child(n+4){animation-delay:1.7s!important}
@keyframes ms-galaxy-in{0%{opacity:0;transform:scale(.82)}55%{opacity:0}100%{opacity:1;transform:none}}
@keyframes ms-rise{from{opacity:0;transform:translateY(14px);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}

/* ---------- 学科入口：九科强调色 / 整卡可点 / 星座 ---------- */
.subject-entry{position:relative;overflow:hidden;cursor:pointer;isolation:isolate}
.subject-entry::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;z-index:2;
  background:linear-gradient(115deg,transparent 30%,var(--subject) 50%,transparent 70%) 200% 0/250% 100% no-repeat;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .3s}
.subject-entry::after{content:"";position:absolute;right:-30%;top:-40%;width:80%;height:120%;z-index:-1;pointer-events:none;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--subject) 22%,transparent),transparent);opacity:.55;transition:opacity .35s}
.subject-entry:hover::before,.subject-entry:focus-within::before{opacity:1;animation:ms-sweep 1.1s var(--ms-ease) both}
.subject-entry:hover::after{opacity:1}
.subject-entry:hover,.subject-entry:focus-within{border-color:color-mix(in srgb,var(--subject) 45%,transparent)!important;box-shadow:0 26px 54px -24px color-mix(in srgb,var(--subject) 55%,transparent)!important}
@keyframes ms-sweep{from{background-position:200% 0}to{background-position:-60% 0}}
.subject-entry .subject-mark{color:var(--subject)!important;background:color-mix(in srgb,var(--subject) 14%,transparent)!important;border-color:color-mix(in srgb,var(--subject) 40%,transparent)!important}
.subject-entry h2{position:relative}
.subject-entry .entry-meta b{font-weight:600;color:var(--ms-text)}
.entry-constellation{position:absolute;right:14px;top:44px;width:120px;height:66px;z-index:0;pointer-events:none;opacity:.75}
.entry-constellation line{stroke:var(--subject);stroke-opacity:.35;stroke-width:.8}
.entry-constellation circle{fill:var(--subject);transform-box:fill-box;transform-origin:center}
.subject-entry:hover .entry-constellation circle{animation:ms-twinkle 1.4s ease-in-out var(--d) infinite}
.subject-entry:hover .entry-constellation line{stroke-opacity:.7;transition:stroke-opacity .4s}
@keyframes ms-twinkle{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(1.8)}}
.subject-entry .entry-actions{position:relative;z-index:3;display:flex;align-items:center;justify-content:space-between}
/* 整张卡片可点：把主链接的点击区扩展到整卡 */
.subject-entry .enter-subject{all:unset;cursor:pointer;font-size:14px;font-weight:600;color:var(--subject)!important;position:static!important;display:inline-flex;gap:6px;align-items:center}
.subject-entry .enter-subject::after{content:"";position:absolute;inset:-400px -400px -40px;z-index:-1}
.subject-entry .enter-subject span{transition:transform .25s var(--ms-ease)}
.subject-entry:hover .enter-subject span{transform:translateX(4px)}
.subject-entry .enter-diagnostic{all:unset;cursor:pointer;position:relative;z-index:4;font-size:13px;color:var(--ms-text-3)!important;padding:4px 2px;border-bottom:1px dashed transparent}
.subject-entry .enter-diagnostic:hover{color:var(--ms-text)!important;border-bottom-color:var(--ms-text-3)}
.subject-entry .enter-subject:focus-visible,.subject-entry .enter-diagnostic:focus-visible{box-shadow:var(--ms-focus)!important;border-radius:6px}

/* ---------- 学科页：学科色贯穿 ---------- */
html[data-subject] body{background:radial-gradient(900px 600px at 50% 40%,rgba(var(--subject-rgb),.10),transparent 70%),var(--ms-bg)!important}
html[data-subject] .eyebrow{color:var(--subject)!important}
html[data-subject] .primary{background:linear-gradient(120deg,color-mix(in srgb,var(--subject) 85%,#fff),var(--subject))!important;color:#0b1020!important;box-shadow:0 10px 26px -10px rgba(var(--subject-rgb),.7)!important}
html[data-subject] .role-picker input:checked+span{border-color:rgba(var(--subject-rgb),.6)!important;background:rgba(var(--subject-rgb),.12)!important}
html[data-subject] .nav.active:after{background:var(--subject)!important}

/* ---------- 按钮按压回弹 ---------- */
button,.primary,.btn-primary,.secondary,.btn-ghost,.galaxy-entry,.icon-btn,.ls-btn,.chip,.dh-choice,.choice{transition:transform .35s var(--ms-spring),background .2s,border-color .2s,color .2s,box-shadow .2s}
button:active:not(:disabled),.primary:active,.btn-primary:active,.galaxy-entry:active,.chip:active{transform:scale(.95)!important;transition-duration:.08s}

/* ---------- 诊断反馈 ---------- */
.ms-shake{animation:ms-shake .45s cubic-bezier(.36,.07,.19,.97) both}
@keyframes ms-shake{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(3px)}30%,50%,70%{transform:translateX(-5px)}40%,60%{transform:translateX(5px)}}
.ms-pop{animation:ms-pop .5s var(--ms-spring)}
@keyframes ms-pop{0%{transform:scale(1)}40%{transform:scale(1.03)}100%{transform:scale(1)}}
.dh-choice.is-correct,.choice.correct{box-shadow:0 0 0 1px rgba(95,214,160,.5),0 0 24px -4px rgba(95,214,160,.55)!important}
.ms-node-lit{animation:ms-node-lit 1.6s ease-out}
@keyframes ms-node-lit{0%{text-shadow:0 0 0 transparent}30%{text-shadow:0 0 14px rgba(95,214,160,.95),0 0 2px #fff;color:#eafff4}100%{text-shadow:0 0 0 transparent}}
.ms-stars>*{position:relative;animation:ms-star-in .6s var(--ms-spring) both;animation-delay:calc(var(--i,0)*.18s + .1s)}
.ms-stars>*::before{content:"✦";position:absolute;top:8px;right:10px;font-size:12px;color:var(--ms-gold);animation:ms-star-glow 1.2s ease-out both;animation-delay:calc(var(--i,0)*.18s + .35s)}
@keyframes ms-star-in{from{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:none}}
@keyframes ms-star-glow{0%{opacity:0;transform:scale(.2) rotate(-40deg)}50%{opacity:1;transform:scale(1.6);text-shadow:0 0 12px var(--ms-gold)}100%{opacity:.9;transform:none}}

/* ---------- 页面转场 ---------- */
.ms-page-in body{animation:ms-fade-in .45s var(--ms-ease) both}
.ms-page-out body{opacity:0;transition:opacity .2s ease}
.ms-arrive body::after{content:"";position:fixed;inset:0;z-index:9998;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,transparent 0,color-mix(in srgb,var(--arrive) 35%,transparent) 30%,#040710 70%);animation:ms-iris 1.2s var(--ms-ease) both}
@keyframes ms-fade-in{from{opacity:0}to{opacity:1}}
@keyframes ms-iris{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2.4)}}
.ms-flying body>*:not(.ms-fx){transition:transform .7s var(--ms-ease),filter .7s;transform:scale(1.04);filter:blur(2px)}

/* ---------- 减弱动效：全部回到静态终态 ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .page-home .aurora,.page-home .galaxy-backdrop{transform:none!important}
}
.subject-entry .enter-subject,.subject-entry .enter-diagnostic{background:none!important;border:0!important;box-shadow:none!important;padding:4px 0!important;border-radius:0!important;filter:none!important;transform:none}
.subject-entry .enter-diagnostic{border-bottom:1px dashed transparent!important}
.subject-entry .enter-diagnostic:hover{border-bottom-color:var(--ms-text-3)!important}
.page-home .intro-sub,.page-home .intro-foot{text-shadow:0 1px 12px rgba(3,6,14,.95),0 0 2px rgba(3,6,14,.9)}
.page-home .intro-title{filter:drop-shadow(0 4px 24px rgba(3,6,14,.8))}

/* ============================================================
   第三轮：首页单行顶栏 + 星空背景层
   ============================================================ */
.has-galaxy-backdrop .aurora{display:none}
.has-galaxy-backdrop{background:#03050c!important}
.page-home .topbar{top:14px;left:50%;right:auto;transform:translateX(-50%);width:min(1400px,calc(100vw - 28px))!important;max-width:calc(100vw - 28px);justify-content:space-between;gap:12px;flex-wrap:nowrap}
.page-home .topbar .brand{flex:none}
.page-home .topbar .subjectbar{position:static!important;transform:none!important;inset:auto!important;flex:1 1 auto;min-width:0;max-width:640px;margin:0 auto;padding:0!important;background:none!important;border:0!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border-radius:0!important;display:flex;align-items:center;gap:2px}
.page-home .topbar .subjectbar .filters{min-width:0;overflow-x:auto;scrollbar-width:none;-webkit-mask:linear-gradient(90deg,transparent,#000 14px,#000 calc(100% - 14px),transparent);mask:linear-gradient(90deg,transparent,#000 14px,#000 calc(100% - 14px),transparent)}
.page-home .topbar .subjectbar .filters::-webkit-scrollbar{display:none}
.page-home .topbar .subjectbar .sb-scroll{flex:none}
.page-home .topbar-actions{flex:none;position:relative}
/* 布局：收成一个下拉 */
.layout-toggle{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:var(--ms-r-pill)!important;border:1px solid var(--ms-border)!important;background:rgba(255,255,255,.04)!important;color:var(--ms-text-2)!important;font-size:13px;white-space:nowrap}
.layout-toggle b{color:var(--ms-text);font-weight:600}
.layout-toggle span{font-size:10px;opacity:.7;transition:transform .25s var(--ms-ease)}
.layout-toggle[aria-expanded="true"] span{transform:rotate(180deg)}
.page-home .topbar .layout-switch{position:absolute;top:calc(100% + 12px);left:0;z-index:60;display:grid!important;grid-template-columns:repeat(2,minmax(92px,1fr));gap:4px;padding:8px!important;border-radius:var(--ms-r-lg)!important;
  background:var(--ms-surface-2)!important;border:1px solid var(--ms-border-strong);box-shadow:var(--ms-shadow-lg);-webkit-backdrop-filter:var(--ms-blur);backdrop-filter:var(--ms-blur);
  opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s,transform .25s var(--ms-ease),visibility .2s}
.page-home .topbar .layout-switch.open{opacity:1;visibility:visible;transform:none}
.page-home .topbar .layout-switch .ls-btn{justify-content:flex-start;text-align:left;padding:8px 12px!important;border-radius:var(--ms-r-md)!important}
.page-home .sidebar-toggle{top:88px}
@media (min-width:881px){.page-home .sidebar{top:132px!important;max-height:calc(100dvh - 150px)!important}}
@media (min-width:881px) and (max-width:1250px){.page-home .topbar .subjectbar{max-width:420px}.page-home .topbar .search input{width:130px}}
@media (max-width:880px){
  .page-home .topbar{flex-wrap:wrap;row-gap:6px;left:14px;right:14px;transform:none;width:auto!important}
  .page-home .topbar .subjectbar{order:3;flex-basis:100%;max-width:none;border-top:1px solid var(--ms-border)!important;padding-top:6px!important}
  .page-home .layout-toggle{display:none}
}
.chip.is-active,.ls-btn.is-active,.stage-btn.is-active,[class*="chip"].is-active{background:var(--ms-accent-soft)!important;color:var(--ms-text)!important;border-color:rgba(138,148,255,.55)!important;box-shadow:none!important}
