/* Hallmark · shape: app shell + marketing home (SPA) · genre: modern-minimal · theme: Furrow (deal 1/3, seed high-school-students-practice-original-90d6·d23344d5·2026-11-10·r0) · redesign: full
 * hero: Stage · nav: edge-aligned mast · footer: colophon · imagery: product screenshots (capture) · signature: the six-step 逐题精讲 card as the hero visual
 * axes: light/grotesk-sans/warm · posture: committed · contrast: pass · fold: pass · v2.0.0 */
/* Hallmark · pre-emit critique: P4 H4 E4 S5 R4 V3 · weakest: V, one system serves marketing and app screens; separated by ruled tables on marketing and notebook surfaces in the tool */
/* Hallmark · dismissed render · a fresh headless load shows zero failed requests, document.fonts loaded and body painted with --color-paper, shots fully themed · the warn is the harness tearing down pages mid-flight */
/* Hallmark · answered F4 · btn-userchip is the account chip and rt-btn.on is the selected state; the page action stays btn-primary */
/* Hallmark · redesign keeps every link, field, handler and route; legacy token names below map onto the Furrow system so component markup stays untouched */
/* Hallmark · reworded "单元试题" to "每道真题，都有六步精讲。" · 63 names the dotted headline, old head was built of middle dots */
/* Hallmark · reworded "在线做题" to "在线做题、评估与讲解" · 30a names the emoji icon, the wording keeps middle dots out */
/* Hallmark · finish-review: subagent, 4 findings · 4 resolved (blueprint min-width, hero recapture clipped to the card, U5 spans the last grid row, refund rule as an ink-ruled close) */

/* ---------- 旧名 → Furrow 系统（app.js 内联样式仍引用这些名字） ---------- */
b, strong { font-weight: 600; }
:root{
  --paper: var(--color-paper);
  --card: var(--color-sheet);
  --card-2: var(--color-paper-2);
  --ink: var(--color-ink);
  --ink-2: var(--color-ink-2);
  --ink-3: var(--color-muted);
  --line: var(--color-rule);
  --line-2: var(--color-grid);
  --jade: var(--color-green);
  --jade-deep: var(--color-green-deep);
  --jade-tint: var(--color-green-soft);
  --jade-line: color-mix(in oklab, var(--color-green) 32%, transparent);
  --amber: var(--color-accent);
  --amber-tint: var(--color-accent-soft);
  --amber-line: color-mix(in oklab, var(--color-accent) 34%, transparent);
  --danger: var(--color-error);
  --danger-tint: color-mix(in oklab, var(--color-error) 8%, var(--color-paper-2));
  --gold: var(--color-accent);
  --serif: var(--font-body);
  --sans: var(--font-body);
  --r: var(--radius-card);
  --r-s: var(--radius-pill);
  --sh-1: 0 1px 2px oklch(18% 0.006 60 / 0.06);
  --sh-2: var(--shadow-card);
  --sh-3: var(--shadow-lift);
}

/* ---------- 布局 ---------- */
.view-root{min-height:calc(100vh - 62px - 90px)}
.wrap{max-width:1180px;margin:0 auto;padding:var(--space-lg) var(--space-lg) var(--space-4xl)}
.wrap-narrow{max-width:880px;margin:0 auto;padding:var(--space-lg) var(--space-lg) var(--space-4xl)}
.view{animation:viewfade var(--dur-short) var(--ease-out)}
@keyframes viewfade{from{opacity:0}to{opacity:1}}
.grid{display:grid;gap:var(--space-lg)}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-2 > .unit-card:nth-child(odd):last-child{grid-column:1 / -1}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:900px){.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}}

.skip{position:absolute;left:var(--space-md);top:calc(-1 * var(--space-3xl));z-index:var(--z-toast);padding:var(--space-xs) var(--space-md);background:var(--color-ink);color:var(--color-paper);border-radius:var(--radius-pill)}
.skip:focus-visible{top:var(--space-md)}

/* ---------- 顶栏（边缘对齐，1px 墨线压底） ---------- */
.topbar{position:sticky;top:0;z-index:var(--z-sticky-nav);background:var(--color-paper-2);border-bottom:1px solid var(--color-ink)}
.topbar-inner{max-width:1440px;margin:0 auto;display:flex;align-items:center;gap:var(--space-lg);padding:0 var(--space-lg);height:62px}
.brand{display:flex;align-items:center;gap:var(--space-xs);color:var(--color-ink)}
.brand-mark{width:36px;height:36px;border-radius:var(--radius-pill);background:var(--color-ink);color:var(--color-paper);
  display:grid;place-items:center;font-family:var(--font-display);font-size:19px;font-weight:600}
