@font-face{font-family:'Cormorant Garamond';font-weight:300;font-style:normal;src:url('fonts/CormorantGaramond-Light.ttf') format('truetype');font-display:block}
@font-face{font-family:'Cormorant Garamond';font-weight:300;font-style:italic;src:url('fonts/CormorantGaramond-LightItalic.ttf') format('truetype');font-display:block}
@font-face{font-family:'Cormorant Garamond';font-weight:400;font-style:normal;src:url('fonts/CormorantGaramond-Regular.ttf') format('truetype');font-display:block}
@font-face{font-family:'Cormorant Garamond';font-weight:400;font-style:italic;src:url('fonts/CormorantGaramond-Italic.ttf') format('truetype');font-display:block}
@font-face{font-family:'Cormorant Garamond';font-weight:500;font-style:normal;src:url('fonts/CormorantGaramond-Medium.ttf') format('truetype');font-display:block}
@font-face{font-family:'Cormorant Garamond';font-weight:500;font-style:italic;src:url('fonts/CormorantGaramond-MediumItalic.ttf') format('truetype');font-display:block}
@font-face{font-family:'Cormorant Garamond';font-weight:600;font-style:normal;src:url('fonts/CormorantGaramond-SemiBold.ttf') format('truetype');font-display:block}
@font-face{font-family:'Cormorant Garamond';font-weight:700;font-style:normal;src:url('fonts/CormorantGaramond-Bold.ttf') format('truetype');font-display:block}
@font-face{font-family:'ZCOOL XiaoWei';font-weight:400;font-style:normal;src:url('fonts/ZCOOLXiaoWei-Regular.ttf') format('truetype');font-display:block}
@font-face{font-family:'Marcellus SC';font-weight:400;font-style:normal;src:url('fonts/MarcellusSC-Regular.ttf') format('truetype');font-display:block}

/* ============================================================================
   VELVET v5 · Editorial Luxury (v25 Flutter 对齐版)
   灵感：TASCHEN / Phaidon / Hermès / Bottega Veneta / Rolls-Royce / 山本耀司
   原则：纯黑金 · 0 圆角 · 极致留白 · editorial 衬线 · 单列垂直流
   v25 同步: SpringTap / ScrollReveal stagger / GlowPulse / CinematicPage
   ============================================================================ */
:root{
  /* 暗金底色 · Dark Gold · Versace/Rolls-Royce/Tom Ford 方向
     不是灰黑、不是蓝黑 — 是带暖金底的炽热暗色 */
  --void: #050402;     /* 极深暖黑 · 微金底 */
  --char: #0C0A06;     /* 深暖棕黑 */
  --ink:  #16120C;     /* 暗金棕 */
  --edge: rgba(201,169,97,.08);
  --edge-strong: rgba(201,169,97,.22);

  --gold: #C9A961;
  --gold-light: #E8C879;
  --gold-deep: #8C7536;

  /* 金色阶梯 — 6 层 alpha */
  --gold-90: rgba(201,169,97,.90);
  --gold-70: rgba(201,169,97,.70);
  --gold-50: rgba(201,169,97,.50);
  --gold-30: rgba(201,169,97,.30);
  --gold-15: rgba(201,169,97,.15);
  --gold-08: rgba(201,169,97,.08);
  --gold-04: rgba(201,169,97,.04);

  --bone: #F5E6C8;       /* 主文本 — 暖象牙 */
  --bone-soft: #E8D4A0;  /* 略浅 */
  --ash:  #B8A060;       /* 次要文本 — muted gold */
  --shade:#8B7840;       /* 三级 — dark gold · AA 4.74:1 on --void */

  /* v16: 英文 Cormorant + 中文 ZCOOL XiaoWei (仿宋切角飘逸) 双字体 fallback
     这样 serif 应用到中英混排时，英文走 Cormorant，中文自动走 ZCOOL */
  --serif: 'Cormorant Garamond', 'ZCOOL XiaoWei', 'Noto Serif SC', serif;
  --sans:  'Inter', -apple-system, system-ui, sans-serif;
  --cn:        'ZCOOL XiaoWei', 'Noto Serif SC', 'Songti SC', serif;
  --cn-display:'ZCOOL XiaoWei', 'Noto Serif SC', 'Songti SC', serif;
  --cn-brush:  'ZCOOL XiaoWei', 'Noto Serif SC', cursive;

  /* ===== Type Scale v23 (Perfect Fourth 1.33, 拉开 9.7x 对比) ===== */
  --t-2xs: 11px;     /* caption / 时间戳 */
  --t-xs:  12px;     /* eyebrow / label / small meta */
  --t-sm:  14px;     /* nav / small button / 表格 */
  --t-md:  16px;     /* body text (iOS/Material 标准) */
  --t-lg:  21px;     /* input / 大按钮 / lead */
  --t-xl:  28px;     /* h3 · section title */
  --t-2xl: 38px;     /* h2 · card title */
  --t-3xl: 54px;     /* h1 · detail title / 价格 */
  --t-4xl: 76px;     /* logo · login mark */
  --t-5xl: 108px;    /* hero · splash mark */

  /* ===== Letter spacing ===== */
  --ls-tight: -0.01em;
  --ls-normal: 0;
  --ls-en-button: 0.16em;
  --ls-en-label: 0.18em;
  --ls-cn-display: 0.36em;
  --ls-cn-heading: 0.22em;
  --ls-cn-button: 0.28em;
  --ls-cn-label: 0.16em;
  --ls-cn-body: 0.04em;

  /* ===== Line height ===== */
  --lh-tight: 1;
  --lh-display: 1.05;
  --lh-heading: 1.2;
  --lh-body: 1.65;
  --lh-relaxed: 1.85;

  /* ===== Spacing scale (8px baseline) ===== */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 24px;
  --sp-6: 32px;
  --sp-7: 48px;
  --sp-8: 64px;
  --sp-9: 96px;
  --sp-10: 128px;

  --ease:  cubic-bezier(.2,.8,.2,1);

  /* ===== Elevation system (awesome-design-md · dark alpha · no color cast) ===== */
  --elevation-0: none;
  --elevation-1: 0 2px 4px rgba(0,0,0,.4);
  --elevation-2: 0 8px 24px rgba(0,0,0,.6);
  --elevation-3: 0 16px 48px rgba(0,0,0,.8);

  /* ===== Gold glow tokens (brand light effect · not elevation) ===== */
  --glow-sm: 0 0 12px rgba(201,169,97,.3);
  --glow-md: 0 0 24px rgba(201,169,97,.5);
  --glow-lg: 0 0 48px rgba(201,169,97,.7);

  /* ===== Motion three-tier (awesome-design-md · state transitions only) ===== */
  --motion-micro:  150ms ease-out;      /* hover / focus / active */
  --motion-normal: 300ms ease-in-out;   /* open / close / expand */
  --motion-macro:  500ms ease-out;      /* page / modal entrance */
}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{
  width:100%;height:100%;overflow:hidden;
  background:#050402;color:var(--bone);
  font-family:var(--sans);font-size:var(--t-md);line-height:1.6;
  font-weight:300;  /* Stripe-style feather-light */
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  font-feature-settings:'kern' 1, 'liga' 1, 'calt' 1, 'ss01' 1;
  text-rendering:optimizeLegibility;
}
/* v23: 所有大字 display 默认 tight kerning + 负字距（Notion/Stripe 启发） */
h1,h2,h3,.display-text{
  font-feature-settings:'kern' 1, 'liga' 1, 'dlig' 1;
  font-optical-sizing:auto;
}
/* v25 UI05: SpringTap 对齐 · 只给 :active 加 transition
   不给 button/a/.tab 全局加 transition · 否则会干扰 bottom sheet/modal 的
   transform:translateY 定位 · 导致"面板乱了" */
button:active,.tab:active,a:active{
  transform:scale(0.95);
  transition:transform var(--motion-micro);
}
/* v25 UI17: 纸纹噪点 · 修"回字糊成一团" bug
   - 原: opacity .06 + mix-blend-mode:overlay → 中文笔画密集区被扰动 · 回字糊
   - 新: opacity .022 + mix-blend-mode:plus-lighter → 只加光 · 不反转底色 · 不伤笔画
   - baseFrequency 2.4 → 1.6 让噪点纹理更疏松 · 中文笔画区间更干净 */
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:99999;
  opacity:.022;mix-blend-mode:plus-lighter;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.6' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* 金色环境光 — v17 增强 */
/* body::after 环境光 + #app::after vignette 已删除
   这两层 fixed pseudo-element + mix-blend-mode:screen 是页面切换闪的根因
   金色氛围改为直接写在 #app background 里 · 不额外加合成层 */

/* vignette 改为 #app background 的一部分 · 不单独伪元素 */
#app::after{
  content:none; /* 禁用 */
  background:radial-gradient(ellipse at center, transparent 40%, rgba(0,0,0,.45) 100%);
}
button,input,textarea{
  background:none;border:none;color:inherit;font:inherit;outline:none;
}
button{cursor:pointer}
input,textarea{caret-color:var(--gold)}
::placeholder{color:var(--shade)}
::selection{background:rgba(201,169,97,.3);color:var(--bone)}
img{display:block;max-width:100%;-webkit-user-drag:none}

/* ============== 容器 ============== */
#app{
  /* 手机上全屏 · 电脑/平板上居中模拟手机框 */
  position:relative;width:100%;max-width:520px;height:100%;
  margin:0 auto;overflow:hidden;
  display:flex;flex-direction:column;
  /* 暗金底色 · 效果合并到一处 · 不额外加伪元素合成层 */
  background:
    /* 顶部金色光源 (原 body::after 的效果) */
    radial-gradient(ellipse at 50% 0%, rgba(201,169,97,.18) 0%, rgba(201,169,97,.06) 20%, transparent 45%),
    /* 底部微反光 */
    radial-gradient(ellipse at 50% 100%, rgba(201,169,97,.08) 0%, transparent 30%),
    /* 电影 vignette 暗角 (原 #app::after 的效果) */
    radial-gradient(ellipse at center, transparent 40%, rgba(0,0,0,.4) 100%),
    /* 暖黑基底 */
    var(--void);
}

/* v25 ScrollReveal: feed 卡片首次加载逐个淡入
   用 CSS animation (只播一次 forwards) · 不用 transition (切页不重复)
   JS 在渲染卡片时给每个 .editorial-card 加 inline style animation-delay */
@keyframes cardReveal{
  from{opacity:0;transform:translateY(24px)}
  to{opacity:1;transform:translateY(0)}
}
.card-reveal{
  animation:cardReveal 500ms cubic-bezier(0.33,1,0.68,1) both;
}

/* ============== 通用 fleuron / 装饰条 ============== */
.fleuron{
  display:flex;align-items:center;justify-content:center;gap:20px;
  padding:32px;
}
.fleuron .ln{
  flex:1;max-width:80px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-50),transparent);
}
.fleuron .mk{
  font-family:var(--serif);font-size:var(--t-lg);color:var(--gold);
  opacity:.78;letter-spacing:3px;
  text-shadow:0 0 10px rgba(201,169,97,.4);
}
.fleuron .mk.big{font-size:var(--t-xl)}

/* ============== page-fleuron — 页面底部章节封底 ============== */
.page-fleuron{
  display:flex;flex-direction:column;align-items:center;
  padding:48px 32px 64px;
  gap:0;
}
.page-fleuron .pf-line-top{
  width:1px;height:36px;
  background:linear-gradient(180deg,transparent,rgba(201,169,97,.45));
  margin-bottom:16px;
}
.page-fleuron .pf-row{
  display:flex;align-items:center;gap:16px;
  width:100%;justify-content:center;
}
.page-fleuron .pf-ln{
  flex:1;max-width:72px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,169,97,.4),transparent);
}
.page-fleuron .pf-mk{
  font-family:var(--serif);font-size:var(--t-xl);
  color:var(--gold);opacity:.6;
  letter-spacing:4px;
  text-shadow:0 0 14px rgba(201,169,97,.5);
  line-height:1;
}
.page-fleuron .pf-caption{
  display:block;margin-top:16px;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:rgba(201,169,97,.35);
  letter-spacing:0.28em;
  text-transform:uppercase;
}

/* v17 hairline + diamond — 通用章节分隔 */
.hairline-diamond{
  display:flex;align-items:center;justify-content:center;
  margin:var(--sp-5) auto;
}
.hairline-diamond .ln{
  width:48px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.hairline-diamond .di{
  width:5px;height:5px;background:var(--gold);
  transform:rotate(45deg);margin:0 14px;
  box-shadow:0 0 10px rgba(201,169,97,.6);
}

/* ============== v17 金色枝叶 ornament 系统 ============== */
.ornament{
  display:flex;align-items:center;justify-content:center;
  gap:20px;margin:var(--sp-5) auto;pointer-events:none;
}
.ornament .ln{
  flex:0 0 64px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-70),transparent);
}
.ornament .ln.short{flex-basis:32px}
.ornament .leaf{
  font-family:var(--serif);font-weight:400;
  font-size:var(--t-xl);
  color:var(--gold);line-height:1;
  text-shadow:
    0 0 18px rgba(201,169,97,.6),
    0 0 8px rgba(201,169,97,.4);
}
.ornament .leaf.lg{font-size:var(--t-2xl)}
.ornament .leaf.sm{font-size:var(--t-md)}

/* 单边角落叶子装饰 */
.corner-leaf{
  position:absolute;width:48px;height:48px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:var(--t-2xl);
  color:var(--gold-70);line-height:1;
  text-shadow:0 0 14px rgba(201,169,97,.5);
  pointer-events:none;z-index:5;
}
.corner-leaf.tl{top:24px;left:24px}
.corner-leaf.tr{top:24px;right:24px;transform:scaleX(-1)}
.corner-leaf.bl{bottom:24px;left:24px;transform:scaleY(-1)}
.corner-leaf.br{bottom:24px;right:24px;transform:scale(-1,-1)}

/* 双叶分隔: leaf · ln · diamond · ln · leaf */
.ornament-rich{
  display:flex;align-items:center;justify-content:center;
  gap:16px;margin:var(--sp-6) auto;pointer-events:none;
}
.ornament-rich .ln{
  flex:0 0 48px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-70),transparent);
}
.ornament-rich .leaf{
  font-family:var(--serif);font-size:var(--t-xl);
  color:var(--gold);line-height:1;
  text-shadow:0 0 16px rgba(201,169,97,.5);
}
.ornament-rich .leaf.r{transform:scaleX(-1)}
.ornament-rich .di{
  width:5px;height:5px;background:var(--gold);
  transform:rotate(45deg);
  box-shadow:var(--glow-sm);
}

/* v17 双行 section title (中文 + 英文 italic) */
.section-title{
  text-align:center;margin:var(--sp-7) 0 var(--sp-5);
}
.section-title .cn{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--gold);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);line-height:1;
  text-shadow:0 0 16px rgba(201,169,97,.4);
}
.section-title .en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:var(--ls-en-label);
  text-transform:uppercase;
  margin-top:8px;display:block;opacity:.6;
}
/* ===== 手机适配 (≤430px 覆盖绝大多数手机) ===== */
@media(max-width:430px){
  /* splash */
  .splash-roman{letter-spacing:3px;margin-bottom:16px}
  .splash-line{margin:24px 0 12px}
  .splash-est{font-size:12px}
  .splash-status{bottom:12px}
  /* login logo 区压紧 */
  .login-eyebrow{font-size:8px;letter-spacing:0.2em;margin-bottom:8px}
  .login-mark{margin-top:0}
  .login-cn-mark{margin-top:8px}
  .login-hairline{margin:8px auto 10px}
  .login-tag{font-size:16px;margin-bottom:0}
  .login-tag-sub{font-size:10px;margin-bottom:12px}
  /* 表单更紧凑 */
  .field{margin-bottom:16px}
  .field input{font-size:16px;padding:6px 2px 10px}
  .field-label{font-size:12px;margin-bottom:6px}
  .cta{height:52px;margin-top:16px;font-size:13px}
  .mode-row{margin-bottom:12px}
  .mode-btn{font-size:12px;padding:12px 0}
  /* 角装饰缩小 */
  #login .corner-leaf{width:16px !important;height:16px !important}
  #login .corner-leaf.tl{top:6px;left:6px}
  #login .corner-leaf.tr{top:6px;right:6px}
  #login .corner-leaf.bl{bottom:6px;left:6px}
  #login .corner-leaf.br{bottom:6px;right:6px}
  /* legal 文字 */
  .legal{font-size:10px;margin-top:12px}
}

/* ===== 页面过渡动效 ===== */
.page{
  transition:opacity 280ms cubic-bezier(.2,.8,.2,1), transform 280ms cubic-bezier(.2,.8,.2,1);
  transform:translateY(8px);
}
.page.active{
  transform:translateY(0);
}

/* ===== 骨架屏 shimmer ===== */
@keyframes shimmer{
  0%{background-position:-400px 0}
  100%{background-position:400px 0}
}
.skeleton-card{
  margin:0 0 24px;
  padding:0 32px;
}
.skeleton-card .sk-cover{
  width:100%;aspect-ratio:4/5;border-radius:0;
  background:linear-gradient(90deg,var(--char) 0%,rgba(201,169,97,.08) 50%,var(--char) 100%);
  background-size:800px 100%;
  animation:shimmer 1.6s ease-in-out infinite;
}
.skeleton-card .sk-line{
  height:12px;margin-top:16px;border-radius:2px;
  background:linear-gradient(90deg,var(--char) 0%,rgba(201,169,97,.06) 50%,var(--char) 100%);
  background-size:800px 100%;
  animation:shimmer 1.6s ease-in-out infinite;
}
.skeleton-card .sk-line.short{width:60%}
.skeleton-card .sk-line.shorter{width:35%;margin-top:10px}

/* ===== iPhone safe area 补全 ===== */
#splash{padding-top:env(safe-area-inset-top,0)}
.header{padding-top:env(safe-area-inset-top,0)}

/* ===== 桌面/平板 模拟手机框 ===== */
@media(min-width:481px){
  body{background:#030201;display:flex;align-items:center;justify-content:center}
  #app{
    height:92vh;max-height:940px;
    border:1px solid rgba(201,169,97,.18);
    box-shadow:
      0 0 0 1px rgba(201,169,97,.08),
      0 0 80px rgba(201,169,97,.06),
      0 60px 120px rgba(0,0,0,.95);
  }
}

.pages{position:absolute;inset:0;overflow:hidden}
/* 页面切换 · opacity 0/1 · 无 transition · 页面始终在渲染树里
   display:none 的问题: 切回来时要从零建渲染树 → "闪一下才有画面"
   opacity:0 的页面已经 layout+paint 好了 · 切换只改合成层 opacity → 瞬间
   之前 opacity 闪是因为 body::after mix-blend-mode:screen · 已删 */
.page{
  position:absolute;inset:0;
  opacity:0;
  pointer-events:none;
}
.page.active{
  opacity:1;
  pointer-events:auto;
}
.scrollable{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.scrollable::-webkit-scrollbar{display:none}
/* scrollable 通用暖金渐变 · 顶部金光来自 header 余晖 · 底部微反光 */
#feed .scrollable,
#profile .scrollable,
#chats .scrollable,
#detail .scrollable{
  background:linear-gradient(180deg,
    rgba(201,169,97,.015) 0%,
    transparent 18%,
    transparent 80%,
    rgba(201,169,97,.008) 100%
  );
}

/* ============== Splash · editorial 慢入场 (v9) ============== */
#splash.page{
  background:
    radial-gradient(ellipse at 50% 36%, rgba(201,169,97,.18) 0%, transparent 38%),
    radial-gradient(ellipse at 50% 42%, #0A0600 0%, #000000 78%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  box-shadow:
    inset 0 0 0 1px rgba(201,169,97,.06),
    inset 0 0 160px rgba(0,0,0,.85),
    inset 0 -120px 100px -60px rgba(0,0,0,.7);
}
/* 顶部两侧 hairline 装饰 — 不再用方框 */
#splash::before{
  content:'';position:absolute;top:36px;left:50%;
  width:64px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  transform:translateX(-50%);opacity:.7;
  box-shadow:0 0 12px rgba(201,169,97,.4);
}
#splash::after{
  content:'';position:absolute;bottom:88px;left:50%;
  width:48px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  transform:translateX(-50%);opacity:.5;
}

.splash-roman{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);letter-spacing:6px;color:var(--gold);
  text-transform:uppercase;
  margin-bottom:32px;opacity:0;
  animation:fadeUp 1.4s var(--ease) .3s forwards;
  text-shadow:0 0 14px rgba(201,169,97,.4);
}
.splash-mark{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(56px,18vw,108px);letter-spacing:clamp(4px,3vw,16px);
  background:linear-gradient(180deg,#FDFAF2 0%,#F0D98A 18%,#E8C879 35%,#C9A961 58%,#8C7536 84%,#4A2E0A 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:
    drop-shadow(0 0 100px rgba(201,169,97,.4))
    drop-shadow(0 0 40px rgba(201,169,97,.25))
    drop-shadow(0 4px 20px rgba(201,169,97,.18));
  opacity:0;padding-left:16px;
  animation:letterSpread 2.4s var(--ease) .5s forwards;
}
@keyframes letterSpread{
  0%{opacity:0;letter-spacing:0;transform:translateY(8px)}
  60%{opacity:1}
  100%{opacity:1;letter-spacing:16px;transform:translateY(0)}
}
.splash-line{
  width:1px;height:0;
  background:linear-gradient(180deg,transparent 0%,var(--gold) 50%,transparent 100%);
  margin:48px 0 24px;
  animation:lineGrow 1.6s var(--ease) 1.2s forwards;
  position:relative;
}
.splash-line::before{
  content:'';position:absolute;top:50%;left:50%;
  width:6px;height:6px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);
  opacity:0;animation:diamondAppear .8s var(--ease) 2s forwards;
  box-shadow:var(--glow-md);
}
@keyframes lineGrow{to{height:72px}}
@keyframes diamondAppear{to{opacity:1}}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}

.splash-est{
  font-family:var(--serif);font-style:italic;font-size:var(--t-sm);
  color:var(--ash);letter-spacing:2px;
  opacity:0;animation:fadeUp 1.4s var(--ease) 1.5s forwards;
}
.splash-cn-mark{
  font-family:var(--cn);font-weight:300;
  font-size:clamp(13px,4vw,16px);letter-spacing:clamp(0.2em,3vw,0.52em);
  color:rgba(201,169,97,.6);text-align:center;
  margin-top:16px;padding-left:0.52em;
  opacity:0;animation:fadeUp 1.4s var(--ease) 1s forwards;
  text-shadow:0 0 16px rgba(201,169,97,.25);
}
.splash-cn{
  position:absolute;bottom:52px;left:0;right:0;text-align:center;
  font-family:var(--cn);font-size:clamp(13px,4vw,16px);letter-spacing:clamp(2px,1.5vw,6px);
  color:var(--gold);font-weight:300;opacity:0;
  animation:fadeUp 1.4s var(--ease) 2s forwards;
  text-shadow:0 0 18px rgba(201,169,97,.5);
  padding-left:8px;
}
.splash-cn.show{opacity:.85}
.splash-status{
  position:absolute;bottom:20px;left:0;right:0;text-align:center;
  font-family:var(--serif);font-style:italic;font-size:9px;
  color:var(--shade);letter-spacing:2px;
}

