/* ===== 温馨托管 家长端 · 小程序形态 ===== */
:root{
  --sky:#3aa9f0; --sky2:#6fc5ff; --sky3:#bfe4ff;
  --text:#1e3a5f; --muted:#6b8cb0; --line:#eef5fb;
  --card:rgba(255,255,255,.9); --border:#dceefb;
  --ok:#16a34a; --warn:#d97706; --no:#dc2626; --gold:#f59e0b;
  --nav:46px; --tab:56px;
  --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  color:var(--text);background:#e8eef6;
  -webkit-font-smoothing:antialiased;
}
.app{
  position:relative;height:100vh;height:100dvh;max-width:430px;margin:0 auto;
  display:flex;flex-direction:column;overflow:hidden;
  background:linear-gradient(180deg,#eaf6ff,#cfeaff 42%,#fff 100%);
  box-shadow:0 0 40px rgba(58,169,240,.12);
}
@media(min-width:520px){ .app{height:calc(100vh - 40px);margin:20px auto;border-radius:22px} }

/* ---------- 导航条 ---------- */
.navbar{
  position:relative;z-index:20;flex:0 0 var(--nav);height:var(--nav);
  display:flex;align-items:center;gap:8px;padding:0 10px;
  background:rgba(255,255,255,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid #e8f3fc;
}
.nav-back{
  width:32px;height:32px;border:0;background:transparent;color:var(--text);
  display:flex;align-items:center;justify-content:center;border-radius:9px;cursor:pointer;opacity:0;pointer-events:none;transition:.2s;
}
.nav-back.on{opacity:1;pointer-events:auto}
.nav-back:active{background:#eef7ff}
.nav-title{
  position:absolute;left:0;right:0;text-align:center;font-size:16px;font-weight:600;
  letter-spacing:.3px;pointer-events:none;
}
.capsule{
  margin-left:auto;height:28px;display:flex;align-items:center;gap:7px;padding:0 9px;
  border:1px solid #e3eefa;border-radius:15px;background:rgba(255,255,255,.75);color:#5f7fa0;
}
.cap-dots{font-size:13px;letter-spacing:1px;line-height:1;cursor:pointer}
.cap-line{width:1px;height:13px;background:#e3eefa}
.cap-ring{width:11px;height:11px;border:1.6px solid #5f7fa0;border-radius:50%;position:relative}
.cap-ring::after{content:"";position:absolute;inset:3px;border-radius:50%;background:#5f7fa0}

/* ---------- 滚动区 ---------- */
main{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}
main::-webkit-scrollbar{width:0}
.view{padding-bottom:14px;animation:viewIn .26s cubic-bezier(.22,.61,.36,1)}
@keyframes viewIn{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}
.view.tab{animation:fadeUp .24s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- tabBar ---------- */
.tabbar{
  flex:0 0 auto;display:flex;background:rgba(255,255,255,.94);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-top:1px solid #e8f3fc;padding-bottom:var(--safe-b);z-index:25;
  transition:transform .22s ease,opacity .22s ease;
}
.tabbar.hide{transform:translateY(110%);opacity:0;pointer-events:none}
.tab-item{
  flex:1;height:var(--tab);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:#93aec7;font-size:10.5px;cursor:pointer;transition:color .18s;
}
.tab-item svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.tab-item.on{color:var(--sky);font-weight:600}
.tab-item.on svg{stroke:var(--sky);stroke-width:2}

/* ---------- 通用 ---------- */
.pad{padding:0 14px}
.card{
  background:var(--card);border:1px solid var(--border);border-radius:16px;
  padding:15px 16px;margin:0 14px 12px;
  box-shadow:0 6px 18px rgba(58,169,240,.06);
}
.card.flat{box-shadow:none;background:rgba(255,255,255,.7)}
.card-h{display:flex;align-items:center;gap:7px;margin-bottom:11px}
.card-h h3{font-size:15px;font-weight:600}
.card-h .more{margin-left:auto;font-size:12px;color:var(--muted);cursor:pointer;display:flex;align-items:center;gap:2px}
.card-h .more:active{opacity:.6}
.dot-t{width:4px;height:14px;border-radius:2px;background:linear-gradient(180deg,var(--sky2),var(--sky))}
.note{font-size:13px;color:var(--muted);line-height:1.85}
.note b{color:var(--text);font-weight:600}
.muted{color:var(--muted)}
.sec-t{font-size:12.5px;color:#8aa8c2;margin:16px 18px 8px;letter-spacing:.4px}
.tag{padding:2px 8px;border-radius:9px;font-size:11px;white-space:nowrap;line-height:1.6}
.t-hot{background:#fff1e6;color:#e2641a}
.t-ok{background:#e7f8ef;color:var(--ok)}
.t-half{background:#fff4e0;color:var(--warn)}
.t-no{background:#fdecec;color:var(--no)}
.t-gray{background:#f0f4f8;color:#8aa8c2}
.t-blue{background:#e8f4ff;color:var(--sky)}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  border:0;border-radius:11px;padding:11px 18px;font-size:14.5px;font-weight:600;cursor:pointer;
  background:linear-gradient(135deg,var(--sky2),var(--sky));color:#fff;
  box-shadow:0 6px 16px rgba(58,169,240,.28);transition:transform .12s,opacity .15s;
  font-family:inherit;
}
.btn:active{transform:scale(.975);opacity:.92}
.btn.ghost{background:transparent;color:var(--muted);border:1px solid #cfe4f5;box-shadow:none;font-weight:500}
.btn.dis{background:#e6eef6;color:#a9bccd;box-shadow:none;cursor:not-allowed}
.btn.sm{padding:7px 14px;font-size:13px;border-radius:9px}
.btn.block{width:100%}
.row{display:flex;align-items:center;gap:10px}
.grow{flex:1;min-width:0}
.ellip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.price{color:#e2641a;font-weight:700}
.price small{font-size:11px;font-weight:500}

/* ---------- 首页 hero ---------- */
.hero{position:relative;height:164px;overflow:hidden}
.hero svg{width:100%;height:100%;display:block}
.hero-mask{
  position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;
  padding:0 20px;color:#fff;background:linear-gradient(90deg,rgba(24,74,116,.55),rgba(90,170,220,.05) 78%);
}
.hero-mask .brand{font-size:21px;font-weight:700;letter-spacing:1px;text-shadow:0 2px 12px rgba(12,50,80,.3)}
.hero-mask .slogan{font-size:12.5px;opacity:.95;margin-top:6px;letter-spacing:.6px}
.hero-mask .badge{
  display:inline-flex;align-items:center;gap:5px;margin-top:12px;width:fit-content;
  background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.4);
  border-radius:20px;padding:4px 11px;font-size:11.5px;
}

/* ---------- 门店卡 ---------- */
.store{margin:-26px 14px 12px;position:relative;z-index:5;background:rgba(255,255,255,.94);
  border:1px solid var(--border);border-radius:16px;padding:13px 14px;
  box-shadow:0 10px 24px rgba(58,169,240,.12);display:flex;align-items:center;gap:11px}
.store-logo{
  flex:0 0 42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#a8dcff,#4fa8e8);color:#fff;font-size:15px;font-weight:700;letter-spacing:.5px;
}
.store-name{font-size:14.5px;font-weight:600}
.store-sub{font-size:11.5px;color:var(--muted);margin-top:4px;display:flex;align-items:center;gap:6px}
.store-tel{
  flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:2px;
  color:var(--sky);font-size:10.5px;cursor:pointer;
}
.store-tel svg{width:19px;height:19px;stroke:var(--sky);fill:none;stroke-width:1.7}

/* ---------- 快捷入口 ---------- */
.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:0 14px 12px;
  background:rgba(255,255,255,.9);border:1px solid var(--border);border-radius:16px;padding:14px 6px;
  box-shadow:0 6px 18px rgba(58,169,240,.06)}
.quick-i{display:flex;flex-direction:column;align-items:center;gap:7px;cursor:pointer;font-size:11.5px;color:#4a6b8a}
.quick-i:active{transform:scale(.95)}
.quick-ic{width:40px;height:40px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff}
.quick-ic svg{width:21px;height:21px;stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.q1{background:linear-gradient(135deg,#8ed0ff,#4fa8e8)}
.q2{background:linear-gradient(135deg,#ffc98b,#f79c42)}
.q3{background:linear-gradient(135deg,#a9e6c6,#48bd88)}
.q4{background:linear-gradient(135deg,#c3b6ff,#7f6be8)}

/* ---------- 资产条 ---------- */
.assets{display:grid;grid-template-columns:repeat(4,1fr);margin:0 14px 12px;
  background:linear-gradient(135deg,rgba(111,197,255,.16),rgba(255,255,255,.9));
  border:1px solid #d9ecfb;border-radius:16px;padding:14px 4px}
.asset{text-align:center;position:relative}
.asset+.asset::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:1px;background:#e2eff9}
.asset .n{font-size:18px;font-weight:700;color:var(--sky);line-height:1.2}
.asset .n.gold{color:var(--gold)}
.asset .l{font-size:10.5px;color:var(--muted);margin-top:4px}

/* ---------- 课程卡 ---------- */
.ses{background:var(--card);border:1px solid var(--border);border-radius:15px;padding:13px 14px;margin:0 14px 10px;
  box-shadow:0 5px 14px rgba(58,169,240,.05)}
.ses-top{display:flex;gap:10px;align-items:flex-start}
.ses-time{flex:0 0 58px;text-align:center;border-right:1px dashed #e4f0fa;padding-right:8px}
.ses-time .s{font-size:15px;font-weight:700;color:var(--text);letter-spacing:.2px}
.ses-time .e{font-size:11px;color:var(--muted);margin-top:2px}
.ses-title{font-size:14.5px;font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ses-meta{font-size:11.5px;color:var(--muted);margin-top:6px;display:flex;flex-wrap:wrap;gap:4px 10px}
.ses-bot{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:9px;border-top:1px solid var(--line)}
.ses-bot .cap{font-size:11.5px;color:var(--muted)}
.ses-bot .btn{margin-left:auto}

/* 日期条 */
.dates{display:flex;gap:7px;overflow-x:auto;padding:12px 14px 10px;scrollbar-width:none}
.dates::-webkit-scrollbar{display:none}
.date-i{flex:0 0 46px;height:56px;border-radius:13px;background:rgba(255,255,255,.86);border:1px solid var(--border);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;transition:.16s}
.date-i .w{font-size:10.5px;color:var(--muted)}
.date-i .d{font-size:15px;font-weight:700;color:var(--text)}
.date-i.on{background:linear-gradient(160deg,var(--sky2),var(--sky));border-color:transparent;box-shadow:0 6px 14px rgba(58,169,240,.28)}
.date-i.on .w,.date-i.on .d{color:#fff}

/* 筛选 chips */
.chips{display:flex;gap:8px;overflow-x:auto;padding:0 14px 12px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;padding:7px 15px;border-radius:20px;font-size:12.5px;color:#5f7fa0;
  background:rgba(255,255,255,.85);border:1px solid var(--border);cursor:pointer;transition:.16s}
.chip.on{background:var(--text);color:#fff;border-color:var(--text);font-weight:600}

/* ---------- 卡包 ---------- */
.mycard{position:relative;border-radius:16px;padding:16px;margin:0 14px 12px;color:#fff;overflow:hidden;
  background:linear-gradient(135deg,#5bb6f0,#3a7fd0);box-shadow:0 10px 22px rgba(58,127,208,.24)}
.mycard::after{content:"";position:absolute;right:-30px;top:-30px;width:130px;height:130px;border-radius:50%;
  background:rgba(255,255,255,.13)}
.mycard.stored{background:linear-gradient(135deg,#f0b45e,#e08a2e);box-shadow:0 10px 22px rgba(224,138,46,.24)}
.mycard.period{background:linear-gradient(135deg,#6ecfa0,#2f9e6b);box-shadow:0 10px 22px rgba(47,158,107,.22)}
.mycard .cn{font-size:16px;font-weight:700;letter-spacing:.3px}
.mycard .cd{font-size:11.5px;opacity:.9;margin-top:6px}
.mycard .cv{display:flex;align-items:flex-end;gap:6px;margin-top:14px}
.mycard .cv .num{font-size:28px;font-weight:700;line-height:1;letter-spacing:.5px}
.mycard .cv .unit{font-size:12px;opacity:.92;padding-bottom:3px}
.mycard .cf{display:flex;justify-content:space-between;font-size:11px;opacity:.88;margin-top:12px}
/* 卡状态角标 */
.mycard .cst{position:absolute;right:12px;top:12px;z-index:2;font-size:10.5px;line-height:1;
  padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.24);color:#fff}
.mycard .cst.warn{background:#fff;color:#c2740c;font-weight:600}
.mycard .cst.offb{background:rgba(255,255,255,.92);color:#5b7a99;font-weight:600}
.mycard.off{filter:grayscale(.8);opacity:.75}

/* 在售卡 */
.sell{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--border);
  border-radius:15px;padding:14px;margin:0 14px 10px;box-shadow:0 5px 14px rgba(58,169,240,.05);cursor:pointer}
.sell:active{transform:scale(.99)}
.sell-ic{flex:0 0 44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#d9eeff,#a8dcff);color:#2f7cb8;font-size:11px;font-weight:700;text-align:center;line-height:1.2}
.sell-t{font-size:14.5px;font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sell-d{font-size:11.5px;color:var(--muted);margin-top:5px;line-height:1.6}
.sell-p{text-align:right;flex:0 0 auto}
.sell-p .now{font-size:16px;font-weight:700;color:#e2641a}
.sell-p .old{font-size:11px;color:#adbccb;text-decoration:line-through;margin-top:2px}

/* ---------- 活动 ---------- */
.act{background:var(--card);border:1px solid var(--border);border-radius:16px;overflow:hidden;margin:0 14px 12px;
  box-shadow:0 6px 16px rgba(58,169,240,.06);cursor:pointer}
.act-banner{height:96px;position:relative;display:flex;align-items:center;padding:0 16px;color:#fff}
.act-banner .ab-t{font-size:16px;font-weight:700;letter-spacing:.4px;text-shadow:0 2px 8px rgba(0,0,0,.18)}
.act-banner .ab-s{font-size:11.5px;opacity:.95;margin-top:6px}
.ab1{background:linear-gradient(120deg,#6fb6f5,#3f7fd8)}
.ab2{background:linear-gradient(120deg,#f2b46a,#e2862f)}
.ab3{background:linear-gradient(120deg,#7fd3ab,#38a976)}
.act-body{padding:12px 14px;display:flex;align-items:center;gap:10px}
.act-body .info{flex:1;min-width:0}
.act-body .t{font-size:14px;font-weight:600}
.act-body .m{font-size:11.5px;color:var(--muted);margin-top:5px}

/* ---------- 我的 ---------- */
.me-head{padding:18px 16px 22px;display:flex;align-items:center;gap:13px;
  background:linear-gradient(135deg,#bfe4ff,#87cefa 55%,#5aa8dd);color:#fff;position:relative;overflow:hidden}
.me-head::after{content:"";position:absolute;right:-40px;bottom:-60px;width:160px;height:160px;border-radius:50%;background:rgba(255,255,255,.14)}
.me-av{width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.9);color:#3a7fd0;
  display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;flex:0 0 56px;
  border:2px solid rgba(255,255,255,.65)}
.me-name{font-size:18px;font-weight:700;letter-spacing:.3px}
.me-sub{font-size:11.5px;opacity:.94;margin-top:6px;display:flex;align-items:center;gap:8px}
.me-chip{background:rgba(255,255,255,.25);border:1px solid rgba(255,255,255,.4);border-radius:12px;padding:2px 9px;font-size:11px}
.me-grid{display:grid;grid-template-columns:repeat(4,1fr);background:rgba(255,255,255,.92);
  border:1px solid var(--border);border-radius:16px;margin:-14px 14px 12px;padding:15px 4px;position:relative;z-index:3;
  box-shadow:0 8px 20px rgba(58,169,240,.1)}
.me-g{text-align:center;cursor:pointer}
.me-g .n{font-size:17px;font-weight:700;color:var(--text)}
.me-g .l{font-size:10.5px;color:var(--muted);margin-top:4px}

.menu-list{background:var(--card);border:1px solid var(--border);border-radius:16px;margin:0 14px 12px;overflow:hidden}
.mi{display:flex;align-items:center;gap:11px;padding:14px 16px;cursor:pointer;border-bottom:1px solid var(--line);font-size:14px}
.mi:last-child{border-bottom:0}
.mi:active{background:#f6fbff}
.mi svg{width:19px;height:19px;stroke:var(--sky);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.mi .arrow{margin-left:auto;color:#c3d5e5;font-size:16px}
.mi .val{margin-left:auto;font-size:12.5px;color:var(--muted)}

/* ---------- 详情页 ---------- */
.detail-hero{padding:16px;color:#fff;background:linear-gradient(135deg,#79c2f5,#3f8fd8)}
.detail-hero .dt{font-size:19px;font-weight:700}
.detail-hero .dm{font-size:12px;opacity:.95;margin-top:8px;display:flex;flex-wrap:wrap;gap:4px 12px}
.kv{display:flex;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.kv:last-child{border-bottom:0}
.kv .k{flex:0 0 76px;color:var(--muted)}
.kv .v{flex:1;color:var(--text);line-height:1.7}
.bullets{font-size:13.5px;line-height:2.05;color:#3d5a78}
.bullets li{list-style:none;position:relative;padding-left:15px}
.bullets li::before{content:"";position:absolute;left:3px;top:12px;width:5px;height:5px;border-radius:50%;background:#a8d6f5}

/* 下单/预约 底部条 */
.bar-bottom{position:sticky;bottom:0;display:flex;align-items:center;gap:12px;padding:11px 14px calc(11px + var(--safe-b));
  background:rgba(255,255,255,.95);backdrop-filter:blur(14px);border-top:1px solid #e8f3fc;z-index:8}
/* tab 页里的底部条：撑满内容高度，按钮贴底 */
.view.hasbar{display:flex;flex-direction:column;min-height:100%;padding-bottom:0}
.view.hasbar .bar-bottom{margin-top:auto;padding-bottom:11px}
.bar-bottom .bp{flex:1}
.bar-bottom .bp .n{font-size:17px;font-weight:700;color:#e2641a;line-height:1.2}
.bar-bottom .bp .l{font-size:10.5px;color:var(--muted);margin-top:2px}

/* 订单 */
.order{background:var(--card);border:1px solid var(--border);border-radius:15px;margin:0 14px 10px;padding:13px 14px;cursor:pointer}
.order-h{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--muted);margin-bottom:9px}
.order-h .st{margin-left:auto;font-weight:600}
.order-b{display:flex;gap:11px;align-items:center}
.order-ic{flex:0 0 42px;height:42px;border-radius:11px;background:linear-gradient(135deg,#e3f3ff,#c4e5ff);
  display:flex;align-items:center;justify-content:center;font-size:16px}
.order-t{font-size:14px;font-weight:600}
.order-d{font-size:11.5px;color:var(--muted);margin-top:4px}
.order-p{margin-left:auto;font-size:15px;font-weight:700;color:#e2641a}

/* 空态 */
.empty{text-align:center;padding:52px 24px;color:#a9bccd;font-size:13px}
.empty .ic{margin-bottom:12px;line-height:0}
.empty .ic svg{width:34px;height:34px;fill:none;stroke:#c3d5e5;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* ---------- 弹层 ---------- */
.mask{position:fixed;inset:0;background:rgba(20,50,80,.34);opacity:0;pointer-events:none;transition:.22s;z-index:60}
.mask.on{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:50%;bottom:0;transform:translate(-50%,102%);width:100%;max-width:430px;
  background:#fff;border-radius:20px 20px 0 0;z-index:61;transition:transform .28s cubic-bezier(.22,.61,.36,1);
  padding-bottom:calc(14px + var(--safe-b));max-height:78vh;overflow-y:auto}
.sheet.on{transform:translate(-50%,0)}
.sheet-body{padding:18px 18px 8px}
.sheet h4{font-size:16px;margin-bottom:14px;text-align:center}
.sheet .line{display:flex;justify-content:space-between;font-size:13.5px;padding:9px 0;color:#3d5a78}
.sheet .line b{font-weight:600;color:var(--text)}
.sheet .hr{height:1px;background:var(--line);margin:6px 0 12px}
.opt{display:flex;align-items:center;gap:10px;padding:12px 13px;border:1px solid var(--border);border-radius:12px;margin-bottom:9px;cursor:pointer;font-size:13.5px}
.opt.on{border-color:var(--sky);background:#f2faff}
.opt .ck{width:17px;height:17px;border-radius:50%;border:1.6px solid #cfded9;border-color:#cfdcea;flex:0 0 17px;position:relative}
.opt.on .ck{border-color:var(--sky);background:var(--sky)}
.opt.on .ck::after{content:"";position:absolute;inset:4.5px;border-radius:50%;background:#fff}
.opt .sub{font-size:11px;color:var(--muted);margin-top:3px}

/* toast */
.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(.94);
  background:rgba(22,44,68,.9);color:#fff;padding:12px 20px;border-radius:12px;font-size:13.5px;
  opacity:0;pointer-events:none;transition:.22s;z-index:90;max-width:74%;text-align:center;line-height:1.7}
.toast.on{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* 首页横滑 */
.hscroll{display:flex;gap:11px;overflow-x:auto;padding:0 14px 4px;scrollbar-width:none}
.hscroll::-webkit-scrollbar{display:none}
.rec{flex:0 0 168px;background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden;cursor:pointer}
.rec-top{height:76px;display:flex;align-items:flex-end;padding:9px 11px;color:#fff;font-size:11px;letter-spacing:.3px}
.rec-body{padding:10px 11px 12px}
.rec-body .t{font-size:13.5px;font-weight:600;line-height:1.4;height:38px;overflow:hidden}
.rec-body .m{font-size:11px;color:var(--muted);margin-top:6px;display:flex;justify-content:space-between;align-items:center}

.coach{flex:0 0 74px;text-align:center;cursor:pointer}
.coach-av{width:56px;height:56px;border-radius:50%;margin:0 auto;display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:17px;font-weight:700;letter-spacing:.5px;box-shadow:0 6px 14px rgba(58,169,240,.18)}
.coach-n{font-size:12px;margin-top:7px;color:var(--text)}
.coach-t{font-size:10px;color:var(--muted);margin-top:2px}

.notice{display:flex;gap:9px;align-items:center;background:#fffbf0;border:1px solid #fdeccb;border-radius:13px;
  padding:11px 13px;margin:0 14px 12px;font-size:12.5px;color:#8a6a2f;line-height:1.65}
.notice svg{width:16px;height:16px;stroke:#e5a13a;fill:none;stroke-width:1.8;flex:0 0 16px}

/* ---------- 登录页 ---------- */
.login{padding:44px 26px 30px;text-align:center}
.login-logo{width:64px;height:64px;border-radius:20px;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#a8dcff,#4fa8e8);color:#fff;font-size:19px;font-weight:700;letter-spacing:1px;
  box-shadow:0 12px 26px rgba(79,168,232,.32)}
.login h1{font-size:20px;letter-spacing:.5px}
.login-sub{font-size:12.5px;color:var(--muted);margin-top:8px;line-height:1.8}
.login-form{margin-top:26px;text-align:left;background:rgba(255,255,255,.9);border:1px solid var(--border);
  border-radius:18px;padding:18px 16px 16px;box-shadow:0 10px 26px rgba(58,169,240,.1)}
.fl{display:block;font-size:12px;color:var(--muted);margin:0 0 7px 2px}
.fi{width:100%;height:44px;border:1.5px solid #d8e9f7;border-radius:11px;padding:0 13px;font-size:15px;
  color:var(--text);background:#fbfdff;outline:none;font-family:inherit;transition:.16s}
.fi:focus{border-color:var(--sky);background:#fff;box-shadow:0 0 0 3px rgba(58,169,240,.1)}
.fi-row{display:flex;gap:9px;align-items:center}
.fi-row .fi{flex:1;min-width:0}
.fi-row .btn{flex:0 0 auto;height:44px;white-space:nowrap}
.login-err{color:var(--no);font-size:12.5px;margin-top:10px}
.login-tip{font-size:11.5px;color:#9db6cc;margin-top:14px;text-align:center;line-height:1.7}
.login-tip b{color:var(--sky)}

/* ---------- 绑定微信 ---------- */
.wxbind{padding:52px 26px 30px;text-align:center}
.wx-mark{width:76px;height:76px;border-radius:26px;margin:0 auto 18px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#4fe08a,#07c160);color:#fff;box-shadow:0 14px 30px rgba(7,193,96,.3)}
.wx-mark svg{stroke:#fff;fill:none;stroke-width:1.5}
.wxbind h1{font-size:21px;letter-spacing:.5px}
.wx-sub{font-size:13px;color:var(--muted);margin-top:10px;line-height:1.85}
.wx-card{margin-top:24px;text-align:left;background:rgba(255,255,255,.92);border:1px solid var(--border);
  border-radius:18px;padding:4px 16px;box-shadow:0 10px 26px rgba(58,169,240,.1)}
.wx-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;font-size:13px;
  border-bottom:1px solid #eef5fb}
.wx-row:last-child{border-bottom:0}
.wx-row span{color:var(--muted);flex:0 0 auto}
.wx-row b{font-weight:600;color:var(--text);font-size:13.5px;text-align:right}
.wx-row b.sm{font-size:12.5px;font-weight:500;color:#41708f}
.btn.wxbtn{width:100%;height:48px;margin-top:26px;border-radius:14px;font-size:16px;border:0;
  background:linear-gradient(135deg,#2fd474,#07c160);color:#fff;box-shadow:0 12px 26px rgba(7,193,96,.28)}
.btn.wxbtn:disabled{opacity:.72}
.wx-tip{font-size:11.5px;color:#9db6cc;margin-top:18px;line-height:1.8}

/* ---------- 微信登录页 ---------- */
.wxlogin{margin-top:28px}
.wxlogin .btn.wxbtn{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:0}
.wxlogin .btn.wxbtn svg{flex:0 0 auto}
.wx-state{display:flex;align-items:center;justify-content:center;gap:5px;font-size:12px;color:#7d9ab2;
  margin-top:12px;line-height:1.6}
.wx-state svg{flex:0 0 auto;stroke:currentColor;fill:none;stroke-width:1.6}
.wx-state.bad{color:#c2792a}
.wxlogin .login-err{margin-top:10px}
.wxlogin .wx-tip{margin-top:12px}
.or-line{display:flex;align-items:center;gap:10px;margin:22px 4px 16px;color:#a8c0d4;font-size:11.5px}
.or-line:before,.or-line:after{content:'';flex:1;height:1px;background:#e2eefa}
.login-form.hide{display:none}

/* 菜单里的微信图标用品牌绿 */
.mi-wx{display:flex;align-items:center;color:#07c160}
.login{display:flex;flex-direction:column;justify-content:center;min-height:calc(100vh - 140px);min-height:calc(100dvh - 140px);padding-top:24px;padding-bottom:40px}
.or-line{cursor:pointer}
.or-line span{transition:.15s}
.or-line:active span{color:var(--sky)}