.brand-text{display:flex;flex-direction:column;line-height:1.25}
.brand-text b{font-size:15.5px;letter-spacing:0}
.brand-text i{font-style:normal;font-size:11.5px;color:var(--color-muted)}
.topnav{display:flex;gap:var(--space-2xs);flex:1}
.topnav a{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill);color:var(--color-ink-2);font-size:var(--text-sm);white-space:nowrap;transition:background-color var(--dur-micro) var(--ease-out)}
.topnav a:hover{background:var(--color-paper-3)}
.topnav a.on{background:var(--color-accent-soft);color:var(--color-ink);font-weight:500}
.topuser{display:flex;align-items:center;gap:var(--space-xs)}
.topuser .u-name{font-size:var(--text-sm);color:var(--color-ink-2)}
.btn-userchip{display:flex;align-items:center;gap:var(--space-xs);border:1px solid var(--color-rule);background:var(--color-sheet);
  min-height:32px;padding:var(--space-3xs) var(--space-sm) var(--space-3xs) var(--space-2xs);border-radius:999px;font-size:13px;color:var(--color-ink);transition:border-color var(--dur-micro) var(--ease-out)}
.btn-userchip:hover{border-color:var(--color-muted)}
.avatar{width:24px;height:24px;border-radius:50%;background:var(--color-green-soft);color:var(--color-green-deep);display:grid;place-items:center;font-weight:500;font-size:12px}

/* ---------- 卡片（白纸卡：rule 描边，无投影；仅记录卡抬升） ---------- */
.card{background:var(--color-sheet);border-radius:var(--radius-card);box-shadow:0 0 0 1px var(--color-rule)}
.card-pad{padding:var(--space-lg)}
.card.hoverable{transition:box-shadow var(--dur-short) var(--ease-out)}
.card.hoverable:hover{box-shadow:0 0 0 1px var(--color-muted)}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-grid)}
.card-title{font-size:var(--text-lg);font-weight:600}
.card-sub{font-size:var(--text-sm);color:var(--color-muted);margin-top:var(--space-3xs)}

/* ---------- 首页 hero（Stage：文案 1–5，真题精讲卡 6–12） ---------- */
.hero{background:var(--color-paper)}
.hero-inner{display:grid;grid-template-columns:5fr 7fr;gap:var(--space-2xl);align-items:center;max-width:1440px;margin:0 auto;
  padding:var(--space-2xl) var(--space-gutter,var(--space-lg)) var(--space-3xl);min-height:calc(100dvh - 62px);box-sizing:border-box}
.hero-copy{min-width:0}
.hero h1{font-size:clamp(2.5rem,4.2vw + 0.5rem,4.25rem);margin:0 0 var(--space-md)}
.hero .lead{color:var(--color-ink-2);margin:0 0 var(--space-lg)}
.hero-actions{display:flex;gap:var(--space-sm);flex-wrap:wrap}
.hero-stats{display:flex;gap:var(--space-lg);margin:var(--space-xl) 0 0;flex-wrap:wrap}
.hstat{border-left:1px solid var(--color-rule);padding-left:var(--space-md)}
.hstat:first-child{border-left:none;padding-left:0}
.hstat b{display:block;font:600 var(--text-2xl)/1.1 var(--font-outlier);font-variant-numeric:tabular-nums;color:var(--color-ink)}
.hstat i{display:block;font-style:normal;font-size:var(--text-sm);color:var(--color-muted);margin-top:var(--space-2xs)}
.hero-shot{margin:0;aspect-ratio:5 / 4;min-height:520px;max-width:100%;border-radius:var(--radius-card);
  box-shadow:0 0 0 1px var(--color-ink),var(--shadow-lift);overflow:hidden;background:var(--color-paper-2);position:relative}
.hero-shot > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:0 0;z-index:1;outline:1px solid color-mix(in oklab, var(--color-ink) 8%, transparent);outline-offset:-1px}

/* ---------- 按钮（Furrow 模具键：6px 圆角、上缘亮线） ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2xs);min-height:36px;border:1px solid var(--color-rule);
  border-radius:var(--radius-pill);padding:0 var(--space-md);font-size:var(--text-sm);font-weight:500;cursor:pointer;line-height:1.3;
  background:var(--color-paper-2);color:var(--color-ink);white-space:nowrap;text-decoration:none;
  box-shadow:inset 0 1px 0 color-mix(in oklab, var(--color-sheet) 70%, transparent);
  transition:background-color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),transform var(--dur-micro) var(--ease-out)}
.btn:hover{background:var(--color-paper-3)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;pointer-events:none}
.btn-primary{background:var(--color-accent);color:var(--color-accent-ink);border-color:color-mix(in oklab, var(--color-accent) 72%, var(--color-ink));
  box-shadow:inset 0 1px 0 color-mix(in oklab, var(--color-sheet) 35%, transparent),inset 0 -1px 0 color-mix(in oklab, var(--color-ink) 12%, transparent)}
.btn-primary:hover{background:color-mix(in oklab, var(--color-accent) 88%, var(--color-ink))}
.btn-amber{background:var(--color-paper-2);color:var(--color-ink);border-color:var(--color-accent);box-shadow:inset 0 1px 0 color-mix(in oklab, var(--color-sheet) 70%, transparent)}
.btn-amber:hover{background:var(--color-accent-soft)}
.btn-ghost{background:var(--color-paper-2);border-color:var(--color-rule);color:var(--color-ink)}
.btn-ghost:hover{border-color:var(--color-muted);color:var(--color-ink);background:var(--color-paper-3)}
.btn-danger{background:var(--color-paper-2);border-color:color-mix(in oklab, var(--color-error) 40%, var(--color-rule));color:var(--color-error)}
.btn-danger:hover{background:var(--danger-tint)}
.btn-sm{min-height:32px;padding:0 var(--space-sm);font-size:13px}
.btn-lg{min-height:48px;padding:0 var(--space-lg);font-size:var(--text-md)}
.btn-link{background:none;border:none;box-shadow:none;color:var(--color-green-deep);cursor:pointer;font-size:var(--text-sm);
  min-height:32px;padding:var(--space-2xs) var(--space-2xs);display:inline-flex;align-items:center;transition:color var(--dur-micro) var(--ease-out)}
.btn-link:hover{color:var(--color-ink)}

/* ---------- chip / 标签（正文字体小一号，无大写无字距） ---------- */
.chip{display:inline-flex;align-items:center;gap:var(--space-2xs);padding:var(--space-3xs) var(--space-xs);border-radius:var(--radius-pill);
  font-size:var(--text-xs);font-weight:500;border:1px solid var(--color-rule);background:var(--color-paper-3);color:var(--color-ink-2)}