/* ============== Login · 编辑式 (v10) ============== */
#login.page{
  background:
    /* 顶部金色光晕 — 更强更集中 */
    radial-gradient(ellipse at 50% 5%, rgba(201,169,97,.30) 0%, rgba(201,169,97,.09) 25%, transparent 50%),
    /* 中心微暖 */
    radial-gradient(ellipse at 50% 50%, rgba(201,169,97,.04) 0%, transparent 40%),
    /* 底部深邃 */
    radial-gradient(ellipse at 50% 95%, rgba(8,4,0,.9) 0%, transparent 50%),
    /* 基底 — 纯黑暖底 */
    radial-gradient(ellipse at 50% 35%, #0A0600 0%, #000000 80%);
  padding:calc(env(safe-area-inset-top,0) + clamp(16px,4vh,40px)) clamp(20px,6vw,36px) calc(env(safe-area-inset-bottom,0) + 24px);
  display:flex;flex-direction:column;justify-content:flex-start;
  overflow-y:auto;overflow-x:hidden;
  overscroll-behavior:none;-webkit-overflow-scrolling:auto;
  scrollbar-width:none;
  box-shadow:
    inset 0 0 0 1px rgba(201,169,97,.1),
    inset 0 0 240px rgba(0,0,0,.92),
    inset 0 -160px 140px -60px rgba(0,0,0,.7);
}
/* 四角 L 角金色装饰 — Hermès/Bottega 风格
   ┌ tl    tr ┐
   └ bl    br ┘
   每个角只保留两条边 · 全部属性显式写死 · 不继承通用 .corner-leaf */
#login .corner-leaf{
  position:absolute !important;
  width:24px !important;height:24px !important;
  display:block !important;
  border:0 solid rgba(201,169,97,.30) !important;
  transform:none !important;
  font-size:0 !important;color:transparent !important;
  text-shadow:none !important;
  background:none !important;
  pointer-events:none;z-index:10;
}
#login .corner-leaf.tl{top:12px;left:12px;border-top-width:1px !important;border-left-width:1px !important}
#login .corner-leaf.tr{top:12px;right:12px;border-top-width:1px !important;border-right-width:1px !important}
#login .corner-leaf.bl{bottom:12px;left:12px;border-bottom-width:1px !important;border-left-width:1px !important}
#login .corner-leaf.br{bottom:12px;right:12px;border-bottom-width:1px !important;border-right-width:1px !important}
.cta{flex-shrink:0;min-height:64px}
/* 顶部 hairline + 底部 hairline 装饰 */
#login::before{
  content:'';position:absolute;top:28px;left:50%;
  width:100px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,169,97,.8),var(--gold),rgba(201,169,97,.8),transparent);
  transform:translateX(-50%);
  box-shadow:0 0 18px rgba(201,169,97,.55),0 0 6px rgba(201,169,97,.8);
}
#login::after{
  content:'';position:absolute;bottom:20px;left:50%;
  width:64px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,169,97,.5),transparent);
  transform:translateX(-50%);
  box-shadow:0 0 10px rgba(201,169,97,.3);
}
/* 底部装饰光晕 */
.login-aura{
  position:absolute;left:50%;bottom:-180px;
  width:420px;height:420px;
  background:radial-gradient(circle, rgba(201,169,97,.22) 0%, rgba(201,169,97,.08) 40%, transparent 65%);
  transform:translateX(-50%);pointer-events:none;
  filter:blur(40px);
}
/* 顶部金色 logo 光晕 */
.login-aura::after{
  content:'';position:absolute;left:50%;top:-280px;
  width:320px;height:320px;
  background:radial-gradient(circle, rgba(201,169,97,.16) 0%, transparent 60%);
  transform:translateX(-50%);
  filter:blur(28px);
}

/* Logo 上方装饰 ornament */
.ornament-top{
  display:flex;align-items:center;justify-content:center;gap:16px;
  margin-bottom:24px;
}
.ornament-top .o-line{
  width:48px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  opacity:.8;
}
.ornament-top .o-diamond{
  width:6px;height:6px;background:var(--gold);
  transform:rotate(45deg);
  box-shadow:0 0 14px rgba(201,169,97,.7);
}

/* v26 · Login logo 区新增元素 */
.login-eyebrow{
  font-family:var(--serif);font-style:normal;font-weight:400;
  font-size:9px;letter-spacing:0.36em;
  color:rgba(201,169,97,.38);text-align:center;
  text-transform:uppercase;
  margin-bottom:var(--sp-4);
  padding-left:0.36em;
}
.login-hairline{
  width:100%;max-width:160px;height:1px;
  margin:16px auto 20px;
  background:linear-gradient(90deg,transparent,rgba(201,169,97,.5),rgba(201,169,97,.8),rgba(201,169,97,.5),transparent);
  position:relative;
}
.login-hairline::before{
  content:'';position:absolute;left:50%;top:50%;
  width:5px;height:5px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);
  box-shadow:0 0 12px rgba(201,169,97,.8),0 0 24px rgba(201,169,97,.4);
}
.login-tag-sub{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:var(--t-xs);letter-spacing:0.2em;
  color:var(--ash);text-align:center;
  margin-top:8px;margin-bottom:var(--sp-5);
  opacity:.5;
}

/* ── 金色絮状粒子 · ambient-dust (全局可复用) ──
   仅用 transform + opacity · GPU compositor path · 不触发 layout
   初始 opacity:.01 避免首帧闪烁 · pointer-events:none 不影响交互 */
.dust,.ambient-dust{
  position:absolute;inset:0;pointer-events:none;
  overflow:hidden;z-index:0;
}
.dust i,.ambient-dust i{
  position:absolute;
  width:6px;height:6px;
  background:radial-gradient(circle, rgba(232,200,121,1) 0%, rgba(201,169,97,.5) 40%, transparent 70%);
  border-radius:50%;
  opacity:.5;
  box-shadow:0 0 16px 4px rgba(201,169,97,.35), 0 0 32px 8px rgba(201,169,97,.12);
  box-shadow:0 0 5px rgba(201,169,97,.45);
  animation:dustFloat 16s var(--ease) infinite;
  will-change:transform,opacity;
}
/* login 页粒子 — 8 颗 · 低透高光 */
.dust i:nth-child(1){left:12%;top:20%;animation-delay:0s}
.dust i:nth-child(2){left:84%;top:18%;animation-delay:1.2s;width:1px;height:1px}
.dust i:nth-child(3){left:25%;top:65%;animation-delay:2.5s}
.dust i:nth-child(4){left:78%;top:72%;animation-delay:3.8s;width:1px;height:1px}
.dust i:nth-child(5){left:50%;top:8%;animation-delay:5s}
.dust i:nth-child(6){left:18%;top:88%;animation-delay:6.5s}
.dust i:nth-child(7){left:88%;top:55%;animation-delay:8s;width:3px;height:3px}
.dust i:nth-child(8){left:8%;top:42%;animation-delay:9.5s;width:1px;height:1px}

/* ambient-dust · 每页 6-8 颗 · 更克制的位置分布 */
/* 粒子分 3 档: 大光斑(10px) · 中(6px) · 小(3px) · 像阳光浮尘 */
.ambient-dust i:nth-child(1){left:12%;top:20%;animation-delay:0s;width:10px;height:10px;opacity:.35;box-shadow:0 0 20px 6px rgba(201,169,97,.4)}
.ambient-dust i:nth-child(2){left:85%;top:30%;animation-delay:3s;width:4px;height:4px;opacity:.6}
.ambient-dust i:nth-child(3){left:25%;top:55%;animation-delay:6s;width:8px;height:8px;opacity:.3;box-shadow:0 0 16px 4px rgba(201,169,97,.35)}
.ambient-dust i:nth-child(4){left:70%;top:70%;animation-delay:9s;width:3px;height:3px;opacity:.7}
.ambient-dust i:nth-child(5){left:50%;top:15%;animation-delay:2s;width:6px;height:6px;opacity:.45;box-shadow:0 0 12px 3px rgba(201,169,97,.3)}
.ambient-dust i:nth-child(6){left:60%;top:82%;animation-delay:12s;width:3px;height:3px;opacity:.55}
.ambient-dust i:nth-child(7){left:35%;top:42%;animation-delay:7s;width:12px;height:12px;opacity:.2;box-shadow:0 0 24px 8px rgba(201,169,97,.3)}
.ambient-dust i:nth-child(8){left:80%;top:48%;animation-delay:5s;width:4px;height:4px;opacity:.5}

/* 每个页面的粒子偏移 · 不同位置+不同节奏 · 不是复制粘贴感 */
#chats .ambient-dust i{animation-duration:20s}
#chats .ambient-dust i:nth-child(1){left:92%;top:8%}
#chats .ambient-dust i:nth-child(3){left:5%;top:70%}
#chats .ambient-dust i:nth-child(7){left:50%;top:25%}

#profile .ambient-dust i{animation-duration:22s}
#profile .ambient-dust i:nth-child(1){left:75%;top:12%}
#profile .ambient-dust i:nth-child(3){left:10%;top:35%}
#profile .ambient-dust i:nth-child(5){left:85%;top:60%}
#profile .ambient-dust i:nth-child(7){left:20%;top:80%}

#detail .ambient-dust i{animation-duration:18s}
#detail .ambient-dust i:nth-child(1){left:90%;top:5%}
#detail .ambient-dust i:nth-child(3){left:8%;top:45%}

#chat .ambient-dust i{animation-duration:24s}
#chat .ambient-dust i:nth-child(1){left:15%;top:90%}
#chat .ambient-dust i:nth-child(5){left:80%;top:10%}

#search .ambient-dust i{animation-duration:19s}
#search .ambient-dust i:nth-child(2){left:10%;top:40%}
#search .ambient-dust i:nth-child(6){left:90%;top:70%}

#wallet .ambient-dust i{animation-duration:21s}
#wallet .ambient-dust i:nth-child(1){left:50%;top:5%}
#wallet .ambient-dust i:nth-child(7){left:15%;top:60%}

#orders .ambient-dust i{animation-duration:23s}
#orders .ambient-dust i:nth-child(3){left:85%;top:20%}

#favorites .ambient-dust i{animation-duration:17s}
#favorites .ambient-dust i:nth-child(1){left:5%;top:30%}
#favorites .ambient-dust i:nth-child(5){left:90%;top:55%}

@keyframes dustFloat{
  0%{opacity:.2;transform:translateY(0) translateX(0) scale(1)}
  20%{opacity:.65;transform:translateY(-20px) translateX(10px) scale(1.3)}
  40%{opacity:.75;transform:translateY(-45px) translateX(-8px) scale(0.9)}
  60%{opacity:.55;transform:translateY(-60px) translateX(14px) scale(1.15)}
  80%{opacity:.3;transform:translateY(-75px) translateX(-5px) scale(0.85)}
  100%{opacity:.15;transform:translateY(-90px) translateX(0) scale(1)}
}
.login-roman{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--gold);letter-spacing:var(--ls-en-label);
  text-align:center;text-transform:uppercase;
  text-shadow:0 0 14px rgba(201,169,97,.4);
}
.login-mark{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(48px, 16vw, 68px);
  letter-spacing:clamp(0.12em,2vw,0.24em);text-align:center;
  background:linear-gradient(180deg,#FDFAF2 0%,#F0D98A 18%,#E8C879 32%,#C9A961 52%,#8C7536 80%,#4A2E0A 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  margin-top:var(--sp-1);
  padding-left:0.24em;line-height:0.92;
  filter:
    drop-shadow(0 0 60px rgba(201,169,97,.45))
    drop-shadow(0 0 24px rgba(201,169,97,.3))
    drop-shadow(0 2px 12px rgba(201,169,97,.22));
}
.login-line{
  width:56px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  margin:var(--sp-4) auto var(--sp-3);position:relative;
}
.login-line::before{
  content:'';position:absolute;top:50%;left:50%;
  width:5px;height:5px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);
  box-shadow:0 0 10px rgba(201,169,97,.6);
}
/* Logo 下中文副标 */
.login-cn-mark{
  font-family:var(--cn);font-weight:300;
  font-size:clamp(13px,4vw,16px);
  letter-spacing:clamp(0.2em,3vw,0.52em);
  color:rgba(201,169,97,.55);text-align:center;
  margin-top:12px;padding-left:0.52em;
  text-transform:uppercase;
  text-shadow:0 0 20px rgba(201,169,97,.25);
}
.login-tag{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-lg);
  color:var(--bone);text-align:center;
  letter-spacing:0.28em;
  margin-bottom:var(--sp-1);
  text-shadow:0 0 32px rgba(201,169,97,.35);
  padding-left:0.28em;line-height:var(--lh-display);
  /* 主诗句用偏白 — 和 VELVET 金色形成明暗层次 */
  background:linear-gradient(180deg,#F5E6C8 0%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}
.login-tag-en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--ash);text-align:center;
  letter-spacing:0.22em;
  text-transform:uppercase;
  margin-bottom:var(--sp-6);
  opacity:.5;
}
/* 密码 reveal */
.pw-row{position:relative;display:flex;align-items:flex-end}
.pw-row input{flex:1;padding-right:64px}
.pw-eye{
  position:absolute;right:0;bottom:8px;
  font-family:var(--cn);font-weight:300;font-size:var(--t-sm);
  color:var(--gold);background:var(--gold-08);
  border:1px solid var(--gold-50);
  padding:8px 16px;cursor:pointer;
  letter-spacing:var(--ls-cn-button);
  transition:all var(--motion-normal);
  z-index:2;line-height:1;
}
.pw-eye:hover{color:var(--void);background:var(--gold);border-color:var(--gold)}
.pw-eye .eye-off{display:none}
.pw-eye.on{background:var(--gold-15);color:var(--gold-light)}
.pw-eye.on .eye-on{display:none}
.pw-eye.on .eye-off{display:inline}

/* ===== mode 切换（登录/注册） ===== */
.mode-row{
  display:flex;justify-content:center;gap:0;
  border-top:1px solid rgba(201,169,97,.22);
  border-bottom:1px solid rgba(201,169,97,.22);
  margin-bottom:var(--sp-6);position:relative;
}
.mode-row::before,.mode-row::after{
  content:'';position:absolute;left:50%;
  width:5px;height:5px;background:var(--gold);
  transform:translateX(-50%) rotate(45deg);
  box-shadow:0 0 8px rgba(201,169,97,.6);
}
.mode-row::before{top:-2.5px}
.mode-row::after{bottom:-2.5px}
.mode-btn{
  flex:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:4px;
  height:64px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  letter-spacing:var(--ls-cn-button);
  text-indent:var(--ls-cn-button);
  color:rgba(139,126,92,.45);
  position:relative;line-height:1;
  transition:all var(--motion-normal);
}
.mode-btn+.mode-btn{border-left:1px solid rgba(201,169,97,.12)}
.mode-btn.on{
  color:var(--gold);
  text-shadow:0 0 20px rgba(201,169,97,.55);
}
.mode-btn.on::after{
  content:'';position:absolute;left:50%;bottom:-1px;
  width:40px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  transform:translateX(-50%);
  box-shadow:var(--glow-sm);
}
.mode-btn .en{
  display:block;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:9px;text-transform:uppercase;
  letter-spacing:0.22em;text-indent:0.22em;
  opacity:.4;
  transition:all var(--motion-normal);
}
.mode-btn.on .en{opacity:.6;color:var(--gold)}

/* ===== input 字段 ===== */
.field{margin-bottom:var(--sp-6);position:relative}
.field-label{
  display:flex;align-items:baseline;gap:12px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  letter-spacing:var(--ls-cn-label);
  color:var(--gold);opacity:.85;
  margin-bottom:var(--sp-3);
  padding-left:2px;
  transition:all var(--motion-normal);
  line-height:1;
}
.field-label .en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-en-label);
  opacity:.55;text-transform:uppercase;
}
.field.focused .field-label{opacity:1;color:var(--gold-light)}
.field input{
  width:100%;font-family:var(--serif);font-weight:400;
  font-size:var(--t-lg);
  color:var(--bone);padding:8px 2px 16px;
  letter-spacing:0.02em;
  border-bottom:1px solid var(--gold-30);
  transition:all var(--motion-normal);
  background:transparent;line-height:var(--lh-display);
}
.field input:focus{
  border-bottom-color:var(--gold);
  box-shadow:0 1px 0 rgba(201,169,97,.7),0 12px 32px -16px rgba(201,169,97,.35);
  background:linear-gradient(180deg,transparent 0%,rgba(201,169,97,.03) 100%);
}
.field input::placeholder{
  color:var(--gold-30);font-style:italic;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);letter-spacing:0.06em;
}

/* ===== Field validation states (v28) ===== */
.field.valid input{
  border-bottom-color:rgba(120,160,100,.55);
  box-shadow:0 1px 0 rgba(120,160,100,.3);
}
.field.invalid input{
  border-bottom-color:rgba(180,80,80,.5);
  box-shadow:0 1px 0 rgba(180,80,80,.25);
}
.field.invalid .field-label{color:rgba(200,110,100,.8)}
.field-hint{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:rgba(200,110,100,.7);
  letter-spacing:var(--ls-cn-label);
  margin-top:var(--sp-2);
  min-height:16px;
  transition:color var(--motion-micro),opacity var(--motion-micro);
}
.field.valid .field-hint{color:rgba(120,160,100,.6)}

/* ===== CTA ===== */
.cta{
  display:flex;align-items:center;justify-content:center;
  width:100%;height:68px;
  margin-top:var(--sp-5);
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  letter-spacing:0.36em;
  text-indent:0.36em;
  color:var(--gold);
  background:linear-gradient(180deg,rgba(201,169,97,.1) 0%,rgba(201,169,97,.04) 100%);
  border:1px solid rgba(201,169,97,.8);
  cursor:pointer;position:relative;line-height:1;
  transition:all var(--motion-macro);
  box-shadow:
    0 1px 0 rgba(255,255,255,.06) inset,
    0 -1px 0 rgba(0,0,0,.4) inset,
    0 0 40px -8px rgba(201,169,97,.45),
    0 24px 48px -24px rgba(0,0,0,.9);
  overflow:hidden;
}
.cta::before{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,var(--gold-light) 0%,var(--gold) 50%,var(--gold-deep) 100%);
  transform-origin:bottom;transform:scaleY(0);
  transition:transform var(--motion-macro);z-index:-1;
}
.cta::after{
  content:'';position:absolute;top:0;left:-100%;
  width:100%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent);
  transition:left var(--motion-macro);
}
.cta:hover{color:var(--void)}
.cta:hover::before{transform:scaleY(1)}
.cta:hover::after{left:100%}
.cta:active{transform:scale(.99)}
.cta[data-loading="true"]{color:var(--ash);pointer-events:none;opacity:.6}

.legal{
  margin-top:20px;text-align:center;
  font-family:var(--serif);font-style:italic;font-weight:300;font-size:var(--t-xs);
  color:var(--gold);letter-spacing:0.16em;line-height:1.6;opacity:.4;
}
.legal span{font-family:var(--serif);font-style:italic;letter-spacing:1px}

/* ============== Header（顶部极简文字 nav） ============== */
.header{
  position:absolute;top:0;left:0;right:0;z-index:50;
  padding:32px 32px 20px;
  background:
    linear-gradient(180deg,
      rgba(0,0,0,.99) 0%,
      rgba(0,0,0,.96) 55%,
      rgba(0,0,0,.65) 82%,
      transparent 100%);
  backdrop-filter:blur(16px) saturate(1.4);
  -webkit-backdrop-filter:blur(16px) saturate(1.4);
  box-shadow:
    0 1px 0 rgba(201,169,97,.08),
    0 -1px 0 rgba(201,169,97,.04) inset;
}
.header-row{display:flex;align-items:center}
.header-mark{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-xl);letter-spacing:8px;padding-left:8px;
  background:linear-gradient(180deg,#FDFAF2 0%,#E8C879 45%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 28px rgba(201,169,97,.55));
}
.header-est{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--gold);opacity:.75;
  letter-spacing:0.28em;
  margin-left:16px;padding-left:16px;
  border-left:1px solid var(--gold-30);
  line-height:1;
}
.header-spacer{flex:1}
.header-link{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);letter-spacing:0.24em;
  color:var(--gold);opacity:.85;
  margin-left:20px;
  min-width:44px;min-height:44px;
  padding:0 16px;
  display:inline-flex;align-items:center;justify-content:center;
  background:none;border:1px solid var(--gold-30);
  cursor:pointer;
  transition:all var(--motion-normal);position:relative;line-height:1;
}
.header-link:hover,.header-link:active{
  opacity:1;border-color:var(--gold);
  text-shadow:0 0 16px rgba(201,169,97,.7);
  background:rgba(201,169,97,.1);
  box-shadow:var(--glow-sm);
}
.header-link.has-dot::after{
  content:'';position:absolute;top:-2px;right:-8px;
  width:5px;height:5px;background:var(--gold);
  border-radius:50%;
  display:none;
}
.header-link.has-dot.show::after{display:block}
.header-deco{
  font-family:var(--serif);font-size:var(--t-lg);
  color:var(--gold-70);line-height:1;
  text-shadow:
    0 0 20px rgba(201,169,97,.7),
    0 0 40px rgba(201,169,97,.3);
  margin-left:auto;
  animation:headerDecoBreath 4s ease-in-out infinite;
}
@keyframes headerDecoBreath{
  0%,100%{opacity:.7;text-shadow:0 0 20px rgba(201,169,97,.7),0 0 40px rgba(201,169,97,.3)}
  50%{opacity:1;text-shadow:0 0 26px rgba(201,169,97,.95),0 0 52px rgba(201,169,97,.5)}
}

.header-line{
  position:absolute;left:24px;right:24px;bottom:0;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-30),transparent);
}

/* ============== Feed · 单列编辑流（不再 masonry） ============== */
/* 页面金色氛围 · 只 1 层 gradient · 轻量不闪 */
#feed,#chats,#profile,#favorites,#orders,#wallet,#search,#notifications,#admin{
  background:
    radial-gradient(ellipse at 50% 0%, rgba(201,169,97,.12) 0%, transparent 50%),
    var(--void);
}
.feed-content{padding:96px 0 120px}
.feed-loading{
  text-align:center;padding:80px 0 60px;
  display:flex;flex-direction:column;align-items:center;gap:20px;
  font-family:var(--serif);font-style:italic;font-size:var(--t-xs);
  color:var(--ash);letter-spacing:3px;text-transform:uppercase;
}
/* v27: feed loading 金色旋转菱形指示器 */
.feed-loading::before{
  content:'';
  display:block;
  width:18px;height:18px;
  background:var(--gold);
  transform:rotate(45deg);
  box-shadow:
    0 0 20px rgba(201,169,97,.8),
    0 0 40px rgba(201,169,97,.4);
  animation:feedLoadingPulse 1.4s ease-in-out infinite;
}
@keyframes feedLoadingPulse{
  0%,100%{
    transform:rotate(45deg) scale(1);
    opacity:.7;
    box-shadow:0 0 14px rgba(201,169,97,.6),0 0 28px rgba(201,169,97,.3);
  }
  50%{
    transform:rotate(45deg) scale(1.35);
    opacity:1;
    box-shadow:0 0 24px rgba(201,169,97,.95),0 0 48px rgba(201,169,97,.55);
  }
}

