:root{
  --bg:#f5f6f8; --card:#fff; --text:#1f2430; --text-2:#5b6472; --text-3:#98a1b0;
  --line:#e8eaef; --primary:#4a6cf7; --primary-d:#3a56d4; --primary-l:#eef2ff;
  --danger:#e5484d; --ok:#12a594; --radius:16px;
  --shadow:0 1px 3px rgba(16,24,40,.06), 0 8px 24px rgba(16,24,40,.06);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;
  overscroll-behavior-y:none;
}
[v-cloak]{display:none;}
#app{max-width:680px;margin:0 auto;min-height:100vh;}

/* 页面切换 */
.page{padding:20px 16px 40px;}
.page-fade-enter-active,.page-fade-leave-active{transition:opacity .22s ease;}
.page-fade-enter-from,.page-fade-leave-to{opacity:0;}
.fade-enter-active,.fade-leave-active{transition:opacity .2s;}
.fade-enter-from,.fade-leave-to{opacity:0;}

/* 题目滑动切换 */
.slide-left-enter-active,.slide-left-leave-active,
.slide-right-enter-active,.slide-right-leave-active{transition:transform .26s cubic-bezier(.4,0,.2,1),opacity .26s;}
.slide-left-enter-from{transform:translateX(60px);opacity:0;}
.slide-left-leave-to{transform:translateX(-60px);opacity:0;}
.slide-right-enter-from{transform:translateX(-60px);opacity:0;}
.slide-right-leave-to{transform:translateX(60px);opacity:0;}

/* 首页 */
.hero{text-align:center;padding:36px 8px 24px;}
.hero-badge{display:inline-block;font-size:12px;color:var(--primary);background:var(--primary-l);
  padding:4px 12px;border-radius:999px;margin-bottom:16px;letter-spacing:.5px;}
.hero h1{font-size:32px;margin:0 0 10px;line-height:1.25;letter-spacing:-.5px;}
.hero h1 span{font-size:19px;font-weight:500;color:var(--text-2);letter-spacing:1px;}
.hero-sub{color:var(--text-3);font-size:14px;margin:0;}

.card{background:var(--card);border-radius:var(--radius);padding:20px;
  box-shadow:var(--shadow);margin-bottom:14px;}
