/* 育才抖音招生小程序 · 版面稿统一样式（设计令牌 + 组件）
   基准宽度 375px，三档：375 / 390 / 430（≤430 内均为响应式，1px = 2rpx）
   零外链：不引任何 CDN / 网络字体 / 网络图片，字体走系统栈
   ------------------------------------------------------------------ */

:root{
  /* 品牌：学院藏蓝（主）+ 朱砂红（唯一主操作）+ 赭金（只做线与序号，不做大字） */
  --brand:#123A6B;
  --brand-2:#1E4E92;
  --brand-3:#2B63AE;
  --brand-soft:#EAF0F9;
  --cta:#B02E24;
  --cta-press:#8E241C;
  --cta-soft:#FCEDEA;
  --gold:#6E560E;      /* 金墨：浅金底上 6.43:1（原 #8A6F12 只 4.42，已压深） */
  --gold-line:#D9C08A;
  --gold-soft:#FAF5E8;

  /* 底与层次 */
  --bg:#F4F6F9;
  --card:#FFFFFF;
  --card-2:#FAFBFD;
  --line:#E7EBF1;
  --line-2:#F0F3F7;

  /* 文字四级（对白底实测均 ≥4.5:1，见自检报告） */
  --ink:#16233A;
  --ink-2:#495772;
  --ink-3:#55627A;
  --ink-4:#626E80;     /* 12px 注释/图位标签（对白底 5.17:1、对页底 4.78:1） */

  /* 语义 */
  --ok:#1E7B4D; --ok-soft:#E9F5EE;
  --warn:#9A5B00; --warn-soft:#FDF3E3;
  --danger:#B02E24; --danger-soft:#FCEDEA;
  --info:#1E4E92; --info-soft:#EAF0F9;

  /* 尺寸 */
  --sp:16px;            /* 页边距（390 起 18，430 起 20） */
  --gap:12px;
  --r-card:12px;
  --r-btn:10px;
  --r-tag:6px;
  --r-pill:999px;
  --h-btn:50px;         /* 主按钮高：375/390/430 三档不变，触控 ≥44 */
  --h-input:48px;
  --h-bar:56px;         /* 粘底条内高 */

  /* 阴影：只做投影不做发光 */
  --sh-1:0 1px 2px rgba(22,35,58,.05);
  --sh-2:0 2px 6px rgba(22,35,58,.06),0 10px 24px rgba(22,35,58,.05);
  --sh-bar:0 -2px 10px rgba(22,35,58,.06);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:"MiSans","Alibaba PuHuiTi 3.0","Noto Sans CJK SC","Noto Sans SC",-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  font-size:15px;line-height:1.5;
  font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;
}
img,svg{display:block}
a{color:var(--brand-2);text-decoration:none}
button{font:inherit;color:inherit}

/* 屏容器：375 基准，430 封顶；右留 0（安全区靠内边距） */
.phone{width:100%;max-width:430px;margin:0 auto;background:var(--bg);position:relative;min-height:100vh;overflow-x:clip}