/* ============== v24 · publish 同城坐标采集 ============== */
.pub-geo-status{
  display:flex;align-items:center;gap:12px;
  padding:16px 16px;margin-top:12px;
  background:rgba(245,230,211,.04);
  border:.8px solid rgba(201,169,97,.45);
}
.pub-geo-status .g-icon{
  font-family:var(--serif);font-size:var(--t-lg);color:var(--gold);
  text-shadow:0 0 8px rgba(201,169,97,.5);
}
.pub-geo-status .g-text{
  flex:1;font-family:var(--serif);font-style:italic;
  font-size:var(--t-xs);letter-spacing:1.5px;
  color:var(--ash);
}
.pub-geo-status .g-action{
  background:none;border:none;cursor:pointer;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);letter-spacing:3px;
  color:var(--gold);padding:4px 12px;
}

/* ============== v24 · feed 子 tab（全部 / 同城）+ 定位 gate ============== */
.feed-subtabs{
  display:flex;justify-content:center;gap:0;
  padding:28px 0 36px;
  margin-bottom:8px;
  border-bottom:1px solid rgba(201,169,97,.1);
  position:relative;
}
.feed-subtabs::before{
  content:'';position:absolute;left:50%;top:50%;
  width:1px;height:20px;
  background:linear-gradient(180deg,transparent,rgba(201,169,97,.35),transparent);
  transform:translate(-50%,-50%);
}
.feed-subtab{
  background:none;border:none;cursor:pointer;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);letter-spacing:0.32em;padding-left:0.32em;
  color:rgba(139,126,92,.45);
  padding:8px 32px;position:relative;
  transition:all var(--motion-normal);
  display:inline-flex;align-items:center;gap:8px;
}
.feed-subtab .dot{
  display:inline-block;width:4px;height:4px;border-radius:50%;
  background:var(--gold);
  box-shadow:0 0 8px rgba(201,169,97,.6);
  margin-right:0;
}
.feed-subtab.on{
  color:var(--gold);
  text-shadow:0 0 16px rgba(201,169,97,.45);
}
.feed-subtab.on::after{
  content:'';position:absolute;left:50%;bottom:-1px;
  transform:translateX(-50%);
  width:32px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  box-shadow:0 0 10px rgba(201,169,97,.65);
}
.feed-geo-gate{
  text-align:center;padding:80px 32px 100px;
}
.feed-geo-gate .g-icon{
  font-family:var(--serif);font-size:42px;color:var(--gold);
  opacity:.7;line-height:1;margin-bottom:24px;
  text-shadow:0 0 24px rgba(201,169,97,.4);
}
.feed-geo-gate .g-title{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-lg);letter-spacing:6px;
  color:var(--gold);margin-bottom:16px;
}
.feed-geo-gate .g-sub{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);color:var(--ash);
  letter-spacing:2px;line-height:1.85;
  margin-bottom:32px;
}
.feed-geo-gate .g-btn{
  background:rgba(201,169,97,.08);
  border:1px solid var(--gold);
  color:var(--gold);
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);letter-spacing:6px;
  padding:16px 40px;cursor:pointer;
  transition:all var(--motion-normal);
}
.feed-geo-gate .g-btn:hover{
  background:var(--gold);color:var(--void);
}
/* 距离徽章（同城专用，金色描边 + 微光） */
.dist-badge{
  position:absolute;top:18px;right:18px;z-index:5;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);letter-spacing:1px;
  color:var(--gold);
  background:rgba(10,0,0,.78);
  border:.6px solid rgba(201,169,97,.6);
  padding:4px 12px;
  box-shadow:0 0 12px rgba(201,169,97,.18);
}
.feed-list{display:flex;flex-direction:column;gap:0}
.feed-back-top{
  position:fixed;right:20px;bottom:120px;z-index:100;
  width:48px;height:48px;
  background:rgba(10,0,0,.85);
  border:1px solid var(--gold);
  color:var(--gold);
  font-family:var(--serif);font-weight:400;font-size:var(--t-xl);
  line-height:1;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  box-shadow:var(--elevation-2), var(--glow-sm);
  cursor:pointer;
  opacity:0;transform:translateY(20px);pointer-events:none;
  transition:all var(--motion-normal);
}
.feed-back-top.show{opacity:1;transform:translateY(0);pointer-events:auto}
.feed-end-hint{
  padding:var(--sp-7) var(--sp-6) var(--sp-5);
  text-align:center;display:none;
}
.feed-end-hint.show{display:block}
.feed-end-hint .end-text{
  margin-top:var(--sp-3);
  font-family:var(--cn);font-weight:300;font-style:italic;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);
  opacity:.55;
}
.feed-back-top:hover{
  background:var(--gold);color:var(--void);
  box-shadow:0 14px 40px rgba(201,169,97,.5);
}
.feed-empty{
  text-align:center;
  padding:120px var(--sp-6) 160px;
  display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);
}
/* v27: 大装饰符号 + 强 glow */
.feed-empty::before{
  content:'❦';
  font-family:var(--serif);font-size:var(--t-3xl);
  color:var(--gold);
  line-height:1;
  text-shadow:
    0 0 28px rgba(201,169,97,.75),
    0 0 56px rgba(201,169,97,.35),
    0 0 90px rgba(201,169,97,.15);
  animation:emptyOrnamentBreath 3.5s ease-in-out infinite;
  margin-bottom:var(--sp-3);
}
@keyframes emptyOrnamentBreath{
  0%,100%{opacity:.7;text-shadow:0 0 28px rgba(201,169,97,.75),0 0 56px rgba(201,169,97,.35)}
  50%{opacity:1;text-shadow:0 0 36px rgba(201,169,97,.95),0 0 72px rgba(201,169,97,.5),0 0 110px rgba(201,169,97,.2)}
}
/* 装饰横线 */
.feed-empty::after{
  content:'';
  display:block;
  width:80px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-50),transparent);
  margin-top:var(--sp-4);
  order:10;
}
.feed-empty-eyebrow{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--gold);opacity:.8;
  letter-spacing:var(--ls-en-label);
  text-transform:uppercase;line-height:1;
  margin-top:var(--sp-2);
}
.feed-empty-cn{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xl);
  color:var(--gold);
  letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);
  line-height:1;
  text-shadow:
    0 0 24px rgba(201,169,97,.5),
    0 0 48px rgba(201,169,97,.2);
  margin:var(--sp-2) 0 var(--sp-3);
}
.feed-empty-poem{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--bone);
  letter-spacing:var(--ls-cn-body);
  line-height:var(--lh-relaxed);
  opacity:.65;
  max-width:240px;
}
/* v27: 英文小 italic 副标 */
.feed-empty-en{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:0.06em;
  opacity:.55;line-height:1;
}
.feed-empty-cta-hint{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:0.04em;
  opacity:.5;
  border-top:1px solid var(--gold-15);
  padding-top:var(--sp-4);
  margin-top:var(--sp-2);
  width:180px;
}

/* ============== Reusable Empty State (v28) ============== */
.empty-state{
  text-align:center;
  padding:96px var(--sp-6) 120px;
  display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);
}
.empty-state::before{
  content:'❦';
  font-family:var(--serif);font-size:var(--t-3xl);
  color:var(--gold);
  opacity:.55;line-height:1;
  text-shadow:0 0 28px rgba(201,169,97,.7),0 0 56px rgba(201,169,97,.3);
  animation:emptyGlow 3.5s ease-in-out infinite;
}
@keyframes emptyGlow{
  0%,100%{opacity:.45;text-shadow:0 0 20px rgba(201,169,97,.5),0 0 44px rgba(201,169,97,.2)}
  50%{opacity:.75;text-shadow:0 0 32px rgba(201,169,97,.85),0 0 64px rgba(201,169,97,.4)}
}
.empty-state::after{
  content:'';display:block;
  width:64px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-50),transparent);
  margin-top:var(--sp-3);order:10;
}
.empty-state-eyebrow{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--gold);opacity:.75;
  letter-spacing:var(--ls-en-label);
  text-transform:uppercase;line-height:1;
  margin-top:var(--sp-2);
}
.empty-state-cn{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xl);
  color:var(--gold);
  letter-spacing:var(--ls-cn-display);padding-left:var(--ls-cn-display);
  line-height:1;
  background:linear-gradient(180deg,#F5E6C8 0%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 18px rgba(201,169,97,.35));
  margin:var(--sp-2) 0 var(--sp-3);
}
.empty-state-poem{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--bone);
  letter-spacing:var(--ls-cn-body);
  line-height:var(--lh-relaxed);opacity:.7;
  max-width:220px;
}
.empty-state-hint{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:0.04em;
  opacity:.5;
  border-top:1px solid var(--gold-15);
  padding-top:var(--sp-4);
  margin-top:var(--sp-2);
  width:180px;
}

.editorial-card{
  cursor:pointer;
  padding:56px 32px 64px;
  border-bottom:1px solid var(--gold-15);
  position:relative;
  transition:all var(--motion-macro);
  overflow:hidden;
}
.editorial-card + .editorial-card{
  padding-top:48px;
}
.editorial-card::before{
  content:'';
  position:absolute;top:40px;left:50%;
  width:40px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,169,97,.5),transparent);
  transform:translateX(-50%);
  transition:all var(--motion-macro);
  z-index:3;
  box-shadow:0 0 8px rgba(201,169,97,.3);
}
.editorial-card:hover::before{
  width:72px;
  background:linear-gradient(90deg,transparent,rgba(201,169,97,.75),rgba(201,169,97,.85),rgba(201,169,97,.75),transparent);
  box-shadow:0 0 14px rgba(201,169,97,.5);
}
.editorial-card:hover{background:linear-gradient(180deg,var(--gold-04),transparent)}
.editorial-card::after{
  /* 底部装饰渐变细线 */
  content:'';position:absolute;bottom:0;left:50%;
  width:32px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-50),transparent);
  transform:translateX(-50%);
}
/* 巨型罗马数字水印 */
.editorial-card .watermark{
  position:absolute;top:40px;right:-12px;
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:180px;line-height:.8;color:var(--ink);
  letter-spacing:-6px;
  pointer-events:none;user-select:none;
  background:linear-gradient(180deg,rgba(201,169,97,.09) 0%,rgba(201,169,97,0) 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  z-index:0;
  transition:all var(--motion-macro);
}
.editorial-card:hover .watermark{
  background:linear-gradient(180deg,rgba(201,169,97,.16) 0%,rgba(201,169,97,.02) 100%);
  -webkit-background-clip:text;background-clip:text;
  transform:scale(1.04);
}
.editorial-card > *:not(.watermark){position:relative;z-index:1}
.editorial-card .fly-heart{
  position:absolute;
  z-index:10;pointer-events:none;
  font-family:var(--serif);
  background:linear-gradient(135deg,#FAF4E6 0%,#E8C879 40%,#C9A961 70%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 12px rgba(201,169,97,.9)) drop-shadow(0 0 40px rgba(201,169,97,.5));
  transform:translate(-50%, -50%) scale(0.3);
  opacity:0;
}
.fly-heart.h0{font-size:96px;animation:heart-fly0 1s cubic-bezier(.25,.46,.45,.94) forwards}
.fly-heart.h1{font-size:64px;animation:heart-fly1 1.1s cubic-bezier(.25,.46,.45,.94) forwards}
.fly-heart.h2{font-size:48px;animation:heart-fly2 1.2s cubic-bezier(.25,.46,.45,.94) forwards}
.fly-heart.h3{font-size:40px;animation:heart-fly3 1s cubic-bezier(.25,.46,.45,.94) forwards}
.fly-heart.h4{font-size:56px;animation:heart-fly4 1.15s cubic-bezier(.25,.46,.45,.94) forwards}
@keyframes heart-fly0{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(-10deg)}
  25%{opacity:1;transform:translate(-50%,-50%) scale(1.3) rotate(5deg)}
  55%{opacity:1;transform:translate(-55%,-80%) scale(1) rotate(-3deg)}
  100%{opacity:0;transform:translate(-60%,-200%) scale(.7) rotate(0deg)}
}
@keyframes heart-fly1{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(8deg)}
  25%{opacity:1;transform:translate(-30%,-60%) scale(1.1) rotate(-5deg)}
  55%{opacity:1;transform:translate(-20%,-120%) scale(.9) rotate(3deg)}
  100%{opacity:0;transform:translate(-10%,-220%) scale(.6) rotate(10deg)}
}
@keyframes heart-fly2{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(-5deg)}
  25%{opacity:1;transform:translate(-70%,-55%) scale(1) rotate(8deg)}
  55%{opacity:1;transform:translate(-85%,-100%) scale(.85) rotate(-5deg)}
  100%{opacity:0;transform:translate(-95%,-190%) scale(.5) rotate(-12deg)}
}
@keyframes heart-fly3{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.15) rotate(12deg)}
  30%{opacity:.9;transform:translate(-40%,-70%) scale(.9) rotate(-8deg)}
  60%{opacity:.7;transform:translate(-25%,-140%) scale(.7) rotate(4deg)}
  100%{opacity:0;transform:translate(-15%,-240%) scale(.4) rotate(15deg)}
}
@keyframes heart-fly4{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(-8deg)}
  30%{opacity:.9;transform:translate(-65%,-65%) scale(1.05) rotate(6deg)}
  60%{opacity:.7;transform:translate(-80%,-130%) scale(.8) rotate(-8deg)}
  100%{opacity:0;transform:translate(-90%,-210%) scale(.5) rotate(-15deg)}
}
/* Gold particle burst on like */
.fly-particle{
  position:absolute;z-index:10;pointer-events:none;
  width:4px;height:4px;border-radius:50%;
  background:var(--gold);
  box-shadow:0 0 6px rgba(201,169,97,.8);
  opacity:0;
}
@keyframes particle-burst{
  0%{opacity:1;transform:translate(var(--px),var(--py)) scale(1)}
  40%{opacity:.8}
  100%{opacity:0;transform:translate(calc(var(--px) * 4),calc(var(--py) * 4)) scale(0)}
}
/* Pull-to-refresh indicator (v28 enhanced) */
.pull-indicator{
  text-align:center;height:0;overflow:hidden;
  transition:height var(--motion-micro);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
}
.pull-indicator .pull-icon{
  font-family:var(--serif);font-size:var(--t-lg);
  color:var(--gold);opacity:0;
  line-height:1;margin-top:8px;
  transition:opacity var(--motion-micro),transform var(--motion-normal);
  transform:rotate(0deg);
}
.pull-indicator .pull-text{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:0;
  letter-spacing:var(--ls-cn-label);
  line-height:1;margin-top:4px;
  transition:opacity var(--motion-micro);
}
.pull-indicator.pulling .pull-icon{opacity:.7}
.pull-indicator.pulling .pull-text{opacity:.6}
.pull-indicator.ready .pull-icon{
  opacity:1;transform:rotate(180deg);
  text-shadow:0 0 16px rgba(201,169,97,.6);
}
.pull-indicator.ready .pull-text{opacity:.85;color:var(--gold-light)}
.pull-indicator.refreshing .pull-icon{
  opacity:1;
  animation:pullSpin 1.6s cubic-bezier(.4,0,.2,1) infinite;
  text-shadow:0 0 20px rgba(201,169,97,.8);
}
.pull-indicator.refreshing .pull-text{opacity:.7}
@keyframes pullSpin{to{transform:rotate(360deg)}}
.editorial-card .new-badge{
  position:absolute;top:0;right:0;z-index:4;
  padding:8px 16px;
  font-family:var(--serif);font-style:italic;font-weight:500;
  font-size:var(--t-2xs);
  color:var(--void);
  background:linear-gradient(180deg,var(--gold-light),var(--gold));
  border:1px solid var(--gold);
  border-top:none;border-right:none;
  letter-spacing:0.12em;
  box-shadow:0 10px 30px -10px rgba(201,169,97,.7),
             0 0 14px rgba(201,169,97,.4);
  line-height:1;
  animation:badge-pulse 3s ease-in-out infinite;
}
@keyframes badge-pulse{
  0%,100%{box-shadow:0 10px 30px -10px rgba(201,169,97,.7),0 0 14px rgba(201,169,97,.4)}
  50%{box-shadow:0 10px 30px -10px rgba(201,169,97,.9),0 0 24px rgba(201,169,97,.6)}
}
.editorial-card .meta-row{
  display:flex;align-items:center;gap:16px;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--gold);opacity:.82;
  letter-spacing:3px;text-transform:uppercase;
  margin-bottom:28px;
}
.editorial-card .meta-row .num{
  font-family:var(--serif);font-style:normal;font-weight:500;
  font-size:var(--t-xs);
  color:var(--gold);letter-spacing:2px;
  padding:4px 12px;
  border:1px solid var(--gold-30);
  line-height:1;
}
.editorial-card .meta-row .dot{
  width:4px;height:4px;background:var(--gold);border-radius:50%;
  box-shadow:0 0 6px rgba(201,169,97,.6);
}

.editorial-card .cover{
  width:100%;aspect-ratio:4/5;
  background:#000;
  margin-bottom:40px;
  position:relative;overflow:hidden;
  box-shadow:
    0 1px 0 rgba(201,169,97,.2) inset,
    0 -1px 0 rgba(0,0,0,.6) inset,
    var(--elevation-2);
}
.editorial-card .cover::before{
  content:'';position:absolute;inset:0;z-index:2;
  border:1px solid rgba(201,169,97,0);
  transition:border-color var(--motion-macro);
  pointer-events:none;
}
.editorial-card:hover .cover::before{border-color:rgba(201,169,97,.32)}
.editorial-card .cover img{
  width:100%;height:100%;object-fit:cover;
  filter:contrast(1.08) saturate(.88) brightness(.92);
  transition:all var(--motion-macro);
}
.editorial-card:hover .cover img{transform:scale(1.03);filter:contrast(1.1) saturate(.95) brightness(1)}
.editorial-card .cover::after{
  content:'';position:absolute;inset:0;
  background:
    linear-gradient(180deg,transparent 50%,rgba(0,0,0,.72) 100%),
    linear-gradient(0deg,transparent 80%,rgba(0,0,0,.25) 100%);
  pointer-events:none;
}
.editorial-card .cover .placeholder{
  width:100%;height:100%;
  display:flex;align-items:center;justify-content:center;
  background:radial-gradient(ellipse at 30% 20%,#1A0C02 0%,#080600 60%,#000 100%);
}
.editorial-card .cover .placeholder::before{
  content:'V';font-family:var(--serif);font-weight:500;
  font-size:var(--t-4xl);letter-spacing:6px;
  background:linear-gradient(180deg,#E8C879 0%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 24px rgba(201,169,97,.4));
}

.editorial-card .title{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(34px,10vw,44px);line-height:1.06;color:var(--bone);
  letter-spacing:-0.6px;
  margin-bottom:24px;
  transition:all var(--motion-macro);
}
.editorial-card:hover .title{
  background:linear-gradient(180deg,#FDFAF2 0%,#E8C879 55%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 20px rgba(201,169,97,.3));
}
.editorial-card .lead{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:var(--t-md);line-height:1.85;color:var(--ash);
  letter-spacing:0.4px;opacity:.85;
  margin-bottom:36px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;
  overflow:hidden;
}
/* Editorial drop cap — 首字母放大 */
.editorial-card .lead::first-letter{
  font-family:var(--serif);font-weight:500;font-style:normal;
  float:left;font-size:var(--t-3xl);line-height:.88;
  padding:4px 12px 0 0;margin-top:6px;
  background:linear-gradient(180deg,#E8C879 0%,#C9A961 45%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 12px rgba(201,169,97,.35));
}

.editorial-card .price{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(48px,14vw,60px);letter-spacing:-1px;
  background:linear-gradient(180deg,#FDFAF2 0%,#F0D98A 22%,#C9A961 60%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  display:inline-flex;align-items:baseline;gap:4px;
  margin-bottom:32px;
  filter:
    drop-shadow(0 0 22px rgba(201,169,97,.42))
    drop-shadow(0 2px 8px rgba(201,169,97,.2));
}
.editorial-card .price .currency{
  font-size:var(--t-md);color:var(--gold-deep);font-weight:400;
  letter-spacing:0;
}

.editorial-card .footer-row{
  display:flex;align-items:center;
  padding-top:24px;border-top:1px solid var(--edge);
}
.editorial-card .seller{
  flex:1;display:flex;align-items:center;gap:12px;
}
.editorial-card .seller .name{
  font-family:var(--serif);font-style:italic;font-size:var(--t-sm);
  color:var(--bone);letter-spacing:.5px;
}
.editorial-card .seller .by{
  font-family:var(--serif);font-style:italic;font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:1.5px;text-transform:uppercase;opacity:.65;
}
.editorial-card .heart-btn{
  display:flex;align-items:center;gap:8px;
  font-family:var(--serif);font-size:var(--t-xs);
  color:var(--ash);letter-spacing:1px;
  cursor:pointer;padding:8px 0;
  background:none;border:none;
}
.editorial-card .heart-btn .icon{font-size:var(--t-sm);color:var(--shade)}
.editorial-card .heart-btn.liked .icon{color:var(--gold);text-shadow:0 0 8px rgba(201,169,97,.6)}

/* ============== 编辑式 · 章节标题 (v28 · 杂志封面仪式感) ============== */
.section-num{
  text-align:center;padding:32px 0 20px;
  position:relative;
}
.section-num::before{
  content:'';position:absolute;
  left:50%;top:60px;
  width:480px;height:280px;
  transform:translateX(-50%);
  background:radial-gradient(ellipse at center,
    rgba(201,169,97,.32) 0%,
    rgba(201,169,97,.13) 28%,
    rgba(201,169,97,.04) 52%,
    transparent 72%);
  pointer-events:none;z-index:0;
  filter:blur(24px);
}
.section-num > *{position:relative;z-index:1}

/* 顶部装饰横线组（菱形夹线） */
.section-num .deco-top{
  display:flex;align-items:center;justify-content:center;gap:16px;
  margin-bottom:28px;
}
.section-num .deco-top .dl{
  flex:1;max-width:64px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,169,97,.55),transparent);
}
.section-num .deco-top .dm{
  width:6px;height:6px;
  background:var(--gold);
  transform:rotate(45deg);
  box-shadow:0 0 10px rgba(201,169,97,.65);
  flex-shrink:0;
}

/* eyebrow 小字 */
.section-num .eyebrow{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:.62;
  letter-spacing:0.38em;padding-left:0.38em;
  text-transform:uppercase;line-height:1;
  display:block;margin-bottom:20px;
  text-shadow:0 0 16px rgba(201,169,97,.35);
}

/* 旧 .roman 保留为别名 */
.section-num .roman{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);opacity:.65;
  letter-spacing:0.42em;
  padding-left:0.42em;line-height:1;
  display:block;margin-bottom:24px;
  text-shadow:0 0 12px rgba(201,169,97,.3);
}
.section-num .name{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xl);
  color:var(--gold);
  letter-spacing:0.42em;
  padding-left:0.42em;
  line-height:1;
  text-shadow:
    0 0 48px rgba(201,169,97,.55),
    0 0 96px rgba(201,169,97,.22);
  background:linear-gradient(180deg,#FDFAF2 0%,#E8C879 32%,#C9A961 78%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}

/* 副标题 — 斜体英文 · Touch what was touched */
.section-num .sub{
  display:block;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:rgba(201,169,97,.48);
  letter-spacing:0.18em;
  margin-top:20px;
  line-height:1;
  text-shadow:0 0 12px rgba(201,169,97,.2);
}

.section-num .line{
  width:1px;height:28px;background:linear-gradient(180deg,var(--gold),transparent);
  margin:14px auto 0;
}
.section-num .line::after{
  content:'';display:block;width:5px;height:5px;
  background:var(--gold);transform:rotate(45deg);
  margin:-2px auto 0;position:relative;left:-2px;
  box-shadow:0 0 12px rgba(201,169,97,.8);
}

/* 底部装饰横线组 */
.section-num .deco-bot{
  display:flex;align-items:center;justify-content:center;gap:16px;
  margin-top:32px;
}
.section-num .deco-bot .dl{
  flex:1;max-width:48px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,169,97,.4),transparent);
}
.section-num .deco-bot .dk{
  font-family:var(--serif);font-size:var(--t-sm);
  color:var(--gold);opacity:.55;
  letter-spacing:2px;
  text-shadow:0 0 10px rgba(201,169,97,.4);
  line-height:1;
}

/* ============== Detail ============== */
#detail{background:var(--void)}
.detail-cover{
  position:relative;width:100%;
  /* 更高更有压迫力：4/5 替代 3/4 */
  aspect-ratio:4/5;
  background:#000;overflow:hidden;
}
.detail-cover img{
  width:100%;height:100%;display:block;
  object-fit:cover;object-position:center top;
  filter:contrast(1.08) saturate(.9);
  transition:transform var(--motion-macro);
}
.detail-cover:hover img{transform:scale(1.04)}
.detail-cover .placeholder{
  width:100%;height:100%;
  display:flex;align-items:center;justify-content:center;
  background:
    radial-gradient(ellipse at 25% 15%,rgba(80,30,4,.9) 0%,transparent 55%),
    radial-gradient(ellipse at 75% 85%,rgba(40,14,0,.8) 0%,transparent 55%),
    #000000;
}
.detail-cover .placeholder::before{
  content:'V';font-family:var(--serif);font-weight:500;
  font-size:160px;letter-spacing:12px;
  background:linear-gradient(180deg,#FAF4E6 0%,#E8C879 30%,#C9A961 65%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 60px rgba(201,169,97,.35));
}
/* 底部浓黑渐变给标题充足对比 — Ferrari chiaroscuro 高对比 */
.detail-cover::after{
  content:'';position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(0,0,0,.62) 0%,transparent 20%,transparent 44%,rgba(0,0,0,.78) 70%,rgba(0,0,0,.99) 100%);
  pointer-events:none;
}
/* 内缘金线框 + 四角加重切角 */
.detail-cover::before{
  content:'';position:absolute;inset:20px;z-index:3;
  border:1px solid rgba(201,169,97,.2);
  pointer-events:none;
  background:
    linear-gradient(to right,rgba(201,169,97,.6) 14px,transparent 14px) top left/16px 1px no-repeat,
    linear-gradient(to bottom,rgba(201,169,97,.6) 14px,transparent 14px) top left/1px 16px no-repeat,
    linear-gradient(to left,rgba(201,169,97,.6) 14px,transparent 14px) bottom right/16px 1px no-repeat,
    linear-gradient(to top,rgba(201,169,97,.6) 14px,transparent 14px) bottom right/1px 16px no-repeat;
}

.detail-back{
  position:absolute;top:32px;left:32px;z-index:30;
  font-family:var(--serif);font-style:italic;font-size:var(--t-xs);
  color:var(--bone);letter-spacing:3px;text-transform:uppercase;
  padding:10px 20px 10px 16px;
  background:rgba(0,0,0,.82);border:1px solid rgba(201,169,97,.5);
  border-left:2px solid var(--gold);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  cursor:pointer;transition:all var(--motion-normal);
  box-shadow:0 2px 12px rgba(0,0,0,.5);
}
.detail-back:hover{border-color:var(--gold);background:rgba(0,0,0,.95);box-shadow:var(--glow-sm)}
.detail-back::before{content:'←   ';color:var(--gold);font-style:normal}
/* v28: 详情页图片渐进加载 */
.detail-cover img.img-loading,
.detail-gallery .slide img.img-loading{
  filter:blur(8px) contrast(1.08) saturate(.9);opacity:0.6;
  transition:filter 0.5s ease-out,opacity 0.5s ease-out;
}
.detail-cover img.img-loaded,
.detail-gallery .slide img.img-loaded{
  filter:contrast(1.08) saturate(.9);opacity:1;
  transition:filter 0.5s ease-out,opacity 0.5s ease-out;
}

.detail-share{
  position:absolute;top:32px;right:32px;z-index:30;
  font-family:var(--serif);font-style:italic;font-size:var(--t-xs);
  color:var(--gold);letter-spacing:3px;text-transform:uppercase;
  padding:8px 16px;
  background:rgba(0,0,0,.7);border:1px solid rgba(201,169,97,.4);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  cursor:pointer;transition:all var(--motion-normal);
}
.detail-share:hover{
  border-color:var(--gold);background:rgba(0,0,0,.9);
  text-shadow:0 0 12px rgba(201,169,97,.5);
}
.detail-report{
  position:absolute;top:32px;right:calc(32px + 100px);z-index:30;
  width:36px;height:36px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:var(--t-md);
  color:var(--ash);background:rgba(0,0,0,.7);
  border:1px solid var(--edge);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  cursor:pointer;transition:all var(--motion-normal);
  line-height:1;
}
.detail-report:hover{color:#E6A5A5;border-color:#E6A5A5}

/* 离线 banner */
#offline-banner{
  position:fixed;left:50%;top:env(safe-area-inset-top,16px);
  transform:translate(-50%,-100px);
  padding:12px 20px;
  background:rgba(10,0,0,.95);
  border:1px solid #E6A5A5;
  font-family:var(--cn);font-weight:300;font-style:italic;
  font-size:var(--t-xs);
  color:#E6A5A5;letter-spacing:var(--ls-cn-label);
  padding-left:calc(18px + var(--ls-cn-label));
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  box-shadow:var(--elevation-2);
  transition:all var(--motion-macro);
  z-index:9999;line-height:1;
  white-space:nowrap;
  pointer-events:none;
}
#offline-banner.show{
  transform:translate(-50%,calc(env(safe-area-inset-top,16px) + 12px));
}

