/* =====================================================================
   宠语星 · Pet Language Star — 高保真原型样式
   设计令牌严格落地 PM 主题色体系
   ===================================================================== */

/* ---------- 1. 设计令牌 Design Tokens ---------- */
:root{
  /* 品牌色 */
  --primary:#FF7A45;        /* 暖橙 */
  --secondary:#4C6FFF;      /* 星空靛蓝 */
  --accent:#FFC53D;         /* 暖金 */
  --bg:#FFF8F3;             /* 暖白背景 */
  --surface:#FFFFFF;        /* 纯白表面 */
  --text:#2B2B2B;           /* 主文字 */
  --text-sub:#8A8A8A;       /* 次文字 */
  --positive:#2BC48A;       /* 健康绿 */
  --danger:#FF5A5F;         /* 警示红 */

  /* 浅色底（tint） */
  --primary-soft:#FFF0E9;
  --secondary-soft:#EEF1FF;
  --accent-soft:#FFF7E0;
  --positive-soft:#E8FAF3;
  --danger-soft:#FFECEC;
  --line:#F0E7E0;           /* 分割线 */

  /* 字号阶梯 */
  --fs-12:12px; --fs-14:14px; --fs-16:16px; --fs-18:18px;
  --fs-20:20px; --fs-24:24px; --fs-32:32px;

  /* 圆角 */
  --r-8:8px; --r-12:12px; --r-16:16px; --r-24:24px; --r-pill:999px;

  /* 阴影 */
  --sh-sm:0 2px 8px rgba(43,43,43,.06);
  --sh-md:0 6px 20px rgba(255,122,69,.10);
  --sh-lg:0 12px 40px rgba(43,43,43,.18);

  /* 间距 */
  --s-4:4px; --s-8:8px; --s-12:12px; --s-16:16px; --s-24:24px; --s-32:32px;

  /* 缓动 */
  --ease:cubic-bezier(.22,.61,.36,1);

  --phone-w:390px;
}

