/* 交互版专用布局样式（从静态页移植 + 适配 React 屏幕） */

.mb { margin-bottom: 18px; }
.link { cursor: pointer; }
.two-col { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.two-col-15 { display:grid; grid-template-columns:1.5fr 1fr; gap:18px; }
.mb.tag, .tag.mb { margin-bottom:14px; }

@keyframes toastIn { from{opacity:0;transform:translate(-50%,-12px)} to{opacity:1;transform:translate(-50%,0)} }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
@keyframes popIn { from{opacity:0;transform:translateY(12px) scale(.97)} to{opacity:1;transform:none} }

/* ===== 登录 ===== */
.auth { display:grid; grid-template-columns:1.05fr 1fr; min-height:100vh; }
.auth-brand { position:relative; overflow:hidden; padding:56px 64px; color:#fff; display:flex; flex-direction:column;
  background: radial-gradient(120% 90% at 12% 8%, oklch(0.84 0.09 162 / 0.55), transparent 55%), radial-gradient(120% 100% at 95% 100%, oklch(0.82 0.10 56 / 0.40), transparent 50%), linear-gradient(150deg, var(--blue-400), var(--blue-600)); }
.auth-brand .blob { position:absolute; border-radius:50%; opacity:.5; }
.auth-brand .b1 { width:320px;height:320px;right:-90px;top:-70px;background:oklch(0.9 0.06 162 / .4); }
.auth-brand .b2 { width:240px;height:240px;left:-80px;bottom:40px;background:oklch(0.92 0.05 56 / .35); }
.auth-logo { display:flex; align-items:center; gap:13px; position:relative; z-index:2; }
.auth-logo .lg { width:46px;height:46px;border-radius:14px;background:rgba(255,255,255,.18);backdrop-filter:blur(8px);display:grid;place-items:center;border:1px solid rgba(255,255,255,.3); }
.auth-logo .nm { font-size:21px;font-weight:900; }
.auth-logo .nm small { display:block;font-weight:500;font-size:11px;opacity:.8;letter-spacing:.18em; }
.auth-hero { margin-top:auto; position:relative; z-index:2; }
.auth-hero h1 { color:#fff;font-size:38px;line-height:1.25;font-weight:900;letter-spacing:-.02em; }
.auth-hero p { font-size:15.5px;opacity:.9;margin-top:16px;line-height:1.7;max-width:420px; }
.auth-feats { display:flex;flex-direction:column;gap:14px;margin-top:38px;position:relative;z-index:2; }
.auth-feat { display:flex;align-items:center;gap:14px; }
.auth-feat .fi { width:42px;height:42px;border-radius:12px;background:rgba(255,255,255,.16);display:grid;place-items:center;border:1px solid rgba(255,255,255,.22);flex:0 0 auto; }
.auth-feat .ft { font-weight:700;font-size:15px; }
.auth-feat .fs { font-size:12.5px;opacity:.82; }
.auth-form-wrap { display:grid;place-items:center;padding:40px; }
.auth-card { width:100%;max-width:400px; }
.auth-tabs { display:flex;background:var(--surface-3);border-radius:999px;padding:5px;margin-bottom:30px; }
.auth-tab { flex:1;text-align:center;padding:10px;border-radius:999px;font-weight:700;font-size:14px;color:var(--ink-3);cursor:pointer; }
.auth-tab.on { background:#fff;color:var(--blue-600);box-shadow:var(--shadow-sm); }
.auth-h { font-size:25px;font-weight:900; }
.auth-sub { color:var(--ink-3);font-size:13.5px;margin-top:6px;margin-bottom:26px; }
.role-choose { display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:22px; }
.role-opt { border:1.5px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:9px;cursor:pointer;transition:.15s; }
.role-opt .ri { width:38px;height:38px;border-radius:11px;display:grid;place-items:center; }
.role-opt .rt { font-weight:800;font-size:14.5px; }
.role-opt .rs { font-size:11.5px;color:var(--ink-3);line-height:1.4; }
.role-opt.on { border-color:var(--blue-400);background:var(--blue-50);box-shadow:0 0 0 3px oklch(0.66 0.13 233 / .12); }
.input-icon { position:relative; }
.input-icon svg { position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink-3); }
.input-icon .input { padding-left:42px; }
.code-row { display:grid;grid-template-columns:1fr auto;gap:10px; }
.code-btn { white-space:nowrap;padding:0 16px;border-radius:var(--r-sm);background:var(--blue-50);color:var(--blue-600);font-weight:700;font-size:13px;border:1.5px solid var(--blue-100);cursor:pointer; }
.auth-meta { display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:var(--ink-3);margin:16px 2px 24px; }
.auth-meta a { color:var(--blue-600);font-weight:600; }
.auth-foot { text-align:center;font-size:12px;color:var(--ink-4);margin-top:22px; }
.check { display:flex;align-items:center;gap:7px; }
.check .box { width:16px;height:16px;border-radius:5px;border:1.5px solid var(--blue-400);background:var(--blue-500);display:grid;place-items:center; }

/* ===== 首页 学生（B 风） ===== */
.b-hero { border-radius:var(--r-xl);padding:36px 40px;position:relative;overflow:hidden;margin-bottom:18px;
  background: radial-gradient(130% 120% at 100% 0%, oklch(0.92 0.06 162 / .8), transparent 55%), linear-gradient(120deg, var(--blue-50), oklch(0.97 0.02 56));border:1px solid var(--line); }
.b-hero-row { display:flex;align-items:center;gap:36px;position:relative; }
.greet h2 { font-size:30px;font-weight:900;letter-spacing:-.02em; }
.greet p { color:var(--ink-2);font-size:15px;margin-top:12px;line-height:1.7;max-width:430px; }
.greet .cta { display:flex;gap:12px;margin-top:26px; }
.ring-wrap { margin-left:auto;display:flex;align-items:center;gap:28px; }
.ring { position:relative;width:168px;height:168px;flex:0 0 auto; }
.ring .center { position:absolute;inset:0;display:grid;place-items:center;text-align:center; }
.ring .center .v { font-size:38px;font-weight:900;font-family:'Outfit',sans-serif;line-height:1;color:var(--blue-600); }
.ring .center .l { font-size:12px;color:var(--ink-3);margin-top:4px; }
.b-side { display:flex;flex-direction:column;gap:14px; }
.b-side .bs { display:flex;align-items:center;gap:12px; }
.b-side .bs .bv { font-size:22px;font-weight:800;font-family:'Outfit',sans-serif; }
.b-side .bs .bl { font-size:12px;color:var(--ink-3); }
.b-side .bs .bi { width:38px;height:38px;border-radius:11px;display:grid;place-items:center; }
.big-actions { display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:18px; }
.big-action { border-radius:var(--r-lg);padding:24px;color:#fff;position:relative;overflow:hidden;min-height:140px;display:flex;flex-direction:column;box-shadow:var(--shadow);transition:.15s; }
.big-action:hover { transform:translateY(-3px);box-shadow:var(--shadow-lg); }
.big-action h3 { color:#fff;font-size:18px; }
.big-action p { font-size:12.5px;opacity:.9;margin-top:6px; }
.big-action .ico { margin-top:auto;width:44px;height:44px;border-radius:13px;background:rgba(255,255,255,.2);display:grid;place-items:center; }
.ba-blue { background:linear-gradient(140deg,var(--blue-400),var(--blue-600)); }
.ba-green { background:linear-gradient(140deg,var(--green-400),var(--green-600)); }
.ba-orange { background:linear-gradient(140deg,var(--orange-400),var(--orange-500)); }
.soup-band { border-radius:var(--r-lg);padding:22px 26px;background:linear-gradient(120deg,var(--green-50),var(--blue-50));border:1px solid var(--line);display:flex;align-items:center;gap:20px; }
.soup-band .si { width:52px;height:52px;border-radius:16px;background:#fff;display:grid;place-items:center;box-shadow:var(--shadow-sm);flex:0 0 auto;color:var(--green-500); }
.soup-band .q { font-size:15.5px;font-weight:700;line-height:1.6; }

/* ===== 首页 家长 ===== */
.p-hero { display:grid;grid-template-columns:1.4fr 1fr;gap:18px;margin-bottom:18px; }
.p-welcome { border-radius:var(--r-xl);padding:26px 28px;color:#fff;position:relative;overflow:hidden;
  background: radial-gradient(120% 120% at 95% 5%, oklch(0.82 0.10 56 / .6), transparent 50%), linear-gradient(135deg, var(--orange-400), oklch(0.66 0.13 35));box-shadow:var(--shadow); }
.p-welcome h2 { color:#fff;font-size:23px;font-weight:900;position:relative; }
.p-welcome p { opacity:.92;margin-top:8px;font-size:13.5px;position:relative;max-width:360px;line-height:1.6; }
.child-cards { display:flex;gap:14px;margin-top:22px;position:relative; }
.cc { flex:1;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);border-radius:var(--r);padding:14px;backdrop-filter:blur(6px);transition:.15s; }
.cc.on { background:#fff;color:var(--ink); }
.cc .top { display:flex;align-items:center;gap:9px; }
.cc .avt { width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:14px;flex:0 0 auto;color:#fff; }
.cc .nm { font-weight:800;font-size:14px;line-height:1.1; }
.cc .gr { font-size:11px;opacity:.8; }
.cc.on .gr { color:var(--ink-3);opacity:1; }
.cc .mt { display:flex;gap:14px;margin-top:12px; }
.cc .mt .mv { font-size:18px;font-weight:800;font-family:'Outfit',sans-serif;line-height:1; }
.cc .mt .ml { font-size:10.5px;opacity:.8; }
.cc.on .mt .ml { color:var(--ink-3); }
.soup-card .quote { font-size:15.5px;font-weight:700;line-height:1.7; }
.soup-card .quote .mk { color:var(--orange-400);font-family:Georgia,serif;font-size:28px;line-height:0;vertical-align:-5px; }
.stat-strip { display:grid;grid-template-columns:repeat(4,1fr);gap:18px; }
.quick-grid { display:grid;grid-template-columns:repeat(2,1fr);gap:12px; }
.quick { display:flex;align-items:center;gap:13px;padding:15px;border-radius:var(--r);border:1px solid var(--line);background:var(--surface-2);transition:.15s;cursor:pointer; }
.quick:hover { background:#fff;box-shadow:var(--shadow-sm);transform:translateY(-1px); }
.quick .qi { width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:0 0 auto; }
.quick .qt { font-weight:700;font-size:13.5px; }
.quick .qs { font-size:11.5px;color:var(--ink-3); }

/* ===== 录入 ===== */
.entry-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:20px; }
.entry-opt { background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-xl);padding:28px;position:relative;overflow:hidden;transition:.18s;display:flex;flex-direction:column;min-height:340px;cursor:pointer; }
.entry-opt:hover { transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--blue-200); }
.entry-opt .recommend { position:absolute;top:18px;right:18px; }
.entry-opt .eico { width:60px;height:60px;border-radius:18px;display:grid;place-items:center;margin-bottom:20px; }
.entry-opt h3 { font-size:19px; }
.entry-opt .desc { color:var(--ink-2);font-size:13px;margin-top:10px;line-height:1.65; }
.entry-opt ul { list-style:none;padding:0;margin:18px 0 0;display:flex;flex-direction:column;gap:9px; }
.entry-opt li { display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--ink-2); }
.entry-opt li .ck { width:18px;height:18px;border-radius:6px;display:grid;place-items:center;flex:0 0 auto; }
.entry-opt .go { margin-top:auto;padding-top:22px; }
.step-flow { display:flex;align-items:center;gap:14px;margin:8px 0 26px; }
.step-flow .s { display:flex;align-items:center;gap:9px; }
.step-flow .n { width:26px;height:26px;border-radius:50%;background:var(--blue-50);color:var(--blue-600);font-weight:800;font-size:12px;display:grid;place-items:center;font-family:'Outfit',sans-serif; }
.step-flow .n.off { background:var(--surface-3);color:var(--ink-3); }
.step-flow .t { font-size:13px;font-weight:600;color:var(--ink-2); }
.step-flow .t.off { color:var(--ink-3); }
.step-flow .arrow { color:var(--ink-4); }
.form-layout { display:grid;grid-template-columns:1.6fr 1fr;gap:20px; }
.row2 { display:grid;grid-template-columns:1fr 1fr;gap:14px; }
.row3 { display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px; }
.preview-num { background:linear-gradient(135deg,var(--blue-500),var(--green-500));border-radius:var(--r-lg);padding:24px;color:#fff;text-align:center;position:relative;overflow:hidden; }
.preview-num .l { font-size:12.5px;opacity:.9; }
.preview-num .v { font-size:52px;font-weight:900;font-family:'Outfit',sans-serif;line-height:1;margin-top:6px; }
.preview-num .sub { font-size:12.5px;opacity:.9;margin-top:8px; }
.kv { display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line-2);font-size:13px; }
.kv:last-child { border-bottom:none; }
.kv .k { color:var(--ink-3); }
.kv .v { font-weight:700;font-family:'Outfit',sans-serif; }
.pts-hint { display:flex;align-items:center;gap:10px;background:var(--orange-50);border-radius:var(--r-sm);padding:12px 14px;font-size:12.5px;color:var(--orange-500);font-weight:600; }
.footbar { display:flex;gap:12px;justify-content:flex-end;margin-top:22px; }
.success-wrap { display:grid;place-items:center;min-height:62vh; }
.success-card { max-width:480px;width:100%;text-align:center;padding:44px 40px; }
.check-circle { width:88px;height:88px;border-radius:50%;margin:0 auto 22px;display:grid;place-items:center;background:linear-gradient(140deg,var(--green-400),var(--green-600));box-shadow:0 10px 30px oklch(0.68 0.13 162 / .4);animation:popIn .4s; }
.pts-earn { background:var(--orange-50);border-radius:var(--r);padding:18px 20px;margin:24px 0; }
.pts-earn .total { font-size:34px;font-weight:900;font-family:'Outfit',sans-serif;color:var(--orange-500);line-height:1; }
.pts-list { display:flex;flex-direction:column;gap:8px;margin-top:14px; }
.pts-list .pl { display:flex;justify-content:space-between;font-size:12.5px; }
.pts-list .pl .pv { font-weight:800;color:var(--orange-500);font-family:'Outfit',sans-serif; }
.actions { display:flex;flex-direction:column;gap:12px;margin-top:8px; }
.actions .alt { display:flex;gap:12px; }
.actions .alt .btn { flex:1; }

/* AI 录入 */
.ai-layout { display:grid;grid-template-columns:1fr 1fr;gap:20px; }
.upload-zone { border:2px dashed var(--line);border-radius:var(--r);background:var(--surface-2);aspect-ratio:4/3;position:relative;overflow:hidden;display:flex;flex-direction:column; }
.paper-ph { flex:1;position:relative;background-image:repeating-linear-gradient(135deg, oklch(0.93 0.01 233) 0 11px, oklch(0.96 0.008 233) 11px 22px); }
.paper-ph .label { position:absolute;inset:0;display:grid;place-items:center; }
.paper-ph .label .pill { background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:999px;padding:8px 16px;font-family:'Outfit',monospace;font-size:12px;color:var(--ink-3);font-weight:600; }
.crop-box { position:absolute;border:2px solid var(--blue-500);box-shadow:0 0 0 9999px oklch(0.27 0.02 250 / 0.18);border-radius:4px; }
.crop-box .h { position:absolute;width:11px;height:11px;background:#fff;border:2px solid var(--blue-500);border-radius:2px; }
.tools { display:flex;gap:8px;padding:12px;background:#fff;border-top:1px solid var(--line); }
.tool { flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2);font-size:11.5px;font-weight:600;color:var(--ink-2);cursor:pointer; }
.tool.on { background:var(--blue-50);color:var(--blue-600);border-color:var(--blue-200); }
.progress-card { display:flex;align-items:center;gap:14px;background:var(--green-50);border-radius:var(--r);padding:14px 16px;margin-top:14px; }
.progress-card .spin { width:34px;height:34px;border-radius:50%;border:3px solid var(--green-100);border-top-color:var(--green-500);flex:0 0 auto;animation:spin 1s linear infinite; }
@keyframes spin { to{transform:rotate(360deg)} }
.rec-field { display:grid;grid-template-columns:96px 1fr auto;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-2); }
.rec-field:last-child { border-bottom:none; }
.rec-field .rk { font-size:12.5px;color:var(--ink-3);font-weight:600; }
.rec-field .rv { font-weight:700;font-size:14px; }
.rec-field .rv.miss { color:var(--coral); }
.conf { font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px; }
.conf.hi { background:var(--green-50);color:var(--green-600); }
.conf.lo { background:var(--coral-50);color:var(--coral); }
.batch-tbl input { padding:8px 10px;font-size:13.5px;text-align:center; }
.subj-cell { display:flex;align-items:center;gap:8px;font-weight:700; }
.err-input { border-color:var(--coral) !important;background:var(--coral-50) !important; }

/* ===== 记录 ===== */
.filter-bar { display:flex;align-items:center;gap:14px;flex-wrap:wrap; }
.filter-bar .fg { display:flex;align-items:center;gap:8px; }
.filter-bar .fg .lb { font-size:12px;color:var(--ink-3);font-weight:600; }
.seg { display:flex;background:var(--surface-3);border-radius:999px;padding:4px; }
.seg span { padding:6px 14px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--ink-3);cursor:pointer; }
.seg span.on { background:#fff;color:var(--blue-600);box-shadow:var(--shadow-sm); }
.mini-select { padding:8px 32px 8px 13px;font-size:13px; }
.summary-row { display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0; }
.sm { background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px; }
.sm .l { font-size:12px;color:var(--ink-3); }
.sm .v { font-size:22px;font-weight:800;font-family:'Outfit',sans-serif;margin-top:3px; }
.rec-card { display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);margin-bottom:12px;transition:.15s; }
.rec-card:hover { box-shadow:var(--shadow);border-color:var(--blue-200); }
.rec-date { text-align:center;width:60px; }
.rec-date .d { font-size:24px;font-weight:800;font-family:'Outfit',sans-serif;line-height:1; }
.rec-date .m { font-size:11.5px;color:var(--ink-3);margin-top:3px; }
.rec-scores { display:flex;gap:10px;flex-wrap:wrap;margin-top:10px; }
.score-pill { display:flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:999px;padding:5px 11px;font-size:12.5px; }
.score-pill b { font-family:'Outfit',sans-serif; }
.rec-actions { display:flex;gap:8px; }
.ra { width:34px;height:34px;border-radius:9px;background:var(--surface-2);border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-3);cursor:pointer; }
.ra:hover { background:#fff;color:var(--blue-600); }
.ra.danger:hover { color:var(--coral);border-color:var(--coral); }
.empty { text-align:center;padding:60px 20px;color:var(--ink-3); }

/* ===== 分析 ===== */
.time-seg { display:flex;background:var(--surface-3);border-radius:999px;padding:4px; }
.time-seg span { padding:8px 16px;border-radius:999px;font-size:13px;font-weight:600;color:var(--ink-3);cursor:pointer; }
.time-seg span.on { background:#fff;color:var(--blue-600);box-shadow:var(--shadow-sm); }
.row-a { display:grid;grid-template-columns:1.7fr 1fr;gap:18px;margin-bottom:18px; }
.row-b { display:grid;grid-template-columns:1fr 1.7fr;gap:18px;margin-bottom:18px; }
.stab-list { display:flex;flex-direction:column;gap:12px; }
.stab { display:flex;align-items:center;gap:12px; }
.stab .nm { width:46px;font-weight:700;font-size:13px;display:flex;align-items:center;gap:7px; }
.stab .meta { margin-left:auto;font-size:12px;font-weight:700; }
.suggest-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:16px; }
.suggest { border:1px solid var(--line);border-radius:var(--r);padding:18px;background:var(--surface);display:block;color:inherit; }
.suggest .sh { display:flex;align-items:center;gap:9px;margin-bottom:12px; }
.suggest .tagx { font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px; }
.suggest ul { margin:0;padding-left:18px;display:flex;flex-direction:column;gap:7px; }
.suggest li { font-size:12.5px;color:var(--ink-2);line-height:1.5; }
.summary-box { display:grid;grid-template-columns:repeat(3,1fr);gap:16px; }
.sb { border-radius:var(--r);padding:18px; }
.sb .t { font-size:13px;font-weight:800;display:flex;align-items:center;gap:8px; }
.sb .c { font-size:12.5px;line-height:1.6;margin-top:9px;color:var(--ink-2); }

/* ===== 积分 ===== */
.pts-hero { display:grid;grid-template-columns:1.1fr 1.6fr;gap:18px;margin-bottom:18px; }
.pts-balance { border-radius:var(--r-xl);padding:28px;color:#fff;position:relative;overflow:hidden;
  background: radial-gradient(120% 120% at 100% 0%, oklch(0.88 0.12 88 / .7), transparent 55%), linear-gradient(140deg, var(--orange-400), var(--orange-500));box-shadow:var(--shadow); }
.pts-balance .l { font-size:13px;opacity:.92; }
.pts-balance .v { font-size:54px;font-weight:900;font-family:'Outfit',sans-serif;line-height:1;margin-top:6px; }
.pts-balance .meta { display:flex;gap:24px;margin-top:22px;padding-top:18px;border-top:1px solid rgba(255,255,255,.25); }
.pts-balance .meta .mv { font-size:18px;font-weight:800;font-family:'Outfit',sans-serif; }
.pts-balance .meta .ml { font-size:11.5px;opacity:.85; }
.task { display:flex;align-items:center;gap:13px;padding:13px 0;border-bottom:1px solid var(--line-2); }
.task:last-child { border-bottom:none; }
.task .ti { width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:0 0 auto; }
.task .tt { font-weight:700;font-size:13.5px; }
.task .ts { font-size:11.5px;color:var(--ink-3); }
.task .reward { margin-left:auto;font-weight:800;font-family:'Outfit',sans-serif;color:var(--orange-500);font-size:14px; }
.task .done { margin-left:auto; }
.two { display:grid;grid-template-columns:1fr 1.2fr;gap:18px;margin-bottom:18px; }
.reward-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:16px; }
.reward-card { border:1px solid var(--line);border-radius:var(--r);padding:18px;text-align:center;background:var(--surface);transition:.15s;position:relative; }
.reward-card:hover { box-shadow:var(--shadow);transform:translateY(-2px); }
.reward-card .rico { width:54px;height:54px;border-radius:16px;display:grid;place-items:center;margin:0 auto 12px;font-size:26px; }
.reward-card .rn { font-weight:700;font-size:13.5px; }
.reward-card .rc { font-family:'Outfit',sans-serif;font-weight:800;color:var(--orange-500);font-size:15px;margin-top:6px; }
.reward-card .custom-tag { font-size:10px;font-weight:700;color:var(--green-600);background:var(--green-50);padding:2px 8px;border-radius:999px;display:inline-block;margin-bottom:8px; }
.reward-card.disabled { opacity:.55; }

/* ===== 鸡汤 ===== */
.soup-hero { border-radius:var(--r-xl);padding:48px 52px;position:relative;overflow:hidden;color:#fff;margin-bottom:18px;min-height:240px;display:flex;flex-direction:column;justify-content:center; }
.soup-hero.stu { background: radial-gradient(110% 130% at 90% 10%, oklch(0.84 0.10 162 / .7), transparent 55%), linear-gradient(135deg, var(--blue-500), var(--green-500));box-shadow:var(--shadow); }
.soup-hero.par { background: radial-gradient(110% 130% at 90% 10%, oklch(0.88 0.10 88 / .7), transparent 55%), linear-gradient(135deg, var(--orange-400), oklch(0.64 0.13 30));box-shadow:var(--shadow); }
.soup-hero .blob { position:absolute;border-radius:50%;opacity:.4;width:260px;height:260px;right:-60px;bottom:-90px;background:oklch(0.92 0.06 88 / .4); }
.soup-hero .lbl { font-size:13px;font-weight:700;letter-spacing:.1em;opacity:.92;position:relative; }
.soup-hero .q { font-size:29px;font-weight:900;line-height:1.5;margin-top:18px;max-width:760px;position:relative; }
.soup-hero .q .mk { font-family:Georgia,serif;font-size:46px;opacity:.55;line-height:0;vertical-align:-10px; }
.soup-hero .act { display:flex;gap:12px;margin-top:30px;position:relative; }
.soup-hero .bw { background:#fff; }
.soup-hero.stu .bw { color:var(--blue-600); }
.soup-hero.par .bw { color:var(--orange-500); }
.soup-hero .bgl { background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.3); }
.quote-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:16px; }
.qcard { border:1px solid var(--line);border-radius:var(--r);padding:22px;background:var(--surface);position:relative; }
.qcard .qt { font-size:15px;font-weight:700;line-height:1.7;color:var(--ink); }
.qcard .mk { color:var(--green-500);font-family:Georgia,serif;font-size:26px;line-height:0;vertical-align:-5px; }
.qcard .foot { display:flex;align-items:center;gap:10px;margin-top:18px; }
.qcard .theme { font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px; }
.qcard .fav { margin-left:auto;color:var(--ink-4);cursor:pointer; }
.qcard .fav.on { color:var(--coral); }
.case { display:flex;gap:16px;padding:18px 0;border-bottom:1px solid var(--line-2); }
.case:last-child { border-bottom:none; }
.case .ci { width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:23px;flex:0 0 auto;background:var(--orange-50); }
.case .ct { font-weight:800;font-size:15px; }
.case .cc2 { font-size:13px;color:var(--ink-2);line-height:1.65;margin-top:6px; }
.case .cm { font-size:11.5px;color:var(--orange-500);font-weight:700;margin-top:8px; }

/* ===== 家庭 ===== */
.fam-head { display:flex;align-items:center;gap:16px;margin-bottom:18px; }
.child-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px; }
.child-card { border:1.5px solid var(--line);border-radius:var(--r-lg);padding:22px;background:var(--surface);position:relative;transition:.15s; }
.child-card:hover { box-shadow:var(--shadow);border-color:var(--blue-200); }
.child-card.sel { border-color:var(--orange-400);box-shadow:0 0 0 3px oklch(0.78 0.13 56 / .15); }
.child-card .ck-box { position:absolute;top:16px;right:16px;width:24px;height:24px;border-radius:8px;border:1.5px solid var(--line);display:grid;place-items:center;color:#fff;cursor:pointer; }
.child-card.sel .ck-box { background:var(--orange-400);border-color:var(--orange-400); }
.child-card .top { display:flex;align-items:center;gap:14px; }
.child-card .avt { width:54px;height:54px;border-radius:16px;display:grid;place-items:center;color:#fff;font-weight:800;font-size:22px;flex:0 0 auto; }
.child-card .nm { font-size:18px;font-weight:800; }
.child-card .gr { font-size:12.5px;color:var(--ink-3);margin-top:2px; }
.child-card .mts { display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0; }
.child-card .mt2 { background:var(--surface-2);border-radius:var(--r-sm);padding:12px; }
.child-card .mt2 .mv { font-size:21px;font-weight:800;font-family:'Outfit',sans-serif;line-height:1; }
.child-card .mt2 .ml { font-size:11px;color:var(--ink-3);margin-top:4px; }
.child-card .acts { display:flex;gap:8px; }
.child-card .acts .btn { flex:1; }
.add-card { border:2px dashed var(--line);border-radius:var(--r-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--ink-3);background:var(--surface-2);min-height:280px;cursor:pointer;transition:.15s; }
.add-card:hover { border-color:var(--blue-400);color:var(--blue-600);background:var(--blue-50); }
.add-card .ac { width:54px;height:54px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:var(--shadow-sm); }
.cmp-bar { display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,var(--orange-50),var(--blue-50));border-radius:var(--r);padding:16px 20px;margin-bottom:18px; }
.cmp-row { display:grid;grid-template-columns:1fr 1fr;gap:18px; }