.detail-body{padding:56px clamp(20px,6vw,36px) 180px;background:var(--void)}
.detail-roman{
  display:flex;align-items:center;justify-content:center;gap:16px;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--gold);opacity:.75;
  letter-spacing:0.32em;text-transform:uppercase;
  margin-bottom:32px;line-height:1;
}
.detail-roman::before,.detail-roman::after{
  content:'';flex:0 0 40px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.detail-title{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(24px,8vw,36px);line-height:1.15;letter-spacing:-0.5px;text-align:center;
  margin-bottom:24px;
  background:linear-gradient(180deg,#FDFAF2 0%,#F5E6A0 18%,#E8C879 38%,#C9A961 68%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:
    drop-shadow(0 0 48px rgba(201,169,97,.5))
    drop-shadow(0 2px 14px rgba(201,169,97,.28));
}
.detail-line{
  width:56px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  margin:0 auto 40px;
}
/* 价格块 — 更大更有仪式感 + 浮光效果 */
.detail-price{
  text-align:center;
  font-family:var(--serif);font-weight:500;
  font-size:clamp(80px,25vw,104px);letter-spacing:-3px;
  margin-bottom:72px;line-height:0.9;
  position:relative;
  /* 6 档金色渐变，顶白底深，极具质感 */
  background:linear-gradient(
    180deg,
    #FEFCF4 0%,
    #FAF0C0 12%,
    #F0D98A 28%,
    #E0BC5A 48%,
    #C9A961 70%,
    #7A6124 100%
  );
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:
    drop-shadow(0 0 48px rgba(201,169,97,.6))
    drop-shadow(0 0 18px rgba(201,169,97,.4))
    drop-shadow(0 4px 6px rgba(0,0,0,.5));
}
/* 价格发光光晕（伪元素模拟底部辉光） */
.detail-price::after{
  content:'';
  position:absolute;
  left:50%;bottom:-16px;
  transform:translateX(-50%);
  width:60%;height:2px;
  background:radial-gradient(ellipse,rgba(201,169,97,.45),transparent 70%);
  pointer-events:none;
  -webkit-text-fill-color:initial;
  background-clip:initial;
  -webkit-background-clip:initial;
}
.detail-price .currency{
  font-size:var(--t-2xl);
  margin-right:12px;font-weight:400;
  vertical-align:0.24em;letter-spacing:0;
  /* 货币符号用稍浅金保持主数字突出 */
  background:linear-gradient(180deg,#E8C879,#C9A961);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}
/* 描述文字 — editorial 感：左对齐 + drop cap + 斜体 */
.detail-desc{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-lg);line-height:1.9;color:var(--bone);opacity:.9;
  text-align:left;letter-spacing:0.4px;
  margin-bottom:64px;white-space:pre-wrap;
  max-width:440px;margin-left:auto;margin-right:auto;
  position:relative;
  padding:40px 40px 40px 44px;
  border-left:1px solid rgba(201,169,97,.22);
}
/* 首字母 drop cap */
.detail-desc::first-letter{
  font-size:4.2em;line-height:.7;float:left;
  font-weight:600;font-style:normal;
  margin-right:12px;margin-top:4px;
  background:linear-gradient(180deg,#F0D98A,#C9A961);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}
/* 大引号装饰 */
.detail-desc::before{
  position:absolute;
  font-family:var(--serif);font-weight:500;font-size:120px;
  color:var(--gold);opacity:.2;line-height:.5;
  content:'\201C';top:12px;left:8px;
}
.detail-desc::after{
  position:absolute;
  font-family:var(--serif);font-weight:500;font-size:120px;
  color:var(--gold);opacity:.2;line-height:.5;
  content:'\201D';bottom:-20px;right:4px;
}
/* "FINIS" 结束标记 */
.detail-finis{
  text-align:center;padding:28px 0 56px;
  font-family:var(--serif);font-style:italic;font-size:var(--t-xs);
  color:var(--gold);letter-spacing:5px;
  display:flex;align-items:center;justify-content:center;gap:20px;
  opacity:.75;
}
.detail-finis::before,.detail-finis::after{
  content:'';width:32px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}

/* ============== 评论区（私语） ============== */
.comments{
  margin-top:48px;padding-top:40px;
  border-top:1px solid var(--edge);
}
.comments-head{
  display:flex;align-items:center;gap:16px;
  margin-bottom:32px;
}
.comments-head .cn{
  font-family:var(--cn);font-weight:300;font-size:var(--t-md);
  color:var(--gold);letter-spacing:6px;padding-left:6px;
  text-shadow:0 0 14px rgba(201,169,97,.4);
}
.comments-head .hairline{
  flex:1;height:1px;
  background:linear-gradient(90deg,rgba(201,169,97,.5),transparent);
}
.comments-head .en{
  font-family:var(--serif);font-style:italic;font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:3px;text-transform:uppercase;
}
.comment-list{display:flex;flex-direction:column;gap:0;margin-bottom:32px}
.comment-loading,.comment-empty{
  text-align:center;padding:32px 16px;
  font-family:var(--cn);font-weight:300;font-size:var(--t-sm);
  color:var(--ash);letter-spacing:3px;line-height:1.9;
}
.comment-empty span{
  display:block;margin-top:8px;font-size:var(--t-xs);
  color:var(--shade);letter-spacing:2px;
}
.comment{
  padding:20px 0;
  border-bottom:1px solid var(--edge);
}
.comment:last-child{border-bottom:none}
.comment-meta{
  display:flex;align-items:center;gap:12px;
  margin-bottom:12px;
}
.comment-meta .who{
  font-family:var(--cn);font-weight:300;font-size:var(--t-sm);
  color:var(--gold);letter-spacing:2px;
  text-shadow:0 0 12px rgba(201,169,97,.3);
}
.comment-meta .dot{
  width:3px;height:3px;background:var(--gold);
  opacity:.5;
}
.comment-meta .when{
  font-family:var(--serif);font-style:italic;font-size:var(--t-2xs);
  color:var(--shade);letter-spacing:1.5px;
}
.comment-body{
  font-family:var(--cn);font-weight:300;font-size:var(--t-md);
  color:var(--bone);line-height:1.85;letter-spacing:1px;
  padding-left:2px;
}
.comment-compose{
  position:relative;
  padding:20px 18px;
  background:rgba(201,169,97,.03);
  border:1px solid rgba(201,169,97,.18);
}
.comment-compose textarea{
  width:100%;min-height:80px;
  font-family:var(--cn);font-weight:300;font-size:var(--t-sm);
  color:var(--bone);background:transparent;
  border:none;outline:none;resize:none;
  letter-spacing:1px;line-height:1.7;
}
.comment-compose textarea::placeholder{
  color:rgba(201,169,97,.35);font-style:italic;
}
.comment-send{
  position:absolute;right:16px;bottom:14px;
  font-family:var(--cn);font-weight:300;font-size:var(--t-sm);
  color:var(--gold);background:rgba(201,169,97,.06);
  border:1px solid var(--gold);
  padding:8px 16px;cursor:pointer;
  letter-spacing:4px;padding-left:6px;
  transition:all var(--motion-normal);
}
.comment-send:hover{background:var(--gold);color:var(--void)}
.comment-send:disabled{opacity:.5;cursor:wait}

.detail-meta{
  display:grid;grid-template-columns:repeat(4,1fr);
  padding:32px 0;
  border-top:1px solid var(--gold-30);
  border-bottom:1px solid var(--gold-30);
  margin-bottom:48px;
  position:relative;
}
.detail-meta::before{
  content:'';position:absolute;
  left:25%;right:25%;top:50%;
  height:1px;background:var(--gold-30);opacity:.4;
  display:none;  /* 禁用，改用垂直分隔 */
}
.detail-meta .item{
  text-align:center;position:relative;padding:0 var(--sp-2);
}
.detail-meta .item + .item::before{
  content:'';position:absolute;left:0;top:15%;bottom:15%;width:1px;
  background:linear-gradient(180deg,transparent,var(--gold-30) 30%,var(--gold-30) 70%,transparent);
}
.detail-meta .item .num{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-xl);color:var(--gold);
  letter-spacing:-0.02em;line-height:1;
  text-shadow:0 0 14px rgba(201,169,97,.35);
  display:block;
}
.detail-meta .item .lbl{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);opacity:.7;
  letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);
  margin-top:12px;line-height:1;
}

.detail-tags{
  display:flex;flex-wrap:wrap;justify-content:center;gap:12px;
  margin-bottom:48px;
}
.detail-tag{
  font-family:var(--serif);font-style:italic;font-size:var(--t-xs);
  color:var(--ash);letter-spacing:1.5px;
  padding:8px 16px;border:1px solid var(--edge);
  cursor:pointer;transition:all var(--motion-normal);
}
.detail-tag:hover{color:var(--gold);border-color:var(--gold)}

/* Seller 信息区 — 头像 + 认证徽章 + 名字 editorial 排列 */
.detail-seller{
  text-align:center;
  padding:56px 0 52px;
  border-top:1px solid rgba(201,169,97,.18);
  position:relative;
}
.detail-seller::before{
  content:'';
  position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:48px;height:2px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.detail-seller .seller-avatar{
  width:72px;height:72px;border-radius:50%;
  margin:0 auto 16px;
  background:radial-gradient(circle at 35% 30%,#1C100A,#000000);
  border:1px solid rgba(201,169,97,.55);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:500;font-size:var(--t-2xl);
  color:var(--gold);line-height:1;
  box-shadow:0 0 24px -6px rgba(201,169,97,.5),inset 0 0 16px rgba(201,169,97,.06);
  text-shadow:0 0 14px rgba(201,169,97,.6);
  position:relative;
}
.detail-seller .seller-avatar::after{
  content:'\271A';
  position:absolute;bottom:-4px;right:-4px;
  width:20px;height:20px;border-radius:50%;
  background:var(--gold);
  font-size:9px;color:var(--void);
  line-height:20px;text-align:center;
  box-shadow:0 0 8px rgba(201,169,97,.6);
}
.detail-seller .by{
  font-family:var(--serif);font-style:italic;font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:4px;text-transform:uppercase;
  opacity:.65;margin-bottom:12px;display:block;
}
.detail-seller .name{
  font-family:var(--serif);font-weight:500;font-size:var(--t-xl);
  letter-spacing:-0.02em;line-height:1;
  margin-bottom:12px;
  background:linear-gradient(180deg,#FAF4E6 0%,#E8C879 55%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 14px rgba(201,169,97,.28));
}
.detail-seller .seller-badge{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--serif);font-style:italic;font-size:var(--t-2xs);
  color:var(--gold);opacity:.7;letter-spacing:2px;
  border:1px solid rgba(201,169,97,.3);
  padding:4px 12px;
}

.detail-bottom{
  position:absolute;left:0;right:0;bottom:0;z-index:30;
  padding:28px 24px calc(28px + env(safe-area-inset-bottom,0));
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.7) 18%,var(--void) 42%);
  display:flex;gap:12px;
}
.detail-bottom .fav{
  width:64px;height:64px;
  border:1px solid rgba(201,169,97,.6);
  background:rgba(201,169,97,.04);color:var(--gold);
  font-size:var(--t-xl);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:all var(--motion-normal);flex-shrink:0;
}
.detail-bottom .fav:hover{
  background:rgba(201,169,97,.12);
  box-shadow:0 0 20px -6px rgba(201,169,97,.5);
}
.detail-bottom .fav.faved{background:var(--gold-15)}
/* 私下聊聊 CTA — 四角切角 + 发光 + 更大点击区域 */
.detail-bottom .chat{
  flex:1;height:64px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  letter-spacing:var(--ls-cn-button);text-indent:var(--ls-cn-button);
  color:var(--gold);
  background:rgba(201,169,97,.06);
  border:1px solid var(--gold-70);
  cursor:pointer;line-height:1;
  position:relative;overflow:visible;
  transition:all var(--motion-normal);
  box-shadow:0 0 20px -8px rgba(201,169,97,.45);
}
.detail-bottom .chat::before{
  content:'';position:absolute;top:-1px;left:-1px;width:14px;height:14px;
  border-top:1px solid var(--gold);border-left:1px solid var(--gold);
  pointer-events:none;opacity:.8;
}
.detail-bottom .chat::after{
  content:'';position:absolute;bottom:-1px;right:-1px;width:14px;height:14px;
  border-bottom:1px solid var(--gold);border-right:1px solid var(--gold);
  pointer-events:none;opacity:.8;
}
.detail-bottom .chat:hover{
  background:rgba(201,169,97,.14);
  box-shadow:0 0 32px -4px rgba(201,169,97,.55);
  text-shadow:0 0 10px rgba(201,169,97,.4);
}
.detail-bottom .buy{
  flex:1.4;height:64px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  letter-spacing:var(--ls-cn-button);text-indent:var(--ls-cn-button);
  color:var(--void);
  background:linear-gradient(180deg,var(--gold-light) 0%,var(--gold) 45%,var(--gold-deep) 100%);
  border:1px solid var(--gold-light);
  position:relative;cursor:pointer;line-height:1;overflow:hidden;
  transition:all var(--motion-normal);
  box-shadow:
    0 0 40px -4px rgba(201,169,97,.65),
    0 0 20px -2px rgba(201,169,97,.4),
    inset 0 1px 0 rgba(255,255,255,.15);
}
.detail-bottom .buy::before{
  content:'';position:absolute;top:-1px;left:-1px;width:16px;height:16px;
  border:1px solid rgba(0,0,0,.3);border-right:none;border-bottom:none;
  pointer-events:none;opacity:.6;
}
.detail-bottom .buy::after{
  content:'';position:absolute;top:0;left:-100%;
  width:60%;height:100%;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);
  transition:left var(--motion-macro);
  pointer-events:none;
}
.detail-bottom .buy:hover{
  filter:brightness(1.12);
  box-shadow:
    0 0 56px -4px rgba(201,169,97,.75),
    0 0 28px -2px rgba(201,169,97,.5),
    inset 0 1px 0 rgba(255,255,255,.2);
}
.detail-bottom .buy:hover::after{left:130%}
.detail-bottom .buy:active{transform:scale(.985)}

/* ============== Notifications ============== */
#notifications{background:var(--void)}
.notif-list{padding:120px 0 120px}
.notif-item{
  display:flex;align-items:center;gap:20px;
  padding:24px 32px;
  border-bottom:1px solid var(--gold-15);
  position:relative;
  transition:background var(--motion-normal);
}
.notif-item:hover{background:var(--gold-04)}
.notif-icon{
  font-family:var(--serif);font-size:var(--t-lg);
  width:38px;height:38px;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--gold-50);color:var(--gold);
  flex-shrink:0;line-height:1;
  background:var(--gold-04);
  box-shadow:0 0 16px -4px rgba(201,169,97,.4);
}
.notif-text{flex:1;min-width:0}
.notif-text .t{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);color:var(--bone);
  letter-spacing:0.04em;line-height:1.5;
}
.notif-text .c{
  font-family:var(--cn);font-weight:300;font-style:italic;
  font-size:var(--t-sm);
  color:var(--ash);margin-top:6px;letter-spacing:0.04em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.notif-time{
  font-family:var(--serif);font-style:italic;font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:1px;flex-shrink:0;opacity:.55;
}
.notif-empty{
  text-align:center;padding:140px 32px;
  display:flex;flex-direction:column;align-items:center;gap:24px;
}
.notif-empty::before{
  content:'❦';
  font-family:var(--serif);font-size:var(--t-2xl);
  color:var(--gold);opacity:.45;line-height:1;
  text-shadow:0 0 24px rgba(201,169,97,.4);
}
.notif-empty .roman{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xl);
  color:var(--gold);
  letter-spacing:0.36em;padding-left:0.36em;line-height:1;
  background:linear-gradient(180deg,#F5E6C8 0%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 20px rgba(201,169,97,.4));
}
.notif-empty .text{
  font-family:var(--cn);font-weight:300;font-style:italic;
  font-size:var(--t-sm);
  color:var(--ash);opacity:.75;
  line-height:var(--lh-relaxed);letter-spacing:0.08em;
  max-width:260px;
}

/* ============== Publish v16.1 ============== */
#publish.page{
  background:radial-gradient(ellipse at 50% 0%, rgba(201,169,97,.09) 0%, #000000 55%);
  display:flex;flex-direction:column;
}
.pub-header{
  flex-shrink:0;
  display:flex;align-items:center;gap:16px;
  padding:28px 28px 24px;
  border-bottom:1px solid var(--gold-30);
  background:linear-gradient(180deg,#000000 0%,rgba(0,0,0,.96) 70%,rgba(0,0,0,.7) 100%);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.pub-header .x{
  width:36px;height:36px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:300;font-size:var(--t-xl);
  color:var(--gold);
  background:none;
  border:1px solid var(--gold-30);
  cursor:pointer;line-height:1;
  transition:all var(--motion-normal);
}
.pub-header .x:hover{
  border-color:var(--gold);
  background:rgba(201,169,97,.08);
  text-shadow:0 0 12px rgba(201,169,97,.6);
}
.pub-header .brand-mark{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-md);letter-spacing:5px;
  background:linear-gradient(180deg,#F5F1E8 0%,#C9A961 80%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  line-height:1;
}
.pub-header .brand-divider{
  width:1px;height:14px;background:var(--gold-30);
}
.pub-header .title{
  flex:1;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--gold);opacity:.82;
  letter-spacing:0.28em;padding-left:0.28em;
  text-shadow:0 0 10px rgba(201,169,97,.3);
  line-height:1;
}
.pub-header .submit{
  position:relative;overflow:hidden;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--gold);
  background:rgba(201,169,97,.08);
  border:1px solid var(--gold);
  padding:9px 16px;cursor:pointer;
  letter-spacing:0.24em;text-indent:0.24em;
  line-height:1;
  box-shadow:0 0 16px -4px rgba(201,169,97,.4);
  transition:all var(--motion-normal);
}
.pub-header .submit::after{
  content:'';position:absolute;top:0;left:-100%;
  width:60%;height:100%;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.3) 50%,transparent 70%);
  transition:left var(--motion-macro);pointer-events:none;
}
.pub-header .submit:hover{background:var(--gold);color:var(--void)}
.pub-header .submit:hover::after{left:130%}

