/* 福归春朵 · H5 演示版
   设计：米白底、深灰字、暖琥珀点缀 #D9792B；按工信部适老化规范：主要文字≥18px、主要按钮≥60px、对比度≥4.5:1、无广告无弹窗广告 */
:root{
  --bg:#FAF8F5; --card:#FFFFFF; --ink:#1D1D1F; --ink2:#5B5B5F; --line:#ECE7E1; --line2:#E2DBD2;
  --amber:#D9792B; --amber-deep:#A8571A; --amber-text:#9A4E14; --amber-tint:#FBEFE4; --amber-tint2:#F7E3CF;
  --ok:#2F6B4F; --ok-tint:#E7F1EB; --danger:#B3261E; --danger-tint:#FBEAE8;
  --r-lg:24px; --r-md:18px; --r-sm:12px;
  --shadow:0 1px 2px rgba(29,29,31,.04),0 6px 24px rgba(29,29,31,.06);
  --font:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","MiSans","Noto Sans CJK SC","Noto Sans SC","Microsoft YaHei",sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{min-height:100vh}
button{font-family:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0}
input,textarea,select{font-family:inherit;color:var(--ink)}
a{color:inherit;text-decoration:none}
svg{display:block}

/* ---------- 外层：手机优先；大屏时居中成手机宽度，左侧显示项目介绍 ---------- */
.stage{display:flex;justify-content:center;align-items:flex-start;min-height:100vh}
.side{display:none}
.phone{position:relative;width:100%;max-width:440px;min-height:100vh;background:var(--bg);display:flex;flex-direction:column}
@media (min-width:900px){
  body{background:#F1EDE7}
  .stage{gap:56px;padding:40px 24px;align-items:center}
  .phone{width:390px;height:844px;min-height:0;border-radius:44px;overflow:hidden;box-shadow:0 0 0 10px #1D1D1F,0 30px 80px rgba(29,29,31,.25)}
  .phone .scroll{overflow-y:auto}
  .side{display:block;max-width:380px}
}
.side .brand-row{display:flex;align-items:center;gap:14px}
.side h1{font-size:34px;letter-spacing:2px;margin:0}
.side .tag{font-size:18px;color:var(--ink2);margin:14px 0 28px;line-height:1.6}
.side .jump{display:grid;gap:10px}
.side .jump a{display:flex;justify-content:space-between;align-items:center;background:#fff;border-radius:14px;padding:14px 18px;font-size:16px;box-shadow:var(--shadow)}
.side .jump a span{color:var(--ink2);font-size:14px}
.side .fine{font-size:13px;color:var(--ink2);margin-top:22px;line-height:1.7}

/* ---------- 演示版标识（始终可见） ---------- */
.demo-bar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 14px;background:#1D1D1F;color:#fff;font-size:13px;letter-spacing:.3px}
.demo-bar b{display:inline-block;background:var(--amber);color:#1D1D1F;border-radius:6px;padding:2px 7px;margin-right:6px;font-weight:700}
.demo-bar button{color:#fff;font-size:13px;border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:5px 12px;white-space:nowrap}
.scroll{flex:1;display:flex;flex-direction:column}
.page{flex:1;padding:18px 18px 40px;animation:fade .25s ease}

.page.still{animation:none}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- 通用 ---------- */
.topbar{display:flex;align-items:center;gap:6px;margin:-4px -6px 14px;min-height:56px}
.back{display:flex;align-items:center;gap:2px;font-size:20px;font-weight:600;padding:12px 10px;border-radius:14px;min-height:56px}
.back:active{background:var(--line)}
.topbar .title{flex:1;text-align:center;font-size:20px;font-weight:700;margin-right:64px}
.card{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:20px}
.muted{color:var(--ink2)}
.h-sec{font-size:15px;color:var(--ink2);font-weight:600;letter-spacing:.5px;margin:26px 4px 10px}
.ai-badge{display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;letter-spacing:.5px;
  color:#fff;background:var(--amber-deep);border-radius:6px;padding:2px 6px;line-height:1.2;vertical-align:middle}
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:6px 12px;font-size:15px;font-weight:600}
.pill.ok{background:var(--ok-tint);color:var(--ok)} .pill.warn{background:var(--amber-tint);color:var(--amber-text)} .pill.bad{background:var(--danger-tint);color:var(--danger)}
.pill.gray{background:#F0EEEA;color:var(--ink2)}
.btn{display:flex;align-items:center;justify-content:center;gap:10px;border-radius:var(--r-md);font-weight:700;min-height:60px;padding:0 22px;font-size:20px;transition:transform .08s ease,opacity .2s}
.btn:active{transform:scale(.98)}
.btn.primary{background:var(--amber-deep);color:#fff}
.btn.ok{background:var(--ok);color:#fff}
.btn.ghost{background:var(--card);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line2)}
.btn.danger{background:var(--danger);color:#fff}
.btn.block{width:100%}
.btn.small{min-height:48px;font-size:17px;padding:0 16px;border-radius:14px}
.row{display:flex;align-items:center;gap:12px}
.grow{flex:1;min-width:0}
.sep{height:1px;background:var(--line);margin:14px 0}
.note{font-size:14px;color:var(--ink2);line-height:1.7}
.center{text-align:center}

/* ---------- 欢迎页 ---------- */
.welcome{display:flex;flex-direction:column;min-height:100%;padding-top:34px}
.logo-wrap{display:flex;flex-direction:column;align-items:center;text-align:center}
.logo-wrap h1{font-size:36px;letter-spacing:6px;margin:18px 0 6px;font-weight:800}
.logo-wrap .slogan{font-size:19px;color:var(--ink2);letter-spacing:1px}
.role-card{display:flex;align-items:center;gap:16px;padding:22px 20px;border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow);text-align:left;width:100%}
.role-card .ic{width:60px;height:60px;border-radius:18px;display:flex;align-items:center;justify-content:center;background:var(--amber-tint);color:var(--amber-deep);flex:none}
.role-card h3{margin:0;font-size:24px}
.role-card p{margin:4px 0 0;font-size:16px;color:var(--ink2)}
.role-card .chev{color:#B9B3AB}

/* ---------- 老人端 ---------- */
.elder{font-size:20px}
.greet{margin:6px 4px 18px}
.greet .date{font-size:17px;color:var(--ink2)}
.greet h2{font-size:30px;margin:4px 0 0;font-weight:800;letter-spacing:.5px}
.companion{padding:22px;background:linear-gradient(160deg,#FFFFFF 0%,#FFF8F1 100%)}
.avatar{position:relative;width:76px;height:76px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 30% 28%,#F2A766 0%,var(--amber) 55%,#B9621F 100%);color:#fff;font-size:34px;font-weight:700;box-shadow:0 6px 16px rgba(217,121,43,.28)}
.avatar.sm{width:44px;height:44px;font-size:20px;box-shadow:none}
.avatar .ai-badge{position:absolute;right:-6px;bottom:-2px;box-shadow:0 0 0 2.5px #fff}
.companion .who{font-size:24px;font-weight:800}
.companion .who-sub{font-size:16px;color:var(--ink2);margin-top:3px}
.companion .bubble{margin:16px 0 18px;font-size:21px;line-height:1.6;background:var(--amber-tint);border-radius:4px 18px 18px 18px;padding:14px 16px}
.talk{width:100%;min-height:88px;border-radius:22px;background:var(--amber-deep);color:#fff;font-size:26px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:12px;letter-spacing:2px;user-select:none;-webkit-user-select:none;touch-action:none}
.talk.listening{background:#8A4510}
.checkin{margin-top:16px;width:100%;min-height:96px;border-radius:var(--r-lg);display:flex;align-items:center;gap:16px;padding:0 22px;background:var(--card);box-shadow:var(--shadow);text-align:left}
.checkin .ic{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--ok-tint);color:var(--ok);flex:none}
.checkin .t1{font-size:25px;font-weight:800}
.checkin .t2{font-size:17px;color:var(--ink2);margin-top:2px}
.checkin.done{background:var(--ok);color:#fff}
.checkin.done .ic{background:rgba(255,255,255,.18);color:#fff}
.checkin.done .t2{color:rgba(255,255,255,.88)}
.next{margin-top:16px}
.next .lbl{font-size:16px;color:var(--ink2);font-weight:600}
.next .time{font-size:34px;font-weight:800;letter-spacing:1px}
.next .what{font-size:22px;font-weight:700;margin-top:2px}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.tile{background:var(--card);box-shadow:var(--shadow);border-radius:var(--r-lg);padding:18px 16px;min-height:120px;display:flex;flex-direction:column;justify-content:space-between;text-align:left}
.tile .ic{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;background:var(--amber-tint);color:var(--amber-deep)}
.tile .t{font-size:22px;font-weight:800;margin-top:12px}
.tile .s{font-size:15px;color:var(--ink2);margin-top:2px}
.tile.on{box-shadow:inset 0 0 0 2px var(--amber)}
.foot-note{text-align:center;font-size:14px;color:var(--ink2);margin-top:24px;line-height:1.7}

/* 聊天 */
.chat-wrap{display:flex;flex-direction:column;height:100%}
.chat-head{display:flex;align-items:center;gap:12px;padding:8px 4px 14px;border-bottom:1px solid var(--line)}
.msgs{flex:1;padding:16px 2px 8px;display:flex;flex-direction:column;gap:16px}
.msg{display:flex;gap:10px;align-items:flex-start;max-width:100%}
.msg .b{font-size:21px;line-height:1.6;padding:14px 16px;border-radius:18px;max-width:82%;word-break:break-word}
.msg.ai .b{background:var(--card);box-shadow:var(--shadow);border-top-left-radius:4px}
.msg.me{justify-content:flex-end}
.msg.me .b{background:var(--amber-tint2);border-top-right-radius:4px}
.msg .meta{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink2);margin-top:8px}
.msg .speak{display:inline-flex;align-items:center;gap:4px;font-size:15px;color:var(--amber-text);font-weight:600;padding:6px 0}
.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 12px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;font-size:17px;padding:10px 14px;border-radius:999px;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--line2)}
.composer{position:sticky;bottom:0;background:linear-gradient(to top,var(--bg) 80%,rgba(250,248,245,0));padding-top:10px}
.typebar{display:flex;gap:10px;margin-top:10px}
.typebar input{flex:1;min-height:60px;border-radius:16px;border:1.5px solid var(--line2);padding:0 16px;font-size:20px;background:#fff}
.listening-overlay{position:absolute;inset:0;background:rgba(29,29,31,.55);display:flex;align-items:center;justify-content:center;z-index:40}
.listening-overlay .box{background:#fff;border-radius:28px;padding:30px 34px;text-align:center;width:80%}
.wave{display:flex;gap:6px;justify-content:center;align-items:center;height:56px;margin-bottom:12px}
.wave i{width:7px;border-radius:4px;background:var(--amber);animation:w 1s ease-in-out infinite}
.wave i:nth-child(2){animation-delay:.1s}.wave i:nth-child(3){animation-delay:.2s}.wave i:nth-child(4){animation-delay:.3s}.wave i:nth-child(5){animation-delay:.4s}
@keyframes w{0%,100%{height:12px}50%{height:50px}}

/* 提醒（老人） */
.rem{display:flex;align-items:center;gap:14px;padding:18px}
.rem + .rem{margin-top:12px}
.rem .tm{font-size:26px;font-weight:800;width:80px;flex:none;letter-spacing:.5px}
.rem .lb{font-size:21px;font-weight:700}
.rem .kd{font-size:16px;color:var(--ink2);margin-top:2px}
.rem .done-tag{display:flex;align-items:center;gap:6px;color:var(--ok);font-weight:800;font-size:19px}
.rem.dim{opacity:.62}

/* 问问AI */
.ask-hero{background:linear-gradient(160deg,#fff,#FFF8F1)}
.ask-hero h2{margin:0;font-size:26px}
.ask-hero p{font-size:18px;color:var(--ink2);line-height:1.6;margin:8px 0 16px}
textarea.big{width:100%;min-height:110px;border-radius:16px;border:1.5px solid var(--line2);padding:14px 16px;font-size:20px;line-height:1.6;resize:none;background:#fff}
.verdict{margin-top:16px;border-radius:var(--r-lg);padding:20px;background:#fff;box-shadow:var(--shadow);border-top:6px solid var(--ok)}
.verdict.high{border-top-color:var(--danger)} .verdict.medium{border-top-color:var(--amber)}
.verdict .head{display:flex;align-items:center;gap:10px;font-size:26px;font-weight:800}
.verdict.high .head{color:var(--danger)} .verdict.medium .head{color:var(--amber-text)} .verdict.low .head{color:var(--ok)}
.verdict .adv{font-size:21px;line-height:1.65;margin:12px 0}
.verdict ul{margin:0 0 6px;padding-left:22px;font-size:17px;color:var(--ink2);line-height:1.8}

/* 底部弹层 */
.sheet-mask{position:absolute;inset:0;background:rgba(29,29,31,.45);z-index:50;display:flex;align-items:flex-end;animation:fade .2s}
.sheet{width:100%;background:var(--bg);border-radius:28px 28px 0 0;padding:10px 18px 26px;max-height:88%;overflow-y:auto}
.sheet .grab{width:44px;height:5px;border-radius:3px;background:#D6D0C8;margin:4px auto 14px}
.sheet h3{font-size:22px;margin:0 0 6px}
.toast{position:absolute;left:50%;bottom:90px;transform:translateX(-50%);background:rgba(29,29,31,.92);color:#fff;font-size:17px;padding:14px 20px;border-radius:16px;z-index:60;max-width:86%;text-align:center;line-height:1.5;animation:fade .2s}

/* ---------- 子女端 ---------- */
.child{font-size:16px}
.child .page{padding-bottom:100px}
.c-head{display:flex;align-items:center;justify-content:space-between;margin:4px 2px 16px}
.c-head h2{margin:0;font-size:26px;font-weight:800}
.c-head .sub{font-size:14px;color:var(--ink2);margin-top:2px}
.hero{padding:22px;border-radius:var(--r-lg);color:#fff;background:linear-gradient(150deg,#2F6B4F,#255A41)}
.hero.alert{background:linear-gradient(150deg,#B3261E,#8F1E18)}
.hero.warn{background:linear-gradient(150deg,#A8571A,#8A4510)}
.hero .state{font-size:34px;font-weight:800;letter-spacing:2px;display:flex;align-items:center;gap:10px}
.hero .desc{font-size:16px;opacity:.92;margin-top:6px;line-height:1.6}
.hero .btn{margin-top:16px;background:#fff;color:var(--danger);min-height:54px;font-size:18px}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.stat{background:#fff;border-radius:20px;box-shadow:var(--shadow);padding:16px}
.stat .k{font-size:14px;color:var(--ink2);display:flex;align-items:center;gap:6px}
.stat .v{font-size:24px;font-weight:800;margin-top:8px}
.stat .s{font-size:13px;color:var(--ink2);margin-top:2px}
.stat.wide{grid-column:1 / -1}
.tl{position:relative;padding-left:4px}
.tl-item{display:flex;gap:14px;padding:10px 0}
.tl-dot{width:28px;flex:none;display:flex;flex-direction:column;align-items:center}
.tl-dot i{width:14px;height:14px;border-radius:50%;background:#D6D0C8;margin-top:4px;flex:none}
.tl-dot b{flex:1;width:2px;background:var(--line);margin-top:4px}
.tl-item.done .tl-dot i{background:var(--ok)} .tl-item.missed .tl-dot i{background:var(--danger)} .tl-item.due .tl-dot i{background:var(--amber)}
.tl-item.active .tl-dot i{background:var(--danger);box-shadow:0 0 0 5px var(--danger-tint)}
.tl-main{flex:1;min-width:0}
.tl-main .t{font-weight:700;font-size:16px}
.tl-main .s{font-size:14px;color:var(--ink2);margin-top:2px;line-height:1.55}
.list-item{display:flex;align-items:center;gap:12px;padding:14px 0}
.list-item + .list-item{border-top:1px solid var(--line)}
.ic-round{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--amber-tint);color:var(--amber-deep);flex:none}
.ic-round.ok{background:var(--ok-tint);color:var(--ok)} .ic-round.bad{background:var(--danger-tint);color:var(--danger)}
.tabbar{position:sticky;bottom:0;z-index:20;display:grid;grid-template-columns:repeat(4,1fr);background:rgba(255,255,255,.94);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:6px 4px calc(8px + env(safe-area-inset-bottom))}
.tabbar a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:12px;color:var(--ink2);padding:6px 0}
.tabbar a.on{color:var(--amber-deep);font-weight:700}
.field{display:block;margin-top:14px}
.field span{display:block;font-size:14px;color:var(--ink2);margin-bottom:6px}
.field input,.field select{width:100%;min-height:52px;border-radius:14px;border:1.5px solid var(--line2);padding:0 14px;font-size:17px;background:#fff}
.seg{display:grid;grid-template-columns:1fr 1fr;background:#EFEBE6;border-radius:14px;padding:4px;gap:4px}
.seg button{min-height:46px;border-radius:11px;font-size:16px;font-weight:600;color:var(--ink2)}
.seg button.on{background:#fff;color:var(--ink);box-shadow:var(--shadow)}
.stepper{display:flex;align-items:center;gap:10px}
.stepper button{width:40px;height:40px;border-radius:12px;background:#F0ECE7;font-size:22px;font-weight:700}
.stepper b{min-width:62px;text-align:center;font-size:18px}
.ladder .tl-item .t{font-size:16px}
.code{display:flex;justify-content:center;gap:8px;margin:14px 0}
.code span{width:44px;height:58px;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line2);display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:800}
.consent-item{display:flex;gap:12px;align-items:flex-start;padding:14px 0}
.consent-item + .consent-item{border-top:1px solid var(--line)}
.check{width:30px;height:30px;border-radius:9px;flex:none;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 2px var(--line2);background:#fff;color:#fff}
.check.on{background:var(--ok);box-shadow:none}
.notice{padding:14px 0}
.notice + .notice{border-top:1px solid var(--line)}
.notice .ch{font-size:12px;font-weight:700;border-radius:6px;padding:2px 7px;background:#F0EEEA;color:var(--ink2)}
.notice .txt{font-size:15px;line-height:1.6;margin-top:6px}
.demo-time{font-size:28px;font-weight:800;letter-spacing:1px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* 聊天页：消息区单独滚动，说话按钮始终在底部 */
.phone.chatmode{height:100vh;height:100dvh;min-height:0;overflow:hidden}
.phone.chatmode .scroll{min-height:0;overflow:hidden}
.phone.chatmode .page{display:flex;flex-direction:column;min-height:0;padding-bottom:14px}
.phone.chatmode .chat-wrap{flex:1;min-height:0;height:auto}
.phone.chatmode .msgs{overflow-y:auto;min-height:0;-webkit-overflow-scrolling:touch}
.phone.chatmode .composer{position:static}

/* ---------- 小朵形象（v2）：真实头像 + 说话时琥珀色呼吸光 ---------- */
.avatar.av-img{background:#FFF8F0;color:inherit;padding:0;box-shadow:0 0 0 3px #fff,0 8px 22px rgba(168,87,26,.16);isolation:isolate}
.avatar.av-img img{position:relative;z-index:1;width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;-webkit-user-drag:none;user-select:none}
.avatar.av-img .ai-badge{z-index:2}
.avatar.xl{width:108px;height:108px}
.avatar.md{width:52px;height:52px;box-shadow:0 0 0 2px #fff,0 4px 12px rgba(168,87,26,.14)}
.avatar.sm.av-img{width:46px;height:46px;box-shadow:0 0 0 2px #fff,0 3px 10px rgba(168,87,26,.12)}
.avatar.xs{width:24px;height:24px;box-shadow:0 0 0 1.5px #fff}
button.avatar{cursor:pointer;transition:transform .15s ease}
button.avatar:active{transform:scale(.96)}
.av-halo{position:absolute;inset:-6px;border-radius:50%;z-index:0;pointer-events:none;opacity:0;
  background:radial-gradient(circle,rgba(217,121,43,.0) 52%,rgba(217,121,43,.38) 66%,rgba(242,167,102,.18) 78%,rgba(242,167,102,0) 100%);transform:scale(.92)}
.avatar.glow .av-halo{animation:breathe 2.2s ease-in-out infinite}
.avatar.glow{box-shadow:0 0 0 3px #fff,0 0 0 5px rgba(217,121,43,.35),0 10px 28px rgba(217,121,43,.30)}
.avatar.sm.glow,.avatar.md.glow{box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(217,121,43,.35),0 6px 18px rgba(217,121,43,.28)}
@keyframes breathe{0%,100%{opacity:.35;transform:scale(.96)}50%{opacity:1;transform:scale(1.16)}}
@media (prefers-reduced-motion:reduce){.avatar.glow .av-halo{animation:none;opacity:.8;transform:scale(1.08)}}

/* 首页陪伴卡 */
.companion{position:relative;overflow:hidden}
.companion::before{content:"";position:absolute;right:-60px;top:-70px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(242,167,102,.22),rgba(242,167,102,0) 70%);pointer-events:none}
.comp-top{position:relative;display:flex;align-items:center;gap:18px}
.comp-top .who{display:flex;align-items:center;gap:8px;font-size:28px}
.av-change{display:inline-flex;align-items:center;gap:6px;margin-top:10px;min-height:44px;padding:0 14px;border-radius:999px;font-size:16px;font-weight:700;color:var(--amber-text);background:#fff;box-shadow:inset 0 0 0 1.5px var(--amber-tint2)}
.av-change:active{background:var(--amber-tint)}
.companion .bubble{position:relative}

/* 聊天页头部 */
.chat-id{display:flex;align-items:center;justify-content:center;gap:12px;margin-right:70px;text-align:left}
.msg.ai .avatar{margin-top:2px}
.b.typing{display:flex;align-items:center;gap:7px;min-height:58px;padding:14px 20px}
.b.typing i{width:9px;height:9px;border-radius:50%;background:var(--amber);opacity:.35;animation:dot 1.2s ease-in-out infinite}
.b.typing i:nth-child(2){animation-delay:.15s}.b.typing i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,100%{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}

/* 形象选择 */
.av-pick{display:grid;gap:12px}
.av-opt{display:flex;align-items:center;gap:16px;width:100%;min-height:96px;padding:12px 16px 12px 12px;border-radius:22px;background:#fff;box-shadow:var(--shadow),inset 0 0 0 1.5px var(--line);text-align:left;transition:box-shadow .2s,transform .08s}
.av-opt:active{transform:scale(.99)}
.av-opt.on{box-shadow:0 8px 24px rgba(217,121,43,.16),inset 0 0 0 2.5px var(--amber)}
.av-opt-img{width:72px;height:72px;border-radius:50%;overflow:hidden;flex:none;box-shadow:0 0 0 2px #fff,0 4px 12px rgba(168,87,26,.14)}
.av-opt-img img{width:100%;height:100%;object-fit:cover;display:block}
.av-opt-t{display:block;font-size:23px;font-weight:800}
.av-opt-s{display:block;font-size:16px;color:var(--ink2);margin-top:3px}
.av-opt-check{width:34px;height:34px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 2px var(--line2);color:#fff}
.av-opt.on .av-opt-check{background:var(--amber-deep);box-shadow:none}

/* 品牌标识 */
.brand-mark{display:block;object-fit:cover;box-shadow:0 10px 30px rgba(168,87,26,.14),0 1px 2px rgba(29,29,31,.06)}
.stat .k .avatar.xs{display:inline-flex}
.boot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;min-height:70vh;color:var(--ink2);font-size:18px}
.boot img{width:88px;height:88px;border-radius:21px;box-shadow:0 10px 30px rgba(168,87,26,.14);animation:bootIn .6s ease both}
@keyframes bootIn{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
.msgs{padding-left:8px;padding-right:4px}
.chat-head{padding-left:4px}
.chat-id{margin-right:8px;justify-content:flex-start;gap:10px;padding-left:6px}
.chat-id .muted{white-space:nowrap}
/* 手机上弹层固定在屏幕可见区域（长页面滚动后也能看到） */
@media (max-width:899px){
  .sheet-mask,.listening-overlay{position:fixed;max-width:440px;margin:0 auto}
  .toast{position:fixed}
}

/* ---------- v6：帮我买（不加价商城）· 帮我叫车 · 子女付款请求 · 商业模式 · 机构后台 ---------- */
.shop-hero{background:linear-gradient(160deg,#FFFFFF 0%,#FFF6EC 100%)}
.shop-hero .sh-t{display:flex;align-items:center;gap:8px;font-size:26px;font-weight:800;letter-spacing:.5px;color:var(--ok)}
.shop-hero .sh-s{font-size:18px;color:var(--ink2);line-height:1.6;margin-top:6px}
.same-badge{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-size:15px;font-weight:800;color:var(--ok);background:var(--ok-tint);border-radius:999px;padding:4px 10px;vertical-align:middle;line-height:1.3}
.cat-list{display:grid;gap:12px}
.cat-row{display:flex;align-items:center;gap:16px;min-height:92px;padding:14px 18px;border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow);text-align:left;width:100%}
.cat-row .ic{width:60px;height:60px;border-radius:18px;flex:none;display:flex;align-items:center;justify-content:center;background:var(--amber-tint);color:var(--amber-deep)}
.cat-row .t{font-size:23px;font-weight:800}
.cat-row .s{font-size:16px;color:var(--ink2);margin-top:3px}
.cat-row .chev{color:#B9B3AB}
.c-grain{background:#F8EBD8!important;color:#9A5A17!important}
.c-daily{background:#EDF0F2!important;color:#4A5560!important}
.c-fresh{background:#E7F1EB!important;color:#2F6B4F!important}
.c-aging{background:#F1ECE4!important;color:#7A5B3A!important}
.c-pharm{background:#E8F0F1!important;color:#2C6670!important}
.g-art{width:84px;height:84px;border-radius:20px;flex:none;display:flex;align-items:center;justify-content:center}
.g-art.big{width:100%;height:170px;border-radius:22px;margin-bottom:16px}
.g-list{display:grid;gap:12px}
.g-card{display:flex;align-items:center;gap:16px;padding:16px;border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow);min-height:116px}
.g-name{font-size:22px;font-weight:800;line-height:1.35}
.g-spec{font-size:16px;color:var(--ink2);margin-top:2px}
.g-price{font-size:22px;font-weight:800;margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.g-m{font-size:14px;color:var(--ink2);margin-top:6px}
.pd-name{font-size:28px;font-weight:800}
.pd-price{font-size:34px;font-weight:800;margin-top:10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cmp{display:flex;align-items:center;gap:10px;margin-top:14px;background:#F7F4EF;border-radius:16px;padding:14px 16px}
.cmp>div:not(.eq){flex:1}
.cmp span{display:block;font-size:15px;color:var(--ink2)}
.cmp b{font-size:21px}
.cmp .eq{font-size:26px;font-weight:800;color:var(--ok)}
.pd-m{display:flex;align-items:center;gap:8px;font-size:17px;color:var(--ink2);margin-top:14px}
.qty{display:flex;align-items:center;gap:6px}
.qty button{width:60px;height:60px;border-radius:18px;background:#F0ECE7;font-size:30px;font-weight:700}
.qty button:disabled{opacity:.35}
.qty b{min-width:44px;text-align:center;font-size:26px}
.pd-total{font-size:28px;font-weight:800;color:var(--amber-text)}
.pay-btn{margin-top:14px;min-height:84px;justify-content:flex-start;padding:0 22px;text-align:left;gap:14px}
.pay-btn .pb-t{display:block;font-size:23px;font-weight:800}
.pay-btn .pb-s{display:block;font-size:15px;font-weight:500;opacity:.85;margin-top:2px}
.btn.ghost.pay-btn .pb-s{color:var(--ink2);opacity:1}
.ord-head{padding:26px 20px}
.ord-ic{width:76px;height:76px;border-radius:50%;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;background:var(--amber-tint);color:var(--amber-deep)}
.ord-ic.ok{background:var(--ok-tint);color:var(--ok)} .ord-ic.gray{background:#F0EEEA;color:var(--ink2)}
.oh-t{font-size:26px;font-weight:800}
.oh-s{font-size:18px;color:var(--ink2);margin-top:6px;line-height:1.6}
.ord-row{display:block;margin-bottom:12px}
.wxpay{padding:4px 2px 4px}
.wxpay .wp-m{text-align:center;font-size:18px;font-weight:700;margin-top:12px}
.wxpay .wp-a{text-align:center;font-size:44px;font-weight:800;margin:6px 0 4px;letter-spacing:.5px}
.handoff{text-align:center;padding:26px 20px;display:flex;flex-direction:column;align-items:center;gap:12px}
.handoff.small{flex-direction:row;text-align:left;padding:16px 0 0;gap:14px}
.ho-t{font-size:25px;font-weight:800}
.spin{width:36px;height:36px;border-radius:50%;border:4px solid var(--amber-tint2);border-top-color:var(--amber);animation:spin 1s linear infinite;flex:none}
.spin.big{width:64px;height:64px;border-width:6px}
@keyframes spin{to{transform:rotate(360deg)}}
.trip{display:grid;gap:16px}
.tp{display:flex;gap:14px;align-items:flex-start}
.tp i{width:16px;height:16px;border-radius:50%;flex:none;margin-top:6px}
.tp i.from{background:var(--ok)} .tp i.to{background:var(--amber)}
.tp .t{font-size:21px;font-weight:800}
.tp .s{font-size:16px;color:var(--ink2)}
.notified{margin-top:14px;background:var(--ok-tint);color:var(--ok);font-size:19px;font-weight:700;box-shadow:none}
.place-list{display:grid;gap:14px}
.place-btn{display:flex;align-items:center;gap:16px;width:100%;min-height:104px;padding:16px 20px;border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow);text-align:left}
.place-btn:active{transform:scale(.99)}
.place-btn .ic{width:64px;height:64px;border-radius:20px;flex:none;display:flex;align-items:center;justify-content:center;background:var(--amber-tint);color:var(--amber-deep)}
.place-btn .t{font-size:27px;font-weight:800}
.place-btn .s{font-size:16px;color:var(--ink2);margin-top:3px}
.place-btn .chev{color:#B9B3AB}
.chat-act{margin-top:10px;min-height:60px;font-size:20px;justify-content:flex-start;padding:0 18px}
/* 子女端 */
.pay-req{margin-top:14px;box-shadow:var(--shadow),inset 0 0 0 2px var(--amber-tint2)}
.pay-req .pr-k{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700;color:var(--amber-text)}
.pay-req .pr-t{font-size:22px;font-weight:800;margin-top:6px}
.pay-req .g-art{width:64px;height:64px;border-radius:16px}
.pay-req .same-badge{font-size:13px}
.link-row{border-top:1px solid var(--line);color:var(--ink)}
/* 商业模式 */
.biz-hero{border-radius:var(--r-lg);padding:24px 22px;background:linear-gradient(155deg,#FFFFFF 0%,#FFF3E6 100%);box-shadow:var(--shadow)}
.bh-k{font-size:13px;font-weight:700;letter-spacing:1px;color:var(--amber-text)}
.bh-t{font-size:28px;font-weight:800;line-height:1.35;margin-top:8px}
.bh-s{font-size:15px;color:var(--ink2);line-height:1.7;margin-top:10px}
.flow{display:flex;flex-direction:column;align-items:stretch}
.fl-node{display:flex;align-items:center;gap:12px;border-radius:16px;padding:14px;background:#F7F4EF}
.fl-node b{display:block;font-size:17px}
.fl-node span{display:block;font-size:13px;color:var(--ink2);margin-top:2px}
.fl-node.brand{background:var(--amber-tint)}
.fl-node .brand-mark{box-shadow:none;flex:none}
.fl-ic{width:36px;height:36px;border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;color:var(--ink2);flex:none}
.fl-arrow{display:flex;align-items:center;gap:10px;padding:8px 0 8px 30px;font-size:13px;color:var(--ink2)}
.fl-arrow i{position:relative;width:2px;height:28px;background:var(--line2);flex:none}
.fl-arrow i::after{content:"";position:absolute;left:-4px;bottom:-2px;border:5px solid transparent;border-top:6px solid var(--line2)}
.fl-arrow.up i{background:var(--amber)}
.fl-arrow.up i::after{bottom:auto;top:-8px;border-top:5px solid transparent;border-bottom:6px solid var(--amber)}
.fl-arrow.up span{color:var(--amber-text);font-weight:700}
.fl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.fl-grid div{font-size:13px;font-weight:700;text-align:center;padding:10px 4px;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line2)}
.cps{display:flex;align-items:stretch;gap:4px;padding:16px 12px}
.cp{flex:1;text-align:center;border-radius:14px;padding:12px 4px;background:#F7F4EF}
.cp.hi{background:var(--amber-tint)}
.cp b{display:block;font-size:17px}
.cp span{display:block;font-size:12px;color:var(--ink2);margin-top:4px;line-height:1.5}
.cp-ar{display:flex;align-items:center;color:#B9B3AB}
.payer{background:#fff;border-radius:20px;box-shadow:var(--shadow);padding:16px;margin-bottom:10px}
.payer.muted-card{background:#F7F4EF;box-shadow:none}
.py-t{font-size:17px;font-weight:800}
.py-m{font-size:14px;color:var(--amber-text);font-weight:700;margin-top:2px}
.py-r{font-size:14px;color:var(--ink2);line-height:1.6;margin-top:8px}
.py-r span{display:inline-block;font-size:12px;font-weight:700;color:var(--ink);background:#F0EEEA;border-radius:6px;padding:1px 6px;margin-right:6px}
.stars{font-size:14px;letter-spacing:1px;white-space:nowrap}
.stars i{font-style:normal;color:#E2DBD2} .stars i.on{color:var(--amber)}
.rules div{display:flex;align-items:center;gap:10px;font-size:15px;padding:8px 0;color:var(--ink)}
.rules svg{color:var(--ok);flex:none}
/* 机构后台 */
.org-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin:0 2px 4px}
.oh-n{font-size:20px;font-weight:800}
.org-al{padding:14px 0}
.org-al + .org-al{border-top:1px solid var(--line)}
.org-al .dot{width:10px;height:10px;border-radius:50%;margin-top:7px;flex:none;background:var(--amber)}
.org-al .dot.bad{background:var(--danger)} .org-al .dot.ok{background:var(--ok)}
.bars{display:flex;align-items:flex-end;gap:10px;height:120px}
.bars div{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px}
.bars i{display:block;width:100%;max-width:26px;border-radius:8px 8px 4px 4px;background:linear-gradient(to top,var(--amber),#F2A766)}
.bars span{font-size:12px;color:var(--ink2)}
.plan{margin-bottom:10px;padding:16px}
.plan.hi{box-shadow:var(--shadow),inset 0 0 0 2px var(--amber-tint2)}
.pl-t{font-size:18px;font-weight:800}
.pl-d{font-size:14px;color:var(--ink2);line-height:1.6;margin-top:8px}
.pl-f{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700;margin-top:8px;color:var(--ok)}
