/* Phantamate Theme — Midnight Wine + Rose Champagne Metallic + Editorial Serif
   Spec: DESIGN 2.md / phantamate-rose-champagne.html */
:root {
  /* ── Surfaces：Midnight Wine + Plum Noir ── */
  --bg: #120A0F;             /* Midnight Wine */
  --bg-2: #1C1018;           /* Plum Noir */
  --bg-elevated: #1C1018;
  --surface: rgba(255,255,255,0.04);
  --surface-hover: rgba(255,255,255,0.06);
  --border: rgba(231,198,194,0.12);
  --border-strong: rgba(231,198,194,0.22);

  /* ── Text：Pearl Veil / Mauve Mist / Smoke Plum ── */
  --text: #F6E7EA;           /* Pearl Veil */
  --text-secondary: #BFAFB5; /* Mauve Mist */
  --text-dim: #8C5666;       /* Smoke Plum */

  /* ── 默认主题：Rose Champagne 玫瑰香槟（可由 data-theme 覆盖） ── */
  --theme-accent-1: #F8E7E1; /* Warm Pearl */
  --theme-accent-2: #E7C6C2; /* Rose Champagne — 主色 */
  --theme-accent-3: #D89AA6; /* Berry Glow */
  --theme-deep:    #8C5666;  /* Smoke Plum 用于氛围 */
  --theme-glow:    rgba(231,198,194,0.18);
  --theme-wash:    rgba(231,198,194,0.06);
  --theme-amb-1:   rgba(248,231,225,0.10);
  --theme-amb-2:   rgba(140,86,102,0.16);

  /* ── Metallic Identity ── */
  --metal-1: #F8E7E1;
  --metal-2: #E7C6C2;
  --metal-3: #8C5666;
  --metal-4: #D89AA6;
  --metal-5: #F6E7EA;

  /* 派生别名 — 整个站点其它组件读这些值，会自动跟随主题切换 */
  --accent-pink: var(--theme-accent-2);
  --accent-amber: var(--theme-accent-1);
  /* Signature Metallic Gradient: Warm Pearl → Rose Champagne → Berry Glow → Smoke Plum */
  --accent-grad: linear-gradient(135deg, var(--theme-accent-1) 0%, var(--theme-accent-2) 40%, var(--theme-accent-3) 75%, var(--theme-deep) 100%);
  --accent-grad-soft: linear-gradient(135deg, var(--theme-glow) 0%, var(--theme-wash) 100%);

  /* ── Status (muted) ── */
  --success: #9EC7B5;
  --warning: #D9C7AE;
  --danger: #C99AA0;

  /* ── Effects ── */
  --halo: rgba(255,143,176,0.34);
  --shadow-card: 0 20px 60px rgba(20,4,18,0.55);
  --shadow-glow: 0 0 40px rgba(255,143,176,0.24);

  /* ── Typography ── */
  --font-display: "Cormorant Garamond","Baskerville","Times New Roman",serif;
  --font-cn: "Noto Serif SC","Source Han Serif SC","Songti SC",serif;
  --font-body: "Inter",-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;

  /* ── Radius ── */
  --radius-sm: 4px;
  --radius-md: 14px;
  --radius-lg: 20px;
  --radius-pill: 999px;
}