.pub-body{flex:1;overflow-y:auto;padding:32px 32px 96px}
.pub-body::-webkit-scrollbar{display:none}

.pub-section{
  display:flex;align-items:baseline;gap:12px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--gold);
  letter-spacing:0.22em;
  margin-bottom:var(--sp-4);
  padding-left:0.22em;line-height:1;
}
.pub-section .en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  letter-spacing:0.2em;
  color:var(--gold);opacity:.5;
  text-transform:uppercase;
}

.pub-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:8px;
  margin-bottom:48px;
}
.pub-grid .add-btn,.pub-grid .item{
  aspect-ratio:1;border:1px solid var(--edge);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;overflow:hidden;position:relative;
}
.pub-grid .add-btn{
  flex-direction:column;color:var(--ash);
  font-family:var(--serif);font-style:italic;
}
.pub-grid .add-btn .plus{font-size:var(--t-2xl);font-weight:300;color:var(--gold)}
.pub-grid .add-btn .count{font-size:9px;letter-spacing:1px;margin-top:4px;text-transform:uppercase}
.pub-grid .item img{width:100%;height:100%;object-fit:cover}
.pub-grid .item .rm{
  position:absolute;top:6px;right:6px;
  width:20px;height:20px;background:rgba(0,0,0,.85);
  color:var(--gold);display:flex;align-items:center;justify-content:center;
  font-size:var(--t-sm);border:1px solid var(--gold);
}

.pub-input{
  width:100%;
  font-family:var(--serif);font-weight:400;
  font-size:var(--t-lg);
  color:var(--bone);padding:8px 2px 14px;
  letter-spacing:0.02em;
  border-bottom:1px solid var(--gold-30);
  background:transparent;
  margin-bottom:var(--sp-7);
}
.pub-input:focus{outline:none;border-bottom-color:var(--gold)}
.pub-input::placeholder{
  color:var(--gold-30);font-style:italic;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
}
.pub-textarea{
  width:100%;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--bone);padding:8px 2px 14px;
  line-height:var(--lh-relaxed);letter-spacing:0.04em;
  resize:none;min-height:140px;
  border:none;border-bottom:1px solid var(--gold-30);
  background:transparent;
  margin-bottom:var(--sp-7);
}
.pub-textarea:focus{outline:none;border-bottom-color:var(--gold)}
.pub-textarea::placeholder{
  color:var(--gold-30);font-style:italic;
}

.pub-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:20px 0;border-bottom:1px solid var(--gold-30);
}
.pub-row .lbl{
  display:flex;align-items:baseline;gap:12px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--gold);
  letter-spacing:var(--ls-cn-label);
  padding-left:0.16em;line-height:1;
}
.pub-row .lbl .en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-en-label);
  opacity:.55;text-transform:uppercase;
}
.toggle{
  width:40px;height:22px;border:1px solid var(--edge);
  position:relative;cursor:pointer;transition:all var(--motion-normal);
}
.toggle.on{border-color:var(--gold);background:rgba(201,169,97,.1)}
.toggle .knob{
  position:absolute;top:1px;left:1px;
  width:18px;height:18px;background:var(--ash);
  transition:all var(--motion-normal);
}
.toggle.on .knob{transform:translateX(18px);background:var(--gold);box-shadow:0 0 8px rgba(201,169,97,.5)}

.pub-price-row{
  display:flex;align-items:baseline;gap:12px;
  padding:16px 2px;border-bottom:1px solid var(--gold-30);
  margin-bottom:var(--sp-3);
}
.pub-price-row .c{
  font-family:var(--serif);font-weight:400;
  font-size:var(--t-xl);
  color:var(--gold-deep);
}
.pub-price-row input{
  flex:1;
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-3xl);
  color:var(--gold);letter-spacing:0.04em;
  background:transparent;
}
.pub-price-row input:focus{outline:none}
.pub-fee{
  display:flex;justify-content:space-between;align-items:baseline;
  margin-bottom:var(--sp-7);padding:0 2px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:0.08em;
}
.pub-fee .right{color:var(--gold);font-weight:300}

.pub-tags{
  display:flex;flex-wrap:wrap;gap:12px;margin-bottom:var(--sp-7);
}
.pub-tag{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--ash);letter-spacing:0.06em;
  padding:12px 16px;border:1px solid var(--gold-30);
  cursor:pointer;transition:all var(--motion-micro);
  line-height:1;
}
.pub-tag.selected{
  color:var(--gold);border-color:var(--gold);
  background:var(--gold-08);
  box-shadow:0 0 12px -4px rgba(201,169,97,.4);
}

.pub-tip{
  padding:var(--sp-5);
  border:1px solid var(--gold-30);
  background:var(--gold-04);
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--ash);
  line-height:var(--lh-relaxed);letter-spacing:0.06em;
  text-align:center;
}
.pub-tip::before{
  content:'§';font-family:var(--serif);font-size:var(--t-xl);
  color:var(--gold);display:block;margin-bottom:8px;line-height:1;
}

/* ============== Profile ============== */
#profile{background:var(--void)}
.profile-content{padding:120px clamp(16px,5vw,32px) 120px;text-align:center}

/* -- 头像光环区域 -- */
.profile-avatar-wrap{
  position:relative;
  display:inline-flex;align-items:center;justify-content:center;
  width:100px;height:100px;
  margin-bottom:var(--sp-5);
}
.profile-avatar-wrap::before{
  content:'';position:absolute;inset:-4px;
  border-radius:50%;
  background:conic-gradient(
    from 0deg,
    transparent 0deg,
    rgba(201,169,97,.85) 50deg,
    #FDFAF2 110deg,
    rgba(201,169,97,.85) 170deg,
    transparent 230deg,
    rgba(201,169,97,.5) 290deg,
    transparent 360deg
  );
  animation:profileRingRotate 10s linear infinite;
}
.profile-avatar-wrap::after{
  content:'';position:absolute;inset:2px;
  border-radius:50%;
  background:var(--char);
}
@keyframes profileRingRotate{to{transform:rotate(360deg)}}
.profile-avatar{
  position:relative;z-index:2;
  width:84px;height:84px;border-radius:50%;
  background:radial-gradient(ellipse at 35% 30%,rgba(201,169,97,.24),transparent 65%),
    linear-gradient(145deg,#1C1408,#050400);
  border:1px solid rgba(201,169,97,.4);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 32px -8px rgba(201,169,97,.6),inset 0 0 20px rgba(201,169,97,.08);
}
.profile-avatar-initials{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-xl);
  background:linear-gradient(160deg,#FDFAF2 0%,#E8C879 45%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  letter-spacing:0.06em;line-height:1;
}

.profile-roman{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:var(--ls-en-label);
  text-transform:uppercase;
}
.profile-name{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(36px, 13vw, 52px);
  letter-spacing:0.12em;
  margin-top:var(--sp-3);
  padding:0 var(--sp-3);
  background:linear-gradient(180deg,#FDFAF2 0%,#F0D98A 22%,#C9A961 55%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:
    drop-shadow(0 0 40px rgba(201,169,97,.45))
    drop-shadow(0 2px 12px rgba(201,169,97,.28));
  line-height:1;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.profile-handle{
  display:inline-block;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-sm);
  color:var(--gold);opacity:.75;letter-spacing:0.2em;
  margin-top:var(--sp-4);
  padding:0 0 2px;
  border-bottom:1px solid var(--gold-30);
}
.profile-line{
  width:56px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  margin:var(--sp-6) auto;position:relative;
}
.profile-line::before{
  content:'';position:absolute;top:50%;left:50%;
  width:5px;height:5px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);
  box-shadow:0 0 10px rgba(201,169,97,.6);
}
.profile-bio{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--bone);letter-spacing:var(--ls-cn-body);
  line-height:var(--lh-relaxed);
  max-width:320px;margin:0 auto var(--sp-7);
  font-style:italic;
  opacity:.85;
}

/* -- 统计三栏：数字 vs label 拉开对比 -- */
.profile-stats{
  display:flex;justify-content:center;
  gap:0;
  padding:var(--sp-7) 0 var(--sp-6);
  border-top:1px solid rgba(201,169,97,.18);
  border-bottom:1px solid rgba(201,169,97,.18);
  margin-bottom:var(--sp-8);
  background:
    radial-gradient(ellipse at 50% 0%,rgba(201,169,97,.10),transparent 65%),
    rgba(201,169,97,.02);
}
.profile-stats .stat{
  flex:1;
  display:flex;flex-direction:column;align-items:center;gap:8px;
  position:relative;
}
.profile-stats .stat:not(:last-child)::after{
  content:'';position:absolute;right:0;top:15%;
  width:1px;height:70%;
  background:linear-gradient(180deg,transparent,var(--gold-30),transparent);
}
.profile-stats .stat .v{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(52px,15vw,68px);
  letter-spacing:-0.04em;
  line-height:0.88;
  background:linear-gradient(160deg,#FDFAF2 0%,#F0D98A 30%,#C9A961 65%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 18px rgba(201,169,97,.4));
}
.profile-stats .stat .l{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);
  letter-spacing:0.28em;padding-left:0.28em;
  opacity:.65;
}
.prof-recent-viewed{
  margin-bottom:var(--sp-7);
}
.prof-rv-title{
  display:flex;align-items:baseline;justify-content:center;gap:12px;
  padding-bottom:var(--sp-4);
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);
  line-height:1;
}
.prof-rv-title .en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-en-label);
  opacity:.55;text-transform:uppercase;
}
.prof-rv-row{
  display:grid;grid-template-columns:repeat(3,1fr);gap:12px;
  padding:0 var(--sp-3);
}
.rv-item{
  position:relative;cursor:pointer;
  transition:all var(--motion-normal);
  border:1px solid var(--gold-30);
}
.rv-item:hover{
  border-color:var(--gold);transform:translateY(-2px);
  box-shadow:0 10px 30px -12px rgba(201,169,97,.4);
}
.rv-item .img{
  aspect-ratio:3/4;background-size:cover;background-position:center;
  background-color:rgba(0,0,0,.5);
}
.rv-item .pr{
  position:absolute;left:6px;bottom:6px;
  padding:3px 8px;
  background:rgba(0,0,0,.75);
  border:1px solid var(--gold-50);
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-2xs);
  color:var(--gold);letter-spacing:0.03em;
  line-height:1;
}

/* -- 菜单列表：editorial 行式导航 · 奢华留白 -- */
.profile-actions{display:flex;flex-direction:column;gap:0}
.profile-actions .edit,.profile-actions .out{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  letter-spacing:0.24em;text-indent:0.24em;
  /* 每行高度大幅提升，呼吸感 */
  padding:var(--sp-6) var(--sp-4);
  cursor:pointer;
  background:transparent;
  border:none;
  border-bottom:1px solid rgba(201,169,97,.09);
  color:var(--bone);
  transition:background var(--motion-normal),color var(--motion-normal),padding-left var(--motion-micro);
  line-height:1;text-align:left;width:100%;
  position:relative;display:flex;align-items:center;justify-content:space-between;
}
.profile-actions .edit:first-child{
  border-top:1px solid rgba(201,169,97,.09);
}
/* 右侧金色单角箭头 */
.profile-actions .edit::after{
  content:'\203A';
  font-family:var(--serif);font-size:var(--t-xl);font-weight:300;
  color:var(--gold);opacity:.3;line-height:1;flex-shrink:0;
  transition:opacity var(--motion-normal),transform var(--motion-normal);
}
.profile-actions .edit:hover{
  background:var(--gold-04);color:var(--gold);
  padding-left:calc(var(--sp-4) + 8px);
}
.profile-actions .edit:hover::after{opacity:.85;transform:translateX(4px)}
.profile-actions .out{
  background:none;border-bottom:none;
  border-top:1px solid rgba(201,169,97,.09);
  color:var(--ash);opacity:.5;
  justify-content:center;
  margin-top:var(--sp-5);
  padding:var(--sp-5) 0;
  font-size:var(--t-sm);
}
.profile-actions .out::after{display:none}
.profile-actions .out:hover{color:var(--gold);opacity:1;background:transparent}

/* ============== Toast ============== */
#toast{
  position:fixed;left:50%;bottom:100px;z-index:9999;
  transform:translate(-50%,16px);
  padding:20px 32px 20px 36px;
  background:var(--void);
  border:1px solid rgba(201,169,97,.35);
  border-left:3px solid var(--gold);
  font-family:var(--serif);font-style:italic;font-size:var(--t-sm);
  color:var(--bone);letter-spacing:1.5px;
  opacity:0;pointer-events:none;
  transition:opacity var(--motion-normal),transform var(--motion-normal);
  max-width:80vw;text-align:center;
  box-shadow:var(--elevation-3), var(--glow-sm);
}
#toast.show{opacity:1;transform:translate(-50%,0)}

/* Loading overlay */
.loading-overlay{
  position:absolute;inset:0;background:rgba(0,0,0,.85);
  backdrop-filter:blur(4px);
  display:none;align-items:center;justify-content:center;
  z-index:9998;flex-direction:column;gap:24px;
}
.loading-overlay.show{display:flex}
.spinner{
  width:48px;height:48px;position:relative;
}
.spinner::before,.spinner::after{
  content:'';position:absolute;inset:0;
  border:1px solid transparent;
  border-top-color:var(--gold);
  border-radius:50%;
  animation:spinRing 1.6s cubic-bezier(.5,0,.5,1) infinite;
}
.spinner::after{
  inset:8px;border-color:transparent;border-top-color:var(--gold-light);
  animation-duration:1.2s;animation-direction:reverse;
}
@keyframes spinRing{to{transform:rotate(360deg)}}
.loading-text{
  font-family:var(--serif);font-style:italic;font-size:var(--t-xs);
  color:var(--gold);letter-spacing:6px;text-transform:uppercase;
  /* v27: 文字渐隐闪烁，配合 spinner */
  animation:loadingTextFade 1.8s ease-in-out infinite;
}
@keyframes loadingTextFade{
  0%,100%{opacity:.55}
  50%{opacity:1;text-shadow:0 0 14px rgba(201,169,97,.6)}
}

/* 错误显示 */
.global-err{
  position:fixed;top:0;left:0;right:0;z-index:99999;
  padding:12px 16px;background:#400;color:#fff;
  font-family:monospace;font-size:var(--t-xs);
  display:none;
}
.global-err.show{display:block}

/* ============== v26 底部 Tab Bar ============== */
.tabbar{
  position:absolute;left:0;right:0;bottom:0;z-index:80;
  display:none;
  /* v27: 高度加高适配 safe-area，padding 让标签更呼吸 */
  height:72px;
  padding:0 0 env(safe-area-inset-bottom,0);
  background:rgba(0,0,0,.98);
  /* v27: blur 16px · 固定 UI 统一值 */
  backdrop-filter:blur(16px) saturate(1.4);
  -webkit-backdrop-filter:blur(16px) saturate(1.4);
  border-top:1px solid rgba(201,169,97,.28);
  box-shadow:
    0 -1px 0 rgba(201,169,97,.1) inset,
    0 -1px 0 rgba(255,255,255,.03) inset,
    0 -40px 80px -20px rgba(0,0,0,.98);
}
.tabbar::before{
  content:'';position:absolute;left:50%;top:-1px;
  width:120px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,169,97,.85),var(--gold),rgba(201,169,97,.85),transparent);
  transform:translateX(-50%);
  box-shadow:0 0 20px rgba(201,169,97,.6),0 0 8px rgba(201,169,97,.9);
}
.tabbar.show{display:flex}
.tab{
  flex:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:4px;
  background:none;border:none;cursor:pointer;
  padding:8px 0;position:relative;
  -webkit-tap-highlight-color:transparent;
  transition:all var(--motion-normal);
}
.tab .ti{
  font-family:var(--serif);font-weight:400;
  /* v27: 图标 var(--t-lg) = 21px，归入标尺 */
  font-size:var(--t-lg);line-height:1;
  color:rgba(180,160,120,.5);
  transition:all var(--motion-normal);
}
.tab .lb{
  font-family:var(--cn);font-weight:300;
  /* v27: 归入 Perfect Fourth 标尺 · --t-2xs = 11px */
  font-size:var(--t-2xs);
  color:rgba(160,140,100,.55);
  letter-spacing:0.22em;padding-left:0.22em;line-height:1;
  transition:all var(--motion-normal);
  text-transform:uppercase;
}
.tab.active .ti{
  color:var(--gold);
  /* v27: 更强 glow + 位移更明显 */
  text-shadow:
    0 0 20px rgba(201,169,97,.9),
    0 0 40px rgba(201,169,97,.5),
    0 0 60px rgba(201,169,97,.2);
  transform:translateY(-3px) scale(1.1);
}
.tab.active .lb{
  color:var(--gold);
  text-shadow:0 0 12px rgba(201,169,97,.5);
}
.tab:active{transform:scale(.94)}
/* v28: 金色活跃指示点 — 不含 .tab-publish */
.tab.active:not(.tab-publish)::after{
  content:'';position:absolute;bottom:4px;left:50%;
  width:20px;height:2px;border-radius:1px;
  background:var(--gold);
  transform:translateX(-50%);
  box-shadow:0 0 8px rgba(201,169,97,.6),0 0 3px rgba(201,169,97,.4);
  transition:all var(--motion-normal);
}
/* 中央发布按钮：浮起圆形金 */
.tab-publish{position:relative}
.tab-publish .ti.pub{
  position:absolute;top:-28px;left:50%;
  transform:translateX(-50%);
  /* v27: 56px 更突出，更有质感 */
  width:56px;height:56px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:300;
  font-size:32px;line-height:1;
  color:var(--void);
  background:
    radial-gradient(circle at 30% 28%,#FDFAF2 0%,#EDD088 30%,#C9A961 62%,#8C7536 85%,#5A4820 100%);
  border:1px solid rgba(248,230,170,.7);
  box-shadow:
    0 0 48px -2px rgba(201,169,97,.9),
    0 0 24px -2px rgba(201,169,97,.65),
    0 0 80px -20px rgba(201,169,97,.4),
    0 12px 36px -8px rgba(0,0,0,.98),
    0 2px 0 rgba(255,255,255,.3) inset;
  /* v27: 持续 glow 脉冲 */
  animation:pubGlowPulse 3s ease-in-out infinite;
}
@keyframes pubGlowPulse{
  0%,100%{
    box-shadow:
      0 0 40px -4px rgba(201,169,97,.85),
      0 0 18px -2px rgba(201,169,97,.6),
      0 0 70px -24px rgba(201,169,97,.35),
      0 12px 36px -8px rgba(0,0,0,.98),
      0 2px 0 rgba(255,255,255,.3) inset;
  }
  50%{
    box-shadow:
      0 0 60px -2px rgba(201,169,97,.92),
      0 0 30px -2px rgba(201,169,97,.78),
      0 0 100px -20px rgba(201,169,97,.48),
      0 12px 36px -8px rgba(0,0,0,.98),
      0 2px 0 rgba(255,255,255,.35) inset;
  }
}
.tab-publish .lb{margin-top:32px;color:var(--gold-70)}
.tab-publish:active .ti.pub{transform:translateX(-50%) scale(.9)}
.tab-publish.active .ti.pub{
  box-shadow:
    0 0 52px -2px rgba(201,169,97,.9),
    0 0 24px rgba(201,169,97,.65),
    0 10px 30px -8px rgba(0,0,0,.95);
}
.tab-publish.active .lb{color:var(--gold)}
/* v25 UI15: tab bar 未读 badge 也加 GlowPulse 呼吸 */
.tab .dot{
  position:absolute;top:4px;right:22%;
  min-width:16px;height:16px;
  padding:0 4px;border-radius:10px;
  background:linear-gradient(180deg,var(--gold-light),var(--gold));
  color:var(--void);
  font-family:var(--serif);font-weight:600;
  font-size:9px;letter-spacing:0.5px;
  display:none;align-items:center;justify-content:center;
  box-shadow:0 0 12px rgba(201,169,97,.7), 0 0 4px rgba(201,169,97,.5);
  line-height:1;
  animation:glowPulse 2s ease-in-out infinite;
}
.tab .dot.show{display:flex}
/* 主 tab 页面 scrollable 加底部 padding 给 tabbar 留空 */
#feed .feed-content,
#chats .chats-list,
#notifications .notif-list,
#profile .profile-content{
  padding-bottom:calc(100px + env(safe-area-inset-bottom,0)) !important;
}

/* ============================================================================
   v14 · 新增：搜索 / 私语列表 / 私语详情 / 他人主页 / 编辑资料
   ============================================================================ */

/* 通用 back-btn — 44×44 触摸区 + flex centering + 金色 */
.back-btn{
  width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;
  background:none;border:none;
  font-family:var(--serif);font-size:var(--t-xl);
  color:var(--gold);cursor:pointer;
  flex-shrink:0;
  -webkit-tap-highlight-color:rgba(201,169,97,.2);
  transition:opacity var(--motion-micro),text-shadow var(--motion-micro);
  text-shadow:0 0 12px rgba(201,169,97,.4);
}
.back-btn:active{opacity:.5}
.back-btn:hover{text-shadow:0 0 20px rgba(201,169,97,.75)}