.chip-jade{background:var(--color-green-soft);border-color:transparent;color:var(--color-green-deep)}
.chip-amber{background:var(--color-accent-soft);border-color:transparent;color:var(--color-ink)}
.chip-danger{background:var(--danger-tint);border-color:transparent;color:var(--color-error)}
.chip-grey{background:var(--color-paper-3);color:var(--color-ink-2)}
.stars{color:var(--color-accent);font-size:var(--text-sm)}
.pt-chip{font-size:var(--text-xs);color:var(--color-muted)}

/* ---------- 首页单元卡（田块记录卡：顶部墨线，套卷编号行） ---------- */
.unit-card{overflow:hidden}
.unit-card .uc-band{height:2px;background:var(--color-ink);color:var(--color-paper)}
.unit-card .uc-body{padding:var(--space-lg)}
.uc-title{display:flex;align-items:baseline;gap:var(--space-xs)}
.uc-no{font-family:var(--font-outlier);font-size:var(--text-xl);color:var(--color-green-deep);font-weight:500;font-variant-numeric:tabular-nums}
.uc-title h3{font-size:var(--text-lg)}
.uc-cn{font-size:var(--text-sm);color:var(--color-ink-2)}
.uc-theme{font-size:var(--text-sm);color:var(--color-ink-2);margin:var(--space-xs) 0 0}
.uc-grammar{font-size:var(--text-sm);color:var(--color-ink);background:var(--color-paper-3);border:1px solid var(--color-grid);border-radius:var(--radius-pill);padding:var(--space-2xs) var(--space-sm);margin:var(--space-sm) 0}
.uc-sets{display:flex;flex-wrap:wrap;gap:var(--space-2xs);margin-top:var(--space-sm)}
.uc-set{font-size:13px;padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius-pill);border:1px solid var(--color-rule);background:var(--color-sheet);
  color:var(--color-ink-2);cursor:pointer;font-variant-numeric:tabular-nums;
  transition:background-color var(--dur-micro) var(--ease-out),border-color var(--dur-micro) var(--ease-out)}
.uc-set:hover{border-color:var(--color-muted);color:var(--color-ink);background:var(--color-paper-3)}
.uc-set.s-done{background:var(--color-green-soft);border-color:transparent;color:var(--color-green-deep)}
.uc-set.s-doing{background:var(--color-accent-soft);border-color:transparent;color:var(--color-ink)}
.uc-set.s-locked{opacity:.75}

/* ---------- 表格（ruled：首行墨线，行间发丝线，无外框） ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
.tbl th{text-align:left;font-size:var(--text-sm);color:var(--color-ink-2);font-weight:500;padding:var(--space-sm) var(--space-sm);
  border-bottom:1px solid var(--color-ink);white-space:nowrap}
.tbl td{padding:var(--space-sm);border-bottom:1px solid var(--color-rule);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl tr:hover td{background:var(--color-paper-2)}

/* ---------- 套卷详情 ---------- */
.detail-head{display:flex;justify-content:space-between;gap:var(--space-lg);flex-wrap:wrap;align-items:flex-start}
.blueprint{font-size:var(--text-sm);min-width:640px}
.blueprint td,.blueprint th{padding:var(--space-2xs) var(--space-sm)}
.sku-card{position:relative;display:flex;flex-direction:column;gap:var(--space-2xs);padding:var(--space-lg)}
.sku-price{font-family:var(--font-outlier);font-variant-numeric:tabular-nums;font-size:var(--text-2xl);color:var(--color-green-deep)}
.sku-price i{font-style:normal;font-size:var(--text-sm);color:var(--color-muted)}
.sku-note{font-size:var(--text-sm);color:var(--color-muted)}
.state-strip{display:flex;gap:var(--space-xs);align-items:center;flex-wrap:wrap;padding:var(--space-sm) var(--space-md);
  border-radius:var(--radius-pill);font-size:var(--text-sm)}
.state-strip.ok{background:var(--color-green-soft);color:var(--color-ink)}
.state-strip.warn{background:var(--color-accent-soft);color:var(--color-ink)}
.state-strip.plain{background:var(--color-paper-3);color:var(--color-ink-2)}