/* ============ 主题切换（通过 <html data-theme="..."> 覆盖）============ */
/* lime · 青柠：去糖度的雾绿 */
html[data-theme="lime"] {
  --theme-accent-1: #D4E0C2;
  --theme-accent-2: #A4BC8C;
  --theme-accent-3: #6B8460;
  --theme-glow: rgba(164,188,140,0.16);
  --theme-wash: rgba(164,188,140,0.04);
  --theme-amb-1: rgba(164,188,140,0.10);
  --theme-amb-2: rgba(107,132,96,0.08);
}
/* amber · 橙光：焦糖琥珀，不正橙 */
html[data-theme="amber"] {
  --theme-accent-1: #E6C8A8;
  --theme-accent-2: #C99672;
  --theme-accent-3: #8E6244;
  --theme-glow: rgba(201,150,114,0.18);
  --theme-wash: rgba(201,150,114,0.04);
  --theme-amb-1: rgba(201,150,114,0.10);
  --theme-amb-2: rgba(142,98,68,0.08);
}
/* violet · 暮山：低饱和雾紫 */
html[data-theme="violet"] {
  --theme-accent-1: #C7B6D4;
  --theme-accent-2: #9C84B0;
  --theme-accent-3: #6B5680;
  --theme-glow: rgba(156,132,176,0.16);
  --theme-wash: rgba(156,132,176,0.04);
  --theme-amb-1: rgba(156,132,176,0.10);
  --theme-amb-2: rgba(107,86,128,0.08);
}
/* ocean · 海雾：灰蓝 */
html[data-theme="ocean"] {
  --theme-accent-1: #B8CDD4;
  --theme-accent-2: #82A4B0;
  --theme-accent-3: #506E7C;
  --theme-glow: rgba(130,164,176,0.16);
  --theme-wash: rgba(130,164,176,0.04);
  --theme-amb-1: rgba(130,164,176,0.10);
  --theme-amb-2: rgba(80,110,124,0.08);
}
/* aurum · 晨曦：暖香槟金 */
html[data-theme="aurum"] {
  --theme-accent-1: #E0D2B6;
  --theme-accent-2: #BFA980;
  --theme-accent-3: #877358;
  --theme-glow: rgba(191,169,128,0.16);
  --theme-wash: rgba(191,169,128,0.04);
  --theme-amb-1: rgba(191,169,128,0.10);
  --theme-amb-2: rgba(135,115,88,0.08);
}

* { box-sizing:border-box; }
html, body { margin:0; padding:0; }
html {
  -webkit-text-size-adjust:100%;
  touch-action:manipulation;
  background:var(--bg);
  overflow-y:scroll;
  scrollbar-gutter:stable;
}
body {
  font-family: var(--font-body);
  background:var(--bg);
  color:var(--text);
  font-size:14px;
  line-height:1.7;
  letter-spacing:0;
  min-height:100vh;
  -webkit-tap-highlight-color: transparent;
  overscroll-behavior-y: none;
  overflow-x:hidden;
  position:relative;
  background-image:
    radial-gradient(circle at 50% 0%, var(--theme-amb-1), transparent 18%),
    radial-gradient(circle at 16% 26%, var(--theme-amb-1), transparent 18%),
    radial-gradient(circle at 82% 76%, var(--theme-amb-2), transparent 22%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);
  background-attachment:fixed;
  letter-spacing:0.01em;
}
/* 全局氛围层：halo + smoke plum；z-index:-1 + pointer-events:none 确保不阻塞滚动 */
body::before {
  content:""; position:fixed; inset:0; pointer-events:none; z-index:-1;
  background:
    radial-gradient(circle 520px at 14% 18%, var(--theme-amb-1), transparent 62%),
    radial-gradient(circle 600px at 86% 80%, var(--theme-amb-2), transparent 68%);
  opacity:0.7;
}
img { max-width:100%; display:block; }

a { color:inherit; text-decoration:none; }
button { font-family:inherit; cursor:pointer; }

/* ============ Editorial typography helpers ============ */
.h-display {
  font-family: var(--font-display);
  font-weight:500;
  letter-spacing:0;
  line-height:1.02;
}
.h-cn {
  font-family: var(--font-cn);
  font-weight:400;
  letter-spacing:0;
}
.label-edit {
  font-size:12px; font-weight:500;
  text-transform:uppercase;
  letter-spacing:0;
  color:var(--text-dim);
}