/* ============== Search v16 ============== */
#search.page{
  background:radial-gradient(ellipse at 50% 30%, #0A0600 0%, #000000 80%);
}
#search .scrollable{
  padding-top:88px;
}
.search-header{
  position:absolute;top:0;left:0;right:0;z-index:50;
  display:flex;align-items:center;gap:12px;
  padding:20px 20px 16px;
  /* v27: 毛玻璃与 header 保持一致 · 统一 16px */
  background:rgba(0,0,0,.97);
  backdrop-filter:blur(16px) saturate(1.3);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);
  border-bottom:1px solid rgba(201,169,97,.2);
  box-shadow:0 1px 0 rgba(201,169,97,.06);
}
.search-header .back-btn{
  flex-shrink:0;
  width:44px;height:44px;
  background:none;border:none;
  font-family:var(--serif);font-size:var(--t-xl);
  color:var(--gold);cursor:pointer;
  z-index:51;
  -webkit-tap-highlight-color:rgba(201,169,97,.2);
}
.search-header .back-btn:active{opacity:.5}
.search-input{
  flex:1;min-width:0;height:44px;
  background:rgba(201,169,97,.04);
  border:1px solid rgba(201,169,97,.28);
  padding:0 16px;
  font-family:var(--serif);font-size:var(--t-md);
  color:var(--bone);letter-spacing:.5px;
  -webkit-appearance:none;appearance:none;border-radius:0;
  transition:border-color var(--motion-normal),box-shadow var(--motion-normal),background var(--motion-normal);
}
.search-input::placeholder{
  font-family:var(--cn);font-weight:300;font-style:italic;font-size:var(--t-sm);
  color:rgba(201,169,97,.38);letter-spacing:3px;
}
/* v27: 焦点态金色 glow — editorial 风格 */
.search-input:focus{
  outline:none;
  border-color:var(--gold);
  background:rgba(201,169,97,.07);
  box-shadow:
    0 0 0 1px rgba(201,169,97,.38),
    0 0 24px -4px rgba(201,169,97,.55),
    0 0 48px -12px rgba(201,169,97,.28);
}
.search-input::-webkit-search-cancel-button{display:none}
.search-results{padding:0 0 80px}
.search-hot-eyebrow{
  margin-top:var(--sp-9);padding-bottom:var(--sp-4);
  text-align:center;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:.7;
  letter-spacing:var(--ls-en-display);text-transform:uppercase;
}
.search-hot-tags{
  display:flex;flex-wrap:wrap;justify-content:center;gap:12px;
  padding:0 var(--sp-6);
}
.hot-chip{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:0.1em;
  padding:8px 20px;
  background:rgba(201,169,97,.06);
  border:1px solid var(--gold-30);
  cursor:pointer;
  transition:all var(--motion-normal);line-height:1;
  user-select:none;
}
.hot-chip:hover{
  background:var(--gold-15);
  border-color:var(--gold);
  color:var(--gold-light);
  box-shadow:0 0 20px -6px rgba(201,169,97,.5);
}
.hot-chip.recent{
  opacity:.85;
  background:rgba(201,169,97,.03);
}
.search-recent-eyebrow{
  display:flex;align-items:center;justify-content:space-between;
  padding:var(--sp-7) var(--sp-6) var(--sp-4);
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:.7;
  letter-spacing:var(--ls-en-display);text-transform:uppercase;
}
.recent-clear{
  background:none;border:none;cursor:pointer;
  font-family:var(--cn);font-weight:300;font-style:normal;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);opacity:.6;
  transition:opacity var(--motion-normal);line-height:1;
}
.recent-clear:hover{opacity:1;color:var(--gold)}
.search-section-title{
  padding:var(--sp-5) var(--sp-6) var(--sp-3);
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:.7;
  letter-spacing:var(--ls-en-display);
  text-transform:uppercase;line-height:1;
  text-align:center;
}
.search-user-row{
  display:flex;align-items:center;gap:16px;
  padding:var(--sp-4) var(--sp-6);
  border-bottom:1px solid var(--gold-30);
  cursor:pointer;transition:background var(--motion-normal);
}
.search-user-row:hover{background:rgba(201,169,97,.04)}
.search-user-row .avatar{
  width:44px;height:44px;border-radius:50%;
  background:var(--gold-08);border:1px solid var(--gold);
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;flex-shrink:0;
}
.search-user-row .avatar img{width:100%;height:100%;object-fit:cover}
.search-user-row .user-letter{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-lg);color:var(--gold);
}
.search-user-row .info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.search-user-row .name{
  font-family:var(--cn);font-weight:400;
  font-size:var(--t-md);
  color:var(--bone);letter-spacing:var(--ls-cn-body);
  display:flex;align-items:center;gap:12px;
}
.search-user-row .user-verified{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:.85;
  letter-spacing:0.03em;
  padding:2px 8px;border:1px solid var(--gold-50);
  line-height:1;
}
.search-user-row .sub{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);opacity:.65;
  letter-spacing:var(--ls-cn-label);
}
.search-empty{
  text-align:center;padding:96px 32px 40px;
}
.search-empty-line{
  width:56px;height:1px;margin:0 auto 28px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.search-empty-cn{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-lg);
  color:var(--gold);
  letter-spacing:0.32em;padding-left:0.32em;line-height:1;
  background:linear-gradient(180deg,#F5E6C8 0%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 18px rgba(201,169,97,.35));
}
.search-empty-tip{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--ash);opacity:.65;
  margin-top:14px;letter-spacing:0.18em;
}
.search-row{
  display:flex;gap:16px;
  padding:20px 24px;
  border-bottom:1px solid rgba(201,169,97,.08);
  cursor:pointer;
}
.search-row .thumb{
  width:72px;height:96px;
  background:#000000;
  border:1px solid rgba(201,169,97,.3);
  flex-shrink:0;
}
.search-row .thumb img{
  width:100%;height:100%;object-fit:cover;
}
.search-row .info{flex:1;min-width:0}
.search-row .title{
  font-family:var(--serif);font-weight:500;font-size:var(--t-lg);
  color:var(--bone);letter-spacing:.5px;
  margin-bottom:6px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.search-row .by{
  font-family:var(--serif);font-style:italic;font-size:var(--t-xs);
  color:rgba(201,169,97,.7);letter-spacing:1.5px;
}
.search-row .price{
  margin-top:8px;
  font-family:var(--serif);font-weight:500;font-size:var(--t-xl);
  color:var(--gold);letter-spacing:1px;
}

/* ============== 私语列表 ============== */
#chats.page{background:var(--void)}
.chats-list{padding:120px 0 100px}
.chats-loading,.chats-empty{
  text-align:center;padding:140px 32px;
  font-family:var(--cn);font-weight:300;font-size:var(--t-sm);
  color:var(--ash);letter-spacing:0.3em;
}
.chats-empty{
  display:flex;flex-direction:column;align-items:center;gap:24px;
}
.chats-empty::before{
  content:'❦';
  font-family:var(--serif);font-size:var(--t-2xl);
  color:var(--gold);opacity:.45;line-height:1;
  text-shadow:0 0 24px rgba(201,169,97,.4);
}
.chats-empty .em-line{display:none}
.chats-empty .em-cn{
  font-size:var(--t-xl);color:var(--gold);
  letter-spacing:0.36em;padding-left:0.36em;line-height:1;
  background:linear-gradient(180deg,#F5E6C8 0%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 18px rgba(201,169,97,.4));
  opacity:1;margin-bottom:0;
}
.chats-empty .em-tip{
  font-family:var(--cn);font-weight:300;font-style:italic;
  font-size:var(--t-sm);
  color:var(--ash);opacity:.7;
  letter-spacing:0.1em;line-height:var(--lh-relaxed);
  max-width:240px;
}
.chat-row{
  display:flex;align-items:center;gap:20px;
  padding:24px 28px;
  border-bottom:1px solid var(--gold-15);
  cursor:pointer;
  transition:all var(--motion-normal);
  position:relative;
}
.chat-row:hover{
  background:var(--gold-04);
  padding-left:36px;
}
.chat-row::before{
  content:'';position:absolute;left:0;top:50%;
  width:0;height:1px;background:var(--gold);
  transform:translateY(-50%);
  transition:width var(--motion-normal);
}
.chat-row:hover::before{width:20px}
.chat-avatar{
  width:56px;height:56px;border-radius:50%;
  background:radial-gradient(circle at 30% 30%,#1A0C02,#000000);
  border:1px solid var(--gold-50);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-xl);
  color:var(--gold);
  flex-shrink:0;
  box-shadow:0 0 18px -4px rgba(201,169,97,.35);
  text-shadow:0 0 10px rgba(201,169,97,.6);
}
.chat-row .info{flex:1;min-width:0}
.chat-row .top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.chat-row .name{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-lg);
  color:var(--bone);letter-spacing:0.04em;
}
.chat-row .when{
  font-family:var(--serif);font-style:italic;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:0.06em;opacity:.5;
}
.chat-row .last{
  margin-top:8px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--ash);letter-spacing:0.04em;line-height:1.5;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
/* v25 UI15: GlowPulse 呼吸光晕 · "有人找你"的仪式感
   Flutter: GlowPulse maxOpacity 0.55, maxBlur 14, period 2s */
.chat-row .dot{
  width:8px;height:8px;border-radius:50%;background:var(--gold);
  box-shadow:0 0 10px rgba(201,169,97,.5);
  margin-left:12px;flex-shrink:0;
  animation:glowPulse 2s ease-in-out infinite;
}
@keyframes glowPulse{
  0%,100%{box-shadow:0 0 6px rgba(201,169,97,.3)}
  50%{box-shadow:0 0 14px rgba(201,169,97,.55),0 0 28px rgba(201,169,97,.2)}
}

/* ============== 私语详情 ============== */
#chat.page{
  background:var(--void);
  display:flex;flex-direction:column;
  /* flex 布局：header + scrollable(flex:1) + input-row */
}
/* chat 内的 scrollable 不走 absolute 定位，走 flex:1 */
#chat .scrollable{
  position:relative;
  inset:auto;
  flex:1;
  overflow-y:auto;
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  min-height:0; /* flex 子项必须 min-height:0 才能收缩 */
}
#chat .scrollable::-webkit-scrollbar{display:none}
/* Chat header — 毛玻璃 + 底线 · flex-shrink:0 防止被压缩 */
.chat-header{
  display:flex;align-items:center;gap:16px;
  padding:env(safe-area-inset-top,0px) 20px 0;
  padding-top:calc(env(safe-area-inset-top,0px) + 18px);
  padding-bottom:18px;
  border-bottom:1px solid rgba(201,169,97,.25);
  background:
    linear-gradient(180deg,#000000 0%,rgba(0,0,0,.97) 60%,rgba(0,0,0,.90) 100%);
  backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);
  position:relative;
  flex-shrink:0;
  z-index:10;
}
/* header 底部金色辉光线 */
.chat-header::after{
  content:'';
  position:absolute;bottom:-1px;left:20%;right:20%;height:1px;
  background:radial-gradient(ellipse,rgba(201,169,97,.5),transparent 70%);
  pointer-events:none;
}
.chat-title{
  flex:1;text-align:center;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--gold);letter-spacing:0.32em;padding-left:0.32em;
  text-shadow:0 0 20px rgba(201,169,97,.5);
  line-height:1;
  position:relative;
}
/* 标题下方细线装饰 */
.chat-title::after{
  content:'';
  position:absolute;bottom:-8px;left:50%;transform:translateX(-50%);
  width:32px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-50),transparent);
}
.chat-deco{
  width:40px;height:40px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:var(--t-lg);
  color:var(--gold);opacity:.7;line-height:1;
  text-shadow:0 0 16px rgba(201,169,97,.65);
}
.chat-messages{
  padding:48px 22px 36px;
  display:flex;flex-direction:column;gap:24px;
}
/* 气泡基础 — 对方：纯黑底 + 金色 hairline 边框 */
.bubble{
  max-width:76%;padding:16px 20px;
  border:1px solid rgba(201,169,97,.22);
  border-radius:2px 16px 16px 16px;
  background:rgba(12,10,6,.92);
  position:relative;
  animation:bubbleIn 280ms var(--ease) backwards;
  box-shadow:
    0 2px 12px rgba(0,0,0,.5),
    inset 0 1px 0 rgba(201,169,97,.08);
}
@keyframes bubbleIn{
  from{opacity:0;transform:translateY(12px)}
  to{opacity:1;transform:translateY(0)}
}
/* 对方气泡 — L 角装饰（左上+右下）*/
.bubble::before{
  content:'';position:absolute;width:12px;height:12px;
  border:1px solid rgba(201,169,97,.45);opacity:.7;
  top:-1px;pointer-events:none;
}
.bubble:not(.me)::before{
  left:-1px;border-right:none;border-bottom:none;
}
.bubble::after{
  content:'';position:absolute;width:12px;height:12px;
  border:1px solid rgba(201,169,97,.45);opacity:.7;
  bottom:-1px;pointer-events:none;
}
.bubble:not(.me)::after{
  right:-1px;border-left:none;border-top:none;
}
/* 自己的消息 — 深金底 + 发光 + 强区分度 */
.bubble.me{
  align-self:flex-end;
  border-radius:16px 2px 16px 16px;
  background:linear-gradient(
    160deg,
    rgba(70,50,12,.95) 0%,
    rgba(45,30,6,.98) 50%,
    rgba(25,16,2,1) 100%
  );
  border-color:rgba(201,169,97,.55);
  box-shadow:
    0 0 24px -6px rgba(201,169,97,.4),
    0 4px 16px -4px rgba(0,0,0,.7),
    inset 0 1px 0 rgba(201,169,97,.15);
}
.bubble.me::before{
  right:-1px;left:auto;
  border-left:none;border-bottom:none;
  border-color:rgba(201,169,97,.7);opacity:.85;
}
.bubble.me::after{
  left:-1px;right:auto;
  border-right:none;border-top:none;
  border-color:rgba(201,169,97,.7);opacity:.85;
}
/* 文字颜色区分：对方 muted ivory · 自己 warm white */
.bubble .text{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:rgba(232,214,178,.9);
  line-height:var(--lh-relaxed);
  letter-spacing:var(--ls-cn-body);
  white-space:pre-wrap;word-break:break-word;
}
.bubble.me .text{
  color:#FAF4E6;
  text-shadow:0 0 10px rgba(201,169,97,.18);
}
.bubble .time{
  margin-top:12px;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:rgba(201,169,97,.45);letter-spacing:0.14em;
  text-align:right;line-height:1;
}
.bubble:not(.me) .time{text-align:left}
/* 输入区 — editorial 感：无边框 / 底线风格 · flex-shrink:0 固定底部 */
.chat-input-row{
  display:flex;align-items:center;gap:0;
  padding:16px 20px calc(16px + env(safe-area-inset-bottom,0));
  background:rgba(0,0,0,.98);
  border-top:1px solid rgba(201,169,97,.18);
  position:relative;
  flex-shrink:0;
  z-index:10;
}
/* 输入区顶部辉光线 */
.chat-input-row::before{
  content:'';
  position:absolute;top:-1px;left:15%;right:15%;height:1px;
  background:radial-gradient(ellipse,rgba(201,169,97,.35),transparent 70%);
  pointer-events:none;
}
.chat-input{
  flex:1;height:52px;
  background:transparent;
  border:none;
  border-bottom:1px solid rgba(201,169,97,.35);
  padding:0 16px 0 4px;
  font-family:var(--cn);font-weight:300;font-size:var(--t-md);
  color:var(--bone);letter-spacing:1.5px;
  transition:border-color var(--motion-normal);
}
.chat-input::placeholder{
  color:rgba(201,169,97,.28);
  font-style:italic;
  letter-spacing:2px;
}
.chat-input:focus{
  outline:none;
  border-bottom-color:var(--gold);
  box-shadow:0 1px 0 rgba(201,169,97,.25);
}
.chat-send{
  width:52px;height:52px;
  background:rgba(201,169,97,.06);
  border:1px solid rgba(201,169,97,.55);
  font-family:var(--cn);font-weight:300;font-size:var(--t-md);
  color:var(--gold);cursor:pointer;
  margin-left:12px;
  box-shadow:0 0 20px -6px rgba(201,169,97,.4);
  transition:all var(--motion-normal);
  position:relative;
}
.chat-send::before{
  content:'';position:absolute;top:-1px;left:-1px;width:8px;height:8px;
  border-top:1px solid var(--gold);border-left:1px solid var(--gold);
  pointer-events:none;opacity:.7;
}
.chat-send::after{
  content:'';position:absolute;bottom:-1px;right:-1px;width:8px;height:8px;
  border-bottom:1px solid var(--gold);border-right:1px solid var(--gold);
  pointer-events:none;opacity:.7;
}
.chat-send:hover{
  background:var(--gold);color:var(--void);
  box-shadow:0 0 28px -4px rgba(201,169,97,.65);
}

/* ============== 他人主页 ============== */
#user.page{background:var(--void)}
.user-back{
  position:absolute;top:0;left:0;right:0;z-index:30;
  padding:24px 16px;background:rgba(0,0,0,.7);
  backdrop-filter:blur(12px);
}
#user .scrollable{padding-top:0}
.user-body{padding:80px 32px 80px;text-align:center}
.user-tag{
  font-family:var(--serif);font-style:italic;font-size:var(--t-xs);
  color:var(--gold);letter-spacing:5px;margin-bottom:12px;
}
.user-name{
  font-family:var(--serif);font-weight:500;font-size:var(--t-3xl);
  letter-spacing:4px;
  background:linear-gradient(180deg,#FAF4E6 0%,#E8C879 30%,#C9A961 60%,#8C7536 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 24px rgba(201,169,97,.32));
  line-height:1;
}
.user-handle{
  font-family:var(--serif);font-style:italic;font-size:var(--t-sm);
  color:var(--ash);letter-spacing:2px;margin-top:8px;
}
.user-line{
  width:56px;height:1px;margin:32px auto;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.user-bio{
  font-family:var(--cn);font-weight:300;font-size:var(--t-sm);
  color:var(--ash);letter-spacing:2px;line-height:1.85;
  font-style:italic;
}
.user-stats{
  display:flex;justify-content:space-around;
  padding:24px 0;margin:32px 0;
  border-top:1px solid rgba(201,169,97,.2);
  border-bottom:1px solid rgba(201,169,97,.2);
}
.user-stat .num{
  font-family:var(--serif);font-weight:500;font-size:var(--t-xl);
  color:var(--gold);
}
.user-stat .lbl{
  font-family:var(--serif);font-style:italic;font-size:9px;
  color:var(--ash);letter-spacing:2px;margin-top:6px;
}
.user-actions{display:flex;gap:12px;margin-bottom:48px}
.user-actions .btn{
  flex:1;height:52px;
  font-family:var(--cn);font-weight:300;font-size:var(--t-md);
  letter-spacing:6px;padding-left:6px;
  background:rgba(201,169,97,.06);
  border:1px solid var(--gold);
  color:var(--gold);cursor:pointer;
  box-shadow:0 0 20px -6px rgba(201,169,97,.3);
}
.user-actions .btn.followed{background:rgba(201,169,97,.18)}
.user-actions .btn.ghost{
  background:none;
  border-color:rgba(201,169,97,.3);
  color:var(--ash);
  box-shadow:none;
}
.user-pieces-title{
  display:flex;align-items:center;gap:12px;
  font-family:var(--cn);font-weight:300;font-size:var(--t-md);
  color:var(--gold);letter-spacing:5px;
  margin-bottom:20px;text-align:left;padding-left:5px;
}
.user-pieces-title .ln{
  flex:1;height:1px;
  background:linear-gradient(90deg,rgba(201,169,97,.5),transparent);
}
.user-piece{
  display:flex;gap:16px;
  padding:12px 0;cursor:pointer;
  text-align:left;
}
.user-piece .thumb{
  width:64px;height:84px;
  background:var(--void);border:1px solid rgba(201,169,97,.3);
}
.user-piece .thumb img{width:100%;height:100%;object-fit:cover}
.user-piece .info{flex:1;min-width:0}
.user-piece .ti{
  font-family:var(--serif);font-weight:500;font-size:var(--t-md);
  color:var(--bone);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  margin-bottom:6px;
}
.user-piece .pr{
  font-family:var(--serif);font-weight:500;font-size:var(--t-lg);
  color:var(--gold);letter-spacing:1px;
}

/* ============== 编辑资料 v16.3 ============== */
#profile-edit.page{
  background:
    radial-gradient(ellipse at 50% 5%, rgba(201,169,97,.14) 0%, transparent 40%),
    #000000;
}
.pe-header{
  display:flex;align-items:center;gap:var(--sp-3);
  padding:var(--sp-5) var(--sp-4) var(--sp-4);
  border-bottom:1px solid var(--gold-30);
  background:rgba(0,0,0,.5);
}
.pe-header .back-btn{
  width:48px;height:48px;
  font-family:var(--serif);font-weight:300;
  font-size:var(--t-2xl);
  color:var(--gold);background:none;border:none;cursor:pointer;
  line-height:1;
  z-index:51;
}
.pe-header .back-btn:active{opacity:.5}
.pe-title{
  flex:1;text-align:center;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--gold);
  letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);
  text-shadow:0 0 14px rgba(201,169,97,.4);
  line-height:1;
}
.pe-save{
  background:var(--gold-08);border:1px solid var(--gold);
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);
  letter-spacing:var(--ls-cn-button);text-indent:var(--ls-cn-button);
  padding:12px 16px;cursor:pointer;
  line-height:1;
  box-shadow:0 0 16px -4px rgba(201,169,97,.4);
}
.pe-save:hover{background:var(--gold);color:var(--void)}
.pe-body{padding:var(--sp-5) var(--sp-6) var(--sp-9)}
.pe-avatar-row{
  display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);
  margin:var(--sp-6) 0 var(--sp-7);
}
.pe-avatar{
  width:104px;height:104px;border-radius:50%;
  background:radial-gradient(circle at 30% 30%,#1A0C02,#000000);
  border:1px solid var(--gold);
  display:flex;align-items:center;justify-content:center;
  position:relative;cursor:pointer;
  background-size:cover;background-position:center;
  box-shadow:0 0 32px -6px rgba(201,169,97,.4);
}
.pe-avatar.has-img .pe-avatar-letter{display:none}
.pe-avatar-letter{
  font-family:var(--serif);font-weight:400;
  font-size:var(--t-3xl);
  color:var(--gold-50);letter-spacing:0.04em;
  line-height:1;
}
.pe-avatar-cam{
  position:absolute;bottom:0;right:0;
  width:30px;height:30px;border-radius:50%;
  background:var(--gold);border:2px solid var(--void);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:var(--t-lg);font-weight:300;
  color:var(--void);line-height:1;
}
.pe-avatar-tip{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);
  opacity:.7;
}
.pe-field{
  margin-bottom:var(--sp-7);
}
.pe-section{
  display:flex;align-items:baseline;gap:12px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);
  letter-spacing:var(--ls-cn-label);
  padding-left:0.16em;
  margin-bottom:var(--sp-3);line-height:1;
}
.pe-section .en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-en-label);
  opacity:.55;text-transform:uppercase;
}
.pe-input{
  width:100%;
  background:transparent;
  border:none;border-bottom:1px solid var(--gold-30);
  font-family:var(--serif);font-weight:400;
  font-size:var(--t-lg);
  color:var(--bone);letter-spacing:0.02em;
  padding:8px 2px 14px;
  line-height:var(--lh-display);
}
.pe-input:focus{outline:none;border-bottom-color:var(--gold)}
.pe-input::placeholder{
  color:var(--gold-30);font-style:italic;
  font-family:var(--cn);font-weight:300;
}
.pe-textarea{
  width:100%;min-height:120px;
  background:transparent;resize:none;
  border:none;border-bottom:1px solid var(--gold-30);
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--bone);letter-spacing:0.04em;
  line-height:var(--lh-relaxed);
  padding:8px 2px;
}
.pe-textarea::placeholder{
  color:var(--gold-30);font-style:italic;
}
.pe-textarea:focus{outline:none;border-bottom-color:var(--gold)}