/* ---------- 收银台 ---------- */
.cashier{display:grid;grid-template-columns:340px minmax(0,1fr);gap:var(--space-lg);align-items:start}
@media(max-width:860px){.cashier{grid-template-columns:minmax(0,1fr)}}
.qr-box{padding:var(--space-md);display:grid;place-items:center;gap:var(--space-sm)}
.qr-img{width:240px;height:240px;border-radius:var(--radius-pill);border:1px solid var(--color-rule);image-rendering:pixelated}
.cd{font-family:var(--font-outlier);font-variant-numeric:tabular-nums;font-size:var(--text-xl);color:var(--color-ink)}
.cd.warn{color:var(--color-accent)} .cd.hot{color:var(--color-error);animation:pulse 1s var(--ease-in-out) infinite}
@keyframes pulse{50%{opacity:.55}}
.step-list{list-style:none;margin:0;padding:0;font-size:var(--text-sm);color:var(--color-ink-2)}
.step-list li{display:flex;gap:var(--space-xs);padding:var(--space-2xs) 0;border-bottom:1px solid var(--color-grid)}
.step-list li:last-child{border:none}
.step-n{width:20px;height:20px;border-radius:50%;background:var(--color-green-soft);color:var(--color-green-deep);display:grid;place-items:center;font-size:11px;font-weight:500;flex:none;margin-top:var(--space-3xs)}

/* ---------- 做题页（工具屏：白纸主栏 + 牛皮纸侧栏，密度即设计） ---------- */
.exam-shell{display:grid;grid-template-columns:minmax(0,1fr) 460px;gap:0;min-height:calc(100vh - 62px - 70px)}
@media(max-width:1020px){.exam-shell{grid-template-columns:minmax(0,1fr)}}
.exam-left{padding:var(--space-lg) var(--space-lg) 60px;border-right:1px solid var(--color-rule);background:var(--color-sheet);min-width:0}
.exam-right{padding:var(--space-md) var(--space-lg) 80px;background:var(--color-paper-2);position:sticky;top:62px;height:calc(100vh - 62px);overflow:auto}
@media(max-width:1020px){.exam-right{position:static;height:auto}}
.exam-topbar{position:sticky;top:62px;z-index:40;background:var(--color-paper-2);border-bottom:1px solid var(--color-ink);
  display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-2xs) var(--space-lg)}