.card h2{font-size:16px;margin:0 0 12px;font-weight:600;}
.card p{margin:0 0 10px;font-size:14px;color:var(--text-2);}
.card p:last-child{margin-bottom:0;}
.card.warn{background:#fff7ed;border:1px solid #fde8d0;box-shadow:none;}
.card.warn h2{color:#b45309;}
.card.danger{background:#fff5f5;border:1px solid #fbd5d5;box-shadow:none;animation:pulse 2s ease-in-out 2;}
.card.danger h2{color:var(--danger);}
@keyframes pulse{0%,100%{box-shadow:none;}50%{box-shadow:0 0 0 4px rgba(229,72,77,.1);}}
.card.privacy{background:transparent;box-shadow:none;padding:8px 4px;font-size:12.5px;color:var(--text-3);}
.notice-list{margin:0;padding-left:18px;font-size:14px;color:var(--text-2);}
.notice-list li{margin-bottom:8px;}

.actions{margin-top:20px;display:flex;flex-direction:column;gap:10px;}
.btn{border:none;border-radius:12px;padding:15px 20px;font-size:16px;font-weight:600;
  font-family:inherit;cursor:pointer;transition:.18s;letter-spacing:.3px;
  display:inline-flex;align-items:center;justify-content:center;text-decoration:none;}
.btn-primary{background:var(--primary);color:#fff;box-shadow:0 4px 14px rgba(74,108,247,.32);}
.btn-primary:active{background:var(--primary-d);transform:scale(.985);}
.btn-primary:disabled{background:#c8d0e6;box-shadow:none;cursor:not-allowed;transform:none;}
.btn-ghost{background:#fff;color:var(--text);border:1px solid var(--line);}
.btn-ghost:active{background:#f2f4f8;}
.btn-block{width:100%;}

.page-footer{text-align:center;color:var(--text-3);font-size:12px;margin-top:26px;
  display:flex;flex-direction:column;gap:8px;align-items:center;}
.admin-link{color:var(--text-3);text-decoration:none;border-bottom:1px dashed var(--line);}

/* 答题页 */
.page-quiz{padding:0 0 90px;}
.quiz-header{position:sticky;top:0;z-index:10;background:rgba(245,246,248,.94);
  backdrop-filter:blur(10px);padding:14px 16px 10px;border-bottom:1px solid var(--line);}
.progress-wrap{display:flex;align-items:center;gap:12px;}
.progress-bar{flex:1;height:7px;background:#e4e7ee;border-radius:999px;overflow:hidden;}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),#7b93ff);
  border-radius:999px;transition:width .3s ease;}
.progress-text{font-size:13px;color:var(--text-2);font-variant-numeric:tabular-nums;
  min-width:56px;text-align:right;}
.progress-dots{display:flex;flex-wrap:wrap;gap:3px;margin-top:10px;}
.progress-dots .dot{width:6px;height:6px;border-radius:50%;background:#dfe3ea;transition:.2s;}
.progress-dots .dot.done{background:#a9b8f9;}
.progress-dots .dot.cur{background:var(--primary);transform:scale(1.7);}

.quiz-body{padding:26px 16px 10px;overflow:hidden;}
.q-meta{font-size:13px;color:var(--primary);font-weight:600;letter-spacing:.6px;margin-bottom:12px;}
.q-text{font-size:21px;font-weight:600;line-height:1.5;margin-bottom:26px;letter-spacing:-.2px;}
.options{display:flex;flex-direction:column;gap:10px;}
.option{display:flex;align-items:center;gap:14px;background:#fff;border:1.5px solid var(--line);
  border-radius:14px;padding:15px 16px;cursor:pointer;transition:.16s;}
.option:active{transform:scale(.99);}
.option.selected{border-color:var(--primary);background:var(--primary-l);}
.dot-ring{width:24px;height:24px;border-radius:50%;border:2px solid #cfd6e4;flex-shrink:0;
  transition:.16s;position:relative;}
.option.selected .dot-ring{background:var(--primary);border-color:var(--primary);}
.option.selected .dot-ring::after{content:'';position:absolute;inset:7px;background:#fff;
  border-radius:50%;}
.opt-main{flex:1;}
.opt-label{font-size:16px;font-weight:600;display:block;}
.opt-desc{font-size:12.5px;color:var(--text-3);display:block;margin-top:1px;}

.quiz-footer{position:fixed;bottom:0;left:0;right:0;background:rgba(255,255,255,.96);
  backdrop-filter:blur(10px);border-top:1px solid var(--line);
  padding:12px 16px calc(12px + env(safe-area-inset-bottom));
  display:flex;gap:10px;max-width:680px;margin:0 auto;}
.quiz-footer .btn{flex:1;padding:14px;}
.quiz-footer .btn-ghost{flex:0 0 96px;}

/* 结果页 */
.result-head{text-align:center;padding:20px 8px 16px;}
.result-head h1{font-size:24px;margin:0 0 6px;}
.result-time{color:var(--text-3);font-size:12.5px;margin:0;}
.overall-text{font-size:15px;color:var(--text)!important;line-height:1.7;}
.score-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0 12px;}
.score-item{background:#f7f8fb;border-radius:12px;padding:14px;text-align:center;}
.score-num{display:block;font-size:26px;font-weight:700;color:var(--primary);
  font-variant-numeric:tabular-nums;line-height:1.2;}
.score-label{display:block;font-size:12px;color:var(--text-3);margin-top:4px;}
.screen-badge{display:inline-block;font-size:13.5px;font-weight:600;padding:7px 14px;
  border-radius:10px;margin-top:4px;}
.screen-badge.neg{background:#e8f7f4;color:#0d8a7a;}
.screen-badge.pos{background:#fdecec;color:#c93a3f;}
.cutoff-note{font-size:12px;color:var(--text-3);margin-top:12px!important;line-height:1.6;}

.chart-wrap{display:flex;justify-content:center;padding:6px 0;}
.chart-wrap canvas{width:100%;max-width:420px;height:auto;}
.legend{text-align:center;font-size:12.5px;color:var(--text-2);margin-top:8px;}
.lg{display:inline-block;width:11px;height:11px;border-radius:3px;margin:0 5px 0 12px;vertical-align:middle;}
.lg-user{background:var(--primary);}
.lg-norm{background:#cfd6e4;}

.factor-list{display:flex;flex-direction:column;gap:14px;}
.factor-row{border-bottom:1px solid var(--line);padding-bottom:14px;}
.factor-row:last-child{border-bottom:none;padding-bottom:0;}
.factor-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.factor-name{font-size:15px;font-weight:600;}
.factor-name .tag{font-size:11px;font-weight:600;padding:2px 7px;border-radius:6px;
  margin-left:7px;background:#fdecec;color:#c93a3f;vertical-align:middle;}
.factor-name .tag.ok{background:#e8f7f4;color:#0d8a7a;}
.factor-score{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;}
.factor-score.abn{color:var(--danger);}
.factor-bar{height:8px;background:#eef0f5;border-radius:999px;overflow:hidden;
  margin-bottom:8px;position:relative;}
.factor-bar-fill{height:100%;border-radius:999px;background:var(--primary);transition:width .5s ease;}
.factor-bar-fill.abn{background:linear-gradient(90deg,#f08a8d,#e5484d);}
.factor-norm-line{position:absolute;top:-3px;bottom:-3px;width:2px;background:#b8c0d0;}
.factor-desc{font-size:12.5px;color:var(--text-2);line-height:1.6;margin:0;}
.factor-desc .dim{color:#98a1b0;}
.factor-advice{font-size:12.5px;color:var(--primary);line-height:1.6;margin:6px 0 0;
  background:var(--primary-l);padding:8px 10px;border-radius:8px;}
.hotline{margin-top:12px;display:flex;flex-direction:column;gap:8px;}
.hotline div{display:flex;justify-content:space-between;align-items:center;
  background:#fff;border-radius:10px;padding:10px 14px;font-size:13.5px;}
.hotline span{font-weight:700;color:var(--danger);font-size:16px;font-variant-numeric:tabular-nums;}

/* 长图弹层 */
.poster-mask{position:fixed;inset:0;background:rgba(20,24,32,.88);z-index:200;
  display:flex;align-items:center;justify-content:center;padding:16px;}
.poster-wrap{width:100%;max-width:420px;max-height:94vh;display:flex;flex-direction:column;gap:10px;}
.poster-tip{color:#fff;font-size:12.5px;text-align:center;opacity:.85;}
.poster-scroll{flex:1;overflow:auto;border-radius:14px;-webkit-overflow-scrolling:touch;
  display:flex;align-items:flex-start;justify-content:center;}
.poster-img{width:100%;display:block;border-radius:14px;}
.poster-loading{width:100%;aspect-ratio:3/4;background:#fff;border-radius:14px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;}
.poster-loading p{color:var(--text-2);font-size:14px;margin:0;}
.poster-btns{display:flex;gap:10px;}
.poster-btns .btn{flex:1;}

/* ===== 长图报告本体（离屏渲染） ===== */
.poster-stage{position:fixed;left:-99999px;top:0;width:750px;}
.poster{width:750px;background:linear-gradient(180deg,#f7f8fc 0%,#fff 320px,#fff 100%);
  padding:0 0 48px;font-family:inherit;color:var(--text);}
.p-head{background:linear-gradient(135deg,#4a6cf7,#6b8bff);padding:44px 48px 40px;color:#fff;}
.p-brand{font-size:34px;font-weight:700;letter-spacing:-.5px;}
.p-date{font-size:20px;opacity:.85;margin-top:10px;}
.p-body{padding:0 48px;}
.p-hero{margin-top:-28px;background:#fff;border-radius:20px;padding:28px 32px;
  box-shadow:0 8px 28px rgba(74,108,247,.14);text-align:center;}
.p-hero-label{font-size:20px;color:#98a1b0;margin-bottom:8px;}
.p-hero-value{font-size:34px;font-weight:700;letter-spacing:-.5px;}
.p-hero-value.is-pos{color:#e5484d;}
.p-hero-value.is-neg{color:#0d8a7a;}
.p-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:24px;}
.p-stat{background:#f5f7fc;border-radius:16px;padding:22px 8px;text-align:center;}
.p-stat b{display:block;font-size:38px;font-weight:700;color:#4a6cf7;
  font-variant-numeric:tabular-nums;line-height:1.1;}
.p-stat span{display:block;font-size:18px;color:#98a1b0;margin-top:8px;}
.p-section{margin-top:36px;}
.p-title{font-size:24px;font-weight:700;margin-bottom:20px;padding-left:16px;
  border-left:6px solid #4a6cf7;line-height:1.2;}
.p-chart{display:flex;justify-content:center;}
.p-chart canvas{width:560px;height:560px;}
.p-legend{text-align:center;font-size:18px;color:#5b6472;margin-top:8px;}
.p-lg{display:inline-block;width:16px;height:16px;border-radius:4px;margin:0 8px 0 20px;vertical-align:middle;}
.p-lg-user{background:#4a6cf7;}
.p-lg-norm{background:#cfd6e4;}
.p-factors{display:flex;flex-direction:column;gap:22px;}
.p-factor-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;}
.p-factor-name{font-size:22px;font-weight:600;}
.p-factor-score{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;color:#4a6cf7;}
.p-factor-score.abn{color:#e5484d;}
.p-factor-bar{height:16px;background:#eef0f5;border-radius:999px;overflow:hidden;position:relative;}
.p-factor-fill{height:100%;border-radius:999px;background:#4a6cf7;}
.p-factor-fill.abn{background:linear-gradient(90deg,#f08a8d,#e5484d);}
.p-factor-norm{position:absolute;top:-5px;bottom:-5px;width:3px;background:#b8c0d0;}
.p-text{font-size:21px;line-height:1.75;color:#3a4254;background:#f7f8fc;
  border-radius:16px;padding:24px 28px;margin:0;}
.p-advice{font-size:20px;line-height:1.7;color:#3a4254;margin-bottom:14px;
  background:#eef2ff;border-radius:14px;padding:18px 22px;}
.p-advice b{color:#4a6cf7;display:block;margin-bottom:6px;font-size:21px;}
.p-foot{margin:40px 48px 0;padding-top:24px;border-top:1px solid #e8eaef;}
.p-foot p{font-size:17px;color:#98a1b0;line-height:1.7;margin:0 0 8px;}

/* loading */
.spinner{width:38px;height:38px;border:3px solid #dfe3ec;border-top-color:var(--primary);
  border-radius:50%;animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg)}}

@media(min-width:560px){
  .score-grid{grid-template-columns:repeat(4,1fr);}
  .hero h1{font-size:38px;}
}

/* 失效页 · 跳转店铺按钮（后台"店铺设置"配置后显示） */
.shop-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:linear-gradient(135deg,#e85d5d,#d93636);color:#fff;text-decoration:none;
  font-size:16px;font-weight:600;padding:13px 38px;border-radius:999px;
  box-shadow:0 6px 18px rgba(217,54,54,.28);transition:.15s;}
.shop-btn:active{transform:scale(.97);}

/* ============================================================
   2026-10-31 改版：绿色首页/结果页 + 深色答题页
   ============================================================ */
body{background:#eef6ee;}

/* ---- 通用绿色按钮 ---- */
.btn-green{background:#5fae5f;color:#fff;box-shadow:0 4px 14px rgba(95,174,95,.3);}
.btn-green:active{background:#4f9a4f;transform:scale(.985);}
.btn-green:disabled{background:#b7d4b7;box-shadow:none;cursor:not-allowed;}

/* ---- 首页（白卡片 + 浅绿底） ---- */
.intro-card{background:#fff;border-radius:16px;padding:26px 20px 24px;
  box-shadow:0 1px 3px rgba(16,24,40,.06),0 8px 24px rgba(16,24,40,.06);margin-top:8px;}
.intro-title{font-size:26px;font-weight:700;margin:0 0 18px;color:#1f2430;}
.intro-card p{font-size:14.5px;color:#3a4254;line-height:1.85;margin:0 0 14px;}
.intro-options{margin:6px 0 20px;padding-left:20px;}
.intro-options li{font-size:14.5px;color:#3a4254;line-height:2.05;}
.privacy-line{text-align:center;font-size:12.5px;color:#98a1b0;margin:18px 0 0;}

/* ---- 答题页（深色版式） ---- */
.page-quiz{background:#322c3e;min-height:100vh;padding:0 0 96px;}
.quiz-panel{padding:18px 16px 10px;}
.quiz-progressbar{background:#211c2b;border-radius:14px;padding:14px 14px 12px;
  display:flex;align-items:center;gap:12px;}
.qp-track{flex:1;height:8px;background:#454052;border-radius:999px;overflow:hidden;}
.qp-fill{height:100%;background:#f07eb0;border-radius:999px;transition:width .3s ease;}
.qp-count{font-size:12.5px;color:#e8e3f2;white-space:nowrap;font-variant-numeric:tabular-nums;}
.q-meta{font-size:14px;color:#a99fc0;margin:22px 0 10px;}
.q-title{font-size:21px;font-weight:700;color:#f9a8c9;line-height:1.55;margin-bottom:10px;}
.q-hint{font-size:13px;color:#8f86a3;margin-bottom:20px;}
.page-quiz .options{display:flex;flex-direction:column;gap:11px;}
.page-quiz .option{background:#3d374b;border:1.5px solid #4c465c;border-radius:12px;
  padding:15px 16px;cursor:pointer;transition:.15s;}
.page-quiz .option:active{transform:scale(.99);}
.page-quiz .option.selected{border-color:#f07eb0;background:rgba(240,126,176,.14);}
.page-quiz .opt-label{font-size:15.5px;color:#f2eefa;font-weight:500;line-height:1.6;display:block;}
.quiz-footer{background:rgba(33,28,43,.97);border-top:1px solid #454052;}
.q-btn-primary{background:#f07eb0;color:#fff;box-shadow:0 4px 14px rgba(240,126,176,.28);}
.q-btn-primary:active{background:#e267a0;}
.q-btn-primary:disabled{background:#5a5266;color:#9a92ab;box-shadow:none;}
.q-btn-ghost{background:transparent;color:#c9c2d8;border:1px solid #4c465c;}
.q-btn-ghost:active{background:#3d374b;}

/* ---- 结果页（浅绿报告版式） ---- */
.r-disclaimer{text-align:center;font-size:19px;font-weight:700;color:#1f2430;
  margin:16px 0 18px;}
.r-scorecard{background:#f4f8f2;border-radius:14px;padding:22px;text-align:center;margin-bottom:18px;}
.r-scorecard-label{font-size:15px;color:#3a4254;}
.r-scorecard-num{font-size:42px;font-weight:700;color:#5fae5f;line-height:1.3;
  font-variant-numeric:tabular-nums;}
.r-scorecard-level{font-size:15px;color:#3a4254;}
.r-section-title{font-size:17px;font-weight:700;color:#1f2430;margin:26px 0 12px;}
.r-para{font-size:14.5px;color:#3a4254;line-height:1.85;margin:0 0 8px;}
.r-table{width:100%;border-collapse:collapse;font-size:13.5px;background:#fff;
  border-radius:10px;overflow:hidden;box-shadow:0 1px 2px rgba(16,24,40,.05);}
.r-table th{background:#e6f2df;color:#3a4254;font-weight:600;padding:10px 8px;
  text-align:center;border-bottom:1px solid #dde8d5;}
.r-table td{padding:10px 8px;text-align:center;color:#3a4254;
  border-bottom:1px solid #eef2ea;font-variant-numeric:tabular-nums;}
.r-table tr:last-child td{border-bottom:none;}
.r-note{font-size:12.5px;color:#6b7280;line-height:1.8;margin:10px 0;}
.r-badge{display:inline-block;font-size:12px;font-weight:600;padding:2px 9px;border-radius:6px;}
.r-badge.lv-ok{background:#e4f5e1;color:#3f8f3f;}
.r-badge.lv-light{background:#e4f5e1;color:#3f8f3f;}
.r-badge.lv-mid{background:#fdeed2;color:#c07c1a;}
.r-badge.lv-heavy{background:#fde3e3;color:#c93a3f;}
.r-chart-title{text-align:center;font-size:16px;font-weight:700;color:#1f2430;margin:24px 0 6px;}
.r-factor-list{display:flex;flex-direction:column;}
.r-factor{background:#fff;border-radius:12px;padding:16px;margin-bottom:12px;
  box-shadow:0 1px 2px rgba(16,24,40,.05);}
.r-factor-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.r-factor-name{font-size:15.5px;font-weight:700;color:#1f2430;}
.r-factor-head .r-factor-score{margin-left:auto;}
.r-factor-score{font-size:17px;font-weight:700;color:#3a4254;font-variant-numeric:tabular-nums;}
.r-factor-score.abn{color:#c93a3f;}
.r-factor-desc{font-size:13px;color:#3a4254;line-height:1.75;margin:8px 0 0;}
.r-factor-desc .dim{color:#98a1b0;font-size:12px;}
.r-explain{background:#e4f5e1;border-radius:14px;padding:20px 18px;margin-top:26px;}
.r-explain-title{font-size:16px;font-weight:700;color:#1f2430;margin-bottom:12px;}
.r-explain p{font-size:13.5px;color:#3a4254;line-height:1.9;margin:0 0 10px;}
.r-level-legend{margin:0;padding-left:4px;list-style:none;}
.r-level-legend li{font-size:13px;color:#3a4254;line-height:2.1;
  display:flex;align-items:center;gap:8px;}

/* 结果页里旧卡片的绿色适配 */
.page .card{box-shadow:0 1px 3px rgba(16,24,40,.06),0 8px 24px rgba(16,24,40,.06);}