/* ============ Buttons ============ */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:12px 22px; border-radius:var(--radius-pill); border:1px solid transparent;
  font-family:var(--font-body);
  font-size:14px; font-weight:500; letter-spacing:0;
  cursor:pointer;
  transition:box-shadow .25s ease, background .25s ease, border-color .25s ease, color .25s ease;
}
.btn-primary {
  /* Rose Champagne 金属按钮：Warm Pearl → Rose Champagne，文字 Midnight Wine */
  background: linear-gradient(135deg, var(--theme-accent-1) 0%, var(--theme-accent-2) 100%);
  color:#120A0F;
  border:1px solid rgba(248,231,225,0.34);
  box-shadow:0 10px 26px rgba(231,198,194,0.18), 0 0 0 1px rgba(255,255,255,0.10) inset;
  font-weight:500;
}
.btn-primary:hover {
  box-shadow:0 14px 36px rgba(231,198,194,0.28), 0 0 22px rgba(248,231,225,0.20);
  filter:brightness(1.04);
}
.btn-secondary {
  /* Ghost：透明 + 玫瑰香槟细线 */
  background:transparent;
  color:var(--text);
  border:1px solid rgba(231,198,194,0.22);
}
.btn-secondary:hover {
  background:rgba(231,198,194,0.08);
  border-color:rgba(231,198,194,0.36);
}
.btn-ghost {
  background:transparent;
  color:var(--text-secondary);
  border:1px solid transparent;
}
.btn-ghost:hover { color:var(--text); background:rgba(231,198,194,0.06); }
.btn-sm { padding:8px 14px; font-size:12px; }
.btn-block { width:100%; }

/* ============ Forms ============ */
.field { display:block; margin-bottom:18px; }
.field-label {
  display:block;
  font-size:12px; font-weight:500; color:var(--text-dim);
  margin-bottom:8px; letter-spacing:0; text-transform:uppercase;
}
.field-hint { font-size:11px; color:var(--text-dim); margin-top:6px; letter-spacing:0; }
.input, .textarea, .select {
  width:100%;
  padding:13px 16px;
  font-size:16px; color:var(--text);
  background:rgba(246,238,242,0.03);
  border:1px solid rgba(242,221,231,0.14);
  border-radius:var(--radius-md);
  outline:none;
  transition:border-color .2s ease, box-shadow .2s ease, background .2s ease;
  font-family:var(--font-body);
  -webkit-appearance:none;
  appearance:none;
}
@media (min-width:768px) {
  .input, .textarea, .select { font-size:14px; }
}
.input::placeholder, .textarea::placeholder { color:var(--text-dim); }
.input:focus, .textarea:focus, .select:focus {
  border-color:var(--theme-accent-2);
  background:var(--theme-wash);
  box-shadow:0 0 0 4px var(--theme-glow);
}
.textarea { resize:vertical; min-height:80px; line-height:1.65; }

/* ============ Cards ============ */
.card {
  background:var(--bg-elevated);
  border:1px solid rgba(242,221,231,0.08);
  border-radius:var(--radius-lg);
  padding:22px;
  box-shadow:var(--shadow-card);
}
.card-glass {
  background:rgba(20,17,22,0.62);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(242,221,231,0.08);
  border-radius:var(--radius-lg);
}

/* ============ Pills / Badges ============ */
.pill {
  display:inline-flex; align-items:center; gap:4px;
  padding:5px 12px; border-radius:var(--radius-pill);
  font-size:11px; font-weight:500;
  letter-spacing:0; text-transform:uppercase;
  background:rgba(246,238,242,0.04); color:var(--text-secondary);
  border:1px solid rgba(242,221,231,0.10);
}
.pill-accent {
  background:var(--accent-grad-soft);
  color:var(--text);
  border-color:var(--theme-glow);
}
.pill-success { background:rgba(158,199,181,0.10); color:var(--success); border-color:rgba(158,199,181,0.22); }
.pill-warning { background:rgba(217,199,174,0.10); color:var(--warning); border-color:rgba(217,199,174,0.22); }

