/* 华伦中医 · 患者端 H5 — 中国风水墨 */
:root{
  --paper:#f4ead5;
  --paper-2:#ede0c2;
  --paper-3:#e6d4a8;
  --ink:#1c160f;
  --ink-2:#3a2f22;
  --ink-3:#6b5b46;
  --vermilion:#a72d20;
  --vermilion-d:#7a1d12;
  --vermilion-l:#c64a36;
  --gold:#b8893a;
  --gold-l:#d8b56a;
  --jade:#4a6b3e;
  --jade-l:#6f8a5a;
  --line:rgba(28,22,15,.18);
  --shadow:0 24px 60px -28px rgba(28,22,15,.5),0 4px 14px -8px rgba(28,22,15,.25);
  --serif:"Noto Serif SC","SimSun","Songti SC",serif;
  --hand:"Ma Shan Zheng","Long Cang",cursive;
  --display:"ZCOOL XiaoWei","Noto Serif SC",serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;font-family:var(--serif);color:var(--ink);background:#1a140d;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
button,input,textarea,select{font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
button{cursor:pointer;border:0;background:none;padding:0}

/* —— 桌面预览：手机框 —— */
#frame{position:relative;width:100%;max-width:430px;margin:0 auto;min-height:100vh;background:var(--paper);overflow:hidden;
  background-image:
    radial-gradient(circle at 20% 8%,rgba(167,45,32,.06),transparent 40%),
    radial-gradient(circle at 90% 60%,rgba(74,107,62,.07),transparent 45%),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.4' numOctaves='2' seed='5'/><feColorMatrix values='0 0 0 0 .1  0 0 0 0 .08  0 0 0 0 .06  0 0 0 .07 0'/></filter><rect width='200' height='200' filter='url(%23n)'/></svg>");
  background-size:auto,auto,200px 200px;
  box-shadow:0 0 0 1px rgba(0,0,0,.4),0 30px 80px -20px rgba(0,0,0,.6)
}
@media (min-width:600px){
  body{background:#0e0a06 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='400' height='400'><filter id='n'><feTurbulence baseFrequency='.8' numOctaves='2'/><feColorMatrix values='0 0 0 0 .25  0 0 0 0 .2  0 0 0 0 .15  0 0 0 .15 0'/></filter><rect width='400' height='400' filter='url(%23n)'/></svg>");min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 0}
  #frame{border-radius:38px;height:min(900px,92vh);max-height:900px}
}

main#app{min-height:100vh;padding-bottom:96px}
@media (min-width:600px){main#app{min-height:auto;height:100%;overflow-y:auto;scrollbar-width:none}main#app::-webkit-scrollbar{display:none}}

/* —— 通用：标题、纹样 —— */
.page{padding:0 20px;animation:fade .5s both}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 8px;position:relative}
.topbar .back{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:rgba(244,234,213,.5)}
.topbar .back svg{width:18px;height:18px;stroke:var(--ink);fill:none;stroke-width:2}
.topbar h1{font-family:var(--display);font-size:20px;letter-spacing:6px;margin:0;font-weight:600}
.topbar .right{width:36px;text-align:right;color:var(--ink-3);font-size:13px}

.hr-cloud{height:14px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 14'><path d='M0 7 q5 -7 10 0 t10 0 t10 0 t10 0 t10 0 t10 0' fill='none' stroke='%23a72d20' stroke-width='1' opacity='.45'/></svg>") repeat-x center/60px 14px;margin:8px 0}

.seal-stamp{display:inline-grid;place-items:center;width:42px;height:42px;background:var(--vermilion);color:#fff;font-family:var(--display);font-size:13px;letter-spacing:1px;line-height:1;border-radius:6px;transform:rotate(-4deg);box-shadow:inset 0 0 0 2px rgba(255,255,255,.6),0 2px 0 var(--vermilion-d);position:relative}
.seal-stamp::before{content:"";position:absolute;inset:3px;border:1px solid rgba(255,255,255,.7);border-radius:3px}

/* —— 启动/登录 —— */
.splash{position:relative;height:100vh;min-height:680px;display:flex;flex-direction:column;justify-content:space-between;padding:64px 32px 48px;overflow:hidden}
@media (min-width:600px){.splash{height:100%}}
.splash::before{content:"";position:absolute;inset:0;background:
  radial-gradient(ellipse at 80% 0%,rgba(167,45,32,.16),transparent 55%),
  radial-gradient(ellipse at 10% 100%,rgba(74,107,62,.18),transparent 50%);pointer-events:none}
.splash .ink{position:absolute;inset:0;opacity:.55;mix-blend-mode:multiply;pointer-events:none}
.splash-head{position:relative;z-index:1}
.brand-mark{display:inline-flex;align-items:center;gap:10px;color:var(--ink-2);font-size:12px;letter-spacing:4px}
.brand-mark .dot{width:6px;height:6px;background:var(--vermilion);border-radius:50%;box-shadow:0 0 0 3px rgba(167,45,32,.18)}
.splash h1.vt{writing-mode:vertical-rl;font-family:var(--display);font-size:62px;letter-spacing:14px;margin:42px 0 0;color:var(--ink);font-weight:600;line-height:1.05;text-shadow:1px 1px 0 rgba(167,45,32,.08)}
.splash h1.vt em{color:var(--vermilion);font-style:normal}
.splash .sub{position:absolute;left:120px;top:80px;font-family:var(--hand);font-size:22px;color:var(--ink-3);letter-spacing:2px;line-height:1.6;writing-mode:vertical-rl}
.splash .seal-corner{position:absolute;right:36px;top:140px;font-family:var(--display);background:var(--vermilion);color:#fff7e0;width:56px;height:56px;display:grid;place-items:center;text-align:center;font-size:12px;letter-spacing:1px;line-height:1.1;transform:rotate(6deg);box-shadow:inset 0 0 0 2px rgba(255,247,224,.7),0 4px 0 var(--vermilion-d)}
/* —— 登录页居中模式（与APP端一致） —— */
.splash-head.splash-head-centered{text-align:center}
.splash-head.splash-head-centered .brand-mark{display:inline-flex}
.splash h1.vt.vt-center{writing-mode:horizontal-tb;display:block;margin:54px auto 12px;text-align:center;font-size:44px;letter-spacing:12px;line-height:1.25}
.splash h1.vt.vt-center em{display:block;font-size:18px;letter-spacing:6px;margin-top:14px;font-weight:500}
.splash .sub.sub-center{position:static;writing-mode:horizontal-tb;display:block;text-align:center;font-family:var(--serif);font-size:13px;letter-spacing:4px;color:var(--ink-3);margin-top:8px}
.splash .seal-corner.seal-corner-lg{width:74px;height:74px;right:28px;top:56px;font-size:16px;letter-spacing:2px;line-height:1.15;padding:6px 0}
.splash .seal-corner.seal-corner-lg::before{content:"";position:absolute;inset:4px;border:1px solid rgba(255,247,224,.65);pointer-events:none}
.splash form{position:relative;z-index:1;display:grid;gap:14px}
.field{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding:14px 4px}
.field svg{width:18px;height:18px;stroke:var(--ink-3);fill:none;stroke-width:1.6;flex-shrink:0}
.field input{flex:1;border:0;background:transparent;outline:0;font-size:15px}
.field .sms{color:var(--vermilion);font-size:13px;border-left:1px solid var(--line);padding-left:12px;font-family:var(--display);letter-spacing:1px}
.btn-prime{margin-top:14px;height:52px;background:var(--ink);color:var(--paper);font-family:var(--display);letter-spacing:8px;font-size:16px;border-radius:2px;position:relative;overflow:hidden}
.btn-prime::before{content:"";position:absolute;inset:4px;border:1px solid var(--gold-l);opacity:.45}
.btn-ghost{background:transparent;color:var(--ink-3);font-size:12px;letter-spacing:2px;text-align:center;margin-top:6px}
.splash-foot{position:relative;z-index:1;text-align:center;color:var(--ink-3);font-size:11px;letter-spacing:2px}
.splash-foot label{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:14px}
.splash-foot input{accent-color:var(--vermilion)}

/* —— 首页 —— */
.greet{padding:18px 20px 6px;display:flex;justify-content:space-between;align-items:flex-start}
.greet .hello{font-family:var(--display);font-size:24px;letter-spacing:3px}
.greet .date{font-family:var(--hand);font-size:18px;color:var(--vermilion);margin-top:4px}
.greet .lunar{color:var(--ink-3);font-size:11px;letter-spacing:2px;margin-top:2px}
.greet .greg-line{color:var(--ink-3);font-size:11px;letter-spacing:.5px;margin-top:4px;font-variant-numeric:tabular-nums}
.greet .lunar-line{color:rgba(167,45,32,.85);font-size:11px;letter-spacing:.5px;margin-top:1px}
.greet .avatar{width:46px;height:46px;border-radius:50%;background:linear-gradient(135deg,var(--gold-l),var(--gold));border:1.5px solid rgba(255,255,255,.6);display:grid;place-items:center;color:#fff;font-family:var(--display);font-size:18px;font-weight:700;box-shadow:0 2px 8px rgba(184,137,58,.25)}
.solar{margin:14px 20px;padding:12px 16px;background:linear-gradient(135deg,rgba(167,45,32,.08),rgba(74,107,62,.06));border:1px solid var(--line);border-radius:2px;display:flex;align-items:center;gap:14px;position:relative}
.solar .icon{font-size:32px;font-family:var(--hand);color:var(--vermilion)}
.solar .txt{flex:1;font-size:12px;color:var(--ink-3);line-height:1.85}
.solar .txt p{margin:0;text-indent:2em}
.solar .txt b{display:block;font-family:var(--display);font-size:14px;color:var(--ink);letter-spacing:2px;margin-bottom:2px}
.solar::after{content:"养";position:absolute;right:14px;top:50%;transform:translateY(-50%) rotate(-6deg);font-family:var(--hand);font-size:36px;color:var(--vermilion);opacity:.18}
.solar.rotating{cursor:pointer;transition:transform .2s;animation:fadeIn .45s}
.solar.rotating:active{transform:scale(.985)}
.solar .solar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.solar .solar-head b{margin:0}
.solar .dots{display:inline-flex;gap:4px}
.solar .dots i{width:5px;height:5px;border-radius:50%;background:rgba(107,91,70,.3)}
.solar .dots i.on{background:var(--vermilion)}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}

.section-h{display:flex;align-items:center;justify-content:space-between;padding:22px 20px 10px}
.section-h h2{margin:0;font-family:var(--display);font-size:17px;letter-spacing:4px}
.section-h h2::before{content:"";display:inline-block;width:14px;height:2px;background:var(--vermilion);vertical-align:middle;margin-right:8px}
.section-h .more{font-size:11px;color:var(--ink-3);letter-spacing:2px}

.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:0 20px}
.quick .q{background:rgba(255,250,235,.55);border:1px solid var(--line);border-radius:2px;padding:14px 6px;text-align:center;position:relative;transition:transform .2s}
.quick .q:active{transform:scale(.96)}
.quick .q .ic{width:34px;height:34px;margin:0 auto 6px;display:grid;place-items:center;color:var(--vermilion);font-family:var(--hand);font-size:22px}
.quick .q .ic svg{width:24px;height:24px;stroke:var(--vermilion);fill:none;stroke-width:1.6}
.quick .q span{font-size:11px;letter-spacing:2px;color:var(--ink-2)}

.appt-card{margin:10px 20px;padding:18px;background:#fffaee;border:1px solid var(--line);border-radius:2px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.appt-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(to bottom,var(--vermilion),var(--gold))}
.appt-card .row{display:flex;justify-content:space-between;align-items:flex-start}
.appt-card .doc{font-family:var(--display);font-size:18px;letter-spacing:3px}
.appt-card .doc small{font-family:var(--serif);color:var(--ink-3);font-size:12px;letter-spacing:1px;margin-left:8px;font-weight:400}
.appt-card .status{font-size:11px;padding:3px 8px;background:var(--jade);color:#fff;letter-spacing:1px}
.appt-card .meta{margin-top:10px;color:var(--ink-3);font-size:12px;line-height:1.8}
.appt-card .meta b{color:var(--ink);font-weight:500;font-family:var(--display);letter-spacing:1px}
.appt-card .actions{display:flex;gap:10px;margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}
.appt-card .actions button{flex:1;padding:9px;font-size:12px;letter-spacing:2px;border:1px solid var(--line);background:transparent;font-family:var(--display)}
.appt-card .actions .pri{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.empty{margin:10px 20px;padding:30px 16px;text-align:center;color:var(--ink-3);font-size:13px;border:1px dashed var(--line);font-family:var(--hand);font-size:18px;letter-spacing:2px}

.tip-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 20px}
.tip{background:rgba(255,250,235,.6);border:1px solid var(--line);padding:14px;position:relative;overflow:hidden;cursor:pointer;transition:transform .15s}
.tip:active{transform:scale(.97)}
.tip h3{margin:0 0 4px;font-family:var(--display);font-size:14px;letter-spacing:2px}
.tip p{margin:0;font-size:11px;color:var(--ink-3);line-height:1.6;text-indent:2em;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
/* 模态弹层 */
.tip-modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:999;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .25s}
.tip-modal{background:var(--paper);width:100%;max-width:430px;border-radius:8px 8px 0 0;padding:20px 24px 36px;position:relative}
.tip-modal .bar{width:36px;height:4px;background:var(--line);border-radius:2px;margin:0 auto 18px}
.tip-modal .head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.tip-modal .head .g{font-family:var(--hand);font-size:42px;color:var(--vermilion);opacity:.3}
.tip-modal .head h3{font-family:var(--display);font-size:18px;letter-spacing:2px;margin:0}
.tip-modal .body{font-size:14px;color:var(--ink-2);line-height:2;text-indent:2em}
.tip .glyph{position:absolute;right:-6px;bottom:-14px;font-family:var(--hand);font-size:62px;color:var(--vermilion);opacity:.12;line-height:1}

/* —— 挂号流程 —— */
.steps{display:flex;justify-content:space-between;padding:18px 20px;color:var(--ink-3);font-size:11px;letter-spacing:2px;position:relative}
.steps::before{content:"";position:absolute;left:32px;right:32px;top:26px;height:1px;background:var(--line)}
.steps .s{position:relative;text-align:center;flex:1}
.steps .s i{display:block;width:24px;height:24px;line-height:22px;border-radius:50%;background:var(--paper);border:1px solid var(--line);margin:0 auto 6px;font-style:normal;font-family:var(--display);font-size:12px}
.steps .s.on i{background:var(--vermilion);color:#fff;border-color:var(--vermilion)}
.steps .s.on{color:var(--ink)}

.doc-list{display:grid;gap:12px;padding:0 20px 20px}
.doc{display:flex;gap:14px;padding:14px;background:rgba(255,250,235,.6);border:1px solid var(--line);position:relative;cursor:pointer;transition:all .2s}
.doc:active{transform:scale(.99)}
.doc.sel{background:#fffaee;border-color:var(--vermilion);box-shadow:0 0 0 1px var(--vermilion) inset}
.doc .face{width:64px;height:80px;background:linear-gradient(135deg,var(--gold-l),var(--gold));color:#fff;display:grid;place-items:center;font-family:var(--display);font-size:26px;letter-spacing:2px;border:1.5px solid rgba(255,255,255,.5);position:relative;flex-shrink:0;font-weight:700;box-shadow:0 2px 8px rgba(184,137,58,.2)}
.doc .face::after{content:"";position:absolute;inset:3px;border:1px solid rgba(216,181,106,.4)}
.doc .info{flex:1;min-width:0}
.doc .name{font-family:var(--display);font-size:18px;letter-spacing:2px}
.doc .name em{font-size:11px;background:var(--jade);color:#fff;padding:2px 6px;margin-left:6px;font-style:normal;letter-spacing:1px;font-family:var(--serif)}
.doc .title{font-size:11px;color:var(--vermilion);letter-spacing:1px;margin-top:2px}
.doc .school{font-size:11px;color:var(--ink-3);margin-top:4px;line-height:1.5}
.doc .stats{display:flex;gap:14px;margin-top:6px;font-size:10px;color:var(--ink-3)}
.doc .stats b{color:var(--vermilion);font-family:var(--display);font-size:13px;margin-right:2px}

.date-bar{display:flex;gap:8px;overflow-x:auto;padding:0 20px 8px;scrollbar-width:none}
.date-bar::-webkit-scrollbar{display:none}
.date-bar .d{flex-shrink:0;width:54px;padding:10px 0;text-align:center;border:1px solid var(--line);font-size:11px;color:var(--ink-3);background:rgba(255,250,235,.4)}
.date-bar .d b{display:block;font-family:var(--display);font-size:18px;color:var(--ink);margin-bottom:2px;letter-spacing:1px}
.date-bar .d.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.date-bar .d.on b{color:var(--gold-l)}
.date-bar .d.off{opacity:.4}

.slot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:14px 20px}
.slot{padding:12px 6px;text-align:center;border:1px solid var(--line);background:rgba(255,250,235,.5);font-size:12px}
.slot b{display:block;font-family:var(--display);font-size:14px;letter-spacing:1px}
.slot small{color:var(--ink-3);font-size:10px}
.slot.on{background:var(--vermilion);color:#fff;border-color:var(--vermilion)}
.slot.on small{color:rgba(255,255,255,.8)}
.slot.full{opacity:.4}

.confirm-card{margin:14px 20px;padding:18px;background:#fffaee;border:1px solid var(--line);position:relative}
.confirm-card h3{margin:0 0 12px;font-family:var(--display);letter-spacing:2px;font-size:15px;border-bottom:1px dashed var(--line);padding-bottom:8px}
.confirm-card .kv{display:flex;justify-content:space-between;font-size:13px;padding:6px 0;color:var(--ink-2)}
.confirm-card .kv span{color:var(--ink-3);font-size:12px}
.confirm-card textarea{width:100%;margin-top:10px;border:1px solid var(--line);background:rgba(244,234,213,.4);padding:10px;font-family:var(--serif);font-size:13px;outline:0;resize:none;min-height:64px}

.bottom-bar{position:absolute;left:0;right:0;bottom:0;padding:14px 20px;background:linear-gradient(to top,var(--paper) 60%,transparent);max-width:430px;margin:0 auto}
@media (min-width:600px){.bottom-bar{position:sticky;bottom:0}}
.bottom-bar .btn-prime{width:100%;margin:0}

/* —— 健康日志 —— */
.log-form{padding:0 20px}
.log-section{margin:14px 0;padding:14px 16px;background:rgba(255,250,235,.55);border:1px solid var(--line);position:relative}
.log-section .label{display:flex;align-items:center;gap:8px;font-family:var(--display);font-size:14px;letter-spacing:2px;margin-bottom:10px}
.log-section .label::before{content:"";width:3px;height:14px;background:var(--vermilion)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{padding:6px 12px;border:1px solid var(--line);background:transparent;font-size:12px;border-radius:20px;color:var(--ink-2)}
.chip.on{background:var(--vermilion);color:#fff;border-color:var(--vermilion)}
.log-section textarea,.log-section input{width:100%;border:1px dashed var(--line);background:rgba(244,234,213,.3);padding:10px;font-family:var(--serif);font-size:13px;outline:0;resize:none;min-height:60px}

/* —— 舌象 —— */
.tongue-zone{margin:14px 20px;border:2px dashed var(--vermilion);background:rgba(167,45,32,.04);min-height:220px;display:grid;place-items:center;text-align:center;padding:24px;position:relative}
.tongue-zone .ico{font-family:var(--hand);font-size:64px;color:var(--vermilion);opacity:.4;line-height:1}
.tongue-zone p{font-family:var(--display);letter-spacing:3px;font-size:14px;margin:8px 0 4px}
.tongue-zone small{color:var(--ink-3);font-size:11px;letter-spacing:1px}
.tongue-tips{margin:12px 20px;padding:12px 16px;background:rgba(74,107,62,.06);border-left:3px solid var(--jade);font-size:11px;color:var(--ink-3);line-height:1.8}
.tongue-tips b{color:var(--jade);font-family:var(--display);letter-spacing:2px}
.tongue-history{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 20px 20px}
.tongue-history .t{aspect-ratio:1;background:linear-gradient(135deg,#a72d20,#7a1d12);position:relative;display:grid;place-items:end;padding:6px;color:#fff;font-size:10px;font-family:var(--display);letter-spacing:1px}
.tongue-history .t::before{content:"舌";position:absolute;inset:0;display:grid;place-items:center;font-family:var(--hand);font-size:48px;opacity:.2}

/* —— 列表/记录 —— */
.tabs{display:flex;border-bottom:1px solid var(--line);margin:0 20px}
.tabs .t{flex:1;text-align:center;padding:12px 0;font-family:var(--display);letter-spacing:3px;font-size:14px;color:var(--ink-3);position:relative}
.tabs .t.on{color:var(--ink)}
.tabs .t.on::after{content:"";position:absolute;left:50%;bottom:-1px;width:24px;height:2px;background:var(--vermilion);transform:translateX(-50%)}

.timeline{padding:14px 20px;position:relative}
.timeline::before{content:"";position:absolute;left:34px;top:18px;bottom:18px;width:1px;background:var(--line)}
.tl-item{position:relative;padding-left:34px;margin-bottom:18px}
.tl-item::before{content:"";position:absolute;left:11px;top:8px;width:9px;height:9px;border-radius:50%;background:var(--paper);border:2px solid var(--vermilion)}
.tl-item .when{font-family:var(--display);font-size:12px;color:var(--vermilion);letter-spacing:2px}
.tl-card{margin-top:6px;padding:12px 14px;background:rgba(255,250,235,.6);border:1px solid var(--line);position:relative}
.tl-card h4{margin:0 0 4px;font-family:var(--display);font-size:14px;letter-spacing:2px}
.tl-card p{margin:0;font-size:12px;color:var(--ink-3);line-height:1.6}
.tl-card .tag{position:absolute;right:10px;top:10px;font-size:10px;padding:2px 6px;background:var(--jade);color:#fff;letter-spacing:1px}
.tl-card .tag.warn{background:var(--vermilion)}
.tl-card .tag.idle{background:var(--ink-3)}

/* —— 处方 —— */
.rx{margin:14px 20px;padding:18px 20px;background:#fffaee;border:1px solid var(--line);position:relative;box-shadow:var(--shadow)}
.rx::before,.rx::after{content:"";position:absolute;left:6px;right:6px;height:1px;background:var(--ink);opacity:.3}
.rx::before{top:6px}.rx::after{bottom:6px}
.rx h3{margin:0;text-align:center;font-family:var(--display);letter-spacing:6px;font-size:18px}
.rx .meta{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-3);padding:8px 0;border-bottom:1px solid var(--line);margin-bottom:10px}
.rx .herb{display:flex;justify-content:space-between;padding:6px 0;font-size:13px;border-bottom:1px dashed rgba(28,22,15,.08)}
.rx .herb b{font-family:var(--display);letter-spacing:1px}
.rx .herb em{color:var(--vermilion);font-style:normal;font-family:var(--display);font-size:12px}
.rx .usage{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line);font-size:12px;color:var(--ink-3);line-height:1.8}
.rx .usage b{color:var(--ink);font-family:var(--display)}
.rx .sign{margin-top:14px;display:flex;justify-content:space-between;align-items:flex-end}
.rx .sign .doc-sign{font-family:var(--hand);font-size:22px;color:var(--ink)}

/* —— 消息 —— */
.msg{display:flex;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line)}
.msg .ic{width:40px;height:40px;background:var(--vermilion);color:#fff;display:grid;place-items:center;font-family:var(--hand);font-size:22px;flex-shrink:0}
.msg .ic.j{background:var(--jade)}
.msg .ic.g{background:var(--gold);color:var(--ink)}
.msg .body{flex:1;min-width:0}
.msg .body .t{display:flex;justify-content:space-between;font-size:13px;font-family:var(--display);letter-spacing:1px}
.msg .body .t small{color:var(--ink-3);font-size:11px;font-family:var(--serif);letter-spacing:0}
.msg .body p{margin:4px 0 0;font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.msg.unread .body .t::after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--vermilion);margin-left:6px}

/* —— 我的 —— */
.me-head{padding:24px 20px;display:flex;align-items:center;gap:14px;background:linear-gradient(180deg,rgba(167,45,32,.06),transparent)}
.me-head .av{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,var(--gold-l),var(--gold));display:grid;place-items:center;color:#fff;font-family:var(--display);font-size:24px;font-weight:700;border:2px solid rgba(255,255,255,.6);position:relative;box-shadow:0 3px 10px rgba(184,137,58,.3)}
.me-head .av::after{content:"";position:absolute;inset:-4px;border:1px dashed var(--gold);border-radius:50%;opacity:.5}
.me-head .info b{display:block;font-family:var(--display);font-size:20px;letter-spacing:3px}
.me-head .info span{font-size:11px;color:var(--ink-3);letter-spacing:1px}
.me-stats{display:grid;grid-template-columns:repeat(4,1fr);margin:10px 20px;background:#fffaee;border:1px solid var(--line);text-align:center;padding:14px 0}
.me-stats div{border-right:1px solid var(--line)}
.me-stats div:last-child{border-right:0}
.me-stats b{display:block;font-family:var(--display);font-size:20px;color:var(--vermilion)}
.me-stats span{font-size:11px;color:var(--ink-3);letter-spacing:1px}
.me-list{margin:14px 20px;background:#fffaee;border:1px solid var(--line)}
.me-list a{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--line);font-size:14px}
.me-list a:last-child{border-bottom:0}
.me-list a svg{width:18px;height:18px;stroke:var(--vermilion);fill:none;stroke-width:1.6}
.me-list a span{flex:1;letter-spacing:1px}
.me-list a::after{content:"›";color:var(--ink-3);font-size:18px}

/* —— 底部Tabbar —— */
#tabbar{position:fixed;left:0;right:0;bottom:0;max-width:430px;margin:0 auto;background:rgba(244,234,213,.96);backdrop-filter:blur(10px);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);padding:6px 0 max(6px,env(safe-area-inset-bottom));z-index:100}
@media (min-width:600px){#tabbar{position:absolute}}
#tabbar a{display:grid;place-items:center;gap:2px;padding:6px 0;color:var(--ink-3);font-size:10px;letter-spacing:1px}
#tabbar a svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
#tabbar a.on{color:var(--vermilion)}
#tabbar a.center{margin-top:-22px}
#tabbar a.center .seal{display:grid;place-items:center;width:50px;height:50px;background:var(--vermilion);color:#fff;font-family:var(--display);font-size:15px;letter-spacing:1px;border-radius:50%;box-shadow:0 4px 0 var(--vermilion-d),inset 0 0 0 2px rgba(255,255,255,.5),0 8px 20px -6px rgba(167,45,32,.5)}
#tabbar a.center span{margin-top:2px;color:var(--vermilion);font-weight:600}

/* —— Toast —— */
#toast{position:fixed;left:50%;top:30%;transform:translateX(-50%);background:rgba(28,22,15,.92);color:var(--paper);padding:10px 22px;font-family:var(--display);letter-spacing:3px;font-size:13px;opacity:0;pointer-events:none;transition:.3s;z-index:1000}
#toast.show{opacity:1;top:25%}

/* —— 印章式装饰 —— */
.corner-mark{position:absolute;right:18px;top:18px;font-family:var(--hand);font-size:14px;color:var(--vermilion);writing-mode:vertical-rl;letter-spacing:2px;opacity:.65}

/* 节令大字 */
.poem{margin:18px 20px;padding:18px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='180'><filter id='n'><feTurbulence baseFrequency='2' numOctaves='1'/><feColorMatrix values='0 0 0 0 .35  0 0 0 0 .25  0 0 0 0 .15  0 0 0 .1 0'/></filter><rect width='300' height='180' filter='url(%23n)'/></svg>"),linear-gradient(135deg,#fffaee,#f4ead5);border:1px solid var(--line);position:relative;text-align:center;overflow:hidden}
.poem .big{font-family:var(--hand);font-size:48px;color:var(--ink);letter-spacing:14px;line-height:1}
.poem .small{font-family:var(--display);font-size:12px;color:var(--ink-3);letter-spacing:6px;margin-top:8px}
.poem::before{content:"清";position:absolute;left:-12px;top:-20px;font-family:var(--hand);font-size:120px;color:var(--vermilion);opacity:.06;line-height:1}
.poem::after{content:"和";position:absolute;right:-16px;bottom:-30px;font-family:var(--hand);font-size:120px;color:var(--jade);opacity:.06;line-height:1}

/* —— 身份证注册页 —— */
.reg-form{padding-bottom:30px}
.reg-intro{display:flex;align-items:flex-start;gap:14px;padding:18px 20px 8px;border-bottom:1px dashed var(--line);margin:0 20px 14px}
.reg-intro .glyph{width:52px;height:52px;display:grid;place-items:center;font-family:var(--display);font-size:28px;color:var(--vermilion);background:#fffaee;border:1px solid var(--vermilion);letter-spacing:0;flex:none}
.reg-intro .t b{display:block;font-family:var(--display);font-size:16px;letter-spacing:3px;color:var(--ink);margin-bottom:4px}
.reg-intro .t p{margin:0;font-size:12px;color:var(--ink-3);line-height:1.7}
.reg-form .log-section{padding:10px 20px}
.reg-form .log-section .label{font-size:12px;letter-spacing:3px;color:var(--ink-3);margin-bottom:8px}
.reg-form .log-section input{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;padding:10px 4px;font-size:15px;letter-spacing:1px;outline:0;font-family:var(--serif)}
.reg-form .log-section input:focus{border-bottom-color:var(--vermilion)}
.reg-hint{margin-top:6px;font-size:12px;letter-spacing:1px;min-height:16px;color:var(--ink-3)}
.reg-hint.ok{color:var(--jade)}
.reg-hint.err{color:var(--vermilion)}
.reg-agree{padding:14px 20px 10px;font-size:12px;color:var(--ink-3);letter-spacing:1px}
.reg-agree label{display:flex;align-items:center;gap:6px}

/* —— 空状态 —— */
.empty-block{margin:20px;padding:32px 20px;text-align:center;background:rgba(255,250,238,.4);border:1px dashed var(--line);color:var(--ink-3);font-size:13px;letter-spacing:1px;line-height:1.9}
.empty-block .emp-ic{font-size:36px;margin-bottom:10px;opacity:.6}
.empty-block .emp-t a{color:var(--vermilion);border-bottom:1px solid var(--vermilion);padding-bottom:1px}
.empty-block small{display:block;font-size:11px;opacity:.7;margin-top:4px}