.exam-topbar .et-title{font-weight:600;font-size:var(--text-sm);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.timer{display:flex;align-items:center;gap:var(--space-2xs);font-family:var(--font-outlier);font-variant-numeric:tabular-nums;
  font-size:var(--text-lg);min-height:36px;padding:var(--space-3xs) var(--space-sm);border-radius:var(--radius-pill);
  background:var(--color-sheet);border:1px solid var(--color-rule)}
.timer.warn{color:var(--color-ink);border-color:var(--color-accent);background:var(--color-accent-soft)}
.timer.hot{color:var(--color-error);border-color:var(--color-error);background:var(--danger-tint);animation:pulse 1s var(--ease-in-out) infinite}
.save-dot{font-size:var(--text-xs);color:var(--color-muted);display:flex;align-items:center;gap:var(--space-2xs)}
.save-dot i{width:7px;height:7px;border-radius:50%;background:var(--color-green);display:inline-block}
.save-dot.busy i{background:var(--color-accent)}

.passage{font-size:var(--text-md);line-height:1.7;color:var(--color-ink)}
.passage p{margin:0 0 var(--space-sm);max-width:72ch;text-align:left}
.passage u{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.gapmark{color:var(--color-green-deep);font-weight:500;font-family:var(--font-outlier);font-size:0.9em;
  background:var(--color-green-soft);border-radius:4px;padding:0 var(--space-2xs);cursor:pointer}
.gapmark.on{outline:2px solid var(--color-focus);outline-offset:1px}

.q-item{background:var(--color-sheet);border-radius:var(--radius-card);box-shadow:0 0 0 1px var(--color-rule);
  padding:var(--space-md) var(--space-md);margin-bottom:var(--space-sm);scroll-margin-top:130px}
.q-item.target{box-shadow:0 0 0 2px var(--color-focus)}
.q-tag{display:flex;gap:var(--space-2xs);align-items:center;margin-bottom:var(--space-2xs);flex-wrap:wrap}
.q-no{font-family:var(--font-outlier);font-variant-numeric:tabular-nums;font-weight:500;font-size:var(--text-md);
  color:var(--color-green-deep);background:var(--color-green-soft);border-radius:var(--radius-pill);padding:var(--space-3xs) var(--space-xs)}
.opt{display:flex;gap:var(--space-xs);align-items:flex-start;padding:var(--space-2xs) var(--space-sm);border:1px solid var(--color-grid);
  border-radius:var(--radius-pill);margin-top:var(--space-2xs);cursor:pointer;font-size:var(--text-sm);background:var(--color-sheet);
  transition:background-color var(--dur-micro) var(--ease-out),border-color var(--dur-micro) var(--ease-out)}
.opt:hover{border-color:var(--color-muted);background:var(--color-paper-2)}
.opt.sel{border-color:var(--color-green);background:var(--color-green-soft);box-shadow:0 0 0 1px var(--color-green) inset}
.opt .opt-l{font-family:var(--font-outlier);font-weight:500;color:var(--color-green-deep);flex:none}
.fill-input{font-size:var(--text-sm);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-muted);border-radius:var(--radius-pill);
  width:180px;background:var(--color-sheet);color:var(--color-ink);outline:2px solid transparent;outline-offset:-3px}
.fill-input:focus{outline-color:var(--color-focus)}
.fill-row{display:flex;gap:var(--space-xs);align-items:center;padding:var(--space-2xs) 0;border-bottom:1px solid var(--color-grid);flex-wrap:wrap}
.fill-row .fc{font-size:var(--text-sm);color:var(--color-ink-2);flex:1;min-width:200px}
.essay-area{width:100%;min-height:300px;font-size:var(--text-sm);line-height:1.7;padding:var(--space-sm);
  border:1px solid var(--color-muted);border-radius:var(--radius-pill);resize:vertical;background:var(--color-sheet);color:var(--color-ink);
  outline:2px solid transparent;outline-offset:-3px}
.essay-area:focus{outline-color:var(--color-focus)}
.wc{font-size:var(--text-xs);color:var(--color-muted);text-align:right;margin-top:var(--space-2xs)}
.wc.bad{color:var(--color-error)}

.palette{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:var(--space-2xs)}
.pd{aspect-ratio:1;display:grid;place-items:center;border-radius:var(--radius-pill);border:1px solid var(--color-rule);
  background:var(--color-sheet);font-family:var(--font-outlier);font-variant-numeric:tabular-nums;
  font-size:12px;font-weight:500;color:var(--color-ink-2);cursor:pointer;
  transition:background-color var(--dur-micro) var(--ease-out),border-color var(--dur-micro) var(--ease-out)}
.pd:hover{border-color:var(--color-muted)}
.pd.filled{background:var(--color-green);border-color:var(--color-green);color:var(--color-paper)}
.pd.cur{outline:2px solid var(--color-focus);outline-offset:1px}
.pd.subj{border-style:dashed}
.pal-legend{display:flex;gap:var(--space-sm);font-size:var(--text-xs);color:var(--color-muted);margin-top:var(--space-xs)}
.pal-legend i{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:var(--space-2xs);border:1px solid var(--color-rule)}

.nav-row{display:flex;justify-content:space-between;gap:var(--space-xs);margin-top:var(--space-md);position:sticky;bottom:0;
  background:linear-gradient(transparent,var(--color-paper-2) 40%);padding:var(--space-sm) 0}

/* ---------- 报告 ---------- */
.report-hero{display:grid;grid-template-columns:300px minmax(0,1fr);gap:var(--space-lg);align-items:center}
@media(max-width:820px){.report-hero{grid-template-columns:minmax(0,1fr)}}
.ring{position:relative;width:190px;height:190px;margin:0 auto}
.ring svg{transform:rotate(-90deg)}
.ring .rv{position:absolute;inset:0;display:grid;place-items:center}
.ring .rv b{font:600 var(--text-3xl)/1 var(--font-outlier);font-variant-numeric:tabular-nums}
.ring .rv i{font-style:normal;font-size:var(--text-xs);color:var(--color-muted);display:block;text-align:center}
.grade-chip{font-size:var(--text-md)}
.bar-row{display:grid;grid-template-columns:150px minmax(0,1fr) 74px;gap:var(--space-sm);align-items:center;font-size:var(--text-sm);padding:var(--space-2xs) 0}
.bar-track{height:8px;border-radius:var(--radius-pill);background:var(--color-paper-3);overflow:hidden}
.bar-fill{height:100%;border-radius:var(--radius-pill);background:var(--color-green)}
.bar-fill.low{background:var(--color-accent)}
.bad-list .q-quick{display:flex;gap:var(--space-xs);align-items:center;padding:var(--space-xs) var(--space-sm);
  border-radius:var(--radius-card);box-shadow:0 0 0 1px var(--color-rule);margin-top:var(--space-2xs);cursor:pointer;
  background:var(--color-sheet);transition:box-shadow var(--dur-short) var(--ease-out)}
.bad-list .q-quick:hover{box-shadow:0 0 0 1px var(--color-muted)}
.rubric-line{display:flex;justify-content:space-between;font-size:var(--text-sm);padding:var(--space-2xs) 0;border-bottom:1px solid var(--color-grid)}
.note-li{font-size:var(--text-sm);color:var(--color-ink-2);margin:var(--space-3xs) 0}

/* ---------- 讲解 ---------- */
.ex-tabs{display:flex;gap:var(--space-2xs);margin-bottom:var(--space-md);flex-wrap:wrap}
.ex-tab{min-height:32px;padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-pill);border:1px solid var(--color-rule);
  background:var(--color-paper-2);cursor:pointer;font-size:var(--text-sm);color:var(--color-ink-2);
  transition:background-color var(--dur-micro) var(--ease-out),border-color var(--dur-micro) var(--ease-out)}