/* ---------- 2. Reset ---------- */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  color:var(--text);
  background:
    radial-gradient(1200px 600px at 15% -10%, #FFE9DC 0%, transparent 55%),
    radial-gradient(1000px 600px at 110% 10%, #E6ECFF 0%, transparent 50%),
    #F3EDE7;
  display:flex;flex-direction:column;align-items:center;
  min-height:100vh;
  letter-spacing:.2px;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input{font-family:inherit}
svg.ico{width:22px;height:22px;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ico-xs{width:16px;height:16px}
.ico-sm{width:18px;height:18px}
.ico-lg{width:30px;height:30px}
.ico-xl{width:42px;height:42px}
.chev{transform:rotate(180deg)}

/* ---------- 3. 原型顶部切换器 ---------- */
.proto-bar{
  width:100%;max-width:920px;padding:14px 18px 6px;
  display:flex;flex-direction:column;gap:10px;
}
.proto-brand{display:flex;align-items:center;gap:8px}
.proto-logo{
  width:30px;height:30px;border-radius:9px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;
}
.proto-logo .ico{width:18px;height:18px;stroke:#fff}
.proto-title{font-weight:700;font-size:15px;color:#5a463c}
.proto-nav{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.proto-nav::-webkit-scrollbar{display:none}
.proto-chip{
  flex:0 0 auto;padding:7px 13px;border-radius:var(--r-pill);
  background:rgba(255,255,255,.7);border:1px solid var(--line);
  font-size:13px;color:var(--text-sub);transition:.2s var(--ease);white-space:nowrap;
}
.proto-chip:hover{color:var(--primary);border-color:var(--primary)}
.proto-chip.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:var(--sh-md)}

/* ---------- 4. 手机框 ---------- */
.stage{flex:1;display:flex;justify-content:center;align-items:flex-start;padding:18px 0 36px;width:100%}
.phone{
  width:var(--phone-w);height:840px;max-height:88vh;
  background:var(--bg);border-radius:46px;
  border:11px solid #15151a;
  box-shadow:0 30px 70px rgba(43,43,43,.35), inset 0 0 0 2px #2a2a30;
  position:relative;display:flex;flex-direction:column;overflow:hidden;
}

/* 状态栏 */
.status-bar{
  height:44px;flex:0 0 44px;background:var(--bg);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 22px 0 26px;font-size:14px;font-weight:600;position:relative;z-index:5;
}
.sb-time{font-variant-numeric:tabular-nums}
.sb-notch{position:absolute;left:50%;top:8px;transform:translateX(-50%);width:120px;height:26px;background:#15151a;border-radius:0 0 16px 16px;z-index:-1}
.sb-icons{display:flex;align-items:center;gap:6px;color:var(--text)}
.sb-battery{width:24px;height:12px;border:1.5px solid var(--text);border-radius:3px;position:relative;display:inline-block}
.sb-battery::after{content:"";position:absolute;right:-3px;top:3px;width:2px;height:5px;background:var(--text);border-radius:0 1px 1px 0}
.sb-battery i{position:absolute;left:1.5px;top:1.5px;bottom:1.5px;width:70%;background:var(--text);border-radius:1px}

/* 屏幕滚动区 */
.screen{flex:1;overflow-y:auto;overflow-x:hidden;position:relative;background:var(--bg);-webkit-overflow-scrolling:touch}
.screen::-webkit-scrollbar{width:0}

/* 页面通用 */
.page{display:none;min-height:100%}
.page.is-active{display:block;animation:pageIn .32s var(--ease)}
@keyframes pageIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.page-body{padding:8px 16px 0}

/* 顶部导航 */
.nav-top{display:flex;align-items:center;justify-content:space-between;padding:6px 16px 12px}
.nav-top-solid{padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:4}
.nav-greet .greet-time{font-size:18px;font-weight:700}
.nav-greet .greet-date{font-size:12px;color:var(--text-sub);margin-top:2px}
.nav-pet{display:flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--line);padding:5px 10px 5px 5px;border-radius:var(--r-pill);box-shadow:var(--sh-sm)}
.nav-pet-name{font-size:13px;font-weight:600}
.nav-back,.nav-more,.nav-add,.nav-ai{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:var(--bg);color:var(--text)}
.nav-title{font-size:17px;font-weight:700}
.nav-title-tag{font-size:11px;color:var(--text-sub);font-weight:500}
.nav-add{width:auto;padding:0 12px;border-radius:var(--r-pill);gap:4px;display:inline-flex;background:var(--primary-soft);color:var(--primary);font-weight:600;font-size:13px}
.nav-ai{width:auto;padding:0 12px;border-radius:var(--r-pill);gap:4px;display:inline-flex;background:linear-gradient(135deg,var(--secondary),#7b91ff);color:#fff;font-weight:600;font-size:13px;box-shadow:0 4px 12px rgba(76,111,255,.3)}

/* section title */
.section-title{display:flex;align-items:center;justify-content:space-between;margin:18px 4px 10px;font-size:16px;font-weight:700}
.section-sub{font-size:12px;color:var(--text-sub);font-weight:500}

/* 卡片 */
.card{background:var(--surface);border-radius:var(--r-16);padding:16px;box-shadow:var(--sh-sm);border:1px solid rgba(240,231,224,.7)}
.safe-bottom{height:24px}

/* 通用按钮 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:var(--r-pill);font-weight:700;font-size:15px;padding:12px 18px;transition:.18s var(--ease)}
.btn:active{transform:scale(.96)}
.btn-primary{background:linear-gradient(135deg,var(--primary),#FF9466);color:#fff;box-shadow:0 8px 18px rgba(255,122,69,.35)}
.btn-secondary{background:var(--secondary-soft);color:var(--secondary)}
.btn-soft{background:var(--primary-soft);color:var(--primary)}
.btn-block{width:100%}

/* 标签 */
.tag{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:var(--r-pill)}
.tag-soft{background:var(--secondary-soft);color:var(--secondary)}
.tag-breed{background:var(--accent-soft);color:#b9860a}
.tag-vip{background:linear-gradient(135deg,var(--accent),#FFD96b);color:#7a5500}
.badge{display:inline-flex;align-items:center;font-size:11px;font-weight:700;color:#fff;background:var(--danger);padding:2px 7px;border-radius:var(--r-pill)}

/* 头像 */
.avatar{background:var(--surface);display:grid;place-items:center;color:var(--primary);border-radius:50%;overflow:hidden;flex:0 0 auto}
.avatar .ico{stroke:currentColor}
.avatar-xs{width:22px;height:22px}
.avatar-xs .ico{width:14px;height:14px}
.avatar-sm{width:34px;height:34px}
.avatar-md{width:46px;height:46px}
.avatar-md .ico{width:26px;height:26px}
.avatar-lg{width:60px;height:60px}
.avatar-lg .ico{width:34px;height:34px}
.avatar-xl{width:84px;height:84px}
.avatar-xl .ico{width:46px;height:46px}
.avatar-cat{background:linear-gradient(135deg,#FFE3D2,#FFCDB4);color:#E2672F}
.avatar-dog{background:linear-gradient(135deg,#D9E1FF,#C3CFFF);color:#3f5bdb}

/* reveal 入场 */
.reveal{animation:cardIn .5s var(--ease) both;animation-delay:var(--d,0s)}
@keyframes cardIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ============================================================
   P0 引导页
   ============================================================ */
.page-onboard{position:relative;height:100%;background:linear-gradient(180deg,#FFF3EA 0%,#FFF8F3 60%);overflow:hidden}
.onb-skip{position:absolute;top:54px;right:20px;z-index:6;font-size:13px;color:var(--text-sub);background:rgba(255,255,255,.7);padding:6px 14px;border-radius:var(--r-pill)}
.onb-track{display:flex;height:100%;transition:transform .45s var(--ease);touch-action:pan-y}
.onb-slide{flex:0 0 100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 34px;text-align:center;position:relative}
.onb-stars{position:absolute;inset:0;background-image:
  radial-gradient(2px 2px at 20% 30%, #FFC53D 50%, transparent),
  radial-gradient(2px 2px at 70% 20%, #4C6FFF 50%, transparent),
  radial-gradient(1.6px 1.6px at 40% 70%, #FF7A45 50%, transparent),
  radial-gradient(2px 2px at 85% 60%, #FFC53D 50%, transparent),
  radial-gradient(1.6px 1.6px at 15% 80%, #4C6FFF 50%, transparent);
  opacity:.7;animation:twinkle 3s ease-in-out infinite}
@keyframes twinkle{0%,100%{opacity:.4}50%{opacity:.9}}
.onb-logo{margin-bottom:18px;animation:floaty 4s ease-in-out infinite}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.onb-mark{position:relative;width:96px;height:96px;border-radius:30px;display:grid;place-items:center;background:linear-gradient(135deg,var(--primary),var(--accent));box-shadow:0 16px 36px rgba(255,122,69,.4);color:#fff}
.onb-mark .ico{stroke:#fff;width:46px;height:46px}
.onb-spark{position:absolute;right:-6px;top:-6px;width:34px;height:34px;background:#fff;border-radius:50%;display:grid;place-items:center;color:var(--accent);box-shadow:var(--sh-sm);animation:spin 8s linear infinite}
.onb-spark .ico{stroke:var(--accent);width:18px;height:18px}
@keyframes spin{to{transform:rotate(360deg)}}
.onb-name{font-size:34px;font-weight:800;letter-spacing:4px;background:linear-gradient(135deg,var(--primary),#FF9A5C);-webkit-background-clip:text;background-clip:text;color:transparent}
.onb-slogan{margin-top:14px;font-size:16px;font-weight:600;color:var(--text)}
.onb-sub{margin-top:8px;font-size:12px;color:var(--text-sub)}
.onb-2 h2,.onb-3 h2{font-size:24px;font-weight:800;margin-top:8px}
.onb-desc{margin-top:12px;font-size:14px;line-height:1.7;color:var(--text-sub)}
.onb-illus{position:relative;width:170px;height:170px;border-radius:50%;display:grid;place-items:center;background:var(--surface);box-shadow:var(--sh-md);color:var(--primary);margin-bottom:6px}
.illus-voice .voice-ring{position:absolute;inset:-14px;border-radius:50%;border:2px solid var(--primary-soft);animation:ping 2s ease-out infinite}
@keyframes ping{0%{transform:scale(.9);opacity:.8}100%{transform:scale(1.25);opacity:0}}
.mini-wave{position:absolute;bottom:18px;display:flex;gap:4px;align-items:flex-end;height:22px}
.mini-wave i{width:4px;background:var(--primary);border-radius:2px;animation:miniW .8s ease-in-out infinite}
.mini-wave i:nth-child(1){height:8px;animation-delay:0s}
.mini-wave i:nth-child(2){height:18px;animation-delay:.1s}
.mini-wave i:nth-child(3){height:12px;animation-delay:.2s}
.mini-wave i:nth-child(4){height:20px;animation-delay:.3s}
.mini-wave i:nth-child(5){height:10px;animation-delay:.15s}
.mini-wave i:nth-child(6){height:16px;animation-delay:.25s}
.mini-wave i:nth-child(7){height:8px;animation-delay:.05s}
@keyframes miniW{0%,100%{transform:scaleY(.5)}50%{transform:scaleY(1)}}
.illus-care .care-chip{position:absolute;background:#fff;padding:5px 9px;border-radius:var(--r-pill);font-size:12px;font-weight:700;color:var(--text);box-shadow:var(--sh-sm);display:flex;align-items:center;gap:3px}
.illus-care .care-chip .ico{width:13px;height:13px}
.chip-a{top:6px;left:-18px;color:var(--secondary)}
.chip-b{bottom:30px;left:-26px;color:var(--positive)}
.chip-c{top:40px;right:-22px;color:var(--primary)}
.onb-enter{margin-top:26px}
.onb-dots{position:absolute;bottom:40px;left:50%;transform:translateX(-50%);display:flex;gap:8px;z-index:6}
.onb-dots .dot{width:8px;height:8px;border-radius:50%;background:var(--line);transition:.3s}
.onb-dots .dot.active{width:22px;border-radius:4px;background:var(--primary)}

/* ============================================================
   P1 星图首页
   ============================================================ */
.pet-card{margin-top:6px;position:relative;overflow:hidden}
.pet-card::before{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;background:radial-gradient(circle,var(--accent-soft),transparent 70%);border-radius:50%}
.pet-card-main{display:flex;gap:14px;align-items:center;position:relative}
.pet-card-info{flex:1;min-width:0}
.pet-card-row1{display:flex;align-items:center;gap:8px}
.pet-name{font-size:20px;font-weight:800}
.pet-mood{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:14px;color:var(--text)}
.mood-emoji{font-size:18px}
.pet-health{margin-top:8px;font-size:12px;color:var(--text-sub);display:flex;align-items:center;gap:5px}
.health-dot{width:8px;height:8px;border-radius:50%;background:var(--positive);box-shadow:0 0 0 3px var(--positive-soft)}
.pet-health b{color:var(--positive)}
.pet-card-spark{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);display:flex;align-items:center;gap:6px;font-size:12px;color:#b9860a;font-weight:600}
.ico-star-gold{width:16px;height:16px;stroke:var(--accent)}

.translate-cta{width:100%;margin-top:18px;display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:var(--r-24);
  background:linear-gradient(135deg,var(--primary),#FF9A5C);color:#fff;box-shadow:0 14px 30px rgba(255,122,69,.4);position:relative;overflow:hidden;text-align:left}
.translate-cta:active{transform:scale(.98)}
.cta-icon{width:54px;height:54px;border-radius:18px;background:rgba(255,255,255,.22);display:grid;place-items:center;flex:0 0 auto}
.cta-icon .ico{stroke:#fff;width:30px;height:30px}
.cta-text{display:flex;flex-direction:column;flex:1}
.cta-text b{font-size:19px;font-weight:800}
.cta-text small{font-size:12px;opacity:.9;margin-top:2px}
.cta-arrow{stroke:#fff;opacity:.85}
.cta-wave{position:absolute;right:60px;bottom:14px;display:flex;gap:3px;align-items:flex-end;height:26px;opacity:.55}
.cta-wave i{width:4px;background:#fff;border-radius:2px;animation:miniW 1s ease-in-out infinite}
.cta-wave i:nth-child(1){height:10px;animation-delay:0s}
.cta-wave i:nth-child(2){height:22px;animation-delay:.15s}
.cta-wave i:nth-child(3){height:14px;animation-delay:.3s}
.cta-wave i:nth-child(4){height:20px;animation-delay:.1s}
.cta-wave i:nth-child(5){height:8px;animation-delay:.25s}

.care-list{display:flex;flex-direction:column;gap:10px}
.care-item{display:flex;align-items:center;gap:12px;background:var(--surface);border-radius:var(--r-16);padding:13px 14px;box-shadow:var(--sh-sm);transition:.2s var(--ease)}
.care-item:active{transform:scale(.98)}
.care-ico{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;flex:0 0 auto}
.care-ico .ico{stroke:#fff}
.ico-food{background:linear-gradient(135deg,#FF9A5C,var(--primary))}
.ico-walk{background:linear-gradient(135deg,#6f86ff,var(--secondary))}
.care-body{flex:1}
.care-body b{font-size:15px}
.care-body small{display:block;font-size:12px;color:var(--text-sub);margin-top:2px}
.care-check{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;color:transparent;transition:.2s}
.care-item.done .care-check{background:var(--positive);border-color:var(--positive);color:#fff}
.care-item.done .care-body b{color:var(--text-sub);text-decoration:line-through}

.weekly-card{margin-top:16px}
.weekly-head{display:flex;align-items:center;justify-content:space-between}
.weekly-head b{font-size:16px}
.weekly-head small{display:block;font-size:11px;color:var(--text-sub)}
.weekly-stats{display:flex;margin:14px 0;gap:8px}
.wstat{flex:1;text-align:center;background:var(--bg);border-radius:var(--r-12);padding:10px 4px}
.wstat b{font-size:22px;font-weight:800;color:var(--primary);display:block;font-variant-numeric:tabular-nums}
.wstat small{font-size:11px;color:var(--text-sub)}
.weekly-trend{display:flex;flex-direction:column;gap:6px}
.weekly-trend>span{font-size:12px;color:var(--text-sub)}
.trend-bars{display:flex;align-items:flex-end;gap:6px;height:46px}
.trend-bars i{flex:1;background:linear-gradient(180deg,var(--secondary),#9fb0ff);border-radius:4px 4px 0 0;height:var(--h);transform-origin:bottom;animation:grow .6s var(--ease) both}
@keyframes grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}

.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:18px}
.quick-item{background:var(--surface);border-radius:var(--r-16);padding:14px 6px;display:flex;flex-direction:column;align-items:center;gap:8px;box-shadow:var(--sh-sm);transition:.18s var(--ease)}
.quick-item:active{transform:scale(.95)}
.quick-item small{font-size:12px;font-weight:600}
.qi-ico{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;color:#fff}
.qi-ico .ico{stroke:#fff}
.qi-a{background:linear-gradient(135deg,#FF9A5C,var(--primary))}
.qi-b{background:linear-gradient(135deg,#6f86ff,var(--secondary))}
.qi-c{background:linear-gradient(135deg,#FFB75E,var(--accent))}
.qi-d{background:linear-gradient(135deg,#52d6a4,var(--positive))}

/* ============================================================
   P2 录音翻译
   ============================================================ */
.page-record{background:linear-gradient(180deg,#FFF1E8 0%,#FFF8F3 40%)}
.record-wrap{display:flex;flex-direction:column;align-items:center;padding:14px 24px 0;text-align:center;min-height:100%}
.record-mode{display:flex;gap:8px;background:var(--surface);padding:5px;border-radius:var(--r-pill);box-shadow:var(--sh-sm)}
.rm-tab{padding:7px 16px;border-radius:var(--r-pill);font-size:13px;font-weight:600;color:var(--text-sub);transition:.2s}
.rm-tab.active{background:var(--primary);color:#fff}
.record-mood{margin-top:34px;font-size:15px;font-weight:600;color:var(--text);min-height:22px;transition:.2s}
.record-mood.live{color:var(--primary)}
.wave-big{height:120px;width:100%;display:flex;align-items:center;justify-content:center;gap:4px;margin:26px 0}
.wave-big i{width:5px;height:12px;border-radius:3px;background:var(--primary-soft);transition:height .08s linear}
.wave-big.live i{background:linear-gradient(180deg,var(--primary),#FFB37A)}
.mic-btn{position:relative;width:108px;height:108px;border-radius:50%;background:linear-gradient(135deg,var(--primary),#FF9466);display:grid;place-items:center;color:#fff;box-shadow:0 16px 36px rgba(255,122,69,.45);margin-top:8px;user-select:none;touch-action:none}
.mic-btn .ico{stroke:#fff;width:46px;height:46px}
.mic-btn:active{transform:scale(.94)}
.mic-pulse{position:absolute;inset:0;border-radius:50%;border:2px solid var(--primary);animation:pulse 2s ease-out infinite;opacity:0}
.mic-btn.recording .mic-pulse{opacity:1}
@keyframes pulse{0%{transform:scale(1);opacity:.6}100%{transform:scale(1.6);opacity:0}}
.record-hint{margin-top:18px;font-size:13px;color:var(--text-sub)}
.record-tips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:26px}
.tip-chip{background:var(--surface);padding:7px 13px;border-radius:var(--r-pill);font-size:13px;box-shadow:var(--sh-sm)}

/* ============================================================
   P3 翻译结果
   ============================================================ */
.result-wrap{padding:14px 16px 0}
.result-hero{display:flex;flex-direction:column;align-items:center;gap:12px;margin:8px 0 18px}
.result-wave{display:flex;align-items:flex-end;gap:4px;height:40px}
.result-wave i{width:5px;background:linear-gradient(180deg,var(--secondary),#9fb0ff);border-radius:3px;height:var(--h);animation:grow .6s var(--ease) both}
.result-dur{font-size:12px;color:var(--text-sub);background:var(--secondary-soft);color:var(--secondary);padding:3px 10px;border-radius:var(--r-pill);font-weight:600}
.result-emotion{margin-bottom:12px}
.re-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.re-badge{display:inline-flex;align-items:center;gap:4px;background:var(--secondary-soft);color:var(--secondary);font-size:12px;font-weight:700;padding:4px 10px;border-radius:var(--r-pill)}
.re-badge .ico{stroke:var(--secondary)}
.confidence{font-size:12px;color:var(--text-sub)}
.confidence b{color:var(--primary)}
.emo-tags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.emo-tag{font-size:14px;font-weight:700;padding:7px 13px;border-radius:var(--r-pill)}
.emo-hungry{background:var(--primary-soft);color:var(--primary)}
.emo-attention{background:var(--accent-soft);color:#b9860a}
.re-desc{font-size:13px;line-height:1.7;color:var(--text-sub)}
.result-need,.result-advice{margin-bottom:12px}
.rn-title{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700;margin-bottom:8px}
.rn-title .ico{color:var(--primary)}
.rn-list{list-style:none;display:flex;flex-direction:column;gap:6px}
.rn-list li{font-size:13px;color:var(--text-sub);padding-left:16px;position:relative}
.rn-list li::before{content:"";position:absolute;left:2px;top:8px;width:6px;height:6px;border-radius:50%;background:var(--primary)}
.result-advice p{font-size:13px;line-height:1.7;color:var(--text)}
.result-actions{display:flex;gap:10px;margin-top:18px}
.result-actions .btn{flex:1}

/* ============================================================
   P4 健康档案
   ============================================================ */
.alert-card{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,var(--danger-soft),#fff);border:1px solid #ffd5d6;border-radius:var(--r-16);padding:13px 14px;box-shadow:var(--sh-sm)}
.alert-ico{width:40px;height:40px;border-radius:12px;background:var(--danger);display:grid;place-items:center;color:#fff;flex:0 0 auto}
.alert-ico .ico{stroke:#fff}
.alert-body{flex:1}
.alert-body b{font-size:14px}
.alert-body small{display:block;font-size:12px;color:var(--text-sub);margin-top:2px}
.alert-btn{background:var(--danger);color:#fff;font-size:12px;font-weight:700;padding:7px 12px;border-radius:var(--r-pill)}
.ai-summary{margin-top:14px}
.ai-head{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700;margin-bottom:8px}
.ai-dot{width:22px;height:22px;border-radius:7px;background:linear-gradient(135deg,var(--secondary),#7b91ff);display:grid;place-items:center;color:#fff}
.ai-dot .ico{stroke:#fff;width:13px;height:13px}
.ai-summary p{font-size:13px;line-height:1.7;color:var(--text-sub)}
.ai-summary .pos{color:var(--positive)}

.timeline{position:relative;padding-left:8px}
.timeline::before{content:"";position:absolute;left:21px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl-item{display:flex;gap:14px;margin-bottom:14px;position:relative}
.tl-dot{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;flex:0 0 auto;z-index:1;box-shadow:0 4px 10px rgba(43,43,43,.12)}
.tl-dot .ico{stroke:#fff;width:16px;height:16px}
.tl-vac{background:linear-gradient(135deg,#FF9A5C,var(--primary))}
.tl-check{background:linear-gradient(135deg,#6f86ff,var(--secondary))}
.tl-deworm{background:linear-gradient(135deg,#52d6a4,var(--positive))}
.tl-med{background:linear-gradient(135deg,#FFB75E,var(--accent))}
.tl-card{flex:1;background:var(--surface);border-radius:var(--r-12);padding:11px 13px;box-shadow:var(--sh-sm)}
.tl-head{display:flex;align-items:center;justify-content:space-between}
.tl-head b{font-size:14px}
.tl-date{font-size:12px;color:var(--text-sub)}
.tl-card small{display:block;font-size:12px;color:var(--text-sub);margin-top:3px}

/* ============================================================
   P5 日记
   ============================================================ */
.diary-list{display:flex;flex-direction:column;gap:14px}
.diary-card{background:var(--surface);border-radius:var(--r-16);overflow:hidden;box-shadow:var(--sh-sm);display:flex;flex-direction:column}
.diary-cover{height:120px;display:grid;place-items:center;color:rgba(255,255,255,.9)}
.diary-cover .ico{stroke:rgba(255,255,255,.95);width:42px;height:42px}
.cover-a{background:linear-gradient(135deg,#3a3a55,#5b5b85)}
.cover-b{background:linear-gradient(135deg,#FF7A45,#FF5A5F)}
.cover-c{background:linear-gradient(135deg,#4C6FFF,#52d6a4)}
.diary-body{padding:13px 14px}
.diary-meta{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-sub);font-weight:600}
.diary-text{font-size:14px;line-height:1.7;margin:8px 0 12px;color:var(--text)}
.diary-foot{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--text-sub)}
.diary-like{color:var(--danger);font-weight:600}

/* ============================================================
   P6 社区
   ============================================================ */
.comm-tabs{display:flex;gap:18px;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:46px;z-index:3}
.comm-tab{font-size:15px;font-weight:600;color:var(--text-sub);position:relative;padding-bottom:4px}
.comm-tab.active{color:var(--text);font-weight:800}
.comm-tab.active::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;border-radius:2px;background:var(--primary)}
.feed-card{background:var(--surface);border-radius:var(--r-16);padding:14px;box-shadow:var(--sh-sm);margin-bottom:14px}
.feed-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.feed-head>div{flex:1}
.feed-head b{font-size:15px;display:block}
.feed-head small{font-size:12px;color:var(--text-sub)}
.feed-follow{font-size:12px;font-weight:700;color:var(--primary);background:var(--primary-soft);padding:5px 12px;border-radius:var(--r-pill)}
.feed-text{font-size:14px;line-height:1.7;color:var(--text)}
.feed-img{height:160px;border-radius:var(--r-12);display:grid;place-items:center;margin:10px 0;color:rgba(255,255,255,.85)}
.feed-img .ico{stroke:rgba(255,255,255,.9);width:50px;height:50px}
.feed-a{background:linear-gradient(135deg,#FF7A45,#FF5A5F)}
.feed-b{background:linear-gradient(135deg,#4C6FFF,#9b6cff)}
.feed-tags{display:flex;gap:8px;margin:10px 0}
.feed-foot{display:flex;gap:20px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line);font-size:13px;color:var(--text-sub)}
.feed-act{display:flex;align-items:center;gap:4px}
.feed-act.liked{color:var(--danger);font-weight:700}

/* ============================================================
   P7 我的
   ============================================================ */
.mine-header{background:linear-gradient(160deg,#FFE3D2 0%,#FFF8F3 75%);padding:8px 16px 16px}
.mine-h-top{display:flex;align-items:center;justify-content:space-between}
.mine-hi{font-size:18px;font-weight:800}
.mine-h-ico{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.7);display:grid;place-items:center;color:var(--text-sub)}
.pet-switch{display:flex;gap:10px;margin:14px 0}
.ps-card{flex:1;background:var(--surface);border:2px solid transparent;border-radius:var(--r-16);padding:12px;display:flex;align-items:center;gap:10px;box-shadow:var(--sh-sm);position:relative;text-align:left;transition:.2s var(--ease)}
.ps-card.active{border-color:var(--primary);background:var(--primary-soft)}
.ps-card>div{min-width:0}
.ps-card b{font-size:15px;display:block}
.ps-card small{font-size:12px;color:var(--text-sub)}
.ps-dot{position:absolute;top:10px;right:10px;width:9px;height:9px;border-radius:50%;background:var(--positive);display:none}
.ps-card.active .ps-dot{display:block}
.ps-add{flex:0 0 56px;flex-direction:column;justify-content:center;gap:4px;color:var(--text-sub);font-size:12px;font-weight:600}
.ps-add .ico{stroke:var(--text-sub)}
.mine-stats{display:flex;background:var(--surface);border-radius:var(--r-16);padding:14px;box-shadow:var(--sh-sm)}
.mine-stats>div{flex:1;text-align:center}
.mine-stats b{font-size:20px;font-weight:800;color:var(--primary);display:block;font-variant-numeric:tabular-nums}
.mine-stats small{font-size:12px;color:var(--text-sub)}

.vip-card{width:100%;display:flex;align-items:center;justify-content:space-between;margin:14px 0;padding:16px;border-radius:var(--r-16);background:linear-gradient(120deg,#2B2B2B,#3d3a36);color:#fff;box-shadow:0 12px 28px rgba(43,43,43,.3);text-align:left}
.vip-card:active{transform:scale(.98)}
.vip-left{display:flex;align-items:center;gap:12px}
.vip-crown{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,var(--accent),#FFD96b);display:grid;place-items:center;color:#7a5500}
.vip-crown .ico{stroke:#7a5500}
.vip-left b{font-size:16px;display:block}
.vip-left small{font-size:12px;opacity:.8}
.vip-open{background:linear-gradient(135deg,var(--accent),#FFD96b);color:#7a5500;font-weight:800;font-size:13px;padding:8px 16px;border-radius:var(--r-pill)}

.set-list{background:var(--surface);border-radius:var(--r-16);overflow:hidden;box-shadow:var(--sh-sm)}
.set-item{width:100%;display:flex;align-items:center;gap:12px;padding:14px 14px;border-bottom:1px solid var(--line);text-align:left;font-size:15px;font-weight:500}
.set-item:last-child{border-bottom:none}
.set-item:active{background:var(--bg)}
.set-item>span:nth-child(2){flex:1}
.set-item .chev{color:var(--text-sub)}
.si-ico{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;color:#fff;flex:0 0 auto}
.si-ico .ico{stroke:#fff}
.si-a{background:linear-gradient(135deg,#52d6a4,var(--positive))}
.si-b{background:linear-gradient(135deg,#FF9A5C,var(--primary))}
.si-c{background:linear-gradient(135deg,#FFB75E,var(--accent))}
.si-d{background:linear-gradient(135deg,#6f86ff,var(--secondary))}
.si-e{background:linear-gradient(135deg,#9b6cff,#6f86ff)}
.si-f{background:linear-gradient(135deg,#9aa0a6,#7a8086)}

/* ============================================================
   P8 设计规范
   ============================================================ */
.tk-section{margin-bottom:22px}
.tk-h{font-size:15px;font-weight:800;margin-bottom:12px;padding-left:10px;border-left:3px solid var(--primary)}
.swatch-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.swatch{background:var(--surface);border-radius:var(--r-12);padding:10px;box-shadow:var(--sh-sm);display:flex;flex-direction:column;gap:4px}
.sw{height:42px;border-radius:9px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}
.swatch b{font-size:12px;margin-top:2px}
.swatch small{font-size:11px;color:var(--text-sub);font-variant-numeric:tabular-nums}
.swatch em{font-size:10px;color:var(--text-sub);font-style:normal;line-height:1.3}

.type-list{background:var(--surface);border-radius:var(--r-12);padding:6px 14px;box-shadow:var(--sh-sm)}
.type-row{display:flex;align-items:baseline;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line)}
.type-row:last-child{border-bottom:none}
.type-row small{font-size:12px;color:var(--text-sub)}
.t-32{font-size:32px;font-weight:800}.t-24{font-size:24px;font-weight:800}.t-20{font-size:20px;font-weight:700}
.t-18{font-size:18px;font-weight:700}.t-16{font-size:16px}.t-14{font-size:14px}.t-12{font-size:12px;color:var(--text-sub)}

.tk-two{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px}
.tk-card{background:var(--surface);border-radius:var(--r-12);padding:12px;box-shadow:var(--sh-sm)}
.radius-row,.shadow-row{display:flex;align-items:center;gap:12px;padding:8px 0}
.r-box{width:46px;height:46px;background:var(--primary-soft);border:1px solid var(--line)}
.sh-box{width:46px;height:46px;background:var(--surface);border-radius:8px}
.sh-sm{box-shadow:var(--sh-sm)}.sh-md{box-shadow:var(--sh-md)}.sh-lg{box-shadow:var(--sh-lg)}
.radius-row small,.shadow-row small{font-size:12px;color:var(--text-sub)}

.space-row{background:var(--surface);border-radius:var(--r-12);padding:14px;box-shadow:var(--sh-sm);display:flex;align-items:center;gap:0;flex-wrap:wrap}
.sp{height:24px;background:var(--primary);border-radius:2px;display:inline-block}
.space-row small{width:100%;margin-top:10px;font-size:12px;color:var(--text-sub)}

.comp-block{background:var(--surface);border-radius:var(--r-12);padding:14px;box-shadow:var(--sh-sm);margin-bottom:12px}
.comp-label{display:block;font-size:12px;font-weight:700;color:var(--text-sub);margin-bottom:10px}
.comp-line{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.demo-input{display:flex;align-items:center;gap:8px;flex:1;min-width:200px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-12);padding:11px 13px;color:var(--text-sub);font-size:14px}
.demo-input .ico{stroke:var(--text-sub)}
.demo-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px;width:100%;color:var(--text-sub)}
.demo-empty .ico{stroke:var(--text-sub);opacity:.5}
.demo-empty p{font-size:13px}
.demo-tabbar{display:flex;justify-content:space-around;width:100%;background:var(--bg);border-radius:var(--r-12);padding:10px 0}
.dt-item{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:var(--text-sub)}
.dt-item .ico{stroke:var(--text-sub)}
.dt-item.active{color:var(--primary)}
.dt-item.active .ico{stroke:var(--primary)}
.demo-navbar{display:flex;align-items:center;justify-content:space-between;width:100%;background:var(--bg);border-radius:var(--r-12);padding:10px 14px}
.demo-navbar b{font-size:15px}
.demo-navbar button{width:28px;height:28px;display:grid;place-items:center;color:var(--text-sub)}
.demo-navbar .ico{stroke:var(--text-sub)}

.icon-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.icon-cell{background:var(--surface);border-radius:var(--r-12);padding:12px 4px;box-shadow:var(--sh-sm);display:flex;flex-direction:column;align-items:center;gap:6px}
.icon-cell .ico{color:var(--primary)}
.icon-cell small{font-size:11px;color:var(--text-sub)}

.motion-list{background:var(--surface);border-radius:var(--r-12);padding:6px 16px;box-shadow:var(--sh-sm);list-style:none}
.motion-list li{padding:10px 0;border-bottom:1px solid var(--line);font-size:13px;line-height:1.6;color:var(--text-sub)}
.motion-list li:last-child{border-bottom:none}
.motion-list b{color:var(--text)}
.motion-list code{background:var(--bg);padding:2px 6px;border-radius:5px;font-size:12px;color:var(--secondary)}

/* ============================================================
   TabBar
   ============================================================ */
.tabbar{height:64px;flex:0 0 64px;background:var(--surface);border-top:1px solid var(--line);
  display:flex;padding:6px 0 0;box-shadow:0 -4px 16px rgba(43,43,43,.05);position:relative;z-index:6}
.phone.no-tab .tabbar{display:none}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-sub);font-size:11px;font-weight:600;transition:.2s var(--ease);position:relative}
.tab .ico{stroke:currentColor;width:24px;height:24px;transition:.2s var(--ease)}
.tab.active{color:var(--primary)}
.tab.active .ico{transform:translateY(-2px) scale(1.12)}
.tab.active::before{content:"";position:absolute;top:4px;width:30px;height:30px;border-radius:50%;background:var(--primary-soft);z-index:-1}

/* ============================================================
   底部弹层 Sheet
   ============================================================ */
.sheet-mask{position:fixed;inset:0;background:rgba(43,43,43,.45);opacity:0;visibility:hidden;transition:.3s;z-index:40}
.sheet-mask.show{opacity:1;visibility:visible}
.sheet{position:fixed;left:50%;bottom:0;transform:translate(-50%,100%);width:100%;max-width:var(--phone-w);
  background:var(--surface);border-radius:24px 24px 0 0;padding:10px 20px 28px;z-index:50;
  box-shadow:var(--sh-lg);transition:transform .32s var(--ease);max-height:86vh;overflow-y:auto}
.sheet.show{transform:translate(-50%,0)}
.sheet-handle{width:38px;height:4px;border-radius:2px;background:var(--line);margin:4px auto 14px}
.sheet-title{font-size:17px;font-weight:800;display:flex;align-items:center;gap:6px;margin-bottom:16px}
.sheet-title .ico{color:var(--secondary)}
.sheet-form{display:flex;flex-direction:column;gap:8px}
.sf-label{font-size:13px;font-weight:700;color:var(--text-sub);margin-top:6px}
.sf-chips{display:flex;gap:8px;flex-wrap:wrap}
.sf-chip{padding:8px 16px;border-radius:var(--r-pill);background:var(--bg);border:1px solid var(--line);font-size:14px;font-weight:600;color:var(--text-sub);transition:.2s}
.sf-chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.sf-input{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-12);padding:12px 14px;font-size:15px;color:var(--text)}
.sf-input:focus{outline:none;border-color:var(--primary)}
.sheet-actions{display:flex;gap:10px;margin-top:20px}
.sheet-actions .btn{flex:1}

.ai-sheet-body{padding:8px 0}
.ai-gen-hint{font-size:14px;line-height:1.7;color:var(--text-sub);text-align:center;margin-bottom:18px}
.ai-gen-hint b{color:var(--text)}
.ai-loader{display:flex;justify-content:center;gap:8px;margin:24px 0}
.ai-loader span{width:12px;height:12px;border-radius:50%;background:var(--primary);animation:bounce 1s ease-in-out infinite}
.ai-loader span:nth-child(2){animation-delay:.15s;background:var(--secondary)}
.ai-loader span:nth-child(3){animation-delay:.3s;background:var(--accent)}
@keyframes bounce{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(-12px);opacity:1}}
.ai-result{background:var(--bg);border-radius:var(--r-12);padding:14px;font-size:14px;line-height:1.8;color:var(--text)}
.ai-result .ar-meta{font-size:12px;color:var(--text-sub);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.ai-result .ar-quote{font-style:italic;color:var(--primary);font-weight:600}

/* ============================================================
   Toast
   ============================================================ */
.toast{position:fixed;left:50%;bottom:90px;transform:translate(-50%,20px);background:rgba(43,43,43,.92);color:#fff;
  font-size:13px;padding:10px 18px;border-radius:var(--r-pill);opacity:0;visibility:hidden;transition:.25s var(--ease);z-index:60;pointer-events:none;max-width:80%}
.toast.show{opacity:1;visibility:visible;transform:translate(-50%,0)}

/* ============================================================
   响应式
   ============================================================ */
@media (max-width:480px){
  body{background:#FAF4EF}
  .proto-bar{max-width:100%;padding:10px 12px 4px}
  .stage{padding:0;align-items:stretch}
  .phone{width:100%;height:100vh;max-height:none;border-radius:0;border:none;box-shadow:none}
  .status-bar{background:var(--surface)}
  .sb-notch{display:none}
}

/* ============================================================
   AI 模块新增样式
   ============================================================ */
.emo-loading{opacity:.6;font-size:13px}
.ai-refresh{margin-left:auto;background:var(--surface);border:1px solid #ECECEC;border-radius:8px;
  width:24px;height:24px;font-size:15px;color:var(--secondary);cursor:pointer;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;transition:.15s var(--ease)}
.ai-refresh:active{transform:scale(.9);background:#F2F4FF}