/* ---------- 状态栏 + 小程序胶囊占位 ---------- */
.sb{height:44px;display:flex;align-items:flex-end;justify-content:space-between;padding:0 14px 6px;font-size:13px;font-weight:600;letter-spacing:.2px}
.sb .sb-time{font-variant-numeric:tabular-nums}
.sb .sb-ico{display:flex;gap:5px;align-items:center;opacity:.9}
.sb .sb-ico svg{display:block}
/* 胶囊禁区：右上 100×44，内容右边界 ≤ 屏宽-116 */
.capsule{position:absolute;right:14px;top:52px;width:88px;height:32px;border:1px dashed rgba(255,255,255,.45);border-radius:999px;display:flex;align-items:center;justify-content:space-around;color:#fff;font-size:13px;z-index:5;pointer-events:none;opacity:.75}
.capsule.on-light{border-color:#C9D2E0;color:var(--ink-4)}
.capsule .dot{letter-spacing:1px}
.capsule .ring{width:15px;height:15px;border:1.5px solid currentColor;border-radius:50%;position:relative}
.capsule .ring::after{content:"";position:absolute;inset:4px;border-radius:50%;background:currentColor}

/* ---------- 顶栏（子页：整行落到 90px 之下） ---------- */
.navbar{display:flex;align-items:center;gap:10px;padding:6px var(--sp) 10px;background:var(--card);border-bottom:1px solid var(--line)}
.navbar .nav-btn{width:44px;height:44px;margin-left:-12px;display:flex;align-items:center;justify-content:center;border:0;background:none;color:var(--ink)}
.navbar .nav-title{font-size:17px;font-weight:700;letter-spacing:.2px}
.navbar .nav-right{margin-left:auto;font-size:13px;color:var(--ink-3);display:flex;align-items:center;gap:6px}
.spacer-91{height:91px} /* 深色头 + 胶囊带（仅首页 hero 用） */

/* ---------- 首页 hero ---------- */
.hero{position:relative;background:linear-gradient(158deg,#0F2E56 0%,#123A6B 42%,#1B4A86 100%);color:#fff;padding:0 0 18px;overflow:hidden}
.hero::after{content:"";position:absolute;left:0;right:0;bottom:-40px;height:220px;background:radial-gradient(60% 100% at 50% 0%,rgba(217,192,138,.22),transparent 70%);pointer-events:none}
.hero .sb{color:#fff}
.hero-top{display:flex;align-items:center;gap:10px;padding:0 var(--sp);max-width:calc(100% - 116px)} /* 胶囊禁区：375→259 */
.hero-top .logo{width:36px;height:36px;border-radius:9px;background:#fff;color:var(--brand);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:17px;letter-spacing:0;flex:none;box-shadow:0 2px 6px rgba(0,0,0,.18)}
.hero-top .sch{min-width:0}
.hero-top .sch b{display:block;font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hero-top .sch span{display:block;font-size:12px;color:rgba(255,255,255,.72);white-space:nowrap}
.hero-body{padding:16px var(--sp) 0;position:relative;z-index:2}
.hero-eyebrow{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--r-pill);background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.3);font-size:12px;letter-spacing:.4px}
.hero-eyebrow .pulse{width:6px;height:6px;border-radius:50%;background:#F0C56B;box-shadow:0 0 0 3px rgba(240,197,107,.22)}
.hero h1{margin:10px 0 6px;font-size:24px;line-height:1.32;font-weight:800;letter-spacing:.3px;max-width:11.5em}
.hero p.sub{margin:0;font-size:13.5px;line-height:1.6;color:rgba(255,255,255,.82);max-width:17em}
/* 主视觉图位：叠加在 hero 底部 */
.hero-visual{margin:14px var(--sp) 0;border-radius:var(--r-card);overflow:hidden;border:1px solid rgba(255,255,255,.18)}

/* ---------- 图位（不引外链图，只用规格占位块；开发按标注替换） ---------- */
.ph{position:relative;background:
    linear-gradient(135deg,rgba(18,58,107,.08),rgba(18,58,107,0) 60%),
    repeating-linear-gradient(45deg,#EDF1F7 0 10px,#F4F7FB 10px 20px);
  border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;justify-content:center;text-align:center;color:#576375;font-size:12px;line-height:1.45;padding:8px}
.ph.dark{background:
    linear-gradient(135deg,rgba(255,255,255,.10),rgba(255,255,255,0) 60%),
    repeating-linear-gradient(45deg,rgba(255,255,255,.10) 0 10px,rgba(255,255,255,.04) 10px 20px);
  border-color:rgba(255,255,255,.28);color:rgba(255,255,255,.9)}
.ph b{display:block;font-size:12.5px;font-weight:700;color:inherit;letter-spacing:.2px}
.ph span{display:block;font-size:12px;opacity:.85;margin-top:2px}
.ph-hero{aspect-ratio:750/560}
.ph-169{aspect-ratio:16/9}
.ph-43{aspect-ratio:4/3}
.ph-11{aspect-ratio:1/1}
.ph-map{aspect-ratio:375/280}

/* ---------- 区块 ---------- */
.sec{padding:18px var(--sp) 0}
.sec-h{display:flex;align-items:baseline;gap:8px;margin:0 0 10px}
.sec-h h2{margin:0;font-size:17px;font-weight:700;letter-spacing:.2px}
.sec-h .more{margin-left:auto;font-size:13px;color:var(--ink-3);display:flex;align-items:center;gap:2px}
.sec-h .note{font-size:12px;color:var(--ink-4);font-weight:400;margin-left:6px}

/* ---------- 卡片 / 行 ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--sh-1);overflow:hidden}
.card.pad{padding:14px}
.card + .card{margin-top:10px}
.row{display:flex;align-items:center;gap:12px;min-width:0}
.row > .grow{min-width:0;flex:1}

/* 学段入口 4 格 */
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.entry{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:12px 4px 10px;display:flex;flex-direction:column;align-items:center;gap:6px;box-shadow:var(--sh-1)}
.entry .ei{width:40px;height:40px;border-radius:11px;background:var(--brand-soft);color:var(--brand);display:flex;align-items:center;justify-content:center}
.entry span{font-size:13px;font-weight:600;color:var(--ink)}
.entry em{font-size:12px;color:var(--ink-4);font-style:normal}

/* 课程卡（列表） */
.course{display:flex;gap:12px;padding:12px}
.course .thumb{width:88px;height:88px;flex:none}
.course .ct{min-width:0;flex:1;display:flex;flex-direction:column;gap:4px}
.course h3{margin:0;font-size:16px;font-weight:700;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.course .meta{font-size:12.5px;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:4px 10px}
.course .price{font-size:13px;color:var(--cta);font-weight:600}
.course .price small{color:var(--ink-4);font-weight:400;font-size:12px}
.course .go{margin-top:auto;display:flex;align-items:center}
.course .go .btn{margin-left:auto}

/* 标签 */
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tag{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:var(--r-tag);font-size:12px;font-weight:600;background:var(--brand-soft);color:var(--brand);white-space:nowrap}
.tag.gold{background:var(--gold-soft);color:var(--gold)}
.tag.gray{background:#EFF2F7;color:var(--ink-3)}
.tag.ok{background:var(--ok-soft);color:var(--ok)}
.tag.warn{background:var(--warn-soft);color:var(--warn)}
.tag.danger{background:var(--danger-soft);color:var(--danger)}
.tag.line{background:transparent;border:1px solid var(--line);color:var(--ink-3);font-weight:500}

/* 状态标签：线索五态 + 已放弃 */
.st{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:var(--r-pill);font-size:12.5px;font-weight:600;white-space:nowrap}
.st::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.st-new{background:#FFF3E0;color:#8A4B00}
.st-called{background:#E9F0FB;color:#1B4A86}
.st-visit{background:#E7F3FB;color:#125E86}
.st-exam{background:var(--gold-soft);color:var(--gold)}
.st-admit{background:var(--ok-soft);color:var(--ok)}
.st-drop{background:#EEF1F5;color:#5A6474}

/* ---------- 按钮（三档 + 五态） ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:44px;padding:0 14px;border-radius:var(--r-btn);border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:15px;font-weight:600;line-height:1;min-width:0;cursor:pointer}
.btn-primary{background:var(--cta);border-color:var(--cta);color:#fff;box-shadow:0 2px 8px rgba(176,46,36,.22)}
.btn-primary:active{background:var(--cta-press);border-color:var(--cta-press)}
.btn-brand{background:var(--brand);border-color:var(--brand);color:#fff}
.btn-ghost{background:transparent;border-color:#C9D2E0;color:var(--brand)}
.btn-quiet{background:#F2F5F9;border-color:#F2F5F9;color:var(--ink-2)}
.btn-lg{height:var(--h-btn);font-size:17px;border-radius:12px}
.btn-sm{height:44px;font-size:13.5px;padding:0 12px;border-radius:8px}
.btn-block{display:flex;width:100%}
.btn[disabled],.btn.is-disabled{background:#E8EBF0;border-color:#E8EBF0;color:#4E5A6C;box-shadow:none;cursor:not-allowed}
.btn.is-loading{color:#fff;position:relative;padding-left:40px}
.btn.is-loading::after{content:"";position:absolute;left:15px;top:50%;margin-top:-9px;width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- 筛选 chips ---------- */
.chips{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x proximity;padding:2px var(--sp) 2px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;height:44px;padding:0 15px;border-radius:var(--r-pill);background:var(--card);border:1px solid var(--line);color:var(--ink-2);font-size:13.5px;font-weight:600;display:inline-flex;align-items:center;scroll-snap-align:start;cursor:pointer}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.chip.ghost{background:transparent;border-style:dashed;color:var(--ink-3)}
/* 已选条件回显 */
.selected{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:10px var(--sp) 0}
.selected .sc{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 8px;border-radius:var(--r-tag);background:var(--brand-soft);color:var(--brand);font-size:12.5px;font-weight:600}
.selected .sc i{font-style:normal;color:#4E5A6C}
.selected .clear{font-size:12.5px;color:var(--ink-3);margin-left:2px}

/* ---------- 表单 ---------- */
.field{padding:14px 0;border-bottom:1px solid var(--line-2)}
.field:last-child{border-bottom:0}
.field > label,.field .lbl{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:var(--ink);margin-bottom:8px}
.req{color:var(--cta);font-weight:700}
.input,.select,.textarea{width:100%;min-height:var(--h-input);border:1px solid #DDE3EC;border-radius:var(--r-btn);background:var(--card);padding:12px;font-size:15px;color:var(--ink);display:flex;align-items:center;gap:8px}
.input.sm{min-height:44px;font-size:14px}
.textarea{min-height:96px;align-items:flex-start}
.input.err,.textarea.err{border-color:var(--danger);background:#FFF9F8}
.hint{font-size:12.5px;color:var(--ink-3);margin-top:6px}
.errmsg{font-size:12.5px;color:var(--danger);margin-top:6px;display:flex;align-items:center;gap:4px}
.count{margin-left:auto;font-size:12px;color:var(--ink-4)}
.auto{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:var(--r-tag);background:var(--ok-soft);color:var(--ok);font-size:12px;font-weight:600}
.checkbox{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:var(--ink-2);line-height:1.6}
.checkbox .box{width:22px;height:22px;flex:none;border-radius:6px;border:1.5px solid #C2CBD8;background:var(--card);display:flex;align-items:center;justify-content:center;color:#fff}
.checkbox .box.on{background:var(--brand);border-color:var(--brand)}

/* ---------- 粘底操作条（必须是文档流最后一个元素） ---------- */
.sticky-bar{position:sticky;bottom:0;z-index:20;background:rgba(255,255,255,.96);border-top:1px solid var(--line);box-shadow:var(--sh-bar);padding:8px var(--sp) calc(8px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:10px;margin-top:16px;backdrop-filter:none}
.sticky-bar .sb-left{min-width:0;flex:none}
.sticky-bar .sb-left b{display:block;font-size:14px;font-weight:700}
.sticky-bar .sb-left span{display:block;font-size:12px;color:var(--ink-3)}
.sticky-bar .btn{flex:1}

/* ---------- 骨架屏 / 空态 / 错误态 ---------- */
.skel{background:linear-gradient(90deg,#EDF1F7 25%,#F7F9FC 37%,#EDF1F7 63%);background-size:400% 100%;animation:skel 1.4s ease infinite;border-radius:8px}
@keyframes skel{0%{background-position:100% 50%}100%{background-position:0 50%}}
.sk-line{height:14px;margin-bottom:8px}
.sk-line.w40{width:40%}.sk-line.w60{width:60%}.sk-line.w80{width:80%}.sk-line.w20{width:20%}
.state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:36px 24px;gap:10px}
.state .ico{width:56px;height:56px;border-radius:16px;background:#EFF2F7;color:#55627A;display:flex;align-items:center;justify-content:center}
.state b{font-size:15px;font-weight:700}
.state p{margin:0;font-size:13px;color:var(--ink-3);line-height:1.6;max-width:20em}
.state .btn{margin-top:4px}

/* ---------- 时间线 / 步骤条 ---------- */
.tl{position:relative;padding-left:22px}
.tl::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl-item{position:relative;padding:0 0 16px}
.tl-item::before{content:"";position:absolute;left:-22px;top:4px;width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid #C9D2E0}
.tl-item.on::before{border-color:var(--brand);background:var(--brand)}
.tl-item .t{font-size:12px;color:var(--ink-4)}
.tl-item .d{font-size:13.5px;color:var(--ink);line-height:1.6;margin-top:2px}
.tl-item .who{font-size:12.5px;color:var(--ink-3);margin-top:2px}
.stepper{display:flex;align-items:flex-start;gap:0;padding:4px 0 2px}
.stepper .sp{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;min-width:0}
.stepper .sp .dot{width:22px;height:22px;border-radius:50%;background:#EEF1F5;color:#4E5A6C;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;z-index:1}
.stepper .sp.done .dot{background:var(--ok);color:#fff}
.stepper .sp.now .dot{background:var(--brand);color:#fff;box-shadow:0 0 0 4px var(--brand-soft)}
.stepper .sp span{font-size:12px;color:var(--ink-3);white-space:nowrap;text-align:center}
.stepper .sp.now span{color:var(--brand);font-weight:700}
.stepper .sp::before{content:"";position:absolute;top:11px;left:-50%;width:100%;height:2px;background:#EEF1F5}
.stepper .sp:first-child::before{display:none}
.stepper .sp.done::before,.stepper .sp.now::before{background:var(--ok)}

/* ---------- 后台：数字条 / 列表 / 漏斗 ---------- */
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 var(--sp)}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:10px 8px;box-shadow:var(--sh-1);min-width:0}
.kpi b{display:block;font-size:21px;font-weight:800;letter-spacing:.2px;line-height:1.15}
.kpi b.gold{color:var(--gold)}
.kpi span{display:block;font-size:12px;color:var(--ink-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lead{padding:12px}
.lead .lt{display:flex;align-items:center;gap:8px;min-width:0}
.lead .lt h3{margin:0;font-size:16px;font-weight:700;white-space:nowrap}
.lead .lm{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:12.5px;color:var(--ink-3);margin-top:6px}
.lead .lm em{font-style:normal;color:var(--ink-2)}
.lead .la{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.lead .la .num{font-size:12.5px;color:var(--ink-3);display:flex;align-items:center;gap:4px}
.lead .la .btn{margin-left:auto}
.bulkbar{display:flex;align-items:center;gap:8px;padding:8px var(--sp);background:var(--brand);color:#fff;font-size:13px}
.bulkbar .btn{height:32px;font-size:13px;padding:0 10px;background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.4);color:#fff}
.bulkbar .btn.solid{background:#fff;border-color:#fff;color:var(--brand)}
/* 漏斗 */
.funnel{display:flex;flex-direction:column;gap:6px}
.fn{display:flex;align-items:center;gap:10px}
.fn .bar{height:34px;border-radius:6px;background:linear-gradient(90deg,#1B4A86,#2B63AE);display:flex;align-items:center;padding:0 10px;color:#fff;font-size:13px;font-weight:700;min-width:0;white-space:nowrap;overflow:hidden}
.fn .bar.l2{background:linear-gradient(90deg,#1E4E92,#3D74B8)}
.fn .bar.l3{background:linear-gradient(90deg,#2B63AE,#5B90CC)}
.fn .bar.l4{background:linear-gradient(90deg,#8A6F12,#B08C2E)}
.fn .lb{width:52px;flex:none;font-size:12.5px;color:var(--ink-2)}
.fn .rate{font-size:12px;color:var(--ink-4);flex:none;width:44px;text-align:right}
/* 条形分布 */
.bars{display:flex;flex-direction:column;gap:10px}
.bl{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2)}
.bl .n{width:52px;flex:none}
.bl .track{flex:1;height:10px;background:#EEF1F5;border-radius:6px;overflow:hidden;min-width:0}
.bl .track i{display:block;height:100%;background:linear-gradient(90deg,#1B4A86,#3D74B8);border-radius:6px}
.bl .v{width:34px;text-align:right;color:var(--ink);font-weight:600;flex:none}
/* 弹窗 */
.modal-mask{position:absolute;inset:0;background:rgba(16,26,42,.45);display:flex;align-items:flex-end;z-index:40}
.modal{width:100%;background:var(--card);border-radius:16px 16px 0 0;padding:16px var(--sp) calc(16px + env(safe-area-inset-bottom));box-shadow:0 -8px 30px rgba(16,26,42,.22);max-height:86%;overflow:auto}
.modal .mh{display:flex;align-items:center;margin-bottom:4px}
.modal .mh h3{margin:0;font-size:17px;font-weight:700}
.modal .mh .x{margin-left:auto;width:44px;height:44px;margin-right:0;display:flex;align-items:center;justify-content:center;border:0;background:none;color:var(--ink-3)}
.modal .msub{font-size:12.5px;color:var(--ink-3);margin:0 0 12px}
.mgroup{border:1px solid var(--line);border-radius:var(--r-card);padding:12px;margin-bottom:12px}
.mgroup h4{margin:0 0 8px;font-size:13.5px;font-weight:700;color:var(--ink)}
.opt{display:flex;align-items:center;gap:10px;height:44px;font-size:14px;color:var(--ink)}
.opt .rd{width:20px;height:20px;border-radius:50%;border:1.5px solid #C2CBD8;flex:none;display:flex;align-items:center;justify-content:center}
.opt.on .rd{border-color:var(--brand);border-width:6px}
.opt.dis{color:#4E5A6C}
.opt .why{margin-left:auto;font-size:12px;color:var(--ink-4)}
/* 分段控件 */
.seg{display:flex;background:#EEF1F5;border-radius:10px;padding:3px;gap:3px}
.seg .s{flex:1;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:13.5px;font-weight:600;color:var(--ink-3);min-width:0}
.seg .s.on{background:var(--card);color:var(--brand);box-shadow:var(--sh-1)}
/* 折叠面板 */
.acc{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden}
.acc-item{border-bottom:1px solid var(--line-2)}
.acc-item:last-child{border-bottom:0}
.acc-q{display:flex;align-items:center;gap:10px;padding:14px;font-size:14.5px;font-weight:600;color:var(--ink);width:100%;text-align:left;border:0;background:none;min-height:52px}
.acc-q .ico{margin-left:auto;color:var(--ink-4);transition:transform .2s}
.acc-item.open .acc-q .ico{transform:rotate(180deg)}
.acc-a{padding:0 14px 14px;font-size:13.5px;line-height:1.75;color:var(--ink-2);display:none}
.acc-item.open .acc-a{display:block}

/* 提示条 */
.notice{display:flex;gap:8px;padding:10px 12px;border-radius:10px;background:var(--brand-soft);color:#1B3F73;font-size:12.5px;line-height:1.6}
.notice.warn{background:var(--warn-soft);color:#7A4700}
.notice.gold{background:var(--gold-soft);color:#6B560D}
.notice .i{flex:none;margin-top:1px}

/* 照片网格 */
.gal{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gal .ph{border-radius:10px}
.gal .wide{grid-column:1 / -1}

/* 后台：分组行 */
.grp{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;margin-top:10px}
.grp-h{padding:12px 14px 6px;font-size:13px;font-weight:700;color:var(--ink-3);letter-spacing:.2px}
.grow-item{display:flex;align-items:center;gap:10px;padding:13px 14px;border-top:1px solid var(--line-2);min-height:52px;font-size:14.5px}
.grow-item:first-of-type{border-top:0}
.grow-item .v{margin-left:auto;color:var(--ink-3);font-size:13.5px;display:flex;align-items:center;gap:6px;text-align:right;min-width:0}
.switch{width:46px;height:28px;border-radius:999px;background:#D8DEE8;position:relative;flex:none}
.switch.on{background:var(--ok)}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.switch.on::after{left:21px}

/* 底部说明（文档流末尾，不遮挡） */
.footnote{padding:18px var(--sp) 22px;font-size:12px;color:var(--ink-4);line-height:1.7;text-align:center}

.chip-tight{height:44px;margin:-9px 0;font-size:12.5px;padding:0 10px}
/* ---------- 通用小件（列表键值 / 要点行 / 序号 / 头像 / toast） ---------- */
.grow{min-width:0;flex:1}
.navbar{padding-right:104px} /* 胶囊安全区：胶囊右 14 + 宽 88 + 2 */
.subbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;height:36px;padding:0 var(--sp);background:var(--card);border-bottom:1px solid var(--line);font-size:13px;color:var(--brand-2);font-weight:600}
.kvrow{display:flex;gap:12px;padding:10px 0;border-top:1px solid var(--line-2);font-size:13.5px;line-height:1.6}
.kvrow:first-child{border-top:0}
.kvrow .k{flex:none;width:76px;color:var(--ink-3)}
.kvrow .v{flex:1;min-width:0;color:var(--ink)}
.li{display:flex;gap:8px;font-size:13.5px;line-height:1.75;color:var(--ink-2);padding:5px 0}
.li b{color:var(--ink);font-weight:600}
.num-badge{width:19px;height:19px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none;margin-top:3px}
.avatar{width:48px;height:48px;border-radius:50%;flex:none}
.toast{position:absolute;left:16px;right:16px;bottom:84px;z-index:50;background:#1E7B4D;color:#fff;border-radius:10px;padding:12px 14px;font-size:13.5px;display:flex;align-items:center;gap:8px;box-shadow:var(--sh-2)}
.kpis.two{grid-template-columns:repeat(2,1fr)}
.kpis.two .kpi b{font-size:23px}
.gal .ph-11{border-radius:10px}


/* ---------- 【待校方确认】占位件（A 栏：学校才能给的事实，稿上一律占位不写数字） ---------- */
.tbd{display:inline-block;border:1px dashed var(--gold-line);background:var(--gold-soft);color:#6E560E;border-radius:4px;padding:0 5px;font-size:inherit;line-height:1.5;vertical-align:baseline;white-space:normal}
.tbd.on-dark{border-color:rgba(240,197,107,.55);background:rgba(240,197,107,.16);color:#F7E3B4}
.tbd.blk{display:block;text-align:center;padding:6px 8px}
.entry .ei{position:relative}

/* ---------- 三档适配（只增不破：375 基准 → 390 → 430） ---------- */
@media (min-width:390px){
  :root{--sp:18px;--gap:13px}
  body{font-size:15px}
  .hero h1{font-size:26px}
  .course .thumb{width:96px;height:96px}
  .kpi b{font-size:22px}
}
@media (min-width:430px){
  :root{--sp:20px;--gap:14px}
  body{font-size:15.5px}
  .hero h1{font-size:28px}
  .hero p.sub{font-size:14px}
  .course .thumb{width:104px;height:104px}
  .grid4{gap:10px}
  .entry .ei{width:44px;height:44px}
  .kpi b{font-size:24px}
  .gal{gap:10px}
}

/* 无障碍：尊重减弱动效 */
@media (prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important}
}
