:root {
  color-scheme: light;
  --paper: #f5f3ec;
  --paper-deep: #eae6da;
  --card: #fffefb;
  --ink: #232f2a;
  --muted: #7d817b;
  --green: #24584a;
  --green-deep: #1b4238;
  --gold: #af8a56;
  --line: rgba(38, 54, 47, .09);
  --shadow: 0 10px 32px rgba(35, 47, 41, .07);
}

* { box-sizing: border-box; }
html { min-height: 100%; background: #dbd8cf; }
body { min-height: 100%; margin: 0; color: var(--ink); background: #dbd8cf; font-family: "PingFang SC", "Microsoft YaHei", system-ui, sans-serif; }
.skip-link { position:fixed; left:12px; top:8px; z-index:200; padding:9px 13px; border-radius:9px; color:#fff; background:var(--green); transform:translateY(-150%); }
.skip-link:focus { transform:translateY(0); }
button, textarea, input { font: inherit; }
button { color: inherit; }
.is-hidden { visibility: hidden; pointer-events: none; }

.app-shell { position: relative; width: 100%; min-height: 100vh; margin: 0 auto; overflow: hidden; background: var(--paper); }
.site-header { position: sticky; top: 0; z-index: 20; height: calc(54px + env(safe-area-inset-top)); padding: env(safe-area-inset-top) 18px 0; display: grid; grid-template-columns: 40px 1fr 40px; align-items: center; border-bottom: 1px solid var(--line); background: rgba(245,243,236,.92); backdrop-filter: blur(16px); }
.site-header__title { text-align: center; font-size: 17px; font-weight: 700; }
.site-header__seal { width: 31px; height: 31px; display: grid; place-items: center; justify-self: end; overflow: hidden; border: 1px solid rgba(46,102,83,.16); border-radius: 50%; background: #fff; }
.brand-logo { width: 100%; height: 100%; display: block; border-radius: inherit; object-fit: cover; }
.icon-button { width: 36px; height: 36px; padding: 0; border: 0; background: transparent; font-size: 34px; line-height: 1; }

.page { min-height: calc(100vh - 54px); padding: 20px 19px calc(92px + env(safe-area-inset-bottom)); animation: pageIn .32s ease; }
@keyframes pageIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.card { border: 1px solid rgba(38,54,47,.05); border-radius: 22px; background: var(--card); box-shadow: var(--shadow); }
.eyebrow { color: #9b805c; font-size: 11px; letter-spacing: 2px; }
.section-head { margin: 30px 4px 15px; display: flex; align-items: center; justify-content: space-between; }
.section-head h2 { margin: 0; font-family: STKaiti, KaiTi, serif; font-size: 21px; letter-spacing: 2px; }
.section-head button, .text-button { padding: 0; border: 0; color: var(--green); background: transparent; font-size: 13px; }

.home-top { display: flex; align-items: center; justify-content: space-between; margin: 2px 2px 18px; }
.home-top__hello { margin-top: 6px; font-family: STKaiti, KaiTi, serif; font-size: 26px; font-weight: 700; letter-spacing: 2px; }
.avatar { width: 46px; height: 46px; display: grid; place-items: center; overflow: hidden; border: 1px solid rgba(46,102,83,.16); border-radius: 50%; background: #fff; }
.hero { position: relative; overflow: hidden; padding: 30px 26px 25px; border-radius: 26px; color: #f6efdf; background: linear-gradient(150deg,#2c6050,#1d4237); box-shadow: 0 18px 42px rgba(29,66,55,.18); }
.hero::before,.hero::after { content:""; position:absolute; border-radius:50%; background:rgba(255,255,255,.045); }
.hero::before { width:170px; height:170px; right:-68px; top:-75px; }
.hero::after { width:90px; height:90px; right:30px; bottom:-55px; }
.hero__mark { width: 52px; height: 28px; display:grid; place-items:center; border:1px solid rgba(245,219,168,.32); border-radius:999px; color:#edd29f; font-family:STKaiti,KaiTi,serif; font-size:14px; }
.hero h1 { margin: 18px 0 9px; font-family: STKaiti, KaiTi, serif; font-size: 30px; letter-spacing: 3px; }
.hero p { margin: 0; color: rgba(255,255,255,.68); font-size: 14px; }
.hero__ask { position:relative; z-index:1; width:100%; margin-top:24px; padding:14px 15px 14px 18px; display:flex; align-items:center; justify-content:space-between; border:0; border-radius:16px; color:#777d77; background:#fffefa; text-align:left; }
.hero__ask strong { padding:7px 13px; border-radius:11px; color:#fff; background:var(--green); font-size:13px; }
.hero__note { margin-top:13px; color:rgba(255,255,255,.46); font-size:11px; }

.shortcut-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.shortcut { padding:19px 17px; border:0; text-align:left; }
.shortcut__icon { width:42px; height:42px; display:grid; place-items:center; border-radius:14px; font-family:STKaiti,KaiTi,serif; font-size:20px; }
.shortcut:nth-child(1) .shortcut__icon { color:#315e4d; background:#deebe3; }
.shortcut:nth-child(2) .shortcut__icon { color:#8b6538; background:#f0e3cf; }
.shortcut:nth-child(3) .shortcut__icon { color:#486976; background:#dfe9ee; }
.shortcut:nth-child(4) .shortcut__icon { color:#915d54; background:#eee0dc; }
.shortcut h3 { margin:13px 0 5px; font-size:16px; }
.shortcut p { margin:0; color:var(--muted); font-size:12px; line-height:1.5; }
.today-card { width:100%; padding:17px; display:flex; gap:16px; border:0; text-align:left; }
.today-card__cover { width:86px; min-height:126px; flex:0 0 auto; display:flex; flex-direction:column; align-items:center; justify-content:center; border-radius:15px; color:#f4e4c8; background:linear-gradient(155deg,#315f50,#754f38); font-family:STKaiti,KaiTi,serif; }
.today-card__cover strong { font-size:21px; letter-spacing:2px; }
.today-card__cover small { margin-top:7px; opacity:.65; }
.today-card__body { min-width:0; flex:1; padding:2px 0; }
.today-card__body small { color:#9a784d; }
.today-card__body h3 { margin:7px 0 5px; font-size:17px; line-height:1.45; }
.today-card__body p { margin:0 0 13px; color:var(--muted); font-size:12px; line-height:1.55; }
.today-card__foot { display:flex; justify-content:space-between; color:#91958f; font-size:12px; }
.today-card__foot b { color:var(--green); }

.site-footer { padding:0 18px calc(82px + env(safe-area-inset-bottom)); color:#9a9d97; text-align:center; font-size:11px; line-height:1.7; }
.site-footer a { color:inherit; text-decoration:none; }

.tab-bar { position:fixed; left:0; right:0; bottom:0; z-index:30; height:calc(64px + env(safe-area-inset-bottom)); padding:6px 10px env(safe-area-inset-bottom); display:grid; grid-template-columns:repeat(5,1fr); border-top:1px solid var(--line); background:rgba(255,254,251,.94); backdrop-filter:blur(18px); }
.tab-bar button { display:grid; place-items:center; border:0; color:#92958f; background:transparent; }
.tab-bar b { display:block; padding:7px 13px; border-radius:999px; font-size:12px; font-weight:500; letter-spacing:1px; }
.tab-bar button.is-active { color:var(--green); }
.tab-bar button.is-active b { background:#e3ece7; font-weight:700; }

.chat-page { margin:-18px; display:flex; flex-direction:column; min-height:calc(100vh - 54px - 70px); }
.chat-intro { padding:18px 20px; display:flex; align-items:center; gap:13px; border-bottom:1px solid var(--line); }
.chat-intro__mark { width:42px; height:42px; display:grid; place-items:center; overflow:hidden; border:1px solid rgba(46,102,83,.16); border-radius:14px; background:#fff; }
.chat-intro h2 { margin:0 0 4px; font-size:17px; }
.chat-intro p { margin:0; color:#7d857f; font-size:12px; }
.chat-history-clear { margin-left:auto; padding:7px 9px; flex:0 0 auto; border:1px solid var(--line); border-radius:10px; color:#8b8f89; background:#fffefa; font-size:11px; }
.dot { display:inline-block; width:7px; height:7px; margin-right:5px; border-radius:50%; background:#55a677; }
.messages { min-height:340px; flex:1; padding:20px 17px 230px; }
.message { margin-bottom:16px; display:flex; align-items:flex-start; gap:9px; }
.message--user { justify-content:flex-end; }
.message__avatar { width:29px; height:29px; flex:0 0 auto; display:grid; place-items:center; overflow:hidden; border:1px solid rgba(46,102,83,.14); border-radius:10px; background:#fff; }
.bubble { max-width:82%; padding:13px 15px; border-radius:6px 17px 17px 17px; background:#fffefa; box-shadow:0 7px 22px rgba(56,65,59,.06); font-size:14px; line-height:1.75; white-space:pre-wrap; }
.message--user .bubble { border-radius:17px 6px 17px 17px; color:#fff; background:var(--green); }
.bubble img { width:100%; max-height:210px; margin-bottom:9px; border-radius:12px; object-fit:cover; }
.sources { margin-top:13px; padding-top:11px; border-top:1px solid var(--line); color:#717a74; font-size:12px; }
.sources b { display:block; margin-bottom:7px; color:var(--green); }
.suggestions { display:flex; flex-direction:column; gap:9px; margin:5px 38px 0; }
.suggestion { padding:12px 14px; border:1px solid var(--line); border-radius:14px; color:#55635c; background:#fbfaf5; text-align:left; font-size:13px; }
.composer-wrap { position:fixed; left:0; right:0; bottom:64px; z-index:25; padding:10px 15px 13px; background:linear-gradient(180deg,rgba(247,243,234,0),#f7f3ea 18%); }
.selected-image { margin-bottom:8px; padding:8px; display:flex; align-items:center; gap:10px; border-radius:13px; background:#fff; box-shadow:var(--shadow); }
.selected-image img { width:48px; height:48px; border-radius:9px; object-fit:cover; }
.selected-image button { margin-left:auto; border:0; background:transparent; font-size:22px; }
.composer { padding:10px; display:flex; align-items:flex-end; gap:9px; border:1px solid var(--line); border-radius:22px; background:#fffefa; box-shadow:0 10px 28px rgba(51,64,56,.1); }
.composer textarea { min-height:76px; max-height:160px; flex:1; resize:none; padding:13px 7px; border:0; outline:0; color:var(--ink); background:transparent; font-size:16px; line-height:1.6; }
.composer__image,.composer__send { width:46px; height:46px; flex:0 0 auto; border:0; border-radius:15px; }
.composer__image { color:var(--green); background:#edf2ee; font-size:22px; }
.composer__send { color:#fff; background:var(--green); font-size:18px; }
.safety { margin-bottom:6px; color:#777d77; text-align:center; font-size:10px; line-height:1.5; }
.safety span,.safety b { display:block; }
.safety b { margin-top:2px; color:var(--green); font-weight:600; }

.page-hero { padding:30px 26px; border-radius:24px; color:#f6efdf; background:linear-gradient(150deg,#2c6050,#1d4237); box-shadow:0 16px 38px rgba(29,66,55,.15); }
.page-hero h1 { margin:10px 0; font-family:STKaiti,KaiTi,serif; font-size:29px; letter-spacing:3px; }
.page-hero p { margin:0; color:rgba(255,255,255,.67); font-size:13px; line-height:1.65; }
.list { display:flex; flex-direction:column; gap:13px; margin-top:19px; }
.list-card { width:100%; padding:15px; display:flex; align-items:center; gap:14px; border:0; text-align:left; }
.book-cover { width:74px; height:94px; flex:0 0 auto; display:grid; place-items:center; border-radius:14px; color:#f4e5cc; background:#76503e; font-family:STKaiti,KaiTi,serif; writing-mode:vertical-lr; letter-spacing:3px; }
.list-card:nth-child(2) .book-cover { background:#536c57; }
.list-card:nth-child(3) .book-cover { background:#536d76; }
.list-card__body { min-width:0; flex:1; }
.list-card__tag { color:#9b7547; font-size:11px; }
.list-card h3 { margin:7px 0; font-size:16px; }
.list-card p { margin:0; color:var(--muted); font-size:12px; line-height:1.55; }
.list-card__foot { margin-top:10px; display:flex; justify-content:space-between; color:#9a9d97; font-size:11px; }
.list-card__foot b { color:var(--green); }

.tool-card { margin-top:17px; padding:21px; }
.tool-card label { display:block; margin-bottom:11px; font-weight:700; }
.tool-card textarea { width:100%; min-height:130px; padding:15px; resize:vertical; border:0; border-radius:15px; outline:0; color:var(--ink); background:#f5f1e8; line-height:1.65; }
.primary-button { width:100%; margin-top:13px; padding:14px; border:0; border-radius:14px; color:#fff; background:var(--green); font-weight:700; letter-spacing:2px; }
.primary-button:disabled { color:#a7aaa5; background:#e7e5de; }
.result-card { margin-top:15px; padding:20px; font-size:14px; line-height:1.8; white-space:pre-wrap; }
.result-card h3 { margin:0 0 10px; }

.resource-icon { width:54px; height:61px; flex:0 0 auto; display:grid; place-items:center; border-radius:11px; color:#fff; background:#a45f4c; font-size:12px; font-weight:700; }
.list-card:nth-child(3) .resource-icon { background:#557480; }
.resource-action { padding:7px 11px; border-radius:999px; color:var(--green); background:#e7f0eb; font-size:11px; }
.notice { margin:20px 12px; color:#989d97; text-align:center; font-size:11px; line-height:1.65; }

.member-card { padding:27px 24px 22px; border-radius:24px; color:#f6efdf; background:linear-gradient(150deg,#2c6050,#1d4237); box-shadow:0 18px 38px rgba(29,66,55,.16); }
.member-card__top { display:flex; align-items:flex-start; justify-content:space-between; }
.member-card h1 { margin:8px 0 0; font-family:STKaiti,KaiTi,serif; font-size:25px; }
.member-level { padding:6px 10px; border:1px solid rgba(245,219,168,.42); border-radius:999px; color:#f1d6a4; font-size:11px; }
.member-card__bottom { margin-top:25px; padding-top:17px; display:flex; justify-content:space-between; border-top:1px solid rgba(255,255,255,.12); color:rgba(255,255,255,.66); font-size:12px; }
.circle-button { width:100%; margin:15px 0 22px; padding:17px 19px; display:flex; justify-content:space-between; align-items:center; border:0; text-align:left; }
.circle-button h3 { margin:0 0 5px; font-size:17px; }
.circle-button p { margin:0; color:var(--muted); font-size:12px; }
.circle-button span { color:var(--gold); font-size:29px; }

.member-overview { padding-bottom:8px; }
.member-summary { padding:28px 25px 23px; border-radius:24px; color:#f6efdf; background:linear-gradient(150deg,#2c6050,#1d4237); box-shadow:0 16px 38px rgba(29,66,55,.15); }
.member-summary .eyebrow { color:#e2c790; }
.member-summary h1 { margin:10px 0 7px; font-family:STKaiti,KaiTi,serif; font-size:28px; }
.member-summary p { margin:0; color:rgba(255,255,255,.7); font-size:13px; line-height:1.7; }
.member-circle-entry { margin-top:18px; color:#285044; background:#fffaf0; box-shadow:none; }
.member-circle-entry span { margin-left:7px; font-size:19px; }
.circle-about { margin-top:18px; padding:24px 21px; border:1px solid var(--line); border-radius:22px; background:#fbf8f0; }
.circle-about h2 { margin:8px 0 17px; font-family:STKaiti,KaiTi,serif; font-size:24px; }
.circle-about__statement { padding:19px; border-radius:17px; color:#f4ead7; background:#282821; }
.circle-about__statement small { display:block; margin-bottom:10px; color:#b8b5aa; font-size:11px; }
.circle-about__statement strong { display:block; font-family:STKaiti,KaiTi,serif; font-size:18px; line-height:1.65; }
.circle-about>p { margin:15px 2px 0; color:#6f746e; font-size:12px; line-height:1.75; }
.member-section-head { margin-top:24px; }
.circle-content-grid { display:grid; grid-template-columns:1fr 1fr; gap:11px; }
.circle-content-card { position:relative; min-height:126px; overflow:hidden; padding:17px 15px; border:1px solid rgba(82,74,61,.1); border-radius:17px; color:inherit; background:#fffdf8; text-align:left; box-shadow:0 8px 22px rgba(65,57,45,.04); }
.circle-content-card strong { width:49px; height:42px; display:grid; place-items:center; border-radius:12px; color:#fff; background:#356251; font-family:STKaiti,KaiTi,serif; font-size:16px; }
.circle-content-card:nth-child(odd) strong { background:#ad4635; }
.circle-content-card p { position:relative; z-index:1; margin:13px 0 0; color:#6f746e; font-size:11px; line-height:1.6; }
.circle-content-card>span { position:absolute; right:8px; bottom:-8px; color:rgba(46,102,83,.07); font-family:Georgia,serif; font-size:44px; font-weight:700; }
.member-circle-note { margin:18px 8px 0; color:var(--muted); text-align:center; font-size:11px; line-height:1.7; }
.member-notice { margin-bottom:0; }

.profile-head { display:flex; align-items:center; gap:13px; padding:10px 4px 19px; }
.profile-head__avatar { width:58px; height:58px; display:grid; place-items:center; overflow:hidden; border:1px solid rgba(46,102,83,.16); border-radius:50%; background:#fff; }
.profile-head h2 { margin:0 0 5px; font-size:20px; }
.profile-head p { margin:0; color:var(--muted); font-size:12px; }
.profile-welcome { padding:13px 8px 9px; text-align:center; }
.profile-welcome .profile-head__avatar { width:68px; height:68px; margin:0 auto 14px; }
.profile-welcome h1 { margin:8px 0 7px; font-family:STKaiti,KaiTi,serif; font-size:27px; letter-spacing:2px; }
.profile-welcome p { margin:0; color:var(--muted); font-size:12px; }
.member-login-card { margin-top:18px; padding:22px 20px; }
.member-login-card label { display:block; font-size:16px; font-weight:700; }
.member-login-card>p { margin:7px 0 14px; color:var(--muted); font-size:11px; }
.login-benefits { margin-top:15px; padding:5px 18px; }
.login-benefits>div { padding:14px 0; display:flex; align-items:center; gap:12px; }
.login-benefits>div+div { border-top:1px solid var(--line); }
.login-benefits span { width:35px; height:35px; flex:0 0 auto; display:grid; place-items:center; border-radius:11px; color:var(--green); background:#e7f0eb; font-family:STKaiti,KaiTi,serif; }
.login-benefits p { margin:0; display:flex; flex-direction:column; gap:3px; }
.login-benefits b { font-size:13px; }
.login-benefits small { color:var(--muted); font-size:11px; }
.profile-plain-link { width:100%; margin-top:18px; padding:9px; border:0; color:var(--green); background:transparent; font-size:12px; }
.profile-member-card { overflow:hidden; padding:24px 22px 17px; border-radius:24px; color:#f6efdf; background:linear-gradient(150deg,#2c6050,#1d4237); box-shadow:0 16px 38px rgba(29,66,55,.16); }
.profile-member-card__top { display:grid; grid-template-columns:54px 1fr auto; align-items:center; gap:13px; }
.profile-member-card__avatar { width:54px; height:54px; overflow:hidden; border:1px solid rgba(255,255,255,.35); border-radius:50%; background:#fff; }
.profile-member-card .eyebrow { color:#dec38e; }
.profile-member-card h1 { margin:5px 0 3px; font-size:20px; }
.profile-member-card p { margin:0; color:rgba(255,255,255,.58); font-size:11px; }
.profile-member-badge { align-self:start; padding:5px 9px; border:1px solid rgba(245,219,168,.34); border-radius:999px; color:#e6cd9a; font-size:10px; }
.profile-member-card__foot { margin-top:19px; padding-top:13px; display:flex; justify-content:space-between; border-top:1px solid rgba(255,255,255,.12); color:rgba(255,255,255,.6); font-size:10px; }
.profile-quota { margin-top:15px; padding:19px 18px 16px; }
.profile-quota__head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.profile-quota__head small { display:block; margin-bottom:4px; color:var(--muted); font-size:10px; }
.profile-quota__head strong { font-size:17px; }
.profile-quota__head button { padding:7px 10px; border:0; border-radius:10px; color:var(--green); background:#e7f0eb; font-size:11px; }
.profile-quota__bar { height:7px; margin-top:15px; overflow:hidden; border-radius:999px; background:#e5e5df; }
.profile-quota__bar i { height:100%; display:block; border-radius:inherit; background:linear-gradient(90deg,#af8a56,#24584a); }
.profile-quota>p { margin:9px 0 0; color:var(--muted); font-size:10px; }
.profile-section-head { margin-top:25px; }
.profile-action-grid { display:grid; grid-template-columns:1fr 1fr; gap:11px; }
.profile-action { min-height:134px; padding:17px 15px; border:0; text-align:left; }
.profile-action>span { width:38px; height:38px; display:grid; place-items:center; border-radius:12px; color:#fff; background:#356251; font-family:STKaiti,KaiTi,serif; }
.profile-action:nth-child(2)>span { background:#a2604e; }
.profile-action:nth-child(3)>span { background:#7b6948; }
.profile-action:nth-child(4)>span { background:#536d76; }
.profile-action h3 { margin:13px 0 5px; font-size:14px; }
.profile-action p { margin:0; color:var(--muted); font-size:10px; line-height:1.5; }
.profile-account { margin-top:15px; overflow:hidden; padding:4px 18px; }
.profile-account__title,.profile-account__row { min-height:50px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.profile-account__title { border-bottom:1px solid var(--line); }
.profile-account__title h3 { margin:0; font-size:14px; }
.profile-account__title span { color:var(--muted); font-size:10px; }
.profile-account__row+.profile-account__row { border-top:1px solid var(--line); }
.profile-account__row>span { color:var(--muted); font-size:11px; }
.profile-account__row b { font-size:12px; font-weight:600; }
.profile-account__row button { padding:0; border:0; color:var(--green); background:transparent; font-size:11px; }
.profile-membership-note { margin:16px 8px 0; color:var(--muted); font-size:10px; line-height:1.7; text-align:center; }
.stats { padding:18px 10px; display:grid; grid-template-columns:repeat(3,1fr); text-align:center; }
.stat + .stat { border-left:1px solid var(--line); }
.stat b { display:block; font-family: STKaiti, KaiTi, serif; font-size:24px; letter-spacing:1px; }
.stat span { color:var(--muted); font-size:11px; }
.quote { margin-top:15px; padding:24px; color:#715642; background:#eee2cf; }
.quote strong { font-family:STKaiti,KaiTi,serif; font-size:21px; }
.quote p { margin:8px 0 0; color:#93775f; font-size:12px; }
.menu { margin-top:15px; overflow:hidden; }
.menu-row { padding:16px 18px; display:flex; align-items:center; gap:13px; }
.menu-row + .menu-row { border-top:1px solid var(--line); }
.menu-row__icon { width:34px; height:34px; display:grid; place-items:center; border-radius:11px; color:var(--green); background:#e8f0eb; font-family:STKaiti,KaiTi,serif; }
.menu-row h3 { flex:1; margin:0; font-size:14px; }
.menu-row p { margin:0 5px 0 0; color:var(--muted); font-size:11px; }

.toast { position:fixed; left:50%; bottom:94px; z-index:100; max-width:80%; padding:10px 15px; border-radius:12px; color:#fff; background:rgba(36,48,42,.92); font-size:13px; opacity:0; transform:translate(-50%,10px); pointer-events:none; transition:.2s ease; }
.toast.is-visible { opacity:1; transform:translate(-50%,0); }
.loading { opacity:.68; pointer-events:none; }

/* ── 宣传轮播 */
.promo { overflow:hidden; border-radius:22px; box-shadow:var(--shadow); }
.promo__track { display:flex; transition:transform .45s ease; touch-action:pan-y; user-select:none; -webkit-user-select:none; cursor:grab; }
.promo__track:active { cursor:grabbing; }
.promo__slide { position:relative; min-width:100%; overflow:hidden; padding:24px 23px 21px; border:0; color:#f6efdf; text-align:left; background:linear-gradient(135deg,#8f6d45,#6c5030); }
.promo__slide::after { content:""; position:absolute; right:-46px; top:-52px; width:140px; height:140px; border-radius:50%; background:rgba(255,255,255,.06); }
.promo__slide:nth-child(2) { background:linear-gradient(135deg,#4b7064,#304f44); }
.promo__slide:nth-child(3) { background:linear-gradient(135deg,#795647,#5a3d31); }
.promo__slide:nth-child(n+4) { background:linear-gradient(135deg,#5d6b7a,#414e5c); }
.promo__badge { display:inline-block; padding:4px 11px; border:1px solid rgba(245,219,168,.42); border-radius:999px; color:#edd29f; font-size:11px; letter-spacing:1px; }
.promo__slide h3 { margin:13px 0 6px; font-family:STKaiti,KaiTi,serif; font-size:23px; }
.promo__slide p { margin:0; color:rgba(255,255,255,.72); font-size:12px; line-height:1.6; }
.promo__slide b { display:inline-block; margin-top:13px; font-size:12px; }
.promo__dots { display:flex; justify-content:center; gap:6px; margin:11px 0 2px; }
.promo__dot { width:6px; height:6px; border-radius:999px; background:rgba(53,70,61,.16); transition:.25s ease; }
.promo__dot.is-active { width:17px; background:var(--green); }

/* ── 表单 */
.form-input { width:100%; margin:0 0 13px; padding:13px 15px; border:0; border-radius:13px; outline:0; color:var(--ink); background:#f5f1e8; line-height:1.5; }
.form-input:focus { box-shadow:0 0 0 2px rgba(46,102,83,.18); }
textarea.form-input { min-height:92px; resize:vertical; }
select.form-input { appearance:none; }
.booking-success { padding:16px 6px; text-align:center; }
.booking-success__icon { width:52px; height:52px; margin:0 auto 14px; display:grid; place-items:center; border-radius:50%; color:#fff; background:var(--green); font-size:26px; }
.booking-success h3 { margin:0 0 9px; font-size:17px; }
.booking-success p { margin:0; color:var(--muted); font-size:13px; line-height:1.8; }
.booking-contact { margin-top:16px; padding:22px 20px; text-align:center; }
.booking-contact h2 { margin:8px 0 8px; font-family:STKaiti,KaiTi,serif; font-size:21px; }
.booking-contact > p { max-width:330px; margin:0 auto 17px; color:var(--muted); font-size:13px; line-height:1.8; }
.booking-contact__qr { width:208px; max-width:72%; height:auto; display:block; margin:0 auto; border-radius:12px; box-shadow:0 7px 22px rgba(37,61,51,.12); }
.booking-contact__hint { margin-top:11px; color:var(--green); font-size:13px; font-weight:700; }
.booking-contact__address { margin-top:20px; padding:16px 15px; border-radius:14px; text-align:left; background:#f5f1e8; }
.booking-contact__address strong { display:block; margin-bottom:8px; color:var(--green); font-size:12px; letter-spacing:1px; }
.booking-contact__address span { display:block; margin-bottom:4px; color:var(--ink); font-size:15px; font-weight:700; }
.booking-contact__address p { margin:0; color:var(--muted); font-size:13px; line-height:1.7; }
.booking-lead { padding:4px 3px 18px; }
.booking-lead h1 { margin:8px 0 7px; font-family:STKaiti,KaiTi,serif; font-size:27px; letter-spacing:2px; }
.booking-lead p { margin:0; color:var(--muted); font-size:13px; line-height:1.7; }
.booking-step { margin-bottom:14px; padding:19px 17px; }
.booking-step__head { display:flex; align-items:center; gap:11px; margin-bottom:16px; }
.booking-step__head > span { width:29px; height:29px; flex:0 0 auto; display:grid; place-items:center; border-radius:50%; color:#fff; background:var(--green); font-size:12px; font-weight:700; }
.booking-step__head h2 { margin:0 0 3px; font-size:17px; }
.booking-step__head p { margin:0; color:var(--muted); font-size:11px; }
.booking-teachers { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.booking-teachers button { min-width:0; padding:13px 6px 12px; display:flex; flex-direction:column; align-items:center; border:1px solid var(--line); border-radius:15px; background:#f7f5ef; }
.booking-teachers button > b { width:34px; height:34px; display:grid; place-items:center; border-radius:50%; color:var(--green); background:#e2ece7; font-family:STKaiti,KaiTi,serif; font-size:17px; }
.booking-teachers button > span { margin-top:7px; font-size:14px; font-weight:700; }
.booking-teachers button.is-active { border-color:rgba(36,88,74,.45); background:#edf3ef; box-shadow:0 0 0 2px rgba(36,88,74,.08); }
.booking-teachers button.is-active > b { color:#fff; background:var(--green); }
.booking-month { display:grid; grid-template-columns:38px 1fr 38px; align-items:center; margin-bottom:10px; }
.booking-month strong { text-align:center; font-size:15px; }
.booking-month button { width:34px; height:34px; border:0; border-radius:50%; color:var(--green); background:#edf2ee; font-size:24px; line-height:1; }
.booking-week,.booking-calendar { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.booking-week { margin-bottom:5px; color:#989d97; text-align:center; font-size:10px; }
.booking-calendar__blank { min-height:54px; }
.booking-day { min-width:0; min-height:54px; padding:7px 1px 5px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; border:0; border-radius:11px; color:#858b86; background:transparent; }
.booking-day b { font-size:14px; }
.booking-day small { font-size:8px; white-space:nowrap; }
.booking-day.is-available { color:var(--ink); background:#f1f5f2; }
.booking-day.is-available small { color:var(--green); }
.booking-day.is-full { color:#747a75; background:#e9e8e2; }
.booking-day.is-full small { color:#7d827e; }
.booking-day.is-selected { color:#fff; background:var(--green); box-shadow:0 6px 15px rgba(36,88,74,.2); }
.booking-day.is-selected small { color:rgba(255,255,255,.78); }
.booking-legend { margin-top:12px; display:flex; justify-content:center; gap:13px; color:var(--muted); font-size:9px; }
.booking-legend span { display:flex; align-items:center; gap:4px; }
.booking-legend i { width:8px; height:8px; display:inline-block; border-radius:50%; }
.booking-legend .is-open { background:#8fb5a7; }
.booking-legend .is-full { background:#d2d3ce; }
.booking-legend .is-rest { border:1px solid #d2d3ce; background:transparent; }
.booking-duration { padding:4px; display:grid; grid-template-columns:1fr 1fr; gap:4px; border-radius:13px; background:#f0eee7; }
.booking-duration button { padding:10px; border:0; border-radius:10px; color:var(--muted); background:transparent; font-size:12px; }
.booking-duration button.is-active { color:var(--green); background:#fff; box-shadow:0 4px 13px rgba(43,55,49,.08); font-weight:700; }
.booking-placeholder { padding:25px 8px 10px; color:var(--muted); text-align:center; font-size:12px; }
.booking-slot-grid { margin-top:13px; display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.booking-slot { padding:11px 7px; display:flex; flex-direction:column; gap:4px; border:1px solid rgba(36,88,74,.18); border-radius:12px; color:var(--green); background:#f4f7f5; }
.booking-slot b { font-size:12px; }
.booking-slot small { font-size:9px; }
.booking-slot:disabled { border-color:transparent; color:#aeb1ac; background:#efeee9; }
.booking-slot.is-selected { color:#fff; background:var(--green); box-shadow:0 6px 16px rgba(36,88,74,.19); }
.booking-alternatives { margin-top:15px; padding:14px; border-radius:13px; background:#f7f1e6; }
.booking-alternatives strong { display:block; margin-bottom:9px; color:#8a673f; font-size:11px; }
.booking-alternatives button { width:100%; margin-top:6px; padding:9px 10px; border:0; border-radius:10px; color:var(--green); background:#fff; font-size:11px; text-align:left; }
.booking-alternatives p { margin:0; color:var(--muted); font-size:11px; }
.booking-form { margin-top:0; }
.booking-selection { margin:-2px 0 17px; padding:12px 13px; display:flex; flex-direction:column; gap:3px; border-radius:12px; color:var(--green); background:#edf3ef; font-size:12px; }
.booking-selection span { color:#6f7872; line-height:1.5; }
.activity-desc { font-size:14px; line-height:1.9; white-space:pre-wrap; }

@media (min-width: 700px) {
  .app-shell { width: 430px; min-height: 100vh; box-shadow: 0 0 55px rgba(40,46,42,.2); }
  .tab-bar,.composer-wrap { left:50%; right:auto; width:430px; transform:translateX(-50%); }
}

/* ── 约一约版块卡 */
.book-list { margin-top:19px; display:flex; flex-direction:column; gap:13px; }
.book-card { width:100%; padding:18px 17px; display:flex; align-items:center; gap:15px; border:0; text-align:left; }
.book-card__mark { width:52px; height:52px; flex:0 0 auto; display:grid; place-items:center; border-radius:15px; color:#f4e5cc; background:#2c6050; font-family:STKaiti,KaiTi,serif; font-size:21px; }
.book-card:nth-child(2) .book-card__mark { background:#8f6d45; }
.book-card:nth-child(3) .book-card__mark { background:#795647; }
.book-card__body { min-width:0; flex:1; }
.book-card__body h3 { margin:0 0 5px; font-size:16px; letter-spacing:1px; }
.book-card__body p { margin:0; color:var(--muted); font-size:12px; line-height:1.55; }
.book-card__arrow { color:var(--gold); font-size:22px; }

/* ── 我的页面：菜单链接行 + 退出登录 */
a.menu-row { color:inherit; text-decoration:none; cursor:pointer; }
.logout-button { display:block; margin:16px auto 0; padding:10px 26px; border:1px solid var(--line); border-radius:999px; color:var(--muted); background:transparent; font-size:13px; }

/* ── 背景底纹：常用本草药线稿装饰（灵芝/桂枝/黄芪/党参/杏仁） */
.app-shell::before {
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  opacity:.085;
  background-repeat:no-repeat;
  background-image:url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20120%20120'>%0A<path%20d='M20%2052%20C20%2030%2038%2018%2060%2018%20C82%2018%20100%2030%20100%2052%20C100%2059%2093%2062%2086%2062%20L34%2062%20C27%2062%2020%2059%2020%2052%20Z'%20fill='%2324584a'%20fill-opacity='.12'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linejoin='round'/>%0A<path%20d='M32%2048%20C35%2036%2046%2028%2059%2027'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A<path%20d='M40%2052%20C43%2044%2051%2038%2060%2037'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A<path%20d='M52%2062%20C51%2074%2049%2084%2045%2094%20M68%2062%20C69%2074%2071%2084%2075%2094'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A</svg>"),url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20120%20120'>%0A<path%20d='M34%2096%20C44%2076%2058%2052%2082%2030'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A<path%20d='M62%2064%20C72%2062%2080%2056%2084%2048%20M52%2078%20C44%2076%2038%2070%2035%2062%20M72%2048%20C64%2046%2058%2040%2056%2032'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A<circle%20cx='84'%20cy='29'%20r='3.5'%20fill='%2324584a'%20fill-opacity='.3'%20stroke='%2324584a'%20stroke-width='2'/>%0A<path%20d='M46%2088%20C52%2086%2058%2088%2061%2093%20M40%2080%20C34%2082%2030%2087%2029%2093'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A</svg>"),url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20120%20120'>%0A<path%20d='M50%2014%20C46%2034%2044%2056%2047%2076%20C48%2084%2046%2090%2041%2094%20M47%2076%20C52%2084%2058%2090%2064%2093%20M47%2060%20C43%2066%2038%2070%2033%2072'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A<ellipse%20cx='84'%20cy='72'%20rx='16'%20ry='10'%20transform='rotate%28-18%2084%2072%29'%20fill='%2324584a'%20fill-opacity='.15'%20stroke='%2324584a'%20stroke-width='2.6'%20stroke-linejoin='round'/>%0A<ellipse%20cx='84'%20cy='72'%20rx='9'%20ry='5'%20transform='rotate%28-18%2084%2072%29'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A<ellipse%20cx='80'%20cy='92'%20rx='13'%20ry='8'%20transform='rotate%28-18%2080%2092%29'%20fill='%2324584a'%20fill-opacity='.15'%20stroke='%2324584a'%20stroke-width='2.6'%20stroke-linejoin='round'/>%0A</svg>"),url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20120%20120'>%0A<path%20d='M60%2034%20C52%2046%2049%2066%2053%2084%20C55%2092%2053%2098%2048%20102%20M53%2084%20C58%2092%2064%2097%2070%2099'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A<path%20d='M49%2032%20C55%2027%2065%2027%2071%2032%20M46%2039%20C54%2034%2066%2034%2074%2040%20M48%2046%20C55%2042%2065%2042%2072%2047'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A<path%20d='M56%2060%20C52%2066%2047%2070%2042%2072%20M58%2072%20C62%2078%2067%2082%2073%2084'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A</svg>"),url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20120%20120'>%0A<path%20d='M46%2026%20C60%2040%2063%2060%2048%2074%20C33%2061%2032%2040%2046%2026%20Z'%20fill='%2324584a'%20fill-opacity='.15'%20stroke='%2324584a'%20stroke-width='2.6'%20stroke-linejoin='round'/>%0A<path%20d='M46%2032%20C52%2042%2053%2054%2047%2064'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A<path%20d='M78%2044%20C90%2056%2091%2072%2079%2083%20C67%2073%2066%2056%2078%2044%20Z'%20fill='%2324584a'%20fill-opacity='.15'%20stroke='%2324584a'%20stroke-width='2.6'%20stroke-linejoin='round'/>%0A<path%20d='M78%2050%20C83%2058%2084%2068%2079%2076'%20fill='none'%20stroke='%2324584a'%20stroke-width='3.2'%20stroke-linecap='round'%20stroke-linejoin='round'/>%0A</svg>");
  background-position:right -34px top 126px,left -30px top 37%,right -28px top 61%,left -28px bottom 62px,right -30px bottom 42px;
  background-size:148px,128px,138px,126px,104px;
}
.page,.site-footer { position:relative; z-index:1; }

/* ── 问问页：固定输入区已占用底部空间，避免备案文字被输入框覆盖 */
body.route-ask .site-footer { display:none; }

.privacy-check { margin:1px 1px 15px; display:flex; align-items:flex-start; gap:9px; color:#666f69; font-size:11px; line-height:1.65; cursor:pointer; }
.privacy-check input { width:18px; height:18px; flex:0 0 auto; margin:1px 0 0; accent-color:var(--green); }

button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible {
  outline:3px solid rgba(173,123,55,.58);
  outline-offset:2px;
}

@media (prefers-reduced-motion: reduce) {
  *,*::before,*::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}

/* ── 简正好物：扫码进店页 */
.shop-qr { margin-top:19px; padding:26px 24px 24px; text-align:center; }
.shop-qr__img { width:100%; max-width:300px; margin:0 auto; display:block; border-radius:18px; box-shadow:0 10px 30px rgba(35,47,41,.1); }
.shop-qr h3 { margin:19px 0 7px; font-family:STKaiti,KaiTi,serif; font-size:20px; letter-spacing:2px; }
.shop-qr p { margin:0 4px; color:var(--muted); font-size:12px; line-height:1.8; }

/* ── 子页面底部返回主页按钮 */
.home-return { display:block; margin:24px auto 6px; padding:11px 26px; border:1px solid var(--line); border-radius:999px; color:var(--muted); background:transparent; font-size:13px; letter-spacing:1px; }
.home-return:active { color:var(--green); border-color:var(--green); }