.ex-tab.on{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-paper);font-weight:500}
.pass-card{margin-bottom:var(--space-md)}
.chunk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,minmax(0,1fr)));gap:var(--space-2xs);margin-top:var(--space-2xs)}
.chunk{font-size:13px;background:var(--color-paper-2);border-radius:var(--radius-pill);padding:var(--space-2xs) var(--space-xs)}
.chunk b{font-weight:500;color:var(--color-green-deep)}
.qcard{margin-bottom:var(--space-md);overflow:hidden;border-radius:var(--radius-entry);background:var(--color-sheet);
  box-shadow:0 0 0 1px var(--color-ink),var(--shadow-lift)}
.qcard-head{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-ink);color:var(--color-paper)}
.qcard-head .qn{font-family:var(--font-outlier);font-variant-numeric:tabular-nums;font-size:var(--text-lg);font-weight:500;
  background:color-mix(in oklab, var(--color-paper) 18%, transparent);border-radius:var(--radius-pill);padding:var(--space-3xs) var(--space-sm)}
.qcard-head .qt{flex:1;font-size:var(--text-sm);opacity:.92;min-width:0}
.qcard-head .ans{background:var(--color-accent);color:var(--color-accent-ink);font-weight:500;border-radius:var(--radius-pill);padding:var(--space-3xs) var(--space-sm);font-size:var(--text-sm)}
.qcard-body{padding:var(--space-sm) var(--space-md)}
.six{border-top:1px solid var(--color-grid);padding:var(--space-xs) 0}
.six-label{color:var(--color-green-deep);font-weight:500;font-size:var(--text-sm);margin-bottom:var(--space-3xs)}
.six-label::before{content:"· ";font-weight:500}
.six p{margin:0;font-size:var(--text-sm);color:var(--color-ink-2);text-align:left}
.model-essay{background:var(--color-paper-2);border-radius:var(--radius-pill);padding:var(--space-sm) var(--space-md);
  font-size:var(--text-sm);line-height:1.75;white-space:pre-wrap;border:1px solid var(--color-grid)}

/* ---------- 表单/登录 ---------- */
.auth-card{max-width:420px;margin:44px auto}
.field{margin-bottom:var(--space-sm)}
.field label{display:block;font-size:var(--text-sm);color:var(--color-ink-2);margin-bottom:var(--space-2xs);font-weight:500}
.field input,.field select{width:100%;min-height:44px;padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-muted);border-radius:var(--radius-pill);
  font-size:var(--text-md);background:var(--color-sheet);color:var(--color-ink);outline:2px solid transparent;outline-offset:-3px}
.field input:focus,.field select:focus{outline-color:var(--color-focus)}
.form-err{background:var(--danger-tint);color:var(--color-error);border-radius:var(--radius-pill);padding:var(--space-2xs) var(--space-sm);
  font-size:var(--text-sm);margin-bottom:var(--space-sm);display:none}

/* ---------- toast / modal ---------- */
.toasts{position:fixed;top:74px;right:var(--space-lg);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-2xs)}
.toast{background:var(--color-ink);color:var(--color-paper);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-pill);
  font-size:var(--text-sm);box-shadow:var(--shadow-lift);animation:tin var(--dur-short) var(--ease-out);max-width:340px}
.toast.ok{background:var(--color-green-deep)} .toast.err{background:var(--color-error)}
@keyframes tin{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}
.modal-mask{position:fixed;inset:0;background:color-mix(in oklab, var(--color-ink) 45%, transparent);z-index:var(--z-modal);
  display:grid;place-items:center;animation:viewfade var(--dur-short) var(--ease-out)}
.modal{background:var(--color-sheet);border-radius:var(--radius-entry);max-width:560px;width:calc(100% - 40px);max-height:82vh;overflow:auto;
  box-shadow:var(--shadow-lift)}
.modal-head{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-grid);font-weight:600;font-size:var(--text-md);
  display:flex;justify-content:space-between;align-items:center}
.modal-body{padding:var(--space-md) var(--space-lg)}
.modal-foot{padding:var(--space-sm) var(--space-lg);border-top:1px solid var(--color-grid);display:flex;justify-content:flex-end;gap:var(--space-xs)}

/* ---------- 骨架/空态 ---------- */
.skel{background:linear-gradient(90deg,var(--color-paper-3) 25%,var(--color-paper-2) 45%,var(--color-paper-3) 65%);
  background-size:200% 100%;animation:sk 1.2s linear infinite;border-radius:var(--radius-pill)}
@keyframes sk{to{background-position:-200% 0}}
.empty{text-align:center;padding:60px var(--space-lg);color:var(--color-muted)}
.empty .e-ico{font-size:40px;margin-bottom:var(--space-xs);opacity:.6}
.sec-title{display:flex;align-items:baseline;gap:var(--space-sm);margin:var(--space-xl) 0 var(--space-md)}
.sec-title h2{font-size:clamp(1.9rem,1.1vw + 1.55rem,2.75rem)}
.sec-title::after{content:"";flex:1;height:1px;background:var(--color-ink);align-self:center}
.sec-title .st-note{font-size:var(--text-sm);color:var(--color-muted);font-weight:400}
main:has(.hero) .sec-title{margin-top:var(--section-gap-s)}
main:has(.hero) .sec-title.sec-loose{margin-top:var(--section-gap)}

