@font-face {
  font-family:"Chivo";
  src:url("./fonts/chivo-900.ttf") format("truetype");
  font-style:normal;
  font-weight:900;
  font-display:swap;
}

:root {
  color-scheme: light;
  --ink: #172033;
  --muted: #6f7785;
  --line: rgba(23, 32, 51, 0.11);
  --paper: #fffaf0;
  --accent: #111827;
  --wechat: #07c160;
  --urban-bg: #050505;
  --urban-card: #111;
  --urban-text: #fff;
  --urban-sub: #777;
  --urban-accent: #dc2626;
  --urban-border: #333;
  --radius-lg: 32px;
  --shadow: 0 28px 80px rgba(27, 32, 43, 0.14);
  font-family: "PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; background: #f6f7f9; color: var(--ink); }
button, input, textarea { font: inherit; }
button { cursor: pointer; }
.hidden { display: none !important; }

.topbar {
  position: fixed; z-index: 40; top: 0; left: 0; right: 0; height: 82px;
  display: flex; align-items: center; justify-content: space-between;
  padding: max(18px, env(safe-area-inset-top)) 34px 14px;
  pointer-events: none;
}
.topbar > * { pointer-events: auto; }
.brand { border: 0; background: transparent; color: #121827; display: flex; align-items: baseline; gap: 8px; padding: 8px; }
.brand-main { font-family: "Chivo", sans-serif; font-size:1.65rem; font-weight:900; line-height:1; letter-spacing:-.08em; }
.brand-sub { font: italic 1.05rem/1 Georgia, serif; color: #667085; }
.wall-active .brand { color: white; }
.wall-active .brand-sub { color: #9da7ba; }
.topbar-actions { display: flex; align-items: center; gap: 10px; }
.time-pill, .ghost-button { border: 1px solid rgba(255,255,255,.58); background: rgba(255,255,255,.68); backdrop-filter: blur(16px); border-radius: 999px; box-shadow: 0 8px 24px rgba(20,24,35,.06); }
.time-pill { padding: 9px 14px; color: #515969; font: 500 .78rem/1 serif; letter-spacing: .12em; }
.ghost-button { border-color: var(--line); padding: 9px 14px; color: var(--ink); }

.login-view { min-height: 100dvh; display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(420px, .92fr); }
.mood-stage { position: relative; overflow: hidden; display: grid; place-items: center; background: #fdf6e3; transition: background 800ms ease; }
.mood-stage.morning { background: #eaf4f4; }
.mood-stage.evening { background: #2b2d42; }
.mood-stage.night { background: #0f172a; }
.aurora { position: absolute; width: 44vw; aspect-ratio: 1; border-radius: 50%; filter: blur(75px); opacity: .55; mix-blend-mode: multiply; animation: drift 12s ease-in-out infinite; }
.aurora-one { top: -12%; left: -15%; background: #fad8c3; }
.aurora-two { top: 18%; right: -20%; background: #eedfd2; animation-delay: -3s; }
.aurora-three { bottom: -24%; left: 25%; background: #e5c9a4; animation-delay: -7s; }
.morning .aurora-one { background: #cce3de; } .morning .aurora-two { background: #a4c3b2; } .morning .aurora-three { background: #f6e8ea; }
.evening .aurora-one { background: #8d99ae; } .evening .aurora-two { background: #ef233c; } .evening .aurora-three { background: #4b3f72; }
.night .aurora-one { background: #1e293b; } .night .aurora-two { background: #334155; } .night .aurora-three { background: #312e81; }
.characters { position: relative; z-index: 2; width: min(72%, 620px); max-height: 68vh; filter: drop-shadow(0 28px 34px rgba(46,42,36,.16)); transform: translateY(-4%); }
.character-one { fill: #e07a5f; } .character-two { fill: #f2cc8f; } .character-three { fill: #81b29a; }
.morning .character-one { fill: #6b9080; } .morning .character-two { fill: #f6c177; } .morning .character-three { fill: #eb6f92; }
.evening .character-one { fill: #8d99ae; } .evening .character-two { fill: #ef233c; } .evening .character-three { fill: #edf2f4; }
.night .character-one { fill: #38bdf8; } .night .character-two { fill: #818cf8; } .night .character-three { fill: #c084fc; }
.pupil { fill: #1f2937; transition: cx 120ms ease, cy 120ms ease; }
.characters .closed-eyes { display:none; fill:none; stroke:#1f2937; stroke-width:4; stroke-linecap:round; }
.characters.is-password-private .pupil,
.characters.is-password-private [fill="white"] { visibility:hidden; }
.characters.is-password-private .closed-eyes { display:block; }
.mouth { fill: none; stroke: #1f2937; stroke-width: 4; stroke-linecap: round; }
.moon { display: none; fill: #fde047; opacity: .78; }
.sun { fill: #ff8a65; opacity: .56; }
.evening .sun, .night .sun { display: none; } .evening .moon, .night .moon { display: block; }
.stage-copy { position: absolute; z-index: 3; left: clamp(30px, 5vw, 76px); bottom: clamp(32px, 6vh, 68px); max-width: 510px; }
.stage-copy .eyebrow { margin-bottom: 11px; }
.stage-copy h1 { margin: 0; font: 500 clamp(2.5rem, 5.3vw, 5.7rem)/.96 Georgia, "Songti SC", serif; letter-spacing: -.055em; }
.stage-copy > p:last-child { max-width: 440px; font-size: 1rem; line-height: 1.8; color: #646a73; }
.evening .stage-copy, .night .stage-copy { color: white; } .evening .stage-copy > p:last-child, .night .stage-copy > p:last-child { color: #d6d9e1; }
.eyebrow { margin: 0 0 8px; font-size: .76rem; letter-spacing: .18em; text-transform: uppercase; color: #7a8190; }

.login-panel { position: relative; display: grid; place-items: center; padding: 100px 7vw 48px; background: #fff; box-shadow: -30px 0 70px rgba(27,32,43,.07); }
.login-card { width: min(100%, 440px); }
.login-heading { display: grid; grid-template-columns: 34px 1fr; gap: 14px; margin-bottom: 36px; }
.step-dot { display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid var(--line); border-radius: 50%; font-size: .7rem; color: #697181; }
.login-heading h2 { margin: 0 0 9px; font: 700 clamp(1.55rem, 3vw, 2rem)/1.15 Georgia, "Songti SC", serif; }
.login-heading p { margin: 0; color: var(--muted); line-height: 1.7; }
.wechat-button, .guest-button, .submit-button, .write-button { border: 0; border-radius: 16px; transition: transform .18s ease, box-shadow .18s ease, background .18s ease; }
.wechat-button { width: 100%; display: flex; align-items: center; justify-content: center; gap: 12px; padding: 17px; color: white; background: var(--wechat); font-weight: 700; box-shadow: 0 14px 28px rgba(7,193,96,.2); }
.wechat-button:hover { background: #06b457; box-shadow: 0 18px 34px rgba(7,193,96,.28); transform: translateY(-2px); }
.wechat-button:active, .guest-button:active, .submit-button:active, .write-button:active { transform: scale(.98); }
.wechat-mark { position: relative; width: 27px; height: 22px; }
.wechat-mark span { position: absolute; display: block; border: 2px solid white; border-radius: 50%; width: 19px; height: 16px; }
.wechat-mark span:first-child { left: 0; top: 0; } .wechat-mark span:last-child { right: 0; bottom: 0; background: var(--wechat); }
.login-note { margin: 13px 0 0; text-align: center; color: #9298a4; font-size: .78rem; }
.divider { display: flex; align-items: center; gap: 14px; margin: 29px 0; color: #a1a6b0; font-size: .78rem; }
.divider::before, .divider::after { content: ""; height: 1px; background: var(--line); flex: 1; }
.guest-button { width: 100%; padding: 15px; color: var(--ink); background: white; border: 1px solid var(--line); font-weight: 650; }
.guest-button:hover { border-color: rgba(23,32,51,.3); background: #fafafa; }
.trust-row { display: flex; justify-content: center; flex-wrap: wrap; gap: 13px 20px; margin-top: 34px; color: #7a8190; font-size: .75rem; }
.trust-row span { display: flex; align-items: center; gap: 6px; } .trust-row i { width: 5px; height: 5px; background: #9dbfae; border-radius: 50%; }

.wall-view { min-height: 100vh; padding: 132px clamp(20px, 5vw, 72px) 80px; background: #0f172a; color: white; }
.wall-hero { max-width: 1380px; margin: 0 auto 48px; display: flex; align-items: flex-end; justify-content: space-between; gap: 30px; }
.wall-hero h1 { margin: 8px 0 14px; font: 400 clamp(2.1rem, 5vw, 4.6rem)/1.04 Georgia, "Songti SC", serif; letter-spacing: -.045em; }
.wall-hero p:last-child { margin: 0; color: #9ea8bb; line-height: 1.75; }
.wall-view .eyebrow { color: #9b9ef5; }
.write-button { flex: 0 0 auto; padding: 15px 23px; color: #101726; background: #fff; font-weight: 750; box-shadow: 0 12px 30px rgba(0,0,0,.2); }
.write-button:hover { transform: translateY(-2px); box-shadow: 0 18px 36px rgba(0,0,0,.28); }
.wall-toolbar { max-width: 1380px; margin: 0 auto 28px; display: flex; justify-content: space-between; align-items: center; gap: 20px; }
.filter-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { border: 1px solid rgba(255,255,255,.13); background: rgba(255,255,255,.05); color: #9da7ba; border-radius: 999px; padding: 9px 14px; }
.chip:hover, .chip.active { color: white; background: rgba(129,140,248,.19); border-color: rgba(129,140,248,.42); }
.story-count { color: #778197; font-size: .78rem; white-space: nowrap; }
.story-grid { max-width: 1380px; margin: auto; columns: 4 260px; column-gap: 20px; }
.story-card { position: relative; break-inside: avoid; margin: 0 0 20px; padding: 24px; min-height: 230px; border: 0; border-radius: 8px; width: 100%; text-align: left; box-shadow: 0 16px 34px rgba(0,0,0,.18); transition: transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s ease; overflow: hidden; }
.story-card::before { content: ""; position: absolute; width: 11px; height: 11px; top: 10px; left: calc(50% - 5px); border-radius: 50%; background: rgba(50,54,65,.2); box-shadow: inset 0 1px 2px rgba(255,255,255,.65); }
.story-card:hover { transform: translateY(-7px) rotate(.25deg); box-shadow: 0 24px 50px rgba(0,0,0,.3); }
.story-card.paper { color: #332e28; background: #fff4d9; }
.story-card.midnight { color: #edf0f7; background: linear-gradient(145deg,#232b3e,#141a28); border-left: 4px solid #818cf8; }
.story-card.blush { color: #6c3042; background: linear-gradient(145deg,#fff1f2,#ffe3ea); border-top: 4px solid #f472b6; }
.story-card.ocean { color: #153c52; background: linear-gradient(145deg,#e7f5f5,#d8edf1); border-left: 4px solid #4da4b2; }
.story-top, .story-footer { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.story-date { font: .7rem/1 monospace; opacity: .55; }
.mood-tag { border: 1px solid currentColor; opacity: .62; padding: 4px 7px; border-radius: 999px; font-size: .66rem; }
.story-content { margin: 25px 0 34px; font: 400 1.02rem/1.85 Georgia, "Songti SC", serif; display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; }
.story-footer { padding-top: 15px; border-top: 1px solid currentColor; border-color: color-mix(in srgb, currentColor 12%, transparent); font-size: .77rem; opacity: .72; }
.story-author { font-weight: 700; } .story-likes { display: flex; align-items: center; gap: 5px; }
.empty-state { columns: initial; grid-column: 1/-1; color: #9da7ba; text-align: center; border: 1px dashed rgba(255,255,255,.15); border-radius: 16px; padding: 44px; }

.modal { position: fixed; z-index: 80; inset: 0; display: grid; place-items: center; padding: 20px; }
.modal-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: rgba(7,11,20,.76); backdrop-filter: blur(12px); }
.modal-card { position: relative; z-index: 1; width: min(100%, 640px); max-height: min(90dvh, 850px); overflow: auto; background: white; border-radius: 24px; box-shadow: var(--shadow); animation: modal-in .25s ease both; }
.write-modal-card { padding: 30px; }
.modal-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 25px; }
.modal-header h2 { margin: 0; font: 700 1.8rem/1.2 Georgia, "Songti SC", serif; }
.icon-button { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line); background: white; color: #687080; font-size: 1.5rem; }
form label, fieldset legend { display: block; margin: 18px 0 9px; color: #3e4655; font-size: .83rem; font-weight: 700; }
form label span { color: #9aa0aa; font-weight: 400; }
textarea, input { width: 100%; border: 1px solid var(--line); background: #f8f9fb; color: var(--ink); border-radius: 14px; outline: 0; }
textarea { min-height: 150px; resize: vertical; padding: 16px; line-height: 1.7; }
input { padding: 13px 14px; }
textarea:focus, input:focus { background: white; border-color: #818cf8; box-shadow: 0 0 0 4px rgba(129,140,248,.12); }
.form-meta { display: flex; justify-content: space-between; gap: 12px; margin-top: 7px; color: #989eaa; font-size: .7rem; }
fieldset { margin: 20px 0; padding: 0; border: 0; }
.theme-options { display: grid; grid-template-columns: repeat(4,1fr); gap: 9px; }
.theme-option { position: relative; display: grid; place-items: center; height: 70px; margin: 0; border: 2px solid transparent; border-radius: 12px; cursor: pointer; }
.theme-option input { position: absolute; opacity: 0; pointer-events: none; }
.theme-option span { font-weight: 700; font-size: .75rem; color: inherit; }
.theme-option.paper { background: #fff4d9; color: #51483e; } .theme-option.midnight { background: #192134; color: white; } .theme-option.blush { background: #ffe9ef; color: #843a52; } .theme-option.ocean { background: #dff1f3; color: #24566a; }
.theme-option.selected { border-color: #818cf8; box-shadow: 0 0 0 3px rgba(129,140,248,.14); }
.ai-notice { display: flex; gap: 11px; align-items: flex-start; padding: 13px 15px; border-radius: 13px; background: #f1f2ff; color: #515a76; }
.ai-notice span { color: #6366f1; }.ai-notice p { margin: 0; font-size: .75rem; line-height: 1.6; }
.submit-button { width: 100%; margin-top: 20px; padding: 15px; background: #111827; color: white; font-weight: 750; }
.submit-button:disabled { cursor: wait; opacity: .64; }
.detail-card { width: min(100%, 840px); display: grid; grid-template-columns: 1fr 1fr; overflow: hidden; }
.detail-original, .detail-reply { padding: clamp(26px, 5vw, 48px); min-height: 440px; display: flex; flex-direction: column; justify-content: space-between; }
.detail-original.paper { background: #fff4d9; color: #332e28; } .detail-original.midnight { background: #1a2131; color: #eef1f7; } .detail-original.blush { background: #ffebf0; color: #6c3042; } .detail-original.ocean { background: #dff1f3; color: #153c52; }
.quote-mark { font: 5rem/.5 Georgia,serif; opacity: .18; }
.detail-original blockquote, .detail-reply blockquote { margin: 28px 0; font: 400 1.12rem/1.9 Georgia, "Songti SC", serif; }
.detail-author-row { padding-top: 16px; border-top: 1px solid currentColor; border-color: color-mix(in srgb,currentColor 16%,transparent); }
.detail-author-row strong { display: block; } .detail-author-row span { display: block; margin-top: 5px; font-size: .73rem; opacity: .6; }
.detail-reply { position: relative; background: #101827; color: white; }
.detail-reply::before { content: ""; position: absolute; width: 160px; height: 160px; right: -40px; top: -50px; border-radius: 50%; background: #6366f1; filter: blur(70px); opacity: .3; }
.reply-label { display: flex; align-items: center; gap: 9px; color: #a5b4fc; font-size: .72rem; letter-spacing: .13em; }
.reply-label i { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; background: #4f46e5; color: white; font-style: normal; font-weight: 900; }
.detail-reply blockquote { color: #e1e6f0; border-left: 2px solid #6366f1; padding-left: 18px; }
.detail-actions { display: flex; justify-content: space-between; align-items: center; color: #758096; font-size: .73rem; }
.like-button { border: 1px solid rgba(255,255,255,.13); border-radius: 999px; background: rgba(255,255,255,.06); color: #dce2ed; padding: 8px 12px; }
.account-card { width: min(100%, 380px); padding: 40px; text-align: center; }
.account-close { position: absolute; right: 18px; top: 18px; }
.account-avatar { width: 72px; height: 72px; margin: 0 auto 16px; display: grid; place-items: center; border-radius: 24px; background: #dcf8e9; color: #07994e; font-size: 1.5rem; font-weight: 800; overflow: hidden; }
.account-avatar img { width: 100%; height: 100%; object-fit: cover; }.account-card h2 { margin: 0 0 6px; }.account-card p { color: var(--muted); margin: 0 0 25px; }
.account-email { overflow-wrap:anywhere; }.account-summary { display:flex; flex-direction:column; align-items:center; gap:5px; margin:-8px 0 24px; padding:18px; border:1px solid #e7e5e4; border-radius:16px; background:#fafaf9; }.account-summary strong { color:#111827; font:900 2rem/1 "Chivo",sans-serif; }.account-summary span { color:#6b7280; }
.toast { position: fixed; z-index: 120; left: 50%; bottom: 28px; translate: -50% 20px; max-width: min(90vw,520px); padding: 12px 17px; border-radius: 999px; background: #111827; color: white; box-shadow: 0 16px 38px rgba(0,0,0,.25); opacity: 0; pointer-events: none; transition: .25s ease; font-size: .86rem; text-align: center; }
.toast.visible { opacity: 1; translate: -50% 0; }

@keyframes drift { 50% { transform: translate(5%,7%) scale(1.08); } }
@keyframes float-a { 50% { transform: translateY(-14px) rotate(-1deg); } }
@keyframes float-b { 50% { transform: translateY(-20px) rotate(1deg); } }
@keyframes modal-in { from { opacity: 0; transform: translateY(18px) scale(.985); } }
.float-one { animation: float-a 6s ease-in-out infinite; transform-origin: 120px 280px; }
.float-two { animation: float-b 7s ease-in-out -1s infinite; transform-origin: 370px 230px; }
.float-three { animation: float-a 5.2s ease-in-out -2s infinite; transform-origin: 260px 420px; }

@media (max-width: 900px) {
  .topbar { height: 70px; padding: 14px 18px; }
  .login-view { grid-template-columns: 1fr; grid-template-rows: 42dvh auto; }
  .mood-stage { min-height: 330px; }
  .characters { width: min(72%, 440px); height: 100%; transform: translateY(4%) scale(.92); }
  .stage-copy { left: 22px; right: 22px; bottom: 22px; }
  .stage-copy h1 { font-size: clamp(2rem, 10vw, 3.1rem); }
  .stage-copy > p:last-child { display: none; }
  .login-panel { padding: 48px 24px max(38px, env(safe-area-inset-bottom)); border-radius: 28px 28px 0 0; margin-top: -24px; box-shadow: 0 -18px 45px rgba(27,32,43,.11); }
  .login-heading { margin-bottom: 25px; }
  .time-pill { display: none; }
  .wall-view { padding-top: 108px; }
  .wall-hero { align-items: flex-start; flex-direction: column; }
  .detail-card { grid-template-columns: 1fr; }.detail-original,.detail-reply { min-height: 320px; }
}

@media (max-width: 560px) {
  .mood-stage { min-height: 295px; }
  .characters { width: 88%; opacity: .92; transform: translate(8%,-2%) scale(.8); }
  .stage-copy { bottom: 18px; }
  .stage-copy .eyebrow { font-size: .65rem; }
  .login-panel { padding-left: 20px; padding-right: 20px; }
  .wall-hero h1 { font-size: 2.35rem; }
  .wall-toolbar { align-items: flex-start; flex-direction: column; }
  .story-count { display: none; }
  .story-grid { columns: 1; }
  .write-modal-card { padding: 22px; border-radius: 20px; }
  .theme-options { grid-template-columns: repeat(2,1fr); }
  .form-meta span:first-child { display: none; }
  .detail-card { border-radius: 18px; }
}

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

/* 首页严格沿用用户提供的 UBAI Mood 原稿；仅社交登录品牌由 Google 替换为微信。 */
.language-switch {
  display: flex; align-items: center; gap: 7px; padding: 9px 14px;
  border: 1px solid rgba(255,255,255,.6); border-radius: 999px;
  background: rgba(255,255,255,.72); color: #6b7280;
  box-shadow: 0 5px 16px rgba(17,24,39,.06); backdrop-filter: blur(14px);
}
.language-switch svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.language-switch button { border: 0; background: transparent; padding: 2px 3px; color: #6b7280; font-size: .78rem; font-weight: 600; }
.language-switch button.active { color: #111827; font-weight: 800; }
.language-switch i { display: block; width: 1px; height: 12px; background: #d5d8df; }

.reference-home { min-height: 100dvh; display: flex; flex-direction: row; background: white; overflow: hidden; }
.reference-home .mood-stage { width: 50%; height: 100dvh; flex: 0 0 50%; background: #fdf6e3; }
.reference-home .characters { width: min(72%, 630px); height: min(72vh, 700px); max-height: none; transform: translateY(4%); }
.reference-home .vibe-pill {
  position: absolute; z-index: 5; top: 13.4%; left: 50%; transform: translateX(-50%);
  padding: 10px 24px; border: 1.5px solid currentColor; border-radius: 999px;
  color: #9a4d2a; background: rgba(255,255,255,.08);
  font: italic 500 .9rem/1.1 Georgia, "Songti SC", serif; letter-spacing: .12em;
}
.reference-home .login-panel {
  width: 50%; height: 100dvh; flex: 0 0 50%; padding: 92px 7vw 28px;
  display: grid; place-items: center; overflow-y: auto; background: #fff; box-shadow: none;
}
.reference-home .login-card { width: min(100%, 420px); margin-top: 24px; }
.reference-home .login-heading { display: block; margin: 0 0 43px; }
.reference-home .login-heading h1 { margin: 0 0 10px; color: #111827; font: 800 2rem/1.15 inherit; letter-spacing: -.04em; }
.reference-home .login-heading p { margin: 0; color: #8b93a2; font-size: .98rem; font-weight: 300; letter-spacing: .04em; }
.auth-tabs { display: flex; gap: 38px; margin-bottom: 33px; border-bottom: 1px solid #eef0f3; }
.auth-tab { position: relative; border: 0; background: transparent; padding: 0 0 16px; color: #9da4b0; font-size: 1rem; font-weight: 650; }
.auth-tab::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 3px; border-radius: 3px 3px 0 0; background: #111827; transform: scaleX(0); transition: transform .25s ease; }
.auth-tab.active { color: #111827; }.auth-tab.active::after { transform: scaleX(1); }
.login-form label { margin: 0 0 9px 4px; color: #374151; font-size: .81rem; font-weight: 650; }
.field-shell { position: relative; display: flex; align-items: center; margin-bottom: 24px; }
.field-shell > svg { position: absolute; z-index: 1; left: 16px; width: 19px; height: 19px; fill: none; stroke: #a1a9b7; stroke-width: 1.8; pointer-events: none; }
.field-shell input { height: 58px; padding: 0 48px 0 48px; border: 1px solid #eceef2; border-radius: 16px; background: #f8f9fa; box-shadow: 0 2px 5px rgba(17,24,39,.04); font-size: 1rem; }
.field-shell input::placeholder { color: #a7aebb; }
.field-shell input:focus { border-color: #d2d6dc; background: #fff; box-shadow: 0 0 0 4px rgba(17,24,39,.04); }
.auth-feedback { min-height:24px; margin:-9px 0 12px; color:#b42318; font-size:1rem; line-height:1.5; }
.code-note { margin:-15px 4px 20px; color:#8b93a2; font-size:1rem; line-height:1.5; }
.code-field-shell input { letter-spacing:.18em; font-variant-numeric:tabular-nums; }
.password-label-row { display: flex; align-items: center; justify-content: space-between; }
.forgot-button { border: 0; background: transparent; margin: 0 4px 9px 0; padding: 0; color: #737b89; font-size: .76rem; font-weight: 600; }
.forgot-button:disabled { cursor:default; opacity:.58; }
.password-toggle { position: absolute; z-index: 2; right: 13px; display: grid; place-items: center; width: 34px; height: 34px; border: 0; background: transparent; color: #a1a9b7; }
.password-toggle svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.password-toggle .eye-open { display: none; }
.password-toggle.showing .eye-open { display: block; }.password-toggle.showing .eye-closed { display: none; }
.enter-button { width: 100%; height: 60px; margin-top: 0; border: 0; border-radius: 16px; background: #111827; color: white; box-shadow: 0 13px 25px rgba(17,24,39,.14); font-size: 1rem; font-weight: 750; transition: .2s ease; }
.enter-button:hover { background: #05080e; transform: translateY(-1px); }.enter-button b { margin-left: 10px; font-size: 1.25rem; }
.reference-home .divider { margin: 32px 0; gap: 16px; color: #a8aebb; }.reference-home .divider span { white-space: nowrap; }
.social-login-button { width: 100%; height: 56px; display: flex; align-items: center; justify-content: center; gap: 11px; border: 1px solid #dfe3e8; border-radius: 16px; background: #fff; color: #374151; box-shadow: 0 2px 5px rgba(17,24,39,.04); font-weight: 650; transition: .2s ease; }
.social-login-button:hover { border-color: #cdd2d9; background: #fafafa; }.social-login-button:active { transform: scale(.98); }
.social-login-button.is-disabled,
.social-login-button.is-disabled:hover,
.social-login-button.is-disabled:active { cursor: default; opacity:.42; filter:grayscale(1); border-color:#e5e7eb; background:#f8f9fa; box-shadow:none; transform:none; }
.wechat-outline-icon { display:block; flex:0 0 auto; width:27px; height:23px; color:#07c160; overflow:visible; }
.wechat-outline-icon .wechat-bubble { fill:currentColor; }
.wechat-outline-icon .wechat-eye { fill:#fff; }
.copyright { margin: 43px 0 0; text-align: center; color: #adb4c0; font-size: .7rem; font-weight: 300; letter-spacing: .03em; }

.password-reset-card { width:min(100%,500px); padding:42px; border-radius:24px; color:#1c1917; }
.password-reset-close { position:absolute; right:20px; top:20px; }
.password-reset-brand { display:flex; align-items:baseline; gap:7px; margin-bottom:28px; }
.password-reset-brand strong { font:900 1.8rem/1 "Chivo",sans-serif; letter-spacing:-.08em; }
.password-reset-brand em { font:italic 1.1rem/1 Georgia,serif; }
.password-reset-kicker { margin:0 0 8px; color:#7c3aed; font-size:1rem; font-weight:700; }
.password-reset-card h2 { margin:0 0 12px; font:700 2rem/1.2 Georgia,"Songti SC",serif; }
.password-reset-intro { margin:0 0 28px; color:#78716c; font-size:1rem; line-height:1.7; }
.password-reset-card label { font-size:1rem; }
.password-reset-card .field-shell input { font-size:1rem; }
.password-reset-footnote { margin:22px 0 0; color:#a8a29e; font-size:1rem; line-height:1.65; text-align:center; }

.morning .vibe-pill { color: #476b60; }.evening .vibe-pill, .night .vibe-pill { color: #e8ebf1; }
.wall-active .language-switch { display: none; }

@media (max-width: 900px) {
  .reference-home { min-height: 100dvh; flex-direction: column; overflow: auto; }
  .reference-home .mood-stage { width: 100%; height: 42dvh; min-height: 300px; flex: 0 0 42dvh; }
  .reference-home .characters { width: min(88%, 500px); height: 100%; transform: translateY(7%) scale(.88); }
  .reference-home .vibe-pill { top: 80px; padding: 7px 17px; font-size: .76rem; }
  .reference-home .login-panel { width: 100%; height: auto; min-height: 62dvh; flex: 1 0 auto; margin-top: -28px; padding: 72px 26px max(30px, env(safe-area-inset-bottom)); border-radius: 30px 30px 0 0; box-shadow: 0 -15px 40px rgba(0,0,0,.09); overflow: visible; }
  .reference-home .login-card { margin-top: 0; }
  .reference-home .login-heading { margin-bottom: 30px; }
  .language-switch { padding: 7px 10px; gap: 5px; }.language-switch button { font-size: .7rem; }
}

@media (max-width:560px) {
  .password-reset-card { padding:34px 20px 26px; border-radius:20px; }
  .password-reset-card h2 { font-size:1.75rem; }
}

@media (max-width: 560px) {
  .reference-home .mood-stage { height: 38dvh; min-height: 280px; flex-basis: 38dvh; }
  .reference-home .characters { width: 96%; transform: translate(5%,9%) scale(.82); }
  .reference-home .login-panel { padding: 62px 22px 30px; }
  .reference-home .login-heading h1 { font-size: 1.65rem; }
  .auth-tabs { margin-bottom: 26px; }.field-shell { margin-bottom: 20px; }
  .field-shell input { height: 55px; }.enter-button { height: 57px; }
  .reference-home .divider { margin: 27px 0; }.copyright { margin-top: 32px; }
}

/* UBAI × urban chill — latest mood wall */
.wall-active .topbar { display: none; }
.urban-wall {
  --urban-bg: #050505; --urban-card: #111; --urban-text: #fff; --urban-sub: #777;
  --urban-accent: #dc2626; --urban-border: #333;
  padding: 0; min-height: 100dvh; color: var(--urban-text); background: var(--urban-bg);
  font-family: Inter, "PingFang SC", sans-serif; transition: color .5s, background .5s;
}
.urban-wall::before { content:""; position:fixed; inset:0; pointer-events:none; opacity:.16; background: radial-gradient(circle at 92% 2%,var(--urban-accent),transparent 28%),radial-gradient(circle at 2% 96%,var(--urban-accent),transparent 28%); }
.urban-wall::after { content:""; position:fixed; inset:0; pointer-events:none; opacity:.04; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
.urban-wall[data-urban-theme="infinite"] { --urban-bg:#000; --urban-card:#050505; --urban-text:#fff; --urban-sub:#999; --urban-accent:#fff; --urban-border:#404040; }
.urban-wall[data-urban-theme="titanium"] { --urban-bg:#e5e5e5; --urban-card:#f5f5f5; --urban-text:#050505; --urban-sub:#666; --urban-accent:#2563eb; --urban-border:#aaa; }
.urban-wall[data-urban-theme="champagne"] { --urban-bg:#1c1917; --urban-card:#292524; --urban-text:#fef3c7; --urban-sub:#b9b2a7; --urban-accent:#fbbf24; --urban-border:#78350f; }
.urban-header { position:sticky; z-index:35; top:0; display:flex; align-items:center; gap:24px; min-height:76px; padding:16px clamp(18px,4vw,46px); border-bottom:1px solid var(--urban-border); background:color-mix(in srgb,var(--urban-bg) 84%,transparent); backdrop-filter:blur(20px); }
.urban-brand { display:flex; align-items:baseline; gap:8px; border:0; padding:0; background:transparent; color:var(--urban-text); }
.urban-brand strong { font-family:"Chivo",sans-serif; font-size:1.5rem; font-weight:900; line-height:1; letter-spacing:-.08em; }.urban-brand span { color:var(--urban-sub); font-size:1.25rem; font-weight:200; }.urban-brand b { font:800 1.35rem/1 Arial,sans-serif; letter-spacing:-.04em; text-transform:lowercase; }
.urban-curators { padding-left:22px; border-left:1px solid var(--urban-border); color:var(--urban-sub); font:600 .72rem/1.4 Georgia,"Songti SC",serif; letter-spacing:.12em; }
.urban-actions { margin-left:auto; display:flex; align-items:center; gap:13px; }
.theme-button { width:40px; height:40px; border:0; border-radius:50%; background:transparent; color:var(--urban-sub); font-size:1.35rem; }.theme-button:hover { color:var(--urban-accent); background:color-mix(in srgb,var(--urban-text) 8%,transparent); }
.new-entry-button { border:0; padding:12px 18px; background:var(--urban-accent); color:var(--urban-bg); font:900 .72rem/1 Arial,sans-serif; letter-spacing:.13em; box-shadow:0 10px 24px color-mix(in srgb,var(--urban-accent) 25%,transparent); }
.urban-main { position:relative; z-index:2; max-width:1320px; margin:auto; padding:70px clamp(18px,3vw,34px) 100px; }
.urban-hero { margin-bottom:80px; }.version-tag { display:inline-flex; align-items:center; gap:10px; padding:8px 14px; border:1px solid var(--urban-border); background:var(--urban-card); color:var(--urban-sub); font:600 .66rem/1 monospace; letter-spacing:.12em; }.version-tag span { color:var(--urban-accent); }
.urban-hero h1 { margin:28px 0 24px; font:900 clamp(4rem,8vw,7.4rem)/.84 Arial Black,sans-serif; letter-spacing:-.075em; color:var(--urban-text); }.urban-hero h1 em { color:var(--urban-accent); font-style:normal; }
.urban-hero > p { max-width:560px; margin:0; padding-left:24px; border-left:4px solid var(--urban-border); color:var(--urban-sub); font:400 1.05rem/1.9 Georgia,"Songti SC",serif; }
.urban-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; max-width:none; columns:auto; }
.urban-card { height:510px; display:flex; flex-direction:column; padding:30px; overflow:hidden; border:1px solid var(--urban-border); border-radius:0; background:var(--urban-card); color:var(--urban-text); text-align:left; transition:.3s ease; box-shadow:none; }
.urban-card:hover { transform:translateY(-8px); border-color:var(--urban-accent); box-shadow:0 0 34px color-mix(in srgb,var(--urban-accent) 22%,transparent); }
.urban-card-top { display:flex; align-items:flex-start; justify-content:space-between; color:var(--urban-sub); font:500 .68rem/1.5 monospace; letter-spacing:.1em; }.urban-card-top span { display:flex; flex-direction:column; }.urban-card-top b { margin-top:4px; font:800 .74rem/1 Arial,sans-serif; }.urban-card-top > i { color:var(--urban-accent); font:400 2.8rem/1 serif; }
.urban-card > p { margin:52px 0 35px; color:var(--urban-text); font:600 1.45rem/1.75 Georgia,"Songti SC",serif; display:-webkit-box; -webkit-line-clamp:6; -webkit-box-orient:vertical; overflow:hidden; }
.urban-card:hover > p { color:var(--urban-accent); }.urban-card-bottom { margin-top:auto; padding-top:22px; border-top:1px solid var(--urban-border); display:flex; align-items:flex-end; justify-content:space-between; }
.urban-card-bottom > span:first-child { display:flex; flex-direction:column; gap:7px; }.urban-card-bottom small { color:var(--urban-sub); font:500 .62rem/1 monospace; letter-spacing:.15em; }.urban-card-bottom strong { color:var(--urban-text); font:700 .86rem/1.2 Georgia,"Songti SC",serif; }
.urban-bars { height:38px; display:flex; align-items:flex-end; gap:4px; }.urban-bars i { display:block; width:8px; min-height:5px; background:var(--urban-text); }.urban-bars i:last-child { background:var(--urban-accent); }

.urban-write-card { border-radius:0; background:var(--urban-bg); color:var(--urban-text); border:1px solid var(--urban-border); }.urban-write-card .modal-header { border-bottom:1px solid var(--urban-border); }.urban-write-card .icon-button { border-color:var(--urban-border); background:transparent; color:var(--urban-sub); }.urban-write-card label { color:var(--urban-sub); font:700 .72rem/1 monospace; letter-spacing:.14em; }.urban-write-card textarea,.urban-write-card input { border-color:var(--urban-border); border-radius:0; background:transparent; color:var(--urban-text); }.urban-write-card .ai-notice { border-radius:0; background:color-mix(in srgb,var(--urban-accent) 10%,var(--urban-bg)); color:var(--urban-sub); }.urban-write-card .submit-button { border-radius:0; background:var(--urban-accent); color:var(--urban-bg); }
.detail-card { display:block; width:min(100%,650px); border-radius:0; background:var(--urban-bg); color:var(--urban-text); border:1px solid var(--urban-border); }
.urban-detail-head { display:flex; align-items:center; justify-content:space-between; padding:20px 26px; border-bottom:1px solid var(--urban-border); color:var(--urban-sub); font:600 .68rem/1 monospace; letter-spacing:.16em; }.urban-detail-head > span { display:flex; align-items:center; gap:10px; }.urban-detail-head > span i { width:7px; height:7px; border-radius:50%; background:var(--urban-accent); box-shadow:0 0 10px var(--urban-accent); }.urban-detail-head div { display:flex; gap:18px; }.urban-detail-head button { border:0; background:transparent; color:var(--urban-text); font:700 .72rem/1 monospace; letter-spacing:.13em; }
.urban-detail-body { position:relative; min-height:610px; padding:55px; overflow:hidden; }.urban-watermark { position:absolute; right:-12px; top:70px; color:var(--urban-text); opacity:.04; writing-mode:vertical-rl; font:900 5rem/1 Georgia,serif; }.urban-detail-body > blockquote { position:relative; z-index:1; margin:0; color:var(--urban-text); font:700 clamp(1.45rem,3.2vw,2.25rem)/1.75 Georgia,"Songti SC",serif; }.urban-author { display:flex; align-items:center; gap:12px; margin:32px 0 58px; color:var(--urban-sub); font:italic 1rem/1.4 Georgia,serif; }.urban-author i { width:48px; height:3px; background:var(--urban-accent); }
.urban-analysis { padding-top:30px; border-top:1px solid var(--urban-border); }.urban-analysis h3 { margin:0 0 22px; color:var(--urban-accent); font:800 .72rem/1 monospace; letter-spacing:.18em; }.urban-analysis > p { margin:0 0 30px; color:var(--urban-sub); font:400 1.08rem/1.8 Georgia,"Songti SC",serif; }.urban-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }.urban-stats > div { padding:14px; border:1px solid var(--urban-border); background:var(--urban-card); }.urban-stats small { display:block; color:var(--urban-sub); font:600 .6rem/1 monospace; }.urban-stats strong { display:block; margin:8px 0; color:var(--urban-text); font:900 1.65rem/1 Arial,sans-serif; }.urban-stats div > i { display:block; height:5px; background:color-mix(in srgb,var(--urban-text) 10%,transparent); }.urban-stats b { display:block; height:100%; background:var(--urban-accent); }
.urban-detail-actions { display:flex; align-items:center; justify-content:space-between; margin-top:28px; color:var(--urban-sub); font:600 .64rem/1 monospace; letter-spacing:.12em; }.urban-detail-actions .like-button { color:var(--urban-text); border-color:var(--urban-border); background:var(--urban-card); }

@media (max-width:900px) { .urban-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.urban-curators { display:none; } }
@media (max-width:600px) { .urban-header { min-height:70px; padding:14px 16px; }.urban-brand strong { font-size:1.2rem; }.urban-brand b { font-size:1.08rem; }.new-entry-button { padding:10px 12px; font-size:.62rem; }.urban-main { padding:48px 16px 80px; }.urban-hero { margin-bottom:54px; }.urban-hero h1 { font-size:3.55rem; }.urban-hero > p { font-size:.93rem; }.urban-grid { grid-template-columns:1fr; gap:20px; }.urban-card { height:470px; padding:25px; }.urban-detail-body { padding:34px 27px; }.urban-stats { gap:7px; }.urban-stats > div { padding:10px; } }

/* UBAI Mood · 未寄 */
.bookstore-wall { padding:0; min-height:100dvh; background:#f2f0e9; color:#292524; font-family:Inter,"PingFang SC",sans-serif; }
.bookstore-header { position:sticky; z-index:35; top:0; display:flex; justify-content:space-between; align-items:center; gap:24px; padding:18px clamp(18px,4vw,52px); border-bottom:1px solid #e7e5e4; background:rgba(255,255,255,.82); backdrop-filter:blur(20px); box-shadow:0 2px 12px rgba(41,37,36,.06); }
.bookstore-brand { display:flex; align-items:center; gap:18px; border:0; background:transparent; color:#1e293b; text-align:left; }
.bookstore-logo { position:relative; z-index:1; display:inline-flex; align-items:baseline; gap:7px; margin-right:6px; white-space:nowrap; }.bookstore-logo strong { font-family:"Chivo",sans-serif; font-size:2.6rem; font-weight:900; line-height:.9; letter-spacing:-.08em; }.bookstore-logo em { color:#5f5960; font:italic 500 1.5rem/1 Georgia,"Times New Roman",serif; letter-spacing:-.04em; }.bookstore-logo b { position:absolute; z-index:-1; left:0; width:76px; bottom:-3px; height:8px; background:#fde047; opacity:.5; }
.bookstore-rule { width:1px; height:34px; background:#d6d3d1; }.bookstore-name { display:flex; flex-direction:column; }.bookstore-name strong { font:700 1rem/1.25 Georgia,"Songti SC",serif; letter-spacing:.1em; }.bookstore-name small { margin-top:3px; color:#78716c; font-size:.58rem; letter-spacing:.13em; }
.bookstore-curated { padding:8px 14px; border:1px solid #e7e5e4; border-radius:999px; background:rgba(245,245,244,.7); color:#57534e; font-size:.66rem; }.bookstore-curated span { color:#a855f7; margin-right:7px; }.bookstore-curated strong { color:#292524; }
.bookstore-hero { position:relative; overflow:hidden; padding:70px 24px 75px; text-align:center; }.bookstore-hero-inner { position:relative; z-index:2; max-width:800px; margin:auto; }.hero-orb { position:absolute; border-radius:50%; filter:blur(30px); opacity:.35; animation:float-a 7s ease-in-out infinite; }.orb-yellow { width:150px; height:150px; top:35px; left:7%; background:#fde047; }.orb-blue { width:180px; height:180px; right:7%; bottom:20px; background:#93c5fd; animation-delay:-2s; }
.location-pill { display:inline-flex; align-items:center; gap:7px; padding:7px 12px; border:1px solid #e7e5e4; border-radius:999px; background:rgba(255,255,255,.8); color:#78716c; box-shadow:0 3px 12px rgba(41,37,36,.06); font-size:.66rem; font-weight:800; letter-spacing:.13em; }.location-pill span { color:#ef4444; }
.bookstore-hero h1 { margin:28px 0 18px; color:#292524; font:500 clamp(2.5rem,5.2vw,4.6rem)/1.22 Georgia,"Songti SC",serif; letter-spacing:-.04em; }.bookstore-hero > .bookstore-hero-inner > p { margin:0; color:#57534e; font:italic 1.08rem/1.7 Georgia,serif; }
.bookstore-hero-actions { display:flex; justify-content:center; gap:14px; margin-top:35px; }.bookstore-hero-actions button { min-width:160px; padding:15px 24px; border-radius:13px; font-weight:800; transition:.2s ease; }.bookstore-write { border:0; background:#1c1917; color:#fff; box-shadow:0 14px 30px rgba(28,25,23,.18); }.bookstore-write:hover { transform:translateY(-2px); background:linear-gradient(90deg,#9333ea,#db2777); }.bookstore-share { border:1px solid #d6d3d1; background:#fff; color:#292524; }.bookstore-share:hover { transform:translateY(-2px); background:#fafaf9; }
.bookstore-main { max-width:1380px; margin:auto; padding:0 24px 100px; }.bookstore-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:30px; max-width:none; columns:auto; align-items:start; }
.bookstore-card,.bookstore-add-card { position:relative; width:100%; aspect-ratio:3/4; min-height:330px; border-radius:5px; text-align:left; transition:.3s cubic-bezier(.2,.8,.2,1); }.bookstore-card { display:flex; flex-direction:column; justify-content:space-between; padding:26px; overflow:hidden; border:0; color:#292524; box-shadow:0 8px 18px rgba(41,37,36,.13); }.bookstore-card:hover { z-index:3; transform:rotate(0) scale(1.045); box-shadow:0 22px 46px rgba(41,37,36,.2); }
.note-joy { background:#fff1b8; }.note-love { background:#ffdce5; }.note-longing { background:#eadff5; }.note-grief { background:#d7dde8; }
.note-anxiety { background:#eadfcf; }.note-anger { background:#f2d1c8; }.note-lonely { background:#dbe3e7; }.note-courage { background:#f3d3b4; }
.note-growth { background:#dce8d2; }.note-calm { background:#d7e9ed; }.note-warmth { background:#f6dfc7; }.note-nostalgia { background:#eee5d2; }
/* 兼容旧数据中的纸张主题。 */
.note-amber { background:#eee5d2; }.note-rose { background:#ffdce5; }.note-blue { background:#d7e9ed; }.note-stone { background:#d7dde8; }.note-yellow { background:#fff1b8; }
.rotate-left { transform:rotate(-1.6deg); }.rotate-right { transform:rotate(1.2deg); }.rotate-soft-left { transform:rotate(-.8deg); }.rotate-soft-right { transform:rotate(2deg); }
.note-tape { position:absolute; top:-9px; left:50%; width:94px; height:28px; transform:translateX(-50%) rotate(1deg); background:rgba(255,255,255,.46); backdrop-filter:blur(2px); box-shadow:0 2px 5px rgba(41,37,36,.08); }.bookstore-card > p { margin:23px 0 20px; font:400 1.03rem/1.75 Georgia,"Songti SC",serif; display:-webkit-box; -webkit-line-clamp:7; -webkit-box-orient:vertical; overflow:hidden; }.bookstore-card-bottom { padding-top:16px; border-top:1px solid rgba(41,37,36,.11); display:flex; align-items:flex-end; justify-content:space-between; color:#78716c; font:500 .68rem/1.55 monospace; }.bookstore-card-bottom span { display:flex; flex-direction:column; }.bookstore-card-bottom strong { color:#44403c; }.bookstore-card-bottom > b { padding:4px 9px; border-radius:999px; background:#111; color:#fff; font:800 .55rem/1 Arial,sans-serif; opacity:0; transition:.25s; }.bookstore-card:hover .bookstore-card-bottom > b { opacity:1; }
.bookstore-stamp { position:absolute; right:14px; bottom:15px; z-index:2; width:60px; height:72px; opacity:.8; pointer-events:none; mix-blend-mode:multiply; }
.bookstore-stamp .ubai-stamp { position:absolute; right:0; bottom:0; transform:scale(.75); transform-origin:bottom right; }
.ubai-stamp { position:relative; display:block; flex:0 0 auto; width:80px; height:96px; color:#0f766e; font-family:Georgia,"Songti SC",serif; }
.ubai-stamp.is-large { width:96px; height:112px; }
.ubai-stamp .stamp-edge { position:absolute; inset:0; border:2px dashed currentColor; background:#fff; opacity:.8; box-shadow:0 4px 10px rgba(41,37,36,.16); -webkit-mask-image:radial-gradient(circle at 2px 2px,transparent 2px,#000 2px); -webkit-mask-size:10px 10px; -webkit-mask-position:-2px -2px; mask-image:radial-gradient(circle at 2px 2px,transparent 2px,#000 2px); mask-size:10px 10px; mask-position:-2px -2px; }
.ubai-stamp .stamp-inner { position:absolute; inset:6px; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:4px; border:3px double currentColor; background:#f0fdfa; font-style:normal; }
.ubai-stamp .stamp-meta { position:absolute; top:6px; left:6px; right:6px; display:flex; justify-content:space-between; align-items:center; opacity:.7; }
.ubai-stamp .stamp-meta b { font-family:"Chivo",sans-serif; font-size:6px; font-weight:900; line-height:1; letter-spacing:-.05em; }
.ubai-stamp .stamp-meta b:last-child { font-family:ui-monospace,monospace; letter-spacing:0; }
.ubai-stamp .stamp-symbol { display:flex; flex:1; flex-direction:column; align-items:center; justify-content:center; padding-top:8px; }
.ubai-stamp .stamp-symbol svg { width:24px; height:24px; margin-bottom:5px; fill:none; stroke:currentColor; stroke-width:1.25; stroke-linecap:round; stroke-linejoin:round; }
.ubai-stamp.is-large .stamp-symbol svg { width:32px; height:32px; }
.ubai-stamp .stamp-symbol strong { font-size:10px; line-height:1; font-weight:700; letter-spacing:.13em; }
.ubai-stamp.is-large .stamp-symbol strong { font-size:12px; }
.ubai-stamp .stamp-inner > em { position:absolute; left:50%; bottom:-12px; min-width:88px; padding:3px 6px; transform:translateX(-50%) scale(.9); background:#92400e; color:#fffbeb; font:800 6px/1.2 Arial,sans-serif; letter-spacing:.1em; text-align:center; white-space:nowrap; }
.ubai-stamp-flame { color:#be123c; }.ubai-stamp-flame .stamp-inner { background:#fff1f2; }
.ubai-stamp-star { color:#4338ca; }.ubai-stamp-star .stamp-inner { background:#eef2ff; }
.ubai-stamp-coffee_collab { color:#92400e; }.ubai-stamp-coffee_collab .stamp-inner { background:#fffbeb; }
.bookstore-add-card { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:25px; border:2px dashed #d6d3d1; background:transparent; color:#a8a29e; text-align:center; }.bookstore-add-card:hover { border-color:#d8b4fe; color:#a855f7; background:#faf5ff; transform:scale(.985); }.bookstore-add-card > span { display:grid; place-items:center; width:64px; height:64px; margin-bottom:17px; border-radius:50%; background:#e7e5e4; font-size:1.4rem; }.bookstore-add-card strong { color:inherit; font:700 1rem/1.45 Georgia,"Songti SC",serif; }.bookstore-add-card small { margin-top:9px; font-size:.68rem; line-height:1.55; }
.bookstore-footer { display:flex; justify-content:space-between; align-items:center; gap:35px; padding:48px clamp(24px,5vw,70px); background:#1c1917; color:#a8a29e; }.bookstore-footer > div:first-child strong { color:#fff; font-family:"Chivo",sans-serif; font-size:2rem; font-weight:900; line-height:1; letter-spacing:-.08em; }.bookstore-footer p { margin:8px 0 0; font-size:.6rem; line-height:1.5; letter-spacing:.1em; }.bookstore-footer nav { display:flex; flex-wrap:wrap; justify-content:center; gap:28px; color:#d6d3d1; font-size:.78rem; }.bookstore-location { display:flex; flex-direction:column; align-items:flex-end; gap:6px; }.bookstore-location small { color:#57534e; }.bookstore-location span { color:#d6d3d1; font-size:.8rem; }

.bookstore-write-card { border-radius:16px; background:#f8f5f2; color:#44403c; }.bookstore-write-card .modal-header { padding:20px 24px; margin:0 -30px 25px; background:linear-gradient(90deg,#292524,#0f172a); color:#fff; }.bookstore-write-card .eyebrow { color:#c4b5fd; }.bookstore-write-card .icon-button { border-color:rgba(255,255,255,.2); background:rgba(255,255,255,.08); color:#fff; }.bookstore-write-card textarea,.bookstore-write-card input,.bookstore-write-card select { border:1px solid #e7e5e4; border-radius:13px; background:#fff; color:#44403c; box-shadow:inset 0 1px 4px rgba(41,37,36,.05); }.bookstore-write-card select { width:100%; min-height:52px; margin:0 0 18px; padding:0 14px; font-size:1rem; }.bookstore-write-card .ai-notice { border-radius:12px; background:#f3e8ff; color:#6b21a8; }.bookstore-write-card .submit-button { border-radius:13px; background:linear-gradient(90deg,#9333ea,#db2777); color:#fff; box-shadow:0 12px 25px rgba(147,51,234,.22); }
.detail-card { display:grid; grid-template-columns:2fr 3fr; width:min(100%,930px); max-height:88dvh; overflow:auto; border:0; border-radius:12px; background:#fff; color:#292524; }.bookstore-detail-close { position:absolute; z-index:5; top:14px; right:14px; width:36px; height:36px; border:0; border-radius:50%; background:rgba(0,0,0,.15); color:#fff; font-size:1.5rem; }.bookstore-analysis-panel { position:relative; min-height:560px; padding:36px 32px; overflow:hidden; background:#0f172a; color:#fff; display:flex; flex-direction:column; }.bookstore-analysis-panel::before,.bookstore-analysis-panel::after { content:""; position:absolute; width:230px; height:230px; border-radius:50%; filter:blur(65px); opacity:.18; }.bookstore-analysis-panel::before { left:-70px; top:-70px; background:#a855f7; }.bookstore-analysis-panel::after { right:-70px; bottom:-70px; background:#f97316; }.bookstore-analysis-brand { position:relative; z-index:1; display:flex; align-items:baseline; gap:9px; }.bookstore-analysis-brand strong { font:900 1.55rem/1 Arial Black,sans-serif; letter-spacing:-.06em; }.bookstore-analysis-brand em { color:#e9d5ff; font:italic 1rem/1 Georgia,serif; }.bookstore-analysis-panel section { position:relative; z-index:1; margin-top:35px; }.bookstore-analysis-panel h3 { margin:0 0 12px; color:#d8b4fe; font-size:.67rem; letter-spacing:.13em; }.bookstore-analysis-panel section p { margin:0; padding-left:14px; border-left:2px solid #a855f7; color:#f5f3ff; font-size:.91rem; line-height:1.75; text-align:justify; }.analysis-tags { position:relative; z-index:1; display:flex; flex-wrap:wrap; gap:8px; margin-top:24px; }.analysis-tags span { padding:6px 9px; border:1px solid rgba(255,255,255,.18); border-radius:6px; background:rgba(255,255,255,.05); color:#cbd5e1; font-size:.62rem; }.analysis-tags b { color:#fff; }.analysis-curators { position:relative; z-index:1; display:flex; align-items:flex-end; justify-content:space-between; margin-top:auto; padding-top:25px; border-top:1px solid rgba(255,255,255,.1); }.analysis-curators > span:first-child { display:flex; flex-direction:column; }.analysis-curators small { color:#64748b; font-size:.55rem; letter-spacing:.12em; }.analysis-curators b { margin-top:4px; font-size:.78rem; }.analysis-curators .bookstore-stamp { position:relative; right:auto; bottom:auto; color:#c084fc; mix-blend-mode:normal; transform:rotate(-10deg); }
.bookstore-analysis-brand strong { font-family:"Chivo",sans-serif; font-size:1.55rem; font-weight:900; line-height:1; letter-spacing:-.08em; }
.bookstore-story-panel { position:relative; min-height:560px; padding:48px; display:flex; flex-direction:column; }.postage { position:absolute; right:28px; top:28px; width:64px; height:82px; display:grid; place-items:center; border:2px dashed rgba(41,37,36,.18); color:#a8a29e; font-size:.55rem; font-weight:800; transform:rotate(4deg); }.bookstore-story-panel blockquote { margin:auto 0; color:#292524; font:400 1.4rem/1.8 Georgia,"Songti SC",serif; }.bookstore-detail-footer { display:flex; align-items:center; justify-content:space-between; padding-top:22px; border-top:1px solid rgba(41,37,36,.11); }.bookstore-detail-footer > span { display:flex; flex-direction:column; }.bookstore-detail-footer strong { font:700 1rem/1.4 Georgia,"Songti SC",serif; }.bookstore-detail-footer small { color:#78716c; font:.65rem/1.3 monospace; }.bookstore-detail-footer div { display:flex; align-items:center; gap:8px; }.bookstore-detail-footer button { border:0; border-radius:999px; padding:10px 14px; background:rgba(255,255,255,.55); color:#57534e; }.bookstore-detail-footer button:first-child { background:#292524; color:#fff; }

@media (max-width:1000px) { .bookstore-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.bookstore-footer { flex-direction:column; text-align:center; }.bookstore-location { align-items:center; } }
@media (max-width:650px) { .bookstore-header { flex-direction:column; gap:12px; padding:15px 16px; }.bookstore-brand { width:100%; justify-content:center; gap:13px; }.bookstore-logo { margin-right:2px; gap:5px; }.bookstore-logo strong { font-size:2rem; }.bookstore-logo em { font-size:1.16rem; }.bookstore-logo b { width:59px; height:6px; }.bookstore-rule { display:block; height:29px; }.bookstore-name strong { font-size:.92rem; }.bookstore-name small { font-size:.5rem; }.bookstore-curated { font-size:.58rem; }.bookstore-hero { padding:48px 18px 55px; }.bookstore-hero h1 { font-size:2.55rem; }.bookstore-hero-actions { flex-direction:column; padding:0 12px; }.bookstore-grid { grid-template-columns:1fr; gap:25px; }.bookstore-card,.bookstore-add-card { max-width:390px; margin:auto; }#detail-modal { padding:0; }.detail-card { grid-template-columns:1fr; width:100%; height:100dvh; max-height:100dvh; border-radius:0; }.bookstore-analysis-panel,.bookstore-story-panel { min-height:50dvh; }.bookstore-story-panel { padding:34px 26px; }.bookstore-detail-close { position:fixed; } }

/* 全站可读性基线：所有可见文案不低于 16px。 */
html { font-size:16px; }
#app small,
#app .eyebrow,
#app .time-pill,
#app .login-note,
#app .divider,
#app .trust-row,
#app .story-count,
#app .story-date,
#app .mood-tag,
#app .story-footer,
#app form label,
#app fieldset legend,
#app .form-meta,
#app .theme-option span,
#app .ai-notice p,
#app .detail-author-row span,
#app .reply-label,
#app .detail-actions,
#app .toast,
#app .language-switch button,
#app .reference-home .vibe-pill,
#app .reference-home .login-heading p,
#app .login-form label,
#app .forgot-button,
#app .copyright,
#app .bookstore-curated,
#app .location-pill,
#app .bookstore-card-bottom,
#app .bookstore-card-bottom > b,
#app .bookstore-add-card small,
#app .bookstore-footer p,
#app .bookstore-footer nav,
#app .bookstore-location span,
#app .bookstore-analysis-panel h3,
#app .bookstore-analysis-panel section p,
#app .analysis-tags span,
#app .analysis-curators small,
#app .analysis-curators b,
#app .postage,
#app .bookstore-detail-footer small { font-size:1rem; }

.bookstore-name { justify-content:center; }
.bookstore-name strong { font-size:1.25rem; letter-spacing:.12em; }
.bookstore-stamp { width:82px; height:82px; font-size:1rem; }
.bookstore-stamp small,
.bookstore-stamp i { display:none; }

@media (max-width:650px) {
  .bookstore-name strong { font-size:1.125rem; }
  .bookstore-header { gap:14px; }
  .bookstore-curated { line-height:1.45; text-align:center; }
}

/* 体验精修：连续翻转、克制光影、套餐对比度与移动端排版。 */
.rotate-left { --card-tilt:-1.6deg; transform:rotate(var(--card-tilt)); }
.rotate-right { --card-tilt:1.2deg; transform:rotate(var(--card-tilt)); }
.rotate-soft-left { --card-tilt:-.8deg; transform:rotate(var(--card-tilt)); }
.rotate-soft-right { --card-tilt:2deg; transform:rotate(var(--card-tilt)); }
.bookstore-card {
  isolation:isolate;
  transform-origin:center center;
  will-change:transform,box-shadow;
}
.bookstore-card::after {
  content:"";
  position:absolute;
  z-index:0;
  inset:-35%;
  pointer-events:none;
  opacity:0;
  transform:translate3d(-42%,12%,0) rotate(12deg);
  background:linear-gradient(112deg,transparent 30%,rgba(255,255,255,.08) 42%,rgba(255,255,255,.46) 50%,rgba(255,255,255,.09) 58%,transparent 70%);
  mix-blend-mode:soft-light;
  transition:opacity 520ms ease,transform 880ms cubic-bezier(.16,1,.3,1);
}
.bookstore-card > p,.bookstore-card-bottom,.bookstore-card .private-mark { position:relative; z-index:1; }
.bookstore-card .note-tape,.bookstore-card .bookstore-stamp { z-index:2; }
.bookstore-card:hover {
  z-index:3;
  transform:rotate(0deg) translateY(-6px) scale(1.025);
  box-shadow:0 24px 52px rgba(41,37,36,.2),0 2px 0 rgba(255,255,255,.38) inset;
}
.bookstore-card:hover::after { opacity:.32; transform:translate3d(42%,-10%,0) rotate(12deg); }
@media (min-width:901px) {
  .pricing-intro { max-width:none; white-space:nowrap; }
}

html[data-color-mode="dark"] #pricing-modal .modal-backdrop { background:rgba(3,3,3,.82); }
html[data-color-mode="dark"] .pricing-card { background:#171614; color:#f5f1e9; box-shadow:0 30px 100px rgba(0,0,0,.62); }
html[data-color-mode="dark"] .pricing-close { color:#d6d0c7; background:#292724; }
html[data-color-mode="dark"] .pricing-kicker { color:#c4b5fd; }
html[data-color-mode="dark"] .pricing-intro,
html[data-color-mode="dark"] .pricing-footnote { color:#c9c2b8; }
html[data-color-mode="dark"] .plan-card { border-color:#494540; background:#242220; color:#f7f3eb; }
html[data-color-mode="dark"] .plan-card.is-selected { border-color:#a78bfa; background:#28242e; box-shadow:0 18px 48px rgba(0,0,0,.36),0 0 0 1px rgba(167,139,250,.4); }
html[data-color-mode="dark"] .plan-card h3,
html[data-color-mode="dark"] .plan-price strong { color:#fffdf8; }
html[data-color-mode="dark"] .plan-card > p,
html[data-color-mode="dark"] .plan-price span { color:#bfb7ad; }
html[data-color-mode="dark"] .plan-card ul { color:#ddd6cc; }
html[data-color-mode="dark"] .plan-badge { background:#3b2c4b; color:#ddd0ff; }
html[data-color-mode="dark"] .plan-card button { border-color:#f1ece4; background:#f1ece4; color:#1c1917; }
html[data-color-mode="dark"] .plan-card:first-child button { border-color:#77706a; background:transparent; color:#f1ece4; }
html[data-color-mode="dark"] .plan-card button.payment-paused,html[data-color-mode="dark"] .plan-card button:disabled { border-color:#4c4843; background:#35322f; color:#aaa39a; }

@media (max-width:650px) {
  .bookstore-header { gap:10px; padding:14px 12px; }
  .bookstore-header-actions { display:grid; grid-template-columns:minmax(0,1fr) auto 44px; width:100%; gap:9px; align-items:center; }
  .bookstore-curated { grid-column:1/-1; width:100%; overflow:hidden; text-align:center; text-overflow:ellipsis; white-space:nowrap; }
  .bookstore-support,.wall-account-button { width:100%; min-width:0; white-space:nowrap; }
  .wall-color-toggle { order:initial; width:44px; min-width:44px; padding:0; }
  .wall-account-button.is-guest { font-size:0; }
  .wall-account-button.is-guest::after { content:"登录"; font-size:1rem; }
  .bookstore-hero { padding:46px 14px 52px; }
  .bookstore-hero-inner { max-width:100%; }
  .bookstore-hero h1 { font-size:clamp(1.78rem,8.9vw,2.5rem); line-height:1.3; letter-spacing:-.055em; white-space:nowrap; word-break:keep-all; }
  .bookstore-hero > .bookstore-hero-inner > p { font-size:clamp(.86rem,3.7vw,1rem); line-height:1.55; white-space:nowrap; }
  .bookstore-hero-actions button,.feed-tabs button,.bookstore-card-bottom > b { white-space:nowrap; word-break:keep-all; }
  .pricing-card h2 { font-size:clamp(1.8rem,8.2vw,2.35rem); text-wrap:balance; }
  .pricing-intro { margin-top:12px; line-height:1.65; text-wrap:pretty; }
  .plan-card > p { min-height:0; text-wrap:pretty; }
  .bookstore-card:hover { transform:rotate(var(--card-tilt,0deg)); box-shadow:0 8px 18px rgba(41,37,36,.13); }
  .bookstore-card:hover::after { opacity:0; }
}

@media (prefers-reduced-motion:reduce) {
  .bookstore-card::after { display:none; }
  .bookstore-card:hover { transform:rotate(var(--card-tilt,0deg)); }
}

/* 昼夜模式、品牌下级页面与卡片翻转。 */
.color-mode-toggle { display:grid; place-items:center; flex:0 0 auto; width:42px; height:42px; padding:0; border:1px solid #e7e5e4; border-radius:50%; background:rgba(255,255,255,.72); color:#44403c; box-shadow:0 5px 16px rgba(41,37,36,.07); font-size:1.1rem; line-height:1; transition:transform .2s ease,background .2s ease,color .2s ease; }
.color-mode-toggle:hover { transform:translateY(-1px) rotate(8deg); }

.member-level-badge { display:inline-flex; align-items:center; min-height:34px; margin:4px auto 2px; padding:6px 12px; border:1px solid #ddd6fe; border-radius:999px; background:#f5f3ff; color:#6d28d9; font-size:1rem; font-weight:700; }
.account-theme-setting { display:flex; align-items:center; justify-content:space-between; gap:18px; margin:0 0 22px; padding:14px 0; border-top:1px solid #e7e5e4; border-bottom:1px solid #e7e5e4; color:#57534e; font-size:1rem; text-align:left; }
.theme-preference { display:flex; padding:3px; border:1px solid #e7e5e4; border-radius:999px; background:#f5f5f4; }
.theme-preference button { min-height:34px; padding:5px 11px; border:0; border-radius:999px; background:transparent; color:#78716c; font-size:1rem; }
.theme-preference button.active { background:#1c1917; color:#fff; box-shadow:0 3px 10px rgba(28,25,23,.16); }

.info-view { min-height:100dvh; background:#f3f0e9; color:#292524; transition:background .45s ease,color .45s ease; }
.info-header { position:sticky; z-index:20; top:0; display:flex; align-items:center; justify-content:space-between; gap:24px; padding:18px clamp(18px,4vw,52px); border-bottom:1px solid #dedbd4; background:rgba(255,255,255,.78); backdrop-filter:blur(20px); }
.info-header > div { display:flex; align-items:center; gap:10px; }
.info-back { min-height:42px; padding:10px 16px; border:1px solid #d6d3d1; border-radius:999px; background:transparent; color:#44403c; font-size:1rem; font-weight:700; }
.info-main { width:min(100% - 40px,1120px); margin:0 auto; padding:clamp(70px,10vw,150px) 0 110px; }
.info-kicker { margin:0 0 26px; color:#7c3aed; font-size:1rem; font-weight:800; letter-spacing:.15em; }
.info-main h1 { max-width:980px; margin:0; color:inherit; font:500 clamp(3rem,7vw,6.4rem)/1.05 Georgia,"Songti SC",serif; letter-spacing:-.055em; }
.info-grid { display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,7vw,92px); margin:clamp(55px,8vw,100px) 0; padding-top:32px; border-top:1px solid #d6d3d1; }
.info-grid p { margin:0; color:#57534e; font:400 1.125rem/1.95 Georgia,"Songti SC",serif; }
.info-main blockquote { margin:0; padding:28px 0 0 clamp(20px,5vw,70px); border-left:4px solid #1c1917; color:#1c1917; font:500 clamp(1.65rem,3vw,2.7rem)/1.6 Georgia,"Songti SC",serif; }
.collaboration-paths { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin:0 0 52px; }
.collaboration-paths article { min-height:250px; padding:26px; border:1px solid #d6d3d1; background:rgba(255,255,255,.42); }
.collaboration-paths span { color:#a8a29e; font-size:1rem; }
.collaboration-paths strong { display:block; margin:42px 0 14px; font:700 1.35rem/1.3 Georgia,"Songti SC",serif; }
.collaboration-paths p { margin:0; color:#78716c; font-size:1rem; line-height:1.75; }
.collaboration-contact { display:flex; align-items:center; justify-content:space-between; min-height:66px; padding:16px 22px; border:0; background:#1c1917; color:#fff; font-size:1rem; font-weight:800; text-decoration:none; }
.collaboration-contact span { font-size:1.5rem; }

html[data-color-mode="dark"] body { background:#171717; color:#eee9df; }
html[data-color-mode="dark"] .login-panel { background:#171717; color:#f5f5f4; box-shadow:-30px 0 70px rgba(0,0,0,.28); }
html[data-color-mode="dark"] .login-heading p,
html[data-color-mode="dark"] .password-label-row,
html[data-color-mode="dark"] .copyright { color:#a8a29e; }
html[data-color-mode="dark"] .field-shell { border-color:#3f3f46; background:#222; color:#e7e5e4; }
html[data-color-mode="dark"] .field-shell input { color:#f5f5f4; }
html[data-color-mode="dark"] .bookstore-wall,
html[data-color-mode="dark"] .info-view { background:#171717; color:#eee9df; }
html[data-color-mode="dark"] .bookstore-header,
html[data-color-mode="dark"] .info-header { border-color:#363431; background:rgba(23,23,23,.86); box-shadow:0 2px 14px rgba(0,0,0,.2); }
html[data-color-mode="dark"] .bookstore-brand,
html[data-color-mode="dark"] .bookstore-hero h1,
html[data-color-mode="dark"] .story-navigation > div strong { color:#f5f5f4; }
html[data-color-mode="dark"] .bookstore-logo em,
html[data-color-mode="dark"] .bookstore-hero > .bookstore-hero-inner > p,
html[data-color-mode="dark"] .story-navigation > div span { color:#a8a29e; }
html[data-color-mode="dark"] .bookstore-curated,
html[data-color-mode="dark"] .location-pill,
html[data-color-mode="dark"] .feed-tabs button,
html[data-color-mode="dark"] .color-mode-toggle,
html[data-color-mode="dark"] .info-back { border-color:#44403c; background:#262422; color:#d6d3d1; }
html[data-color-mode="dark"] .bookstore-curated strong { color:#f5f5f4; }
html[data-color-mode="dark"] .story-navigation,
html[data-color-mode="dark"] .info-grid { border-color:#3f3b37; }
html[data-color-mode="dark"] .feed-tabs button.active { border-color:#eee9df; background:#eee9df; color:#1c1917; }
html[data-color-mode="dark"] .bookstore-add-card { border-color:#57534e; color:#a8a29e; }
html[data-color-mode="dark"] .bookstore-add-card:hover { border-color:#a78bfa; background:#211c29; color:#c4b5fd; }
html[data-color-mode="dark"] .info-grid p { color:#b8b1a8; }
html[data-color-mode="dark"] .info-main blockquote { border-color:#eee9df; color:#eee9df; }
html[data-color-mode="dark"] .collaboration-paths article { border-color:#44403c; background:#201f1d; }
html[data-color-mode="dark"] .collaboration-paths p { color:#a8a29e; }
html[data-color-mode="dark"] .account-card,
html[data-color-mode="dark"] .pricing-card { background:#201f1d; color:#eee9df; }
html[data-color-mode="dark"] .account-summary-grid > div,
html[data-color-mode="dark"] .account-summary-grid > button { border-color:#44403c; background:#292725; }
html[data-color-mode="dark"] .account-summary-grid strong,
html[data-color-mode="dark"] .account-plan > strong { color:#f5f5f4; }
html[data-color-mode="dark"] .account-plan { background:#292231; }
html[data-color-mode="dark"] .account-theme-setting { border-color:#44403c; color:#d6d3d1; }
html[data-color-mode="dark"] .theme-preference { border-color:#44403c; background:#171717; }
html[data-color-mode="dark"] .theme-preference button.active { background:#eee9df; color:#1c1917; }

@media (max-width:650px) {
  .wall-color-toggle { order:2; }
  .info-header { align-items:flex-start; }
  .info-header .bookstore-rule,.info-header .bookstore-name { display:none; }
  .info-header .bookstore-brand { width:auto; }
  .info-header .bookstore-logo strong { font-size:1.8rem; }
  .info-header .bookstore-logo em { font-size:1.05rem; }
  .info-back { padding-inline:12px; }
  .info-main { width:min(100% - 32px,1120px); padding:66px 0 80px; }
  .info-main h1 { font-size:clamp(2.65rem,12vw,4rem); }
  .info-grid,.collaboration-paths { grid-template-columns:1fr; }
  .info-grid { gap:26px; }
  .collaboration-paths article { min-height:210px; }
  .account-theme-setting { align-items:flex-start; flex-direction:column; }
  .theme-preference { width:100%; }
  .theme-preference button { flex:1; }
}

/* 情绪闭环：安静浏览、留下温暖、回到自己的未寄。 */
.bookstore-header-actions { display:flex; align-items:center; gap:10px; }
.private-mark { position:absolute; z-index:2; top:18px; right:18px; padding:6px 10px; border:1px solid rgba(41,37,36,.18); border-radius:999px; background:rgba(255,255,255,.58); color:#57534e; font:700 1rem/1 Georgia,"Songti SC",serif; }
.bookstore-support,.wall-account-button { min-height:42px; padding:10px 15px; border:1px solid #e7e5e4; border-radius:999px; background:#fff; color:#44403c; font-size:1rem; font-weight:700; cursor:pointer; }
.bookstore-support { background:#1c1917; border-color:#1c1917; color:#fff; }
.wall-account-button:hover,.bookstore-support:hover { transform:translateY(-1px); box-shadow:0 8px 18px rgba(41,37,36,.1); }
.story-navigation { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin:0 0 38px; padding:0 2px 20px; border-bottom:1px solid #d6d3d1; }
.story-navigation > div { display:flex; flex-direction:column; gap:7px; }
.story-navigation > div strong { color:#292524; font:700 1.25rem/1.35 Georgia,"Songti SC",serif; }
.story-navigation > div span { color:#78716c; font-size:1rem; line-height:1.5; }
.feed-tabs { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }
.feed-tabs button { min-height:42px; padding:9px 15px; border:1px solid #d6d3d1; border-radius:999px; background:rgba(255,255,255,.65); color:#57534e; font-size:1rem; cursor:pointer; }
.feed-tabs button.active { border-color:#292524; background:#292524; color:#fff; }
.empty-state { display:flex; flex-direction:column; gap:10px; border-color:#d6d3d1; color:#78716c; font-size:1rem; }
.empty-state strong { color:#44403c; font:700 1.25rem/1.5 Georgia,"Songti SC",serif; }
.load-more-button { display:block; min-height:50px; margin:46px auto 0; padding:12px 24px; border:1px solid #a8a29e; border-radius:999px; background:transparent; color:#44403c; font-size:1rem; font-weight:700; cursor:pointer; }
.load-more-button:hover { border-color:#292524; background:#fff; }
.bookstore-footer nav button { border:0; padding:0; background:transparent; color:inherit; font:inherit; cursor:pointer; }

.account-card { width:min(100%,520px); padding:42px; }
.account-kicker { margin:0 0 8px !important; color:#a855f7 !important; font-size:1rem; font-weight:800; letter-spacing:.12em; }
.account-summary-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:24px 0; }
.account-summary-grid > div { display:flex; min-height:112px; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:16px 8px; border:1px solid #e7e5e4; border-radius:16px; background:#fafaf9; }
.account-summary-grid strong { color:#111827; font:900 1.8rem/1 "Chivo",sans-serif; letter-spacing:-.05em; }
.account-summary-grid span { color:#6b7280; font-size:1rem; }
.account-plan { display:grid; grid-template-columns:1fr auto; gap:5px 16px; align-items:center; margin:0 0 22px; padding:18px; border-radius:16px; background:#f5f3ff; text-align:left; }
.account-plan > span { color:#78716c; font-size:1rem; }
.account-plan > strong { color:#292524; font:700 1.1rem/1.4 Georgia,"Songti SC",serif; }
.account-plan button { grid-column:2; grid-row:1/3; min-height:42px; padding:8px 12px; border:1px solid #c4b5fd; border-radius:999px; background:#fff; color:#6b21a8; font-size:1rem; cursor:pointer; }

.pricing-card { width:min(100%,1060px); padding:48px; border-radius:24px; background:#f8f7f3; color:#292524; }
.pricing-close { position:absolute; top:18px; right:18px; }
.pricing-kicker { margin:0 0 10px; color:#7c3aed; font-size:1rem; font-weight:800; letter-spacing:.14em; }
.pricing-card h2 { margin:0; font:600 clamp(2rem,4vw,3.2rem)/1.2 Georgia,"Songti SC",serif; }
.pricing-intro { max-width:620px; margin:14px 0 32px; color:#57534e; font-size:1rem; line-height:1.7; }
.pricing-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.plan-card { position:relative; display:flex; flex-direction:column; min-height:410px; padding:26px; border:1px solid #d6d3d1; border-radius:18px; background:#fff; }
.plan-card { cursor:pointer; transition:border-color .22s ease,box-shadow .22s ease,transform .22s ease; }
.plan-card:hover { transform:translateY(-2px); }
.plan-card.is-selected { border-color:#292524; box-shadow:0 18px 45px rgba(41,37,36,.12),0 0 0 1px #292524; }
.plan-card:focus-visible { outline:3px solid rgba(124,58,237,.25); outline-offset:3px; }
.plan-badge { position:absolute; top:18px; right:18px; padding:5px 10px; border-radius:999px; background:#f3e8ff; color:#7e22ce; font-size:1rem; font-weight:800; }
.plan-badge.current { background:#ecfdf5; color:#166534; }
.plan-card h3 { margin:0 0 12px; font:700 1.35rem/1.4 Georgia,"Songti SC",serif; }
.plan-card > p { min-height:54px; margin:0 0 18px; color:#78716c; font-size:1rem; line-height:1.65; }
.plan-price { display:flex; align-items:baseline; gap:8px; margin-bottom:22px; }
.plan-price strong { font:900 2.25rem/1 "Chivo",sans-serif; letter-spacing:-.06em; }
.plan-price span { color:#78716c; font-size:1rem; }
.plan-card ul { display:flex; flex-direction:column; gap:12px; margin:0 0 24px; padding:0; list-style:none; color:#44403c; font-size:1rem; line-height:1.5; }
.plan-card button { min-height:48px; margin-top:auto; border:1px solid #292524; border-radius:999px; background:#292524; color:#fff; font-size:1rem; font-weight:800; cursor:pointer; }
.plan-card:first-child button { background:#fff; color:#292524; }
.plan-card button.payment-paused,.plan-card button:disabled { border-color:#d6d3d1; background:#e7e5e4; color:#78716c; cursor:not-allowed; box-shadow:none; }
.pricing-footnote { margin:24px 0 0; color:#78716c; font-size:1rem; line-height:1.6; }

.share-card { width:min(calc(100% - 32px),510px); padding:42px 40px 34px; border-radius:7px; background:#fdfbf7; color:#292524; text-align:center; }
.share-close { position:absolute; top:17px; right:20px; width:42px; height:42px; border:0; background:transparent; color:#a8a29e; font:300 2.4rem/1 Arial,sans-serif; cursor:pointer; transition:.2s ease; }
.share-close:hover { color:#292524; transform:rotate(90deg); }
.share-symbol { display:grid; place-items:center; width:64px; height:64px; margin:0 auto 24px; border-radius:50%; background:#f5f5f4; color:#44403c; }
.share-symbol svg { width:32px; height:32px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.share-card h2 { margin:0; color:#1c1917; font:700 2rem/1.35 Georgia,"Songti SC",serif; }
.share-intro { margin:14px 0 30px; color:#78716c; font:500 1rem/1.7 Georgia,"Songti SC",serif; }
.share-copy-button { display:flex; align-items:center; justify-content:center; gap:12px; width:100%; min-height:58px; border:0; border-radius:0; background:#1c1917; color:#fff; font-size:1rem; font-weight:800; letter-spacing:.08em; cursor:pointer; transition:.2s ease; }
.share-copy-button:hover { background:#292524; }.share-copy-button:active { transform:scale(.985); }
.share-copy-button.is-copied { background:#14532d; }
.share-copy-button svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.share-divider { height:1px; margin:32px 0; background:#e7e5e4; }
.wechat-share-note { display:flex; align-items:flex-start; gap:14px; padding:18px; border:1px solid #efede9; border-radius:9px; background:#fafaf9; text-align:left; }
.wechat-share-note > span { display:grid; place-items:center; flex:0 0 40px; width:40px; height:40px; border:1px solid #e7e5e4; border-radius:50%; background:#fff; color:#a8a29e; font-size:1.5rem; }
.wechat-share-note strong { display:block; margin:0 0 5px; color:#44403c; font-size:1rem; }
.wechat-share-note p { margin:0; color:#a8a29e; font-size:1rem; line-height:1.6; }
.share-card > small { display:block; margin-top:24px; color:#d6d3d1; font:800 1rem/1.4 Arial,sans-serif; letter-spacing:.13em; }

@media (max-width:900px) {
  .bookstore-header { align-items:flex-start; }
  .bookstore-header-actions { flex-wrap:wrap; justify-content:flex-end; }
  .bookstore-curated { width:100%; text-align:right; }
  .story-navigation { align-items:flex-start; flex-direction:column; }
  .feed-tabs { justify-content:flex-start; }
  .pricing-grid { grid-template-columns:1fr; }
  .plan-card { min-height:0; }
}

@media (max-width:650px) {
  .bookstore-header-actions { width:100%; justify-content:center; }
  .bookstore-curated { width:100%; text-align:center; }
  .bookstore-support,.wall-account-button { flex:1; padding-inline:10px; }
  .story-navigation { margin-bottom:28px; }
  .feed-tabs { display:grid; width:100%; grid-template-columns:1fr 1fr; }
  .feed-tabs button { width:100%; }
  .account-card,.pricing-card { padding:34px 20px 24px; border-radius:18px; }
  .account-summary-grid { grid-template-columns:1fr; }
  .account-summary-grid > div { min-height:88px; }
  .account-plan { grid-template-columns:1fr; text-align:center; }
  .account-plan button { grid-column:1; grid-row:auto; width:100%; }
  .share-card { padding:38px 24px 28px; }
  .share-symbol { margin-bottom:20px; }
  .share-card h2 { font-size:1.75rem; }
  .share-divider { margin:26px 0; }
  .wechat-share-note { padding:15px; }
}

/* 最新明信片交互：详情与下载使用同一 DOM。 */
#detail-modal { align-items:center; padding:16px; background:rgba(28,25,23,.05); }
#detail-modal .modal-backdrop { background:rgba(28,25,23,.8); backdrop-filter:blur(5px); }
#detail-modal .detail-card { position:relative; display:block; width:min(100%,900px); max-height:calc(100dvh - 32px); overflow:auto; border:0; border-radius:0; background:transparent; box-shadow:0 28px 90px rgba(2,6,23,.42); }
.bookstore-detail-capture { position:relative; display:flex; width:100%; min-height:550px; overflow:hidden; background:#fdfbf7; }
.bookstore-detail-close { position:absolute; top:16px; right:16px; z-index:50; width:40px; height:40px; border:0; border-radius:999px; background:transparent; color:#a8a29e; font-size:1.55rem; cursor:pointer; transition:.25s ease; }
.bookstore-detail-close:hover { color:#292524; background:#f5f5f4; transform:rotate(90deg); }
.bookstore-analysis-panel { position:relative; width:35%; min-height:550px; padding:40px; overflow:hidden; background:#1a1918; color:#f2f0e9; display:flex; flex-direction:column; justify-content:space-between; }
.bookstore-analysis-panel::before,.bookstore-analysis-panel::after { display:none; }
.detail-noise { position:absolute; inset:0; opacity:.72; pointer-events:none; background:url("./textures/dark-rings.png") 50% 50%/1024px 1024px no-repeat; mix-blend-mode:screen; }
.analysis-copy { position:relative; z-index:1; }
.analysis-gradient { display:block; width:32px; height:4px; margin-bottom:24px; background:linear-gradient(90deg,#a855f7,#f43f5e); }
.bookstore-analysis-panel .analysis-copy > h3 { margin:0 0 32px; color:#a8a29e; font:500 1.125rem/1.4 Georgia,"Songti SC",serif; letter-spacing:.2em; }
.bookstore-analysis-panel .analysis-copy section { margin:0; }
.bookstore-analysis-panel .analysis-copy section small { display:block; margin-bottom:12px; color:#78716c; font-size:1rem; font-weight:800; letter-spacing:.12em; }
.bookstore-analysis-panel .analysis-copy section p { margin:0; padding:0; border:0; color:#fff; font:italic 500 1.125rem/1.9 Georgia,"Songti SC",serif; text-align:left; }
.analysis-brand-footer { position:relative; z-index:1; display:flex; justify-content:space-between; align-items:flex-end; gap:18px; margin-top:48px; padding-top:24px; border-top:1px solid #292524; }
.analysis-brand-footer > span { display:flex; flex-direction:column; gap:8px; }
.analysis-brand-footer > span:last-child { text-align:right; }
.analysis-brand-footer small { color:#78716c; font-size:1rem; letter-spacing:.12em; white-space:nowrap; }
.analysis-brand-footer strong { font-family:"Chivo",sans-serif; font-size:1.55rem; font-weight:900; line-height:1; letter-spacing:-.08em; }
.analysis-brand-footer b { font:500 1rem/1.4 Georgia,"Songti SC",serif; letter-spacing:.04em; white-space:nowrap; }
.bookstore-story-panel { position:relative; width:65%; min-height:550px; padding:40px; overflow:hidden; display:flex; flex-direction:column; }
.paper-texture { position:absolute; inset:0; opacity:.56; pointer-events:none; background:url("./textures/paper-rings.png") 50% 50%/1024px 1024px no-repeat; mix-blend-mode:multiply; }
.postmark-area { position:absolute; z-index:10; top:32px; right:32px; display:flex; align-items:flex-start; gap:16px; transform:rotate(2deg); }
.postmark { position:relative; width:80px; height:80px; display:grid; place-items:center; padding:5px; border:1px solid rgba(41,37,36,.6); border-radius:50%; color:#292524; mix-blend-mode:multiply; }
.postmark::before { content:""; position:absolute; inset:5px; border:1px dashed currentColor; border-radius:50%; }
.postmark-line { position:absolute; top:40px; z-index:0; display:block; height:1px; background:rgba(41,37,36,.7); mix-blend-mode:multiply; }
.postmark-line-left { left:-34px; width:64px; }
.postmark-line-right { left:calc(100% + 8px); width:36px; }
.postmark i { position:relative; z-index:1; font:700 1rem/1.15 ui-monospace,monospace; text-align:center; }
.postmark-area > .ubai-stamp { z-index:1; mix-blend-mode:multiply; }
.detail-story-copy { position:relative; z-index:1; display:flex; flex:1; flex-direction:column; justify-content:center; margin-top:70px; padding-right:16px; }
.quote-mark { color:#d6d3d1; font:700 2.5rem/1 Georgia,serif; }
.detail-story-copy p { margin:12px 0 0; color:#1c1917; font:500 clamp(1.25rem,2.3vw,1.5rem)/2 Georgia,"Songti SC",serif; letter-spacing:.04em; white-space:pre-wrap; }
.bookstore-detail-footer { position:relative; z-index:20; display:flex; justify-content:space-between; align-items:flex-end; gap:20px; margin-top:48px; padding-top:24px; border-top:1px solid #d6d3d1; }
.detail-author-info { display:flex; align-items:flex-end; gap:18px; color:#292524; }
.detail-author-info > span { display:flex; flex-direction:column; justify-content:flex-end; gap:5px; }
.detail-author-info strong { font:700 1.125rem/1.3 Georgia,"Songti SC",serif; }
.detail-author-info small { color:#78716c; font:500 1rem/1.35 Georgia,"Songti SC",serif; }
.detail-author-info > i { width:1px; height:64px; background:#d6d3d1; }
.detail-author-info time { height:80px; color:#a8a29e; font:500 1rem/1.8 Georgia,"Songti SC",serif; letter-spacing:.12em; writing-mode:vertical-rl; }
.detail-interaction { position:relative; display:flex; width:min(100%,300px); flex-direction:column; align-items:flex-end; gap:12px; flex-shrink:0; }
.detail-meta-line { display:flex; width:100%; align-items:baseline; justify-content:space-between; gap:12px; color:#a8a29e; }
.detail-meta-line > small { flex:0 0 auto; font-size:1rem; line-height:1.25; white-space:nowrap; }
.warmth-copy { font-family:Georgia,"Songti SC",serif; font-weight:500; }
.mood-subbrand { display:inline-flex; align-items:baseline; gap:4px; opacity:.76; }
.mood-subbrand b { font-family:"Chivo",sans-serif; font-weight:900; letter-spacing:-.08em; }
.mood-subbrand em { font:italic 500 1rem/1 Georgia,serif; }
.mood-subbrand i { font:normal 500 1rem/1.2 Georgia,"Songti SC",serif; }
.detail-buttons { position:relative; z-index:2; display:flex; gap:12px; }
.detail-buttons button { display:flex; align-items:center; gap:8px; min-height:42px; padding:9px 16px; border-radius:2px; font-size:1rem; font-weight:800; letter-spacing:.08em; cursor:pointer; transition:.22s ease; }
.detail-buttons button:active { transform:scale(.96); }
.detail-buttons .like-button { border:1px solid #d6d3d1; background:#fff; color:#78716c; }
.detail-buttons .like-button:hover { border-color:#292524; color:#292524; }
.detail-buttons .like-button.is-hugged { border-color:#fecdd3; background:#fff1f2; color:#e11d48; cursor:default; }
.detail-buttons .download-card-button { border:1px solid #1c1917; background:#1c1917; color:#fff; }
.detail-buttons .download-card-button:hover { background:#292524; }
.download-card-button b { display:grid; width:24px; height:24px; flex:0 0 24px; place-items:center; }
.download-card-button b svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:2.35; stroke-linecap:round; stroke-linejoin:round; }
.download-card-button.is-downloading b { animation:spin 1s linear infinite; }
.bookstore-detail-capture.is-exporting .detail-buttons { display:none !important; }
.bookstore-detail-capture.is-exporting .detail-interaction { align-self:flex-end; justify-content:flex-end; min-width:190px; padding-bottom:4px; }
.bookstore-detail-capture.is-exporting .detail-meta-line { color:#8f8983; }
.bookstore-detail-capture.is-export-clone { position:fixed !important; z-index:-1 !important; top:0 !important; left:-10000px !important; margin:0 !important; box-shadow:none !important; }
.delete-story-button { display:block; margin:12px auto 0; min-height:44px; padding:10px 18px; border:1px solid #fecaca; border-radius:2px; background:#fff; color:#b42318; font-size:1rem; font-weight:750; }
.signature-note { margin:-8px 0 18px; color:#78716c; font-size:1rem; line-height:1.55; }
.publishing-rules { margin:8px 0 18px; color:#78716c; font-size:1rem; line-height:1.55; }
.story-choice-native { position:absolute !important; width:1px !important; height:1px !important; margin:0 !important; padding:0 !important; overflow:hidden !important; clip:rect(0 0 0 0); clip-path:inset(50%); border:0 !important; white-space:nowrap; }
.story-choice-field { position:relative; margin:0 0 18px; }
.bookstore-write-card .story-choice-trigger { display:grid; width:100%; min-height:76px; grid-template-columns:46px minmax(0,1fr) 24px; align-items:center; gap:14px; padding:13px 16px; border:1px solid #dedad4; border-radius:15px; background:rgba(255,255,255,.9); color:#292524; box-shadow:0 8px 24px rgba(41,37,36,.055),inset 0 1px rgba(255,255,255,.9); text-align:left; cursor:pointer; transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease,background .2s ease; }
.bookstore-write-card .story-choice-trigger:hover { border-color:#b9afa4; background:#fff; box-shadow:0 12px 30px rgba(41,37,36,.09),inset 0 1px rgba(255,255,255,.9); transform:translateY(-1px); }
.bookstore-write-card .story-choice-trigger:focus-visible { outline:0; border-color:#8b5cf6; box-shadow:0 0 0 4px rgba(139,92,246,.13),0 12px 30px rgba(41,37,36,.08); }
.story-choice-trigger-icon,.story-choice-option-icon { display:grid; place-items:center; border-radius:14px; background:linear-gradient(145deg,#f5f3ff,#fdf2f8); color:#7c3aed; }
.story-choice-trigger-icon { width:46px; height:46px; }
.story-choice-trigger-icon svg,.story-choice-option-icon svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.55; stroke-linecap:round; stroke-linejoin:round; }
.story-choice-trigger-copy { min-width:0; display:flex; flex-direction:column; gap:4px; }
.story-choice-trigger-copy strong { font:700 1rem/1.3 Georgia,"Songti SC",serif; letter-spacing:.02em; }
.story-choice-trigger-copy small { overflow:hidden; color:#78716c; font-size:1rem; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }
.story-choice-chevron { width:24px; height:24px; fill:none; stroke:#a8a29e; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; transition:transform .2s ease; }
.story-choice-trigger[aria-expanded="true"] .story-choice-chevron { transform:rotate(180deg); }
.story-choice-field.is-disabled .story-choice-trigger { cursor:not-allowed; opacity:.62; transform:none; }
.story-choice-dialog { position:absolute; z-index:8; inset:0; display:grid; place-items:center; padding:24px; overflow:hidden; }
.story-choice-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(20,18,17,.62); backdrop-filter:blur(9px); animation:choice-fade-in .2s ease both; }
.story-choice-sheet { position:relative; z-index:1; width:min(100%,520px); padding:28px; border:1px solid rgba(255,255,255,.72); border-radius:24px; background:rgba(253,251,247,.97); color:#292524; box-shadow:0 30px 90px rgba(28,25,23,.28); animation:choice-sheet-in .24s cubic-bezier(.22,.8,.3,1) both; }
.story-choice-handle { display:none; }
.story-choice-header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
.story-choice-eyebrow { margin:0 0 7px; color:#7c3aed; font-size:1rem; font-weight:750; letter-spacing:.04em; }
.story-choice-header h3 { margin:0; color:#1c1917; font:700 1.65rem/1.25 Georgia,"Songti SC",serif; }
.story-choice-close { display:grid; width:40px; height:40px; flex:0 0 auto; place-items:center; border:1px solid #e7e5e4; border-radius:50%; background:#fff; color:#78716c; font-size:1.5rem; cursor:pointer; }
.story-choice-note { margin:11px 0 22px; color:#78716c; font-size:1rem; line-height:1.6; }
.story-choice-options { display:flex; flex-direction:column; gap:10px; }
.story-choice-option { position:relative; display:grid; width:100%; min-height:88px; grid-template-columns:52px minmax(0,1fr) auto 28px; align-items:center; gap:14px; padding:15px; border:1px solid #e7e2dc; border-radius:17px; background:#fff; color:#292524; box-shadow:0 6px 18px rgba(41,37,36,.035); text-align:left; cursor:pointer; transition:border-color .18s ease,background .18s ease,box-shadow .18s ease,transform .18s ease; }
.story-choice-option:hover { border-color:#c4b5fd; background:#fdfcff; transform:translateY(-1px); }
.story-choice-option:focus-visible { outline:0; border-color:#8b5cf6; box-shadow:0 0 0 4px rgba(139,92,246,.14); }
.story-choice-option.is-selected { border-color:#a78bfa; background:linear-gradient(120deg,#faf7ff,#fffafd); box-shadow:0 10px 28px rgba(124,58,237,.1),inset 0 0 0 1px rgba(167,139,250,.22); }
.story-choice-option-icon { width:52px; height:52px; }
.story-choice-option-copy { display:flex; min-width:0; flex-direction:column; gap:5px; }
.story-choice-option-copy strong { color:#292524; font:700 1.05rem/1.3 Georgia,"Songti SC",serif; }
.story-choice-option-copy small { color:#78716c; font-size:1rem; line-height:1.45; }
.story-choice-badge { padding:5px 9px; border-radius:999px; background:#f3e8ff; color:#6b21a8; font-size:1rem; font-weight:700; white-space:nowrap; }
.story-choice-check { display:grid; width:26px; height:26px; place-items:center; border:1px solid #d6d3d1; border-radius:50%; color:transparent; }
.story-choice-check svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.story-choice-option.is-selected .story-choice-check { border-color:#7c3aed; background:#7c3aed; color:#fff; }
.story-choice-dialog.is-closing .story-choice-backdrop { animation:choice-fade-out .19s ease both; }
.story-choice-dialog.is-closing .story-choice-sheet { animation:choice-sheet-out .19s ease both; }
@keyframes choice-fade-in { from { opacity:0; } }
@keyframes choice-fade-out { to { opacity:0; } }
@keyframes choice-sheet-in { from { opacity:0; transform:translateY(14px) scale(.985); } }
@keyframes choice-sheet-out { to { opacity:0; transform:translateY(10px) scale(.99); } }
.story-owner-actions { display:flex; justify-content:center; gap:10px; margin:12px auto 0; padding:0 12px; }
.story-owner-actions button { min-height:44px; padding:10px 18px; border:1px solid #d6d3d1; border-radius:2px; background:#fff; color:#292524; font-size:1rem; font-weight:750; cursor:pointer; }
.story-owner-actions button.danger { border-color:#fecaca; color:#b42318; }
html[data-color-mode="dark"] .story-owner-actions button { border-color:#57534e; background:#292524; color:#f5f5f4; }
html[data-color-mode="dark"] .story-owner-actions button.danger { border-color:#7f1d1d; color:#fecaca; }

/* 保持卡片行动文案完整，并让“我的心事”成为清晰可达的入口。 */
.bookstore-card-bottom > span { min-width:0; padding-right:8px; }
.bookstore-card-bottom > b { flex:0 0 auto; white-space:nowrap; word-break:keep-all; }
.bookstore-card .bookstore-stamp { width:60px; height:72px; }
.bookstore-card .bookstore-stamp .stamp-edge { display:block; }
.bookstore-card .bookstore-stamp .stamp-inner { display:flex; }
.account-summary-grid > button { display:flex; min-height:112px; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:16px 8px; border:1px solid #e7e5e4; border-radius:16px; background:#fafaf9; color:inherit; font:inherit; cursor:pointer; transition:.2s ease; }
.account-summary-grid > button:hover { border-color:#c4b5fd; background:#f5f3ff; transform:translateY(-1px); }

/* 原版竖版锯齿邮票；覆盖早期圆章与全站字号兼容规则。 */
#app .ubai-stamp { position:relative; display:block; flex:0 0 auto; width:80px; height:96px; color:#0f766e; font-family:Georgia,"Songti SC",serif; }
#app .ubai-stamp.is-large { width:96px; height:112px; }
#app .ubai-stamp .stamp-edge { position:absolute; display:block; inset:0; border:2px dashed currentColor; background:#fff; opacity:.8; box-shadow:0 4px 10px rgba(41,37,36,.16); -webkit-mask-image:radial-gradient(circle at 2px 2px,transparent 2px,#000 2px); -webkit-mask-size:10px 10px; -webkit-mask-position:-2px -2px; mask-image:radial-gradient(circle at 2px 2px,transparent 2px,#000 2px); mask-size:10px 10px; mask-position:-2px -2px; }
#app .ubai-stamp .stamp-inner { position:absolute; display:flex; inset:6px; flex-direction:column; align-items:center; justify-content:center; padding:4px; border:3px double currentColor; background:#f0fdfa; color:inherit; font-style:normal; }
#app .ubai-stamp .stamp-meta { position:absolute; top:6px; left:6px; right:6px; display:flex; justify-content:space-between; align-items:center; }
#app .ubai-stamp .stamp-meta b { font-family:"Chivo",sans-serif; font-size:6px; font-weight:900; line-height:1; letter-spacing:-.05em; opacity:.7; }
#app .ubai-stamp .stamp-meta b:last-child { font-family:ui-monospace,monospace; letter-spacing:0; }
#app .ubai-stamp .stamp-symbol { display:flex; flex:1; flex-direction:column; align-items:center; justify-content:center; padding-top:8px; }
#app .ubai-stamp .stamp-symbol svg { width:24px; height:24px; margin-bottom:5px; fill:none; stroke:currentColor; stroke-width:1.25; stroke-linecap:round; stroke-linejoin:round; }
#app .ubai-stamp.is-large .stamp-symbol svg { width:32px; height:32px; }
#app .ubai-stamp .stamp-symbol strong { color:inherit; font-size:10px; line-height:1; font-weight:700; letter-spacing:.13em; }
#app .ubai-stamp.is-large .stamp-symbol strong { font-size:12px; }
#app .ubai-stamp .stamp-inner > em { position:absolute; left:50%; bottom:-12px; min-width:88px; padding:3px 6px; transform:translateX(-50%) scale(.9); background:#92400e; color:#fffbeb; font:800 6px/1.2 Arial,sans-serif; letter-spacing:.1em; text-align:center; white-space:nowrap; }
#app .ubai-stamp-flame { color:#be123c; } #app .ubai-stamp-flame .stamp-inner { background:#fff1f2; }
#app .ubai-stamp-star { color:#4338ca; } #app .ubai-stamp-star .stamp-inner { background:#eef2ff; }
#app .ubai-stamp-coffee_collab { color:#92400e; } #app .ubai-stamp-coffee_collab .stamp-inner { background:#fffbeb; }
#app .bookstore-card .bookstore-stamp .ubai-stamp { position:absolute; right:0; bottom:0; transform:scale(.75); transform-origin:bottom right; }

/* 写下心事：卡片始终收在可视区域内，由卡片自身滚动。 */
#write-modal { align-items:center; overflow:hidden; padding:clamp(12px,2.5dvh,24px); }
#write-modal .write-modal-card {
  width:min(100%,640px);
  max-height:calc(100dvh - clamp(24px,5dvh,48px));
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
#write-modal .modal-header { position:relative; z-index:2; }
/* A quiet writing surface, with secondary information disclosed on request. */
#write-modal .bookstore-write-card { --compose-bg:#faf8f4; --compose-ink:#292524; --compose-muted:#6b645e; background:var(--compose-bg); color:var(--compose-ink); }
#write-modal .bookstore-write-card .modal-header { margin:0 0 24px; padding:0; background:none; color:inherit; }
#write-modal .eyebrow { color:var(--compose-muted); font-size:16px; }
#write-modal .icon-button { width:44px; min-width:44px; height:44px; flex:0 0 44px; border-radius:50%; background:transparent; color:inherit; border-color:transparent; }
#write-modal label { color:var(--compose-muted); font-size:16px; }
#write-modal textarea { min-height:180px; padding:18px 0; border:0; border-radius:0; background:transparent; color:inherit; box-shadow:none; font-size:18px; line-height:1.85; resize:vertical; }
#write-modal textarea::placeholder { color:var(--compose-muted); }
#write-modal .form-meta { margin-bottom:24px; color:var(--compose-muted); font-size:16px; gap:12px; }
#write-modal .form-meta #draft-status { display:block; }
#write-modal #char-count { white-space:nowrap; }
#write-modal .story-choice-trigger { min-height:52px; padding:10px 12px; grid-template-columns:26px minmax(0,1fr) 20px; gap:10px; border-radius:10px; box-shadow:none; background:transparent; }
#write-modal .story-choice-trigger-icon { width:26px; height:26px; background:transparent; }
#write-modal .story-choice-trigger-copy small { display:none; }
#write-modal .compose-extras { margin:22px 0; color:var(--compose-muted); font-size:16px; line-height:1.7; }
#write-modal .compose-extras summary { cursor:pointer; padding:8px 0; }
#write-modal .compose-extras label { display:block; margin-top:16px; }
#clear-story-draft { color:inherit; border:0; border-bottom:1px solid currentColor; background:none; padding:8px 0; font-size:16px; }
#write-modal .submit-button { background:var(--compose-ink); color:var(--compose-bg); box-shadow:none; min-height:52px; border-radius:12px; }
html[data-color-mode="dark"] #write-modal .bookstore-write-card { --compose-bg:#211f1c; --compose-ink:#f5f1e9; --compose-muted:#c0b8ad; }
html[data-color-mode="dark"] #write-modal input { background:#292622; color:#f5f1e9; border-color:#59524a; }
@media (max-width:650px) {
  #app #write-modal { top:var(--write-top,0px); bottom:auto; height:var(--write-height,100dvh); }
  #app #write-modal .write-modal-card { height:100%; max-height:100%; border-radius:0; scrollbar-gutter:auto; }
  #app #write-modal .bookstore-write-card .modal-header { top:0; margin:0 0 20px; padding:env(safe-area-inset-top) 0 12px; background:var(--compose-bg); }
  #app #write-modal textarea { min-height:150px; max-height:none; font-size:18px; }
  #app #write-modal .compose-submit { position:sticky; bottom:-20px; padding:12px 0 max(20px,env(safe-area-inset-bottom)); background:var(--compose-bg); }
}

@media (max-width:650px) {
  html.detail-scroll-locked,html.detail-scroll-locked body { overscroll-behavior:none; }
  #detail-modal { align-items:flex-start; padding:0; overscroll-behavior:none; }
  #detail-modal .modal-backdrop { touch-action:none; }
  #detail-modal .detail-card { width:100%; height:100dvh; max-height:100dvh; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y; }
  .bookstore-detail-capture { flex-direction:column; min-height:177.777vw; }
  .bookstore-analysis-panel,.bookstore-story-panel { box-sizing:border-box; width:100%; }
  .bookstore-analysis-panel { min-height:69.333vw; padding:calc(30px + env(safe-area-inset-top)) 24px 22px; }
  .bookstore-story-panel { min-height:108.444vw; padding:24px 22px max(22px,env(safe-area-inset-bottom)); }
  .bookstore-analysis-panel .analysis-copy > h3 { margin-bottom:18px; }
  .bookstore-analysis-panel .analysis-copy section small { display:none; }
  .bookstore-analysis-panel .analysis-copy section p { line-height:1.62; }
  .analysis-gradient { margin-bottom:14px; }
  .analysis-brand-footer { margin-top:14px; padding-top:12px; }
  .postmark-area { top:21px; right:19px; transform:scale(.78) rotate(2deg); transform-origin:top right; }
  .detail-story-copy { margin-top:91px; padding-right:0; }
  .detail-story-copy p { line-height:1.78; }
  .bookstore-detail-footer { margin-top:26px; padding-top:18px; }
  .bookstore-detail-footer { align-items:flex-start; flex-direction:column; }
  .detail-author-info > i,.detail-author-info time { display:none; }
  .detail-interaction { width:100%; align-items:flex-start; }
  .detail-buttons { width:100%; }
  .detail-buttons button { flex:1; justify-content:center; }
  .bookstore-detail-close { position:fixed; top:calc(12px + env(safe-area-inset-top)); right:12px; width:42px; min-width:42px; height:42px; aspect-ratio:1; flex:0 0 42px; padding:0; border-radius:50%; background:rgba(255,255,255,.08); color:#d6d3d1; line-height:1; }
  .delete-story-button { margin:12px auto calc(12px + env(safe-area-inset-bottom)); }
  .story-owner-actions { flex-wrap:wrap; margin-bottom:calc(12px + env(safe-area-inset-bottom)); }
  #write-modal { align-items:end; padding:0; }
  #write-modal .write-modal-card {
    width:100%;
    max-height:100dvh;
    padding:20px 18px max(20px,env(safe-area-inset-bottom));
    border-radius:20px 20px 0 0;
  }
  #write-modal .bookstore-write-card .modal-header {
    position:sticky;
    top:-20px;
    margin:-20px -18px 20px;
    padding:calc(16px + env(safe-area-inset-top)) 18px 16px;
  }
  #write-modal textarea { min-height:118px; max-height:32dvh; }
  .story-choice-dialog { position:fixed; align-items:end; padding:0; }
  .story-choice-sheet { width:100%; max-height:min(82dvh,680px); padding:12px 18px max(20px,env(safe-area-inset-bottom)); overflow-y:auto; border:0; border-radius:24px 24px 0 0; box-shadow:0 -24px 80px rgba(28,25,23,.3); animation-name:choice-sheet-mobile-in; }
  .story-choice-dialog.is-closing .story-choice-sheet { animation-name:choice-sheet-mobile-out; }
  .story-choice-handle { display:block; width:42px; height:5px; margin:0 auto 18px; border-radius:999px; background:#d6d3d1; }
  .story-choice-header h3 { font-size:1.45rem; }
  .story-choice-close { width:44px; height:44px; }
  .story-choice-option { min-height:96px; grid-template-columns:48px minmax(0,1fr) 26px; gap:12px; padding:14px 13px; }
  .story-choice-option-icon { width:48px; height:48px; }
  .story-choice-badge { grid-column:2; justify-self:start; margin-top:-1px; }
  .story-choice-check { grid-column:3; grid-row:1 / span 2; }
  .story-choice-trigger-copy small { white-space:normal; }
  @keyframes choice-sheet-mobile-in { from { opacity:.7; transform:translateY(100%); } }
  @keyframes choice-sheet-mobile-out { to { opacity:.7; transform:translateY(100%); } }
}

/* 移动端精修：策划署名轻量呈现、分享只保留微信提示，并固定所有关闭按钮为正圆。 */
@media (max-width:650px) {
  .bookstore-curated { grid-column:1/-1; justify-self:center; width:auto; max-width:100%; padding:3px 2px 6px; border:0; border-radius:0; background:transparent; color:#78716c; font:500 1rem/1.45 Georgia,"Songti SC",serif; letter-spacing:.04em; box-shadow:none; }
  .bookstore-curated span { margin-right:8px; color:#a855f7; font-size:.82rem; }
  .bookstore-curated strong { color:inherit; font-weight:500; }
  .share-copy-button,.share-divider { display:none; }
  .share-intro { margin-bottom:24px; }
  .wechat-share-note { margin-top:0; }
  .icon-button,.password-reset-close,.pricing-close,.share-close,.story-choice-close,.bookstore-detail-close {
    min-width:42px;
    width:42px;
    height:42px;
    aspect-ratio:1;
    flex:0 0 42px;
    padding:0;
    border-radius:50%;
    line-height:1;
  }
}

html[data-color-mode="dark"] .bookstore-write-card .story-choice-trigger { border-color:#4a4641; background:#272421; color:#f5f1e9; box-shadow:0 10px 28px rgba(0,0,0,.18); }
html[data-color-mode="dark"] .bookstore-write-card .story-choice-trigger:hover { border-color:#736b63; background:#2d2926; }
html[data-color-mode="dark"] .story-choice-trigger-copy small { color:#bdb6ad; }
html[data-color-mode="dark"] .story-choice-trigger-icon,html[data-color-mode="dark"] .story-choice-option-icon { background:linear-gradient(145deg,#362d45,#392a35); color:#d8b4fe; }
html[data-color-mode="dark"] .story-choice-sheet { border-color:#49443f; background:rgba(30,28,26,.98); color:#f5f1e9; }
html[data-color-mode="dark"] .story-choice-header h3,html[data-color-mode="dark"] .story-choice-option-copy strong { color:#f7f3eb; }
html[data-color-mode="dark"] .story-choice-note,html[data-color-mode="dark"] .story-choice-option-copy small { color:#c7c0b7; }
html[data-color-mode="dark"] .story-choice-close { border-color:#4a4641; background:#292623; color:#d6d0c7; }
html[data-color-mode="dark"] .story-choice-option { border-color:#48433e; background:#272421; color:#f5f1e9; box-shadow:0 8px 22px rgba(0,0,0,.16); }
html[data-color-mode="dark"] .story-choice-option:hover { border-color:#8b73aa; background:#2d282f; }
html[data-color-mode="dark"] .story-choice-option.is-selected { border-color:#a78bfa; background:linear-gradient(120deg,#312a39,#30262f); box-shadow:0 12px 30px rgba(0,0,0,.24),inset 0 0 0 1px rgba(196,181,253,.18); }
html[data-color-mode="dark"] .story-choice-check { border-color:#6b645e; }
html[data-color-mode="dark"] .story-choice-handle { background:#625b54; }

/* 最终级联：放在组件定义之后，确保明暗与移动端布局不被旧规则覆盖。 */
@media (min-width:901px) {
  .pricing-intro { max-width:none; white-space:nowrap; }
}

html[data-color-mode="dark"] .pricing-card { background:#171614; color:#f5f1e9; box-shadow:0 30px 100px rgba(0,0,0,.62); }
html[data-color-mode="dark"] .pricing-close { color:#d6d0c7; background:#292724; }
html[data-color-mode="dark"] .pricing-kicker { color:#c4b5fd; }
html[data-color-mode="dark"] .pricing-intro,
html[data-color-mode="dark"] .pricing-footnote { color:#c9c2b8; }
html[data-color-mode="dark"] .plan-card { border-color:#494540; background:#242220; color:#f7f3eb; }
html[data-color-mode="dark"] .plan-card.is-selected { border-color:#a78bfa; background:#28242e; box-shadow:0 18px 48px rgba(0,0,0,.36),0 0 0 1px rgba(167,139,250,.4); }
html[data-color-mode="dark"] .plan-card h3,
html[data-color-mode="dark"] .plan-price strong { color:#fffdf8; }
html[data-color-mode="dark"] .plan-card > p,
html[data-color-mode="dark"] .plan-price span { color:#bfb7ad; }
html[data-color-mode="dark"] .plan-card ul { color:#ddd6cc; }
html[data-color-mode="dark"] .plan-badge { background:#3b2c4b; color:#ddd0ff; }
html[data-color-mode="dark"] .plan-card button { border-color:#f1ece4; background:#f1ece4; color:#1c1917; }
html[data-color-mode="dark"] .plan-card:first-child button { border-color:#77706a; background:transparent; color:#f1ece4; }
html[data-color-mode="dark"] .plan-card button.payment-paused,html[data-color-mode="dark"] .plan-card button:disabled { border-color:#4c4843; background:#35322f; color:#aaa39a; }

@media (max-width:650px) {
  .bookstore-header { gap:10px; padding:14px 12px; }
  .bookstore-header-actions { display:grid; grid-template-columns:minmax(0,1fr) auto 44px; width:100%; gap:9px; align-items:center; }
  .bookstore-curated { grid-column:1/-1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .bookstore-support,.wall-account-button { width:100%; min-width:0; white-space:nowrap; }
  .wall-color-toggle { order:initial; width:44px; min-width:44px; padding:0; }
  .wall-account-button.is-guest { font-size:0; }
  .wall-account-button.is-guest::after { content:"登录"; font-size:1rem; }
  .pricing-card h2 { font-size:clamp(1.8rem,8.2vw,2.35rem); text-wrap:balance; }
  .pricing-intro { margin-top:12px; line-height:1.65; white-space:normal; text-wrap:pretty; }
  .plan-card > p { min-height:0; text-wrap:pretty; }
}
/* 登录、注册与密码找回：最终级联，保证夜间模式在桌面和移动端都有清晰层级。 */
html[data-color-mode="dark"] .reference-home { background:#121211; color:#f4f1eb; }
html[data-color-mode="dark"] .reference-home .login-panel { background:#181816; color:#f5f2ec; }
html[data-color-mode="dark"] .reference-home .login-heading h1,
html[data-color-mode="dark"] .auth-tab.active,
html[data-color-mode="dark"] .login-form label,
html[data-color-mode="dark"] .password-reset-card h2,
html[data-color-mode="dark"] .password-reset-brand { color:#f7f3eb; }
html[data-color-mode="dark"] .reference-home .login-heading p,
html[data-color-mode="dark"] .auth-tab,
html[data-color-mode="dark"] .forgot-button,
html[data-color-mode="dark"] .code-note,
html[data-color-mode="dark"] .reference-home .divider,
html[data-color-mode="dark"] .password-reset-intro,
html[data-color-mode="dark"] .password-reset-footnote { color:#bdb6ac; }
html[data-color-mode="dark"] .auth-tabs { border-color:#3b3834; }
html[data-color-mode="dark"] .auth-tab::after { background:#f3eee5; }
html[data-color-mode="dark"] .field-shell > svg { stroke:#aaa39a; }
html[data-color-mode="dark"] .field-shell input {
  border-color:#45413d; background:#242321; color:#f8f5ef;
  box-shadow:0 2px 7px rgba(0,0,0,.22);
}
html[data-color-mode="dark"] .field-shell input::placeholder { color:#9f988e; opacity:1; }
html[data-color-mode="dark"] .field-shell input:focus {
  border-color:#76706a; background:#2a2825; box-shadow:0 0 0 4px rgba(238,233,223,.08);
}
html[data-color-mode="dark"] .password-toggle { color:#aaa39a; }
html[data-color-mode="dark"] .enter-button { background:#f2ede4; color:#1c1917; box-shadow:0 13px 28px rgba(0,0,0,.34); }
html[data-color-mode="dark"] .enter-button:hover { background:#fffaf1; }
html[data-color-mode="dark"] .reference-home .divider::before,
html[data-color-mode="dark"] .reference-home .divider::after { background:#3c3935; }
html[data-color-mode="dark"] .social-login-button { border-color:#4a4641; background:#242321; color:#e9e4dc; box-shadow:0 2px 7px rgba(0,0,0,.2); }
html[data-color-mode="dark"] .social-login-button:hover { border-color:#625d56; background:#2a2825; }
html[data-color-mode="dark"] .social-login-button.is-disabled,
html[data-color-mode="dark"] .social-login-button.is-disabled:hover,
html[data-color-mode="dark"] .social-login-button.is-disabled:active { border-color:#373431; background:#211f1d; color:#aaa39a; opacity:.72; }
html[data-color-mode="dark"] .language-switch { border-color:#3f3b37; background:rgba(36,34,32,.82); color:#aaa39a; box-shadow:0 5px 18px rgba(0,0,0,.22); }
html[data-color-mode="dark"] .language-switch button { color:#aaa39a; }
html[data-color-mode="dark"] .language-switch button.active { color:#f5f2ec; }
html[data-color-mode="dark"] .language-switch i { background:#4a4641; }
html[data-color-mode="dark"] .password-reset-card { border:1px solid #3d3935; background:#1b1a18; color:#f4f1eb; box-shadow:0 34px 100px rgba(0,0,0,.62); }
html[data-color-mode="dark"] .password-reset-close { border-color:#46423e; background:#292724; color:#ddd7ce; }
html[data-color-mode="dark"] .password-reset-kicker { color:#c4b5fd; }
html[data-color-mode="dark"] .auth-feedback { color:#fca5a5; }

@media (max-width:900px) {
  html[data-color-mode="dark"] .reference-home .login-panel { box-shadow:0 -16px 42px rgba(0,0,0,.3); }
}

@media (max-width:560px) {
  .reference-home .login-heading p,
  .login-form label,
  .forgot-button,
  .language-switch button,
  .copyright { font-size:1rem; }
  .password-reset-card { width:calc(100% - 20px); max-height:calc(100dvh - 20px); }
}
.card-save-dialog { box-sizing:border-box; width:min(100%,540px); max-width:100%; height:100dvh; max-height:100dvh; margin:auto; padding:0; border:0; background:#faf8f4; color:#292524; overflow:hidden; }
.card-save-dialog[open] { display:flex; flex-direction:column; }
.card-save-dialog::backdrop { background:rgba(20,18,16,.65); }
.card-save-dialog header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:max(12px,env(safe-area-inset-top)) 20px 12px; flex-shrink:0; }
.card-save-dialog p { margin:0; font-size:16px; line-height:1.6; }
.card-save-close { flex:0 0 44px; width:44px; height:44px; border:0; border-radius:50%; background:transparent; color:inherit; font-size:28px; }
.card-save-image { min-height:0; flex:1; overflow:auto; overscroll-behavior:contain; padding:0 16px; -webkit-overflow-scrolling:touch; }
.card-save-image img { display:block; width:100%; height:auto; -webkit-touch-callout:default; user-select:auto; -webkit-user-select:auto; }
.card-save-dialog footer { padding:14px 20px max(18px,env(safe-area-inset-bottom)); text-align:center; flex-shrink:0; }
.card-save-system { margin-top:12px; min-height:48px; padding:10px 24px; border:0; border-radius:12px; background:#292524; color:#faf8f4; font-size:16px; }
.card-save-system[hidden] { display:none; }
html[data-color-mode="dark"] .card-save-dialog { background:#211f1c; color:#f5f1e9; }
html[data-color-mode="dark"] .card-save-system { background:#f5f1e9; color:#211f1c; }

/* Wall-only paper treatments: never target the detail/export capture. */
html[data-paper-time="morning"] .bookstore-grid .bookstore-card {
  /* Cool cotton: broad pale centre, fine crossed fibres. */
  background-image:repeating-linear-gradient(0deg,rgba(74,106,94,.055) 0 1px,transparent 1px 5px),repeating-linear-gradient(90deg,rgba(74,106,94,.035) 0 1px,transparent 1px 7px),radial-gradient(ellipse at 22% 12%,rgba(255,255,249,.85),rgba(224,244,234,.3) 58%,rgba(158,193,180,.24));
}
html[data-paper-time="afternoon"] .bookstore-grid .bookstore-card {
  /* Warm laid paper: horizontal grain and a sunlit diagonal. */
  background-image:repeating-linear-gradient(0deg,rgba(139,98,47,.075) 0 1px,transparent 1px 4px),linear-gradient(125deg,rgba(255,249,220,.7) 5%,rgba(243,202,125,.35) 55%,rgba(193,145,73,.26));
}
html[data-paper-time="evening"] .bookstore-grid .bookstore-card {
  /* Mottled rose paper: fine flecks over an asymmetric wash. */
  background-image:radial-gradient(circle,rgba(108,66,76,.10) .65px,transparent .9px),radial-gradient(ellipse at 100% 8%,rgba(255,222,188,.8),transparent 65%),linear-gradient(170deg,rgba(229,155,147,.26),rgba(172,134,165,.38));
  background-size:5px 7px,100% 100%,100% 100%;
}
html[data-paper-time="night"] .bookstore-grid .bookstore-card {
  /* Blue-grey linen: diagonal fibres and a soft pool of light. */
  background-image:repeating-linear-gradient(35deg,rgba(58,76,105,.065) 0 1px,transparent 1px 5px),repeating-linear-gradient(125deg,rgba(58,76,105,.035) 0 1px,transparent 1px 7px),radial-gradient(ellipse at 75% 25%,rgba(238,241,253,.68),rgba(158,178,206,.4) 70%,rgba(119,145,176,.32));
}
#wall-title > span { display:block; }
/* Keyboard changes only the outer viewport; the writer remains the one page scroller. */
@media (max-width:650px) {
  #app #write-modal { padding:0; align-items:start; transition:none; }
  #app #write-modal .write-modal-card {
    min-height:0; animation:none; transform:none; transition:none;
    overflow-anchor:none; scroll-behavior:auto; -webkit-overflow-scrolling:touch;
  }
  #app #write-modal textarea { height:180px; min-height:150px; max-height:none; resize:none; }
  #app #write-modal.is-writing .bookstore-write-card .modal-header,
  #app #write-modal.is-writing .compose-submit { position:static; }
}
@media (max-width:650px) {
  .bookstore-hero #wall-title { font-size:clamp(1.5rem,7.4vw,2.5rem); line-height:1.4; letter-spacing:-.04em; }
}