/* ============== v20 钱包 / 提现 ============== */
.wallet-wrap{padding:110px var(--sp-6) var(--sp-9)}
.wallet-hero{
  position:relative;
  padding:var(--sp-8) var(--sp-6) var(--sp-8);
  margin-bottom:var(--sp-7);
  background:
    radial-gradient(ellipse at 50% -10%,rgba(201,169,97,.22),transparent 65%),
    radial-gradient(ellipse at 50% 100%,rgba(201,169,97,.06),transparent 60%),
    linear-gradient(180deg,rgba(201,169,97,.08) 0%,rgba(0,0,0,.3) 100%);
  border:1px solid var(--gold-30);
  overflow:hidden;
  /* 内部微光 */
  box-shadow:inset 0 0 60px rgba(201,169,97,.06);
}
/* 四角装饰 — 比原来更大更明显 */
.wallet-hero::before,.wallet-hero::after{
  content:'';position:absolute;width:72px;height:72px;
  border:1px solid var(--gold);opacity:.55;
}
.wallet-hero::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.wallet-hero::after{bottom:-1px;right:-1px;border-left:none;border-top:none}
/* 额外两个角 — 通过 box-shadow 模拟右上 + 左下 */
.wallet-eyebrow{
  display:flex;align-items:center;justify-content:center;gap:16px;
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);letter-spacing:var(--ls-en-display);
  text-transform:uppercase;opacity:.8;
  margin-bottom:var(--sp-4);
}
.wallet-eyebrow .ln{
  flex:0 0 48px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.wallet-balance-label{
  text-align:center;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:0.24em;
  padding-left:0.24em;
  margin-bottom:var(--sp-4);
  opacity:.75;
}
/* 余额大数字 — 增强 glow */
.wallet-balance{
  text-align:center;
  font-family:var(--serif);font-weight:500;
  font-size:clamp(80px,28vw,112px);
  letter-spacing:-0.04em;line-height:0.9;
  margin-bottom:var(--sp-5);
  color:var(--gold);
  text-shadow:
    0 0 20px rgba(201,169,97,.8),
    0 0 50px rgba(201,169,97,.45),
    0 0 90px rgba(201,169,97,.22),
    0 4px 24px rgba(0,0,0,.7);
  display:flex;align-items:baseline;justify-content:center;gap:0;
}
.wallet-balance .yuan{
  font-size:0.35em;
  color:var(--gold-light);
  margin-right:0.06em;opacity:.9;
  letter-spacing:0;
  align-self:flex-start;
  margin-top:0.35em;
  text-shadow:0 0 20px rgba(201,169,97,.7);
}
.wallet-balance .dec{
  font-size:0.38em;
  color:var(--gold);opacity:.75;
  letter-spacing:0;
  margin-left:0.02em;
  text-shadow:0 0 16px rgba(201,169,97,.5);
}

.wallet-sub-ornament{
  display:flex;align-items:center;justify-content:center;gap:12px;
  margin:var(--sp-4) 0 var(--sp-5);
}
.wallet-sub-ornament .ln{
  width:40px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-50),transparent);
}
.wallet-sub-ornament .leaf{
  font-family:var(--serif);font-size:var(--t-xs);
  color:var(--gold);opacity:.65;
}

/* 三栏统计：数字拉大 */
.wallet-sub{
  display:flex;justify-content:center;gap:0;
}
.wallet-sub .it{
  flex:1;
  display:flex;flex-direction:column;align-items:center;gap:5px;
  position:relative;
}
.wallet-sub .it:not(:last-child)::after{
  content:'';position:absolute;right:0;top:10%;
  width:1px;height:80%;
  background:linear-gradient(180deg,transparent,var(--gold-30),transparent);
}
.wallet-sub .it .v{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-xl);
  color:var(--gold-light);letter-spacing:0.01em;line-height:1;
  text-shadow:0 0 16px rgba(201,169,97,.4);
}
.wallet-sub .it .l{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:0.22em;
  padding-left:0.22em;
  opacity:.65;
}

/* CTA 按钮 — 仪式感升级 */
.wallet-cta{
  position:relative;overflow:hidden;
  display:block;width:100%;
  /* 更大内边距 */
  padding:var(--sp-6) 0;margin-bottom:var(--sp-5);
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-lg);
  letter-spacing:0.32em;text-indent:0.32em;
  background:linear-gradient(160deg,var(--gold-light) 0%,var(--gold) 50%,var(--gold-deep) 100%);
  color:var(--void);
  border:none;
  /* 强化阴影 */
  box-shadow:
    0 12px 40px -8px rgba(201,169,97,.65),
    0 4px 16px -4px rgba(201,169,97,.4),
    inset 0 1px 0 rgba(255,255,255,.2);
  cursor:pointer;transition:all var(--motion-normal);
  line-height:1;
}
/* 光泽扫光效果 */
.wallet-cta::after{
  content:'';position:absolute;top:0;left:-120%;
  width:50%;height:100%;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.4) 50%,transparent 70%);
  transition:left var(--motion-macro);
  pointer-events:none;
}
.wallet-cta:hover{
  background:transparent;color:var(--gold);
  border:1px solid var(--gold);
  box-shadow:0 0 32px -6px rgba(201,169,97,.5);
}
.wallet-cta:hover::after{left:130%}
.wallet-cta:disabled{
  background:var(--gold-08);color:var(--gold-50);
  border:1px solid var(--gold-30);box-shadow:none;cursor:not-allowed;
}
.wallet-cta:disabled::after{display:none}

.wallet-note{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:0.03em;
  text-align:center;line-height:var(--lh-relaxed);
  opacity:.65;
  padding:0 var(--sp-5) var(--sp-6);
}

.wallet-section-title{
  display:flex;align-items:baseline;gap:12px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:var(--ls-cn-label);
  padding-left:0.16em;
  margin:var(--sp-7) 0 var(--sp-4);
  line-height:1;
}
.wallet-section-title .en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-en-label);
  opacity:.55;text-transform:uppercase;
}

/* 提现记录 — 升级卡片质感 */
.withdrawals-list{display:flex;flex-direction:column;gap:var(--sp-4)}
.withdrawal-row{
  padding:var(--sp-5) var(--sp-5) var(--sp-5) var(--sp-6);
  background:
    linear-gradient(135deg,rgba(201,169,97,.07) 0%,rgba(201,169,97,.03) 100%);
  border:1px solid rgba(201,169,97,.22);
  display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);
  position:relative;
  transition:border-color var(--motion-normal);
}
/* 左侧金色细线装饰 */
.withdrawal-row::before{
  content:'';position:absolute;left:0;top:20%;
  width:2px;height:60%;
  background:linear-gradient(180deg,transparent,var(--gold-50),transparent);
}
.withdrawal-row:hover{border-color:var(--gold-50)}
.withdrawal-row .l{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1}
.withdrawal-row .amt{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-xl);
  color:var(--gold);letter-spacing:0.01em;line-height:1;
  text-shadow:0 0 14px rgba(201,169,97,.4);
}
.withdrawal-row .meta{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  opacity:.7;line-height:var(--lh-body);
}
.withdrawal-row .st{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-en-label);text-transform:uppercase;
  padding:7px 12px;
  border:1px solid currentColor;
  white-space:nowrap;line-height:1;
}
.withdrawal-row .st.pending{color:var(--gold-50)}
.withdrawal-row .st.approved{color:var(--gold)}
.withdrawal-row .st.paid{color:#B8E6C9}
.withdrawal-row .st.rejected{color:#E6A5A5}

/* 空状态 — 更有设计感 */
.wallet-empty{
  padding:var(--sp-9) 0 var(--sp-7);text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);
}
.wallet-empty::before{
  content:'❦';
  font-family:var(--serif);font-size:var(--t-3xl);
  color:var(--gold);opacity:.25;line-height:1;
  text-shadow:0 0 24px rgba(201,169,97,.3);
}

/* 提现弹层 */
.wd-sheet-mask{
  position:absolute;inset:0;background:rgba(0,0,0,.7);
  backdrop-filter:blur(6px);
  z-index:200;display:none;
  align-items:flex-end;
}
.wd-sheet-mask.show{display:flex}
.wd-sheet{
  width:100%;position:relative;
  max-height:86vh;overflow-y:auto;
  background:radial-gradient(ellipse at 50% 0%,rgba(201,169,97,.12),#000000 60%);
  border-top:1px solid var(--gold);
  box-shadow:var(--elevation-3), var(--glow-sm);
  padding:var(--sp-5) var(--sp-6) var(--sp-7);
  animation:sheet-in 360ms var(--ease);
}
.wd-sheet::before,.wd-sheet::after{
  content:'';position:absolute;width:20px;height:20px;
  border:1px solid var(--gold);opacity:.6;pointer-events:none;
}
.wd-sheet::before{top:0;left:0;border-right:none;border-bottom:none}
.wd-sheet::after{top:0;right:0;border-left:none;border-bottom:none}
@keyframes sheet-in{from{transform:translateY(100%)}to{transform:translateY(0)}}
.wd-sheet-title{
  display:flex;align-items:center;justify-content:space-between;
  padding-bottom:var(--sp-4);
  border-bottom:1px solid var(--gold-30);
  margin-bottom:var(--sp-5);
}
.wd-sheet-title .t{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--gold);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);line-height:1;
}
.wd-sheet-title .x{
  font-family:var(--serif);font-weight:300;font-size:var(--t-2xl);
  background:none;border:none;color:var(--gold);cursor:pointer;
  width:40px;height:40px;line-height:1;
}
.wd-field{margin-bottom:var(--sp-6)}
.wd-label{
  display:flex;align-items:baseline;gap:12px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:var(--ls-cn-label);
  padding-left:0.16em;
  margin-bottom:var(--sp-3);line-height:1;
}
.wd-label .en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);letter-spacing:var(--ls-en-label);
  opacity:.55;text-transform:uppercase;
}
.wd-method-row{
  display:grid;grid-template-columns:repeat(3,1fr);gap:12px;
}
.wd-method{
  padding:var(--sp-4) 0;text-align:center;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);
  background:transparent;
  border:1px solid var(--gold-30);
  color:var(--ash);cursor:pointer;
  transition:all var(--motion-normal);
  line-height:1;
}
.wd-method.on{
  border-color:var(--gold);color:var(--gold);
  background:var(--gold-08);
  box-shadow:0 0 20px -6px rgba(201,169,97,.4);
}
.wd-input{
  width:100%;
  background:transparent;
  border:none;border-bottom:1px solid var(--gold-30);
  font-family:var(--serif);font-weight:400;
  font-size:var(--t-lg);
  color:var(--bone);letter-spacing:0.02em;
  padding:8px 2px 14px;
  line-height:var(--lh-display);
}
.wd-input:focus{outline:none;border-bottom-color:var(--gold)}
.wd-input::placeholder{
  color:var(--gold-30);font-style:italic;
  font-family:var(--cn);font-weight:300;
}
.wd-amount-row{
  display:flex;align-items:baseline;gap:16px;
  border-bottom:1px solid var(--gold-30);
  padding-bottom:12px;
}
.wd-amount-row .y{
  font-family:var(--serif);font-weight:500;font-size:var(--t-2xl);
  color:var(--gold);line-height:1;
}
.wd-amount-row .wd-input{border-bottom:none;padding:0;flex:1;font-size:var(--t-3xl);font-weight:500;color:var(--gold)}
.wd-amount-hint{
  margin-top:12px;
  font-family:var(--cn);font-weight:300;font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);
  opacity:.7;display:flex;justify-content:space-between;
}
.wd-amount-hint .max-btn{
  background:none;border:none;
  font-family:var(--cn);font-weight:300;font-size:var(--t-2xs);
  color:var(--gold);letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);cursor:pointer;opacity:.9;
}
.wd-submit{
  width:100%;padding:var(--sp-5) 0;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  letter-spacing:var(--ls-cn-button);text-indent:var(--ls-cn-button);
  background:var(--gold);color:var(--void);
  border:1px solid var(--gold);cursor:pointer;
  box-shadow:0 10px 32px -8px rgba(201,169,97,.55);
  transition:all var(--motion-normal);line-height:1;
  margin-top:var(--sp-3);
}
.wd-submit:hover{background:transparent;color:var(--gold)}
.wd-submit:disabled{
  background:var(--gold-08);color:var(--gold-50);
  border-color:var(--gold-30);box-shadow:none;cursor:not-allowed;
}

/* ============== v21 订单 / 付款 / 商家认证 ============== */
.orders-tabs{
  display:flex;align-items:center;justify-content:center;gap:var(--sp-7);
  padding:110px 0 var(--sp-5);
  border-bottom:1px solid var(--gold-30);
  background:rgba(0,0,0,.5);
}
.orders-tab{
  background:none;border:none;cursor:pointer;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--ash);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);
  padding-bottom:8px;position:relative;
  transition:color var(--motion-normal);line-height:1;
  opacity:.6;
}
.orders-tab.on{color:var(--gold);opacity:1;text-shadow:0 0 14px rgba(201,169,97,.4)}
.orders-tab.on::after{
  content:'';position:absolute;left:50%;bottom:0;
  transform:translateX(-50%);
  width:32px;height:2px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}

.orders-list{
  display:flex;flex-direction:column;gap:var(--sp-5);
  padding:var(--sp-5) var(--sp-6) var(--sp-9);
}
.orders-empty{
  padding:var(--sp-9) var(--sp-6) calc(var(--sp-9) + 20px);
  text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);
}
/* v27: ❦ 透明度 .4→.7 + 双层 glow + 呼吸 */
.orders-empty::before{
  content:'❦';
  font-family:var(--serif);font-size:var(--t-3xl);
  color:var(--gold);
  line-height:1;
  text-shadow:
    0 0 24px rgba(201,169,97,.8),
    0 0 48px rgba(201,169,97,.4),
    0 0 80px rgba(201,169,97,.15);
  animation:ordersEmptyBreath 3.8s ease-in-out infinite;
  margin-bottom:var(--sp-2);
}
@keyframes ordersEmptyBreath{
  0%,100%{opacity:.7;text-shadow:0 0 24px rgba(201,169,97,.8),0 0 48px rgba(201,169,97,.4)}
  50%{opacity:1;text-shadow:0 0 32px rgba(201,169,97,.92),0 0 64px rgba(201,169,97,.55)}
}
/* 装饰横线 */
.orders-empty::after{
  content:'';display:block;
  width:60px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-50),transparent);
  margin-top:var(--sp-3);
}
.orders-empty-cn{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--gold);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);line-height:1;
  text-shadow:0 0 18px rgba(201,169,97,.35);
  opacity:.85;
}
/* v27: 英文 italic 副标题 — 比中文小，斜体 */
.orders-empty-en{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:0.06em;
  opacity:.5;line-height:1;
}

.order-card{
  /* 更丰富的卡片背景 */
  background:
    linear-gradient(135deg,rgba(201,169,97,.07) 0%,rgba(201,169,97,.03) 100%);
  border:1px solid rgba(201,169,97,.25);
  padding:var(--sp-5) var(--sp-5) var(--sp-4);
  position:relative;
  transition:border-color var(--motion-normal),box-shadow var(--motion-normal);
}
.order-card:hover{
  border-color:var(--gold-50);
  box-shadow:0 8px 32px -12px rgba(201,169,97,.35);
}
/* 角落装饰 — 更大更清晰 */
.order-card::before,.order-card::after{
  content:'';position:absolute;width:20px;height:20px;
  border:1px solid var(--gold);opacity:.65;
}
.order-card::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.order-card::after{bottom:-1px;right:-1px;border-left:none;border-top:none}
/* 顶部微光条 */
.order-card > .order-head{
  border-bottom:none;
  padding-bottom:0;
  margin-bottom:0;
}
.order-head{
  display:flex;align-items:center;justify-content:space-between;
  padding-bottom:var(--sp-3);
  border-bottom:1px solid rgba(201,169,97,.12);
  margin-bottom:var(--sp-4);
}
.order-no{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:var(--ls-en-label);opacity:.55;
  text-transform:uppercase;
}
/* 状态标签 — 更精致，加背景底色 */
.order-status{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  letter-spacing:0.12em;
  padding:5px 12px;border:1px solid currentColor;
  line-height:1;text-transform:uppercase;
  position:relative;
}
/* 状态标签背景色 */
.order-status.pend{
  color:rgba(201,169,97,.6);
  background:rgba(201,169,97,.06);
}
.order-status.paid{
  color:var(--gold);
  background:rgba(201,169,97,.1);
  text-shadow:0 0 12px rgba(201,169,97,.5);
}
.order-status.ship{
  color:#B8E6C9;
  background:rgba(184,230,201,.08);
}
.order-status.done{
  color:var(--bone);
  background:rgba(245,230,200,.07);
}
.order-status.can,.order-status.ref{
  color:#E6A5A5;
  background:rgba(230,165,165,.07);
}

.order-body{display:flex;gap:var(--sp-4);align-items:flex-start}
/* 商品图 — 更大，加微边框 */
.order-cover{
  width:88px;height:88px;flex-shrink:0;
  background-size:cover;background-position:center;
  border:1px solid rgba(201,169,97,.28);
  background-color:rgba(0,0,0,.5);
  box-shadow:inset 0 0 16px rgba(0,0,0,.3);
}
.order-cover.empty{
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:var(--t-xl);
  color:rgba(201,169,97,.2);
}
.order-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.order-title{
  font-family:var(--cn);font-weight:400;
  font-size:var(--t-md);
  color:var(--bone);letter-spacing:var(--ls-cn-body);
  line-height:var(--lh-body);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.order-meta{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  opacity:.65;
}
/* 金额：更突出 */
.order-price{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-2xl);
  color:var(--gold);letter-spacing:-0.01em;line-height:1;
  margin-top:6px;
  text-shadow:
    0 0 18px rgba(201,169,97,.55),
    0 0 40px rgba(201,169,97,.2);
}
.order-price .yuan{
  font-size:0.58em;vertical-align:0.18em;
  opacity:.85;margin-right:0.08em;
  font-weight:400;
}
.order-fee{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);opacity:.5;letter-spacing:0.03em;
}
.order-actions{
  display:flex;gap:12px;justify-content:flex-end;
  padding-top:var(--sp-4);margin-top:var(--sp-4);
  border-top:1px solid rgba(201,169,97,.1);
}
/* 操作按钮 — 更大内边距，更清晰 */
.oact{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-cn-button);text-indent:var(--ls-cn-button);
  padding:9px 20px;cursor:pointer;line-height:1;
  background:transparent;color:var(--ash);
  border:1px solid rgba(201,169,97,.25);
  transition:all var(--motion-normal);
}
.oact:hover{border-color:var(--gold);color:var(--gold)}
.oact.pay,.oact.confirm,.oact.ship{
  background:linear-gradient(160deg,var(--gold-light) 0%,var(--gold) 60%,var(--gold-deep) 100%);
  border-color:transparent;color:var(--void);
  box-shadow:var(--elevation-1), var(--glow-sm);
}
.oact.pay:hover,.oact.confirm:hover,.oact.ship:hover{
  background:transparent;color:var(--gold);border-color:var(--gold);
}
.oact.cancel{color:var(--ash);opacity:.6;border-color:rgba(201,169,97,.15)}

/* 付款 bottom sheet */
.pay-sheet-mask{
  position:absolute;inset:0;background:rgba(0,0,0,.75);
  backdrop-filter:blur(8px);
  z-index:220;display:none;
  align-items:flex-end;
}
.pay-sheet-mask.show{display:flex}
.pay-sheet{
  width:100%;position:relative;
  background:radial-gradient(ellipse at 50% 0%,rgba(201,169,97,.11),#000000 60%);
  border-top:1px solid var(--gold);
  box-shadow:var(--elevation-3), var(--glow-sm);
  padding:var(--sp-5) var(--sp-6) var(--sp-7);
  max-height:90vh;overflow-y:auto;
  animation:sheet-in 400ms var(--ease);
}
.pay-sheet::before,.pay-sheet::after{
  content:'';position:absolute;width:20px;height:20px;
  border:1px solid var(--gold);opacity:.6;pointer-events:none;
}
.pay-sheet::before{top:0;left:0;border-right:none;border-bottom:none}
.pay-sheet::after{top:0;right:0;border-left:none;border-bottom:none}
.pay-sheet-title{
  display:flex;align-items:center;justify-content:space-between;
  padding-bottom:var(--sp-4);
  border-bottom:1px solid var(--gold-30);
  margin-bottom:var(--sp-5);
}
.pay-sheet-title .t{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--gold);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);line-height:1;
}
.pay-sheet-title .x{
  font-family:var(--serif);font-weight:300;font-size:var(--t-2xl);
  background:none;border:none;color:var(--gold);cursor:pointer;
  width:40px;height:40px;line-height:1;
}
.pay-sheet-item{margin-bottom:var(--sp-4)}
.pay-sheet-label{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);
  opacity:.7;margin-bottom:8px;
}
.pay-sheet-name{
  font-family:var(--cn);font-weight:400;
  font-size:var(--t-md);
  color:var(--bone);letter-spacing:var(--ls-cn-body);line-height:1.4;
}
.pay-sheet-amount-row{
  text-align:center;
  padding:var(--sp-5) 0;
  border-top:1px dashed var(--gold-30);
  border-bottom:1px dashed var(--gold-30);
  margin:var(--sp-4) 0;
}
.pay-sheet-amount{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-5xl);
  color:var(--gold);letter-spacing:-0.02em;line-height:1;
  text-shadow:0 0 30px rgba(201,169,97,.5);
  margin-bottom:var(--sp-3);
}
.pay-sheet-amount .yuan{font-size:0.4em;vertical-align:0.8em;margin-right:0.2em;opacity:.8}
.pay-sheet-amount .dec{font-size:0.5em;opacity:.7;vertical-align:0.25em}
.pay-sheet-fee-line{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--ash);opacity:.7;letter-spacing:0.03em;
}

.pay-method-list{display:flex;flex-direction:column;gap:12px;margin-top:var(--sp-3)}
.pay-method{
  display:flex;align-items:center;gap:var(--sp-4);
  padding:var(--sp-4) var(--sp-5);
  background:transparent;
  border:1px solid var(--gold-30);
  cursor:pointer;transition:all var(--motion-normal);
  text-align:left;
}
.pay-method.on{
  border-color:var(--gold);
  background:var(--gold-08);
  box-shadow:0 0 24px -6px rgba(201,169,97,.4);
}
.pay-method .pm-icon{
  width:36px;height:36px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--cn);font-weight:300;font-size:var(--t-md);
  color:var(--gold);
  background:var(--gold-08);
  border:1px solid var(--gold-30);
  line-height:1;
}
.pay-method.on .pm-icon{
  background:var(--gold);color:var(--void);border-color:var(--gold);
}
.pay-method .pm-name{
  flex:1;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  color:var(--bone);letter-spacing:var(--ls-cn-body);line-height:1;
}
.pay-method .pm-tail{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:.8;letter-spacing:0.03em;
  text-transform:uppercase;
}
.pay-sheet-confirm{
  position:relative;overflow:hidden;
  width:100%;margin-top:var(--sp-5);
  padding:var(--sp-5) 0;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  letter-spacing:var(--ls-cn-button);text-indent:var(--ls-cn-button);
  background:var(--gold);color:var(--void);
  border:1px solid var(--gold);cursor:pointer;
  box-shadow:0 10px 32px -8px rgba(201,169,97,.55);
  transition:all var(--motion-normal);line-height:1;
}
.pay-sheet-confirm::after{
  content:'';position:absolute;top:0;left:-100%;
  width:60%;height:100%;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);
  transition:left var(--motion-macro);pointer-events:none;
}
.pay-sheet-confirm:hover{background:transparent;color:var(--gold)}
.pay-sheet-confirm:hover::after{left:130%}
.pay-sheet-confirm:disabled{opacity:.6;cursor:not-allowed}
.pay-sheet-confirm:disabled::after{display:none}