/* ---------- 页脚（colophon：一条墨线，两行小字） ---------- */
.foot{border-top:1px solid var(--color-ink);padding:var(--space-lg) var(--space-lg) var(--space-xl);
  color:var(--color-ink-2);font-size:var(--text-sm);background:var(--color-paper);text-align:center}
.foot p{margin:0 auto;max-width:72ch}
.foot-fine{margin-top:var(--space-2xs);font-size:var(--text-xs);color:var(--color-muted)}
@media print{.topbar,.foot,.toasts{display:none}}

/* ---------- 测试账号预填面板（测试期间专用） ---------- */
.test-accounts{margin-top:var(--space-md);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-grid);
  border-radius:var(--radius-card);background:var(--color-paper-2)}
.ta-label{display:block;font-size:var(--text-xs);color:var(--color-muted);margin-bottom:var(--space-xs)}
.ta-list{display:flex;flex-wrap:wrap;gap:var(--space-2xs)}
.ta-item{border-radius:var(--radius-pill);font-family:var(--font-outlier);min-height:32px}
.ta-item.ta-on{border-color:var(--color-green);color:var(--color-green-deep);background:var(--color-green-soft);font-weight:500}

/* ---------- 未购解锁引导块 ---------- */
.lock-box{margin-top:var(--space-md);border-radius:var(--radius-entry);background:var(--color-paper-2);
  box-shadow:0 0 0 1px var(--color-ink);padding:var(--space-md) var(--space-lg)}
.lb-head{display:flex;align-items:center;gap:var(--space-2xs);font-size:var(--text-md);color:var(--color-ink);margin-bottom:var(--space-2xs)}
.lb-ico{font-size:19px}
.lb-body{font-size:var(--text-sm);color:var(--color-ink-2);margin:0 0 var(--space-sm) 28px;line-height:1.65}
.lb-actions{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap;margin-left:28px}
.lb-note{font-size:var(--text-sm);color:var(--color-muted)}

/* ---------- 讲解 v2：证据链 / 逐项解析 / 辨析 / 范文批注（Furrow 笔记本卡内衬） ---------- */
.evi{margin:var(--space-xs) 0;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill);
  background:linear-gradient(var(--color-grid) 1px, transparent 1px) 0 0 / 8px 8px,
    linear-gradient(90deg, var(--color-grid) 1px, transparent 1px) 0 0 / 8px 8px,
    var(--color-paper-2);
  border-radius:var(--radius-card);box-shadow:0 0 0 1px var(--color-grid)}
.evi-tag{display:inline-block;font-size:var(--text-xs);font-weight:500;color:var(--color-green-deep);margin-bottom:var(--space-2xs)}
.evi-q{font-size:var(--text-sm);color:var(--color-ink-2);margin:0}
.evi-g{font-size:var(--text-sm);color:var(--color-ink-2);margin:var(--space-2xs) 0 0}
.opt-an{margin:var(--space-xs) 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2xs)}
@media (max-width:900px){.opt-an{grid-template-columns:minmax(0,1fr)}}
.oa{border-radius:var(--radius-pill);padding:var(--space-2xs) var(--space-xs);background:var(--color-paper-2);box-shadow:0 0 0 1px var(--color-grid)}
.oa-ok{background:var(--color-green-soft);box-shadow:0 0 0 1px color-mix(in oklab, var(--color-green) 45%, transparent)}
.oa-no{box-shadow:0 0 0 1px var(--color-rule)}
.oa-l{display:inline-flex;width:22px;height:22px;border-radius:var(--radius-pill);align-items:center;justify-content:center;
  font-family:var(--font-outlier);font-weight:500;font-size:12px;color:var(--color-paper);margin-right:var(--space-2xs);vertical-align:middle}
.oa-ok .oa-l{background:var(--color-green)}
.oa-no .oa-l{background:var(--color-muted)}
.oa-t{font-size:var(--text-xs);font-weight:500;vertical-align:middle}
.oa-ok .oa-t{color:var(--color-green-deep)}
.oa-no .oa-t{color:var(--color-ink-2)}
.oa-x{font-size:13px;color:var(--color-ink-2);margin:var(--space-2xs) 0 0;line-height:1.6}
.six.syn .six-label{color:var(--color-green-deep)}
.hl-list{display:grid;gap:var(--space-2xs);margin-top:var(--space-2xs)}
.hl{padding:var(--space-2xs) var(--space-xs);background:var(--color-paper-2);border-radius:var(--radius-pill)}
.hl-q{font-size:var(--text-sm);color:var(--color-ink-2);margin:0}
.hl-n{font-size:var(--text-xs);color:var(--color-muted);margin:var(--space-3xs) 0 0}
.up-list{display:grid;gap:var(--space-2xs);margin-top:var(--space-2xs)}
.up{font-size:13px;padding:var(--space-2xs) var(--space-xs);border:1px solid var(--color-grid);border-radius:var(--radius-pill);background:var(--color-paper-2)}
.up-b{color:var(--color-muted);text-decoration:line-through;margin-right:var(--space-2xs)}
.up-arrow{color:var(--color-green-deep);font-weight:500;margin-right:var(--space-2xs)}
.up-g{color:var(--color-green-deep);font-weight:500}
.up-w{margin:var(--space-3xs) 0 0;font-size:var(--text-xs);color:var(--color-muted)}