/* ============ App Shell ============ */
.app-shell { min-height:100vh; display:flex; flex-direction:column; width:100%; }
.app-header {
  height:64px; padding:0 24px;
  display:grid; grid-template-columns:minmax(180px,1fr) auto minmax(180px,1fr);
  align-items:center; gap:12px;
  background:rgba(20,8,22,0.66);
  backdrop-filter:blur(22px) saturate(150%);
  -webkit-backdrop-filter:blur(22px) saturate(150%);
  border-bottom:1px solid var(--theme-glow);
  position:sticky; top:0; z-index:50;
}
.app-brand {
  display:flex; align-items:center; gap:12px;
  font-family:var(--font-display);
  font-weight:500; font-size:22px; line-height:1;
  flex-shrink:0;
}
.app-brand .logo {
  width:34px; height:34px; border-radius:50%;
  position:relative;
  background:
    url("img/logo.svg") center / cover no-repeat,
    radial-gradient(circle at 50% 50%, rgba(255,255,255,0.95) 0 8%, rgba(255,227,238,0.16) 22%, transparent 60%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.10), 0 0 24px rgba(232,215,222,0.18);
  flex-shrink:0;
  overflow:hidden;
}
.app-brand .logo::before,
.app-brand .logo::after {
  content:none;
}
.app-brand .logo::before { top:3px; width:2px; height:28px; border-radius:999px; }
.app-brand .logo::after  { top:16px; width:14px; height:2px; border-radius:999px; }
.app-brand .logo > i,
.lp-brand .logo > i { display:none; }
.app-brand .name {
  font-family:var(--font-cn);
  font-weight:400;
  letter-spacing:0;
  background:linear-gradient(135deg,var(--metal-1),var(--metal-2) 60%,var(--metal-4));
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
}
.app-brand .name {
  background:linear-gradient(135deg,var(--metal-1),var(--metal-2) 60%,var(--metal-4));
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
  letter-spacing:0;
}

.app-nav { display:flex; gap:6px; justify-self:center; }
.app-nav a {
  position:relative;
  padding:10px 16px; border-radius:var(--radius-pill);
  font-size:11px; text-transform:uppercase; letter-spacing:0;
  color:var(--text-secondary);
  transition:color .2s ease;
  white-space:nowrap;
}
.app-nav a:hover { color:var(--text); }
.app-nav a.active { color:var(--text); }
.app-nav a.active::after {
  content:""; position:absolute; left:20%; right:20%; bottom:2px;
  height:1px; background:linear-gradient(90deg,transparent,var(--theme-accent-2),transparent);
}
.app-userbar { display:flex; gap:10px; align-items:center; justify-content:flex-end; justify-self:end; min-width:180px; flex-shrink:0; }
.app-userbar .pill { white-space:nowrap; }

.app-main {
  flex:1;
  padding:40px 24px 64px;
  max-width:1180px; margin:0 auto; width:100%;
}

/* ============ Mobile bottom tab bar ============ */
.mobile-tab {
  display:none;
  position:fixed; left:0; right:0; bottom:0; z-index:60;
  background:rgba(22,10,24,0.88);
  backdrop-filter:blur(26px) saturate(150%);
  -webkit-backdrop-filter:blur(26px) saturate(150%);
  border-top:1px solid var(--theme-glow);
  padding:6px 4px calc(6px + env(safe-area-inset-bottom));
}
.mobile-tab-row { display:flex; }
.mobile-tab a {
  position:relative;
  flex:1; display:flex; flex-direction:column; align-items:center; gap:3px;
  padding:8px 2px;
  font-size:10px; letter-spacing:0; text-transform:uppercase;
  color:var(--text-dim);
  transition:color .2s ease;
}
.mobile-tab a i { font-size:18px; }
.mobile-tab a.active { color:var(--text); }
.mobile-tab a.active::before {
  content:""; position:absolute; top:0; left:30%; right:30%; height:1px;
  background:linear-gradient(90deg,transparent,var(--theme-accent-2),transparent);
}
.mobile-tab a:hover { color:var(--text); }