/* 商家认证申请页 */
.ma-wrap{padding:110px var(--sp-6) var(--sp-9)}
.ma-intro{text-align:center;margin-bottom:var(--sp-7)}
.ma-eyebrow{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:.7;
  letter-spacing:var(--ls-en-display);
  text-transform:uppercase;
  margin:var(--sp-4) 0 var(--sp-3);line-height:1;
}
.ma-title{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xl);
  color:var(--gold);
  letter-spacing:0.38em;
  padding-left:0.38em;
  line-height:1.15;
  text-shadow:
    0 0 40px rgba(201,169,97,.5),
    0 0 80px rgba(201,169,97,.2);
  background:linear-gradient(180deg,#F5E6C8 0%,#E8C879 35%,#C9A961 90%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  white-space:nowrap;
}
.ma-tagline{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--ash);letter-spacing:var(--ls-cn-body);
  font-style:italic;opacity:.8;
}
.ma-status-banner{
  padding:var(--sp-5);
  border:1px solid var(--gold-30);
  background:var(--gold-08);
  margin-bottom:var(--sp-6);
  text-align:center;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:var(--ls-cn-body);
  line-height:var(--lh-relaxed);
}
.ma-status-banner.approved{color:#B8E6C9;border-color:#B8E6C9}
.ma-status-banner.rejected{color:#E6A5A5;border-color:#E6A5A5}
.ma-status-banner.pending{color:var(--gold)}

.ma-section-title{
  display:flex;align-items:baseline;gap:12px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);
  margin:var(--sp-7) 0 var(--sp-4);
  padding-bottom:var(--sp-3);
  border-bottom:1px solid var(--gold-30);
  line-height:1;
}
.ma-section-title .en{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  letter-spacing:var(--ls-en-label);
  opacity:.55;text-transform:uppercase;
}
.ma-note{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--ash);opacity:.7;
  margin-bottom:var(--sp-4);letter-spacing:0.03em;
}
.ma-field{margin-bottom:var(--sp-5)}
.ma-label{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--gold);letter-spacing:var(--ls-cn-label);
  padding-left:0.16em;
  margin-bottom:12px;line-height:1;
}
.ma-label .hint{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);opacity:.5;
  margin-left:8px;
}
.ma-input{
  width:100%;
  background:transparent;
  border:none;border-bottom:1px solid var(--gold-30);
  font-family:var(--cn);font-weight:400;
  font-size:var(--t-md);
  color:var(--bone);letter-spacing:0.02em;
  padding:8px 2px 12px;line-height:var(--lh-body);
}
.ma-input:focus{outline:none;border-bottom-color:var(--gold)}
.ma-input::placeholder{
  color:var(--gold-30);font-family:var(--cn);font-weight:300;
  font-style:italic;
}
.ma-textarea{
  width:100%;
  background:transparent;resize:none;
  border:1px solid var(--gold-30);
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--bone);letter-spacing:var(--ls-cn-body);
  line-height:var(--lh-body);
  padding:12px 14px;
}
.ma-textarea:focus{outline:none;border-color:var(--gold)}
.ma-textarea::placeholder{
  color:var(--gold-30);font-style:italic;
}
.ma-type-row{
  display:grid;grid-template-columns:1fr 1fr;gap:12px;
}
.ma-type{
  padding:var(--sp-5) 0;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  letter-spacing:var(--ls-cn-button);
  padding-left:var(--ls-cn-button);
  background:transparent;
  border:1px solid var(--gold-30);
  color:var(--ash);cursor:pointer;line-height:1;
  transition:all var(--motion-normal);
}
.ma-type.on{
  background:var(--gold-08);border-color:var(--gold);color:var(--gold);
  box-shadow:0 0 24px -6px rgba(201,169,97,.4);
}
.ma-submit{
  width:100%;margin-top:var(--sp-7);
  padding:var(--sp-5) 0;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-md);
  letter-spacing:var(--ls-cn-button);text-indent:var(--ls-cn-button);
  background:var(--gold);color:var(--void);
  border:1px solid var(--gold);cursor:pointer;
  box-shadow:0 10px 32px -8px rgba(201,169,97,.55);
  transition:all var(--motion-normal);line-height:1;
}
.ma-submit:hover{background:transparent;color:var(--gold)}
.ma-submit:disabled{opacity:.6;cursor:not-allowed}
.ma-footer-note{
  margin-top:var(--sp-6);text-align:center;
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);opacity:.55;letter-spacing:0.04em;
  line-height:var(--lh-relaxed);
}

/* 详情页非商家卖家（编辑风） */
.detail-seller-basic{
  text-align:center;
  padding:var(--sp-7) var(--sp-5) var(--sp-5);
  margin:var(--sp-6) 0 var(--sp-5);
  border-top:1px solid var(--gold-30);
  border-bottom:1px solid var(--gold-30);
  cursor:pointer;
  transition:all var(--motion-normal);
  position:relative;
}
.detail-seller-basic:hover{
  background:rgba(201,169,97,.03);
}
.detail-seller-basic .seller-basic-eyebrow{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:.7;
  letter-spacing:var(--ls-en-display);
  text-transform:uppercase;line-height:1;
  margin-bottom:var(--sp-3);
}
.detail-seller-basic .seller-basic-name{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-xl);
  color:var(--bone);letter-spacing:-0.02em;line-height:1;
  margin-bottom:var(--sp-4);
  background:linear-gradient(180deg,#FAF4E6 0%,#E8C879 50%,#C9A961 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 18px rgba(201,169,97,.3));
}
.detail-seller-basic .seller-basic-tap{
  font-family:var(--cn);font-weight:300;font-style:italic;
  font-size:var(--t-2xs);
  color:var(--ash);opacity:.55;
  letter-spacing:0.12em;
}

/* 详情页卖家店铺卡 */
.detail-shop{
  position:relative;margin:var(--sp-7) 0 var(--sp-6);
  padding:var(--sp-5) var(--sp-5) var(--sp-4);
  background:
    radial-gradient(ellipse at 50% 0%, rgba(201,169,97,.12), transparent 70%),
    rgba(201,169,97,.04);
  border:1px solid var(--gold-30);
  cursor:pointer;
  transition:all var(--motion-normal);
}
.detail-shop:hover{
  border-color:var(--gold);
  transform:translateY(-2px);
  box-shadow:0 12px 40px -14px rgba(201,169,97,.4);
}
.detail-shop::before,.detail-shop::after{
  content:'';position:absolute;width:16px;height:16px;
  border:1px solid var(--gold);pointer-events:none;
}
.detail-shop::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.detail-shop::after{bottom:-1px;right:-1px;border-left:none;border-top:none}

.shop-header{
  display:flex;align-items:center;gap:var(--sp-4);
  padding-bottom:var(--sp-3);
  border-bottom:1px dashed var(--gold-30);
  margin-bottom:var(--sp-3);
}
.shop-badge{
  width:42px;height:42px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:var(--gold-08);border:1px solid var(--gold);
  font-family:var(--serif);font-size:var(--t-lg);
  color:var(--gold);line-height:1;
  box-shadow:0 0 20px -4px rgba(201,169,97,.4);
}
.shop-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.shop-name{
  font-family:var(--cn);font-weight:400;
  font-size:var(--t-md);
  color:var(--gold);letter-spacing:var(--ls-cn-body);
  padding-left:var(--ls-cn-body);line-height:1.2;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.shop-sub{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  opacity:.7;
}
.shop-verify{
  font-family:var(--serif);font-style:italic;font-weight:500;
  font-size:var(--t-2xs);
  color:var(--gold);letter-spacing:var(--ls-en-label);
  padding:5px 10px;border:1px solid var(--gold);
  white-space:nowrap;line-height:1;
  background:rgba(201,169,97,.1);
}

.shop-intro{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:0.04em;
  line-height:var(--lh-relaxed);
  padding:var(--sp-3) var(--sp-2);
  text-align:center;opacity:.8;
}
.shop-stats{
  display:flex;align-items:center;justify-content:space-around;
  padding:var(--sp-3) 0 var(--sp-2);
  border-top:1px dashed var(--gold-30);
}
.shop-stats .s{
  display:flex;flex-direction:column;align-items:center;gap:4px;
}
.shop-stats .s .v{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-xl);
  color:var(--gold);letter-spacing:-0.01em;line-height:1;
  text-shadow:0 0 14px rgba(201,169,97,.35);
  min-width:32px;text-align:center;
}
.shop-stats .s .l{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);opacity:.7;
}
.shop-stats .s .stars{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-2xs);
  color:var(--gold);letter-spacing:0.1em;
  line-height:1;margin:2px 0 6px;opacity:.85;
}
.shop-stats .divider{width:1px;height:28px;background:var(--gold-30)}

/* detail gallery · 多图缩略 */
.detail-media-count{
  position:absolute;top:16px;right:16px;z-index:4;
  padding:8px 12px;
  background:rgba(0,0,0,.7);
  border:1px solid var(--gold-30);
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--gold);letter-spacing:0.03em;
  line-height:1;
}
.detail-gallery{
  display:flex;overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;
  background:#000;
}
.detail-gallery::-webkit-scrollbar{display:none}
.detail-gallery .slide{
  flex:0 0 100%;scroll-snap-align:center;
  aspect-ratio:4/5;position:relative;
}
.detail-gallery .slide img{width:100%;height:100%;object-fit:cover;display:block;filter:contrast(1.08) saturate(.9)}
.gallery-dots{
  display:flex;justify-content:center;gap:8px;padding:12px 0;
  background:rgba(0,0,0,.85);
}
.gallery-dots .dot{
  width:6px;height:6px;border-radius:50%;
  background:rgba(201,169,97,.3);transition:all var(--motion-normal);
}
.gallery-dots .dot.active{
  background:var(--gold);width:18px;border-radius:3px;
  box-shadow:0 0 8px rgba(201,169,97,.5);
}
/* legacy thumb gallery (kept for backward compat) */
.gal-thumb{
  flex:0 0 60px;height:80px;
  background-size:cover;background-position:center;
  border:1px solid var(--gold-30);
  cursor:pointer;
  transition:all var(--motion-normal);
  opacity:.6;
}
.gal-thumb:hover{opacity:.85}
.gal-thumb.on{
  border-color:var(--gold);opacity:1;
  box-shadow:0 0 14px -2px rgba(201,169,97,.5);
}

/* 详情页 · 本店更多 */
.detail-related{margin:var(--sp-6) 0 var(--sp-5)}
.detail-related-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:var(--sp-3);margin-top:var(--sp-4);
}
.detail-related .rel-card{
  cursor:pointer;
  border:1px solid var(--gold-30);
  background:rgba(201,169,97,.04);
  padding:0 0 var(--sp-3);
  transition:all var(--motion-normal);
}
.detail-related .rel-card:hover{
  border-color:var(--gold);transform:translateY(-2px);
  box-shadow:0 10px 30px -12px rgba(201,169,97,.4);
}
.detail-related .rel-card .img{
  aspect-ratio:3/4;background-size:cover;background-position:center;
  background-color:var(--void);margin-bottom:8px;
}
.detail-related .rel-card .ti{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--bone);letter-spacing:var(--ls-cn-label);
  padding:0 var(--sp-3);line-height:1.3;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.detail-related .rel-card .price{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-xs);color:var(--gold);
  padding:4px var(--sp-3) 0;letter-spacing:0.02em;
}

/* detail 页卖家评价 */
.detail-reviews{margin:var(--sp-6) 0 var(--sp-5)}
.detail-reviews .rv-row{
  padding:var(--sp-4) 0;
  border-bottom:1px dashed var(--gold-30);
}
.detail-reviews .rv-row:last-child{border-bottom:none}
.detail-reviews .rv-head{
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:6px;
}
.detail-reviews .rv-name{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--bone);letter-spacing:var(--ls-cn-body);line-height:1;
}
.detail-reviews .rv-stars-inline{
  font-family:var(--serif);font-weight:400;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:0.1em;line-height:1;
}
.detail-reviews .rv-content{
  font-family:var(--cn);font-weight:300;font-style:italic;
  font-size:var(--t-xs);
  color:var(--ash);opacity:.85;
  line-height:var(--lh-relaxed);
  padding-left:var(--sp-3);
  border-left:1px solid var(--gold-30);
}

/* user 页商家 banner */
.user-shop-banner{
  display:flex;align-items:center;gap:16px;
  max-width:380px;margin:var(--sp-4) auto var(--sp-5);
  padding:var(--sp-4) var(--sp-5);
  background:
    radial-gradient(ellipse at 50% 0%, rgba(201,169,97,.14), transparent 70%),
    rgba(201,169,97,.05);
  border:1px solid var(--gold-30);
  position:relative;
}
.user-shop-banner::before,.user-shop-banner::after{
  content:'';position:absolute;width:12px;height:12px;
  border:1px solid var(--gold);opacity:.55;pointer-events:none;
}
.user-shop-banner::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.user-shop-banner::after{bottom:-1px;right:-1px;border-left:none;border-top:none}
.user-shop-banner .shop-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.user-shop-banner .shop-name-line{
  display:flex;align-items:center;gap:12px;
}
.user-shop-banner .shop-name{
  font-family:var(--cn);font-weight:400;
  font-size:var(--t-md);color:var(--gold);
  letter-spacing:var(--ls-cn-body);padding-left:var(--ls-cn-body);
  line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.user-shop-banner .shop-verify{
  font-family:var(--serif);font-style:italic;font-weight:500;
  font-size:var(--t-2xs);color:var(--gold);
  letter-spacing:var(--ls-en-label);
  padding:4px 8px;border:1px solid var(--gold);
  white-space:nowrap;line-height:1;
  background:rgba(201,169,97,.1);flex-shrink:0;
}
.user-shop-banner .shop-stats-inline{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--ash);opacity:.8;letter-spacing:0.03em;
}

/* 关于 Velvet 页 */
.about-wrap{
  padding:110px var(--sp-6) var(--sp-9);
  text-align:center;
  max-width:420px;margin:0 auto;
}
.about-mark{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-5xl);
  color:var(--gold);letter-spacing:0.08em;
  line-height:1;margin:var(--sp-5) 0 var(--sp-3);
  background:linear-gradient(180deg,#F5F1E8 0%,#E8C879 40%,#C9A961 80%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  text-shadow:0 0 40px rgba(201,169,97,.4);
}
.about-cn-mark{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-lg);
  color:var(--gold);letter-spacing:0.4em;
  padding-left:0.4em;
  line-height:1;margin-bottom:var(--sp-5);
  opacity:.85;
}
.about-slogan{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-md);
  color:var(--gold);letter-spacing:0.04em;
  margin:var(--sp-5) 0 var(--sp-3);
  opacity:.85;
}
.about-slogan-cn{
  font-family:var(--cn);font-weight:300;font-style:italic;
  font-size:var(--t-sm);
  color:var(--ash);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);
  margin-bottom:var(--sp-7);
}
.about-section{
  padding:var(--sp-6) 0;
  border-top:1px solid var(--gold-30);
  margin-bottom:var(--sp-4);
}
.about-section-title{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);
  margin-bottom:var(--sp-4);line-height:1;
  text-shadow:0 0 12px rgba(201,169,97,.3);
}
.about-text{
  font-family:var(--cn);font-weight:300;font-style:italic;
  font-size:var(--t-sm);
  color:var(--bone);letter-spacing:var(--ls-cn-body);
  line-height:var(--lh-relaxed);opacity:.85;
}
.about-footer{
  padding:var(--sp-7) 0 var(--sp-5);
  border-top:1px solid var(--gold-30);
}
.about-ver{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--ash);opacity:.55;letter-spacing:0.08em;
  margin:var(--sp-4) 0 var(--sp-3);
}
.about-tagline{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--gold);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);opacity:.7;
}

/* 我的收藏页 */
.fav-wrap{padding:110px var(--sp-5) var(--sp-9)}
.fav-list{
  display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-4);
}
.fav-card{
  position:relative;cursor:pointer;
  border:1px solid var(--gold-30);
  background:rgba(201,169,97,.03);
  transition:all var(--motion-normal);
  overflow:hidden;
}
.fav-card::before,.fav-card::after{
  content:'';position:absolute;width:10px;height:10px;
  border:1px solid var(--gold);opacity:.5;pointer-events:none;z-index:2;
}
.fav-card::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.fav-card::after{bottom:-1px;right:-1px;border-left:none;border-top:none}
.fav-card:hover{
  transform:translateY(-3px);
  border-color:var(--gold);
  box-shadow:0 14px 40px -14px rgba(201,169,97,.4);
}
.fav-card .img-wrap{
  aspect-ratio:3/4;background:var(--void) no-repeat center/cover;
  position:relative;
}
.fav-card .img-wrap::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 40%,rgba(0,0,0,.8) 100%);
  pointer-events:none;
}
.fav-card .info{
  position:absolute;left:0;right:0;bottom:0;
  padding:var(--sp-3) var(--sp-4);z-index:2;
}
.fav-card .title{
  font-family:var(--cn);font-weight:400;
  font-size:var(--t-sm);
  color:var(--bone);letter-spacing:var(--ls-cn-body);
  line-height:1.3;margin-bottom:4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fav-card .price{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-md);color:var(--gold);
  letter-spacing:0.02em;line-height:1;
  text-shadow:0 0 12px rgba(201,169,97,.4);
}

/* review stars */
.rv-stars{
  display:flex;gap:12px;justify-content:center;
  padding:var(--sp-4) 0 var(--sp-3);
}
.rv-star{
  background:none;border:none;cursor:pointer;
  font-family:var(--serif);font-size:var(--t-3xl);
  color:var(--gold-30);line-height:1;
  transition:all var(--motion-normal);
  padding:4px;
}
.rv-star.on{
  color:var(--gold);
  text-shadow:0 0 16px rgba(201,169,97,.5);
  transform:scale(1.05);
}
.rv-star:hover{transform:scale(1.15)}
.rv-label{
  text-align:center;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--gold);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);line-height:1;
  opacity:.8;
  margin-bottom:var(--sp-4);
}

/* admin panel */
.admin-tabs{
  display:flex;align-items:center;justify-content:center;gap:var(--sp-7);
  padding:var(--sp-5) 0 var(--sp-5);
  border-bottom:1px solid var(--gold-30);
  border-top:1px solid var(--gold-30);
  background:rgba(0,0,0,.5);
}
.admin-dashboard{
  padding:110px var(--sp-5) var(--sp-5);
}
.ad-eyebrow{
  display:flex;align-items:center;justify-content:center;gap:16px;
  margin-bottom:var(--sp-5);
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-2xs);
  color:var(--gold);opacity:.75;
  letter-spacing:var(--ls-en-display);text-transform:uppercase;
}
.ad-eyebrow .ln{
  flex:0 0 40px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.ad-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:12px;
  margin-bottom:var(--sp-5);
}
.ad-card{
  position:relative;
  padding:var(--sp-4) var(--sp-3);
  background:rgba(201,169,97,.04);
  border:1px solid var(--gold-30);
  text-align:center;
}
.ad-card::before,.ad-card::after{
  content:'';position:absolute;width:8px;height:8px;
  border:1px solid var(--gold);opacity:.5;pointer-events:none;
}
.ad-card::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.ad-card::after{bottom:-1px;right:-1px;border-left:none;border-top:none}
.ad-card.hi{
  background:radial-gradient(ellipse at 50% 50%, rgba(201,169,97,.18), rgba(201,169,97,.04));
  box-shadow:0 0 20px -8px rgba(201,169,97,.5);
}
.ad-card .v{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-lg);
  color:var(--gold);letter-spacing:0.02em;line-height:1;
  text-shadow:0 0 14px rgba(201,169,97,.4);
  margin-bottom:8px;
}
.ad-card .l{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-2xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);opacity:.75;
}
.ad-totals{
  display:flex;align-items:center;justify-content:center;gap:var(--sp-4);
  padding:var(--sp-4) 0 var(--sp-3);
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:var(--t-xs);
  color:var(--ash);opacity:.75;letter-spacing:0.03em;
  flex-wrap:wrap;
}
.ad-totals span{white-space:nowrap}
.ad-totals span span{color:var(--gold);font-weight:500;font-style:normal}
.ad-totals .divider{width:1px;height:14px;background:var(--gold-30)}
.admin-tab{
  background:none;border:none;cursor:pointer;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);
  color:var(--ash);letter-spacing:var(--ls-cn-heading);
  padding-left:var(--ls-cn-heading);
  padding-bottom:8px;position:relative;opacity:.6;
  transition:color var(--motion-normal);line-height:1;
}
.admin-tab.on{color:var(--gold);opacity:1;text-shadow:0 0 14px rgba(201,169,97,.4)}
.admin-tab.on::after{
  content:'';position:absolute;left:50%;bottom:0;
  transform:translateX(-50%);
  width:32px;height:2px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.admin-list{
  display:flex;flex-direction:column;gap:var(--sp-5);
  padding:var(--sp-5) var(--sp-6) var(--sp-9);
}
.admin-card{
  background:rgba(201,169,97,.04);
  border:1px solid var(--gold-30);
  padding:var(--sp-5);position:relative;
}
.admin-card::before,.admin-card::after{
  content:'';position:absolute;width:14px;height:14px;
  border:1px solid var(--gold);opacity:.6;
}
.admin-card::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.admin-card::after{bottom:-1px;right:-1px;border-left:none;border-top:none}
.admin-card .title{
  font-family:var(--cn);font-weight:400;
  font-size:var(--t-md);
  color:var(--bone);letter-spacing:var(--ls-cn-body);
  margin-bottom:var(--sp-3);
  padding-bottom:var(--sp-3);
  border-bottom:1px dashed var(--gold-30);
}
.admin-card .row{
  display:flex;justify-content:space-between;gap:16px;
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  color:var(--ash);letter-spacing:var(--ls-cn-label);
  margin-bottom:6px;line-height:var(--lh-body);
}
.admin-card .row .l{opacity:.6;flex-shrink:0}
.admin-card .row .v{color:var(--bone);word-break:break-all;text-align:right}
.admin-card .amt-big{
  font-family:var(--serif);font-weight:500;
  font-size:var(--t-2xl);
  color:var(--gold);letter-spacing:0.02em;line-height:1;
  text-shadow:0 0 14px rgba(201,169,97,.4);
  margin:var(--sp-3) 0;
}
.admin-card .actions{
  display:flex;gap:12px;justify-content:flex-end;
  padding-top:var(--sp-3);margin-top:var(--sp-3);
  border-top:1px dashed var(--gold-30);
}
.admin-card .btn{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  letter-spacing:var(--ls-cn-button);text-indent:var(--ls-cn-button);
  padding:8px 18px;cursor:pointer;line-height:1;
  background:transparent;color:var(--gold);
  border:1px solid var(--gold);
  transition:all var(--motion-normal);
}
.admin-card .btn.approve{background:var(--gold);color:var(--void);box-shadow:0 6px 18px -6px rgba(201,169,97,.6)}
.admin-card .btn.approve:hover{background:transparent;color:var(--gold)}
.admin-card .btn.reject{color:#E6A5A5;border-color:#E6A5A5}
.admin-card .btn.reject:hover{background:#E6A5A5;color:var(--void)}

.admin-bulk-bar{
  display:flex;align-items:center;justify-content:space-between;
  padding:var(--sp-3) var(--sp-4);
  background:rgba(201,169,97,.08);
  border:1px solid var(--gold-30);
  margin-bottom:var(--sp-4);
}
.admin-bulk-bar .lb{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-sm);color:var(--gold);
  letter-spacing:var(--ls-cn-label);
  padding-left:var(--ls-cn-label);
}
.admin-bulk-bar .btn{
  font-family:var(--cn);font-weight:300;
  font-size:var(--t-xs);
  letter-spacing:var(--ls-cn-button);text-indent:var(--ls-cn-button);
  padding:8px 14px;
  background:var(--gold);color:var(--void);
  border:1px solid var(--gold);cursor:pointer;line-height:1;
  transition:all var(--motion-normal);
}
.admin-bulk-bar .btn:hover{background:transparent;color:var(--gold)}