/* ---------- 做题页实时讲解 ---------- */
.rt-btn{min-height:32px;border:1px solid var(--color-rule);color:var(--color-ink);background:var(--color-paper-2);
  border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:500;padding:var(--space-3xs) var(--space-xs);cursor:pointer;
  transition:background-color var(--dur-micro) var(--ease-out),border-color var(--dur-micro) var(--ease-out)}
.rt-btn:hover{background:var(--color-accent-soft);border-color:var(--color-accent)}
.rt-btn.on{background:var(--color-accent);color:var(--color-accent-ink);border-color:color-mix(in oklab, var(--color-accent) 72%, var(--color-ink))}
.rt-btn.rt-sm{font-size:12px;white-space:nowrap}
.rt-host{display:none;margin:var(--space-xs) 0 var(--space-2xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-card);
  background:linear-gradient(var(--color-grid) 1px, transparent 1px) 0 0 / 8px 8px,
    linear-gradient(90deg, var(--color-grid) 1px, transparent 1px) 0 0 / 8px 8px,
    var(--color-paper-2);
  box-shadow:0 0 0 1px var(--color-grid)}
.rt-host .evi{margin-top:0}
.rt-more{border:none;background:none;color:var(--color-green-deep);font-weight:500;font-size:var(--text-sm);cursor:pointer;
  min-height:32px;padding:var(--space-2xs) 0}
.rt-more:hover{color:var(--color-ink)}
.fill-row .rt-btn{margin-left:auto}

/* ---------- 模式选择弹层 ---------- */
.mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xs);margin-top:var(--space-sm)}
@media (max-width:640px){.mode-grid{grid-template-columns:minmax(0,1fr)}}
.mode-card{border-radius:var(--radius-card);background:var(--color-paper-2);box-shadow:0 0 0 1px var(--color-rule);
  padding:var(--space-md);cursor:pointer;text-align:left;font-family:inherit;
  transition:background-color var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out)}
.mode-card:hover{background:var(--color-accent-soft);box-shadow:0 0 0 1px var(--color-accent)}
.mode-card b{display:block;font-size:var(--text-md);color:var(--color-ink);margin-bottom:var(--space-2xs)}
.mode-card span{font-size:var(--text-sm);color:var(--color-muted);line-height:1.7}

/* ---------- 运营：会员卡 / 横幅 ---------- */
.mem-card{position:relative;display:flex;flex-direction:column}
.mem-card.hot{box-shadow:0 0 0 2px var(--color-ink)}
.mem-tag{position:absolute;top:var(--space-sm);right:var(--space-sm);background:var(--color-accent);color:var(--color-accent-ink);
  font-size:var(--text-xs);font-weight:500;padding:var(--space-3xs) var(--space-xs);border-radius:var(--radius-pill)}
.mem-price{font-family:var(--font-outlier);font-variant-numeric:tabular-nums;color:var(--color-green-deep);
  font-size:var(--text-2xl);font-weight:500;margin:var(--space-2xs) 0}
.mem-price i{font-style:normal;font-size:var(--text-lg);margin-right:var(--space-3xs)}
.mem-list{margin:var(--space-2xs) 0 var(--space-sm);padding-left:var(--space-md);font-size:var(--text-sm);color:var(--color-ink-2);line-height:1.9;flex:1}
.mem-bar{margin-top:var(--space-sm);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-pill);
  background:var(--color-green-soft);font-size:var(--text-sm);color:var(--color-ink)}
.mem-bar a{font-weight:500}
.mem-badge{color:var(--color-green-deep)!important;background:var(--color-green-soft)!important;border-color:transparent!important}

/* ---------- 移动端 ---------- */
@media (max-width:820px){
  .wrap,.wrap-narrow{padding:var(--space-md) var(--space-sm) var(--space-2xl)}
  .topbar-inner{padding:var(--space-xs) var(--space-sm);gap:var(--space-sm)}
  .topnav{gap:var(--space-3xs);font-size:13px;overflow-x:auto}
  .brand-text i{display:none}
  .hero-inner{grid-template-columns:minmax(0,1fr);gap:var(--space-lg);min-height:0;padding:var(--space-xl) var(--space-gutter,var(--space-sm)) var(--space-xl)}
  .hero-shot{min-height:0;aspect-ratio:16 / 10}
  .detail-head{grid-template-columns:minmax(0,1fr)!important}
  .report-hero{grid-template-columns:minmax(0,1fr)!important}
  .exam-shell{grid-template-columns:minmax(0,1fr)!important}
  .pass-col,.q-col{max-height:none!important}
  .opt-an{grid-template-columns:minmax(0,1fr)!important}
  .grid.grid-3,.grid.grid-2{grid-template-columns:minmax(0,1fr)!important}
  .hstat b{font-size:var(--text-xl)!important}
  .hero-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}
  .hstat{border-left:none;padding-left:0;border-top:1px solid var(--color-rule);padding-top:var(--space-xs)}
  .hstat:nth-child(-n+2){border-top:none;padding-top:0}
  .tbl{font-size:13px}
  .sku-card{min-width:0!important}
  .sec-title{flex-wrap:wrap}
}