/* ============ Mobile breakpoint ============ */
@media (max-width:768px) {
  input,
  textarea,
  select,
  .input,
  .textarea,
  .select {
    font-size:16px !important;
  }
  .btn { min-height:44px; padding:12px 18px; }
  .btn-sm { min-height:36px; padding:8px 12px; }
  .app-header { height:56px; padding:0 14px; }
  .app-brand { font-size:18px; }
  .app-brand .logo { width:28px; height:28px; }
  .app-brand .logo::before { height:22px; }
  .app-brand .logo::after  { width:11px; top:13px; }
  .app-nav { display:none; }
  .app-userbar { gap:6px; }
  .app-userbar .btn { display:none; }
  .app-userbar .pill { padding:3px 8px; font-size:10px; }
  .app-main { padding:20px 14px calc(96px + env(safe-area-inset-bottom)); }
  .mobile-tab { display:block; }
  .page-title { font-size:30px; }
  .page-subtitle { font-size:13px; margin-bottom:18px; }
  .quota-strip { padding:14px 16px; gap:14px; }
  .quota-num { font-size:20px; }
  .card, .card-glass { border-radius:18px; padding:18px; }
  .input, .textarea, .select { border-radius:14px; }
}
@media (max-width:380px) {
  .app-userbar .pill { display:none; }
}

/* ============ Avatar ============ */
.avatar {
  width:56px; height:56px; border-radius:50%;
  background:linear-gradient(135deg,var(--metal-2),var(--metal-4));
  display:flex; align-items:center; justify-content:center;
  color:#141116; font-family:var(--font-display); font-weight:500; font-size:22px;
  flex-shrink:0;
  box-shadow: 0 0 0 1px rgba(246,238,242,0.18), 0 8px 24px rgba(0,0,0,0.32);
}
.avatar-sm { width:32px; height:32px; font-size:14px; }
.avatar-lg { width:96px; height:96px; font-size:34px; }

/* ============ Page heading ============ */
.page-title {
  font-family:var(--font-display);
  font-size:38px; font-weight:500; line-height:1.0;
  letter-spacing:0;
  margin:0 0 10px;
}
.page-subtitle {
  color:var(--text-secondary); font-size:14px; line-height:1.7;
  margin:0 0 28px;
  max-width:560px;
}

/* ============ Quota bar ============ */
.quota-strip {
  display:flex; gap:18px; align-items:center; flex-wrap:wrap;
  padding:16px 20px;
  background:linear-gradient(135deg,rgba(217,199,206,0.10),rgba(242,221,231,0.06));
  border:1px solid rgba(242,221,231,0.16);
  border-radius:var(--radius-md);
  margin-bottom:24px;
}
.quota-item { display:flex; align-items:baseline; gap:6px; }
.quota-num {
  font-size:24px; font-weight:600; color:var(--metal-1);
  letter-spacing:-0.01em;
  font-variant-numeric:tabular-nums;
}
.quota-label { font-size:11px; color:var(--text-dim); letter-spacing:0; text-transform:uppercase; }

/* ============ Halo / star ornaments (opt-in) ============ */
.halo-ring {
  position:absolute; border-radius:50%;
  border:1px solid rgba(242,221,231,0.14);
  pointer-events:none;
}
.star-flare {
  position:absolute; width:36px; height:36px; pointer-events:none;
}
.star-flare::before, .star-flare::after {
  content:""; position:absolute; left:50%; top:50%;
  transform:translate(-50%,-50%);
  background:var(--metal-1);
  box-shadow:0 0 14px rgba(242,221,231,0.40);
}
.star-flare::before { width:1.5px; height:100%; border-radius:999px; }
.star-flare::after  { width:100%; height:1.5px; border-radius:999px; }

/* ============ Scrollbar ============ */
::-webkit-scrollbar { width:8px; height:8px; }
::-webkit-scrollbar-thumb { background:rgba(242,221,231,0.10); border-radius:4px; }
::-webkit-scrollbar-thumb:hover { background:rgba(242,221,231,0.20); }
::-webkit-scrollbar-track { background:transparent; }
