/* 自托管 Fraunces（拉丁可变字体，替代 Google Fonts，大陆可用） */
@font-face {
  font-family: "Fraunces";
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url("./fonts/fraunces-latin-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Fraunces";
  font-style: italic;
  font-weight: 300 600;
  font-display: swap;
  src: url("./fonts/fraunces-latin-italic.woff2") format("woff2");
}

/* =========================================================
   HangI0 — Editorial Womenswear
   纸感米白 · 墨色 · 陶土点缀 · 大衬线
   ========================================================= */

:root {
  --paper: #f4f0e7;
  --paper-2: #ebe4d6;
  --paper-3: #e2d9c8;
  --ink: #17140d;
  --ink-2: #3d3a2d;
  --ink-soft: #6b6553;
  --line: rgba(23, 20, 13, 0.16);
  --line-soft: rgba(23, 20, 13, 0.08);
  --clay: #b0553a;
  --clay-deep: #8f3f28;
  --cream-on-dark: #f0e9da;

  --font-display: "Fraunces", "Songti SC", "Noto Serif SC", "SimSun", Georgia, serif;
  --font-serif: "Songti SC", "Noto Serif SC", "Source Han Serif SC", "SimSun", Georgia, serif;
  --font-sans: "PingFang SC", "Microsoft YaHei", "微软雅黑", "Noto Sans SC", system-ui, -apple-system, "Segoe UI", sans-serif;

  --edge: clamp(1.25rem, 5vw, 5rem);
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* =========================================================
   季节配色主题（后台可切换，作用于 <html data-theme="...">）
   ========================================================= */
:root[data-theme="spring-sakura"] {
  --paper: #f7efec; --paper-2: #f0e1de; --paper-3: #e7d2cf;
  --ink: #2a1d21; --ink-2: #4d3940; --ink-soft: #8a6e77;
  --line: rgba(42, 29, 33, 0.16); --line-soft: rgba(42, 29, 33, 0.08);
  --clay: #c9748a; --clay-deep: #a8536b; --cream-on-dark: #f6e9ec;
}
:root[data-theme="spring-green"] {
  --paper: #f2f3ea; --paper-2: #e6e9db; --paper-3: #dbe0cb;
  --ink: #20261c; --ink-2: #3c4433; --ink-soft: #6f7a63;
  --line: rgba(32, 38, 28, 0.16); --line-soft: rgba(32, 38, 28, 0.08);
  --clay: #6a8f52; --clay-deep: #4f7038; --cream-on-dark: #eef1e6;
}
:root[data-theme="summer-salt"] {
  --paper: #eef3f4; --paper-2: #e0eaec; --paper-3: #cfdee1;
  --ink: #16232a; --ink-2: #33474f; --ink-soft: #5f7880;
  --line: rgba(22, 35, 42, 0.16); --line-soft: rgba(22, 35, 42, 0.08);
  --clay: #2f8f9d; --clay-deep: #1f6f7c; --cream-on-dark: #e6f1f3;
}
:root[data-theme="summer-soda"] {
  --paper: #f6f5ec; --paper-2: #eeecdc; --paper-3: #e3e0c9;
  --ink: #232418; --ink-2: #45472f; --ink-soft: #7a7a5c;
  --line: rgba(35, 36, 24, 0.16); --line-soft: rgba(35, 36, 24, 0.08);
  --clay: #e88a4d; --clay-deep: #c96a2f; --cream-on-dark: #f3efe0;
}
:root[data-theme="autumn-clay"] {
  --paper: #f4f0e7; --paper-2: #ebe4d6; --paper-3: #e2d9c8;
  --ink: #17140d; --ink-2: #3d3a2d; --ink-soft: #6b6553;
  --line: rgba(23, 20, 13, 0.16); --line-soft: rgba(23, 20, 13, 0.08);
  --clay: #b0553a; --clay-deep: #8f3f28; --cream-on-dark: #f0e9da;
}
:root[data-theme="autumn-maple"] {
  --paper: #f1e9dd; --paper-2: #e6dac9; --paper-3: #d9c8b2;
  --ink: #241a12; --ink-2: #463525; --ink-soft: #6f5a45;
  --line: rgba(36, 26, 18, 0.16); --line-soft: rgba(36, 26, 18, 0.08);
  --clay: #a5432a; --clay-deep: #83321d; --cream-on-dark: #f0e5d6;
}
:root[data-theme="winter-cedar"] {
  --paper: #eef0ee; --paper-2: #e0e4e1; --paper-3: #cfd5d1;
  --ink: #1a201e; --ink-2: #37403c; --ink-soft: #657069;
  --line: rgba(26, 32, 30, 0.16); --line-soft: rgba(26, 32, 30, 0.08);
  --clay: #4a7c6f; --clay-deep: #345a50; --cream-on-dark: #e9efec;
}
:root[data-theme="winter-indigo"] {
  --paper: #eef0f4; --paper-2: #e2e5ec; --paper-3: #d2d7e1;
  --ink: #181b24; --ink-2: #353a48; --ink-soft: #616778;
  --line: rgba(24, 27, 36, 0.16); --line-soft: rgba(24, 27, 36, 0.08);
  --clay: #3f5a8f; --clay-deep: #2c4470; --cream-on-dark: #eaedf4;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  font-family: var(--font-sans);
  background: var(--paper);
  color: var(--ink);
  line-height: 1.55;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img {
  display: block;
  max-width: 100%;
}

[hidden] {
  display: none !important;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font-family: inherit;
  cursor: pointer;
  border: none;
  background: none;
  color: inherit;
}

::selection {
  background: var(--clay);
  color: var(--paper);
}

.skip-link {
  position: absolute;
  left: -999px;
  top: 0;
  z-index: 200;
  background: var(--ink);
  color: var(--paper);
  padding: 0.75rem 1rem;
}
.skip-link:focus {
  left: 1rem;
  top: 1rem;
}

/* ---------- 通用按钮 ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--font-sans);
  font-size: 0.82rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.95rem 1.7rem;
  border-radius: 999px;
  transition: transform 0.4s var(--ease), background 0.4s var(--ease), color 0.4s var(--ease);
  white-space: nowrap;
}
.btn.solid {
  background: var(--ink);
  color: var(--paper);
}
.btn.solid:hover {
  background: var(--clay);
  transform: translateY(-2px);
}
.btn.line {
  border: 1px solid var(--ink);
}
.btn.line:hover {
  background: var(--ink);
  color: var(--paper);
  transform: translateY(-2px);
}
.btn.solid.light {
  background: var(--paper);
  color: var(--ink);
}
.btn.solid.light:hover {
  background: var(--clay);
  color: var(--paper);
}
.btn.line.light {
  border: 1px solid rgba(240, 233, 218, 0.5);
  color: var(--cream-on-dark);
}
.btn.line.light:hover {
  background: var(--cream-on-dark);
  color: var(--ink);
}

.idx {
  display: inline-block;
  font-size: 0.72rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: 1.1rem;
}
.idx.light {
  color: rgba(240, 233, 218, 0.62);
}

/* =========================================================
   顶部公告跑马灯
   ========================================================= */
.announce {
  background: var(--ink);
  color: var(--cream-on-dark);
  overflow: hidden;
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.announce-track {
  display: flex;
  gap: 1.6rem;
  white-space: nowrap;
  width: max-content;
  padding: 0.55rem 0;
  animation: slide 34s linear infinite;
}
.announce-track span {
  opacity: 0.85;
}
@keyframes slide {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

/* =========================================================
   导航
   ========================================================= */
.nav {
  position: sticky;
  top: 0;
  z-index: 90;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 1.05rem var(--edge);
  background: color-mix(in srgb, var(--paper) 82%, transparent);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid transparent;
  transition: border-color 0.4s var(--ease), padding 0.4s var(--ease), background 0.4s var(--ease);
}
.nav.is-scrolled {
  border-bottom-color: var(--line);
  padding-top: 0.7rem;
  padding-bottom: 0.7rem;
}
.nav-links {
  display: flex;
  gap: 1.6rem;
  font-size: 0.82rem;
  letter-spacing: 0.06em;
}
.nav-links a {
  position: relative;
  padding-bottom: 3px;
  color: var(--ink-2);
  transition: color 0.3s;
}
.nav-links a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: var(--ink);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.4s var(--ease);
}
.nav-links a:hover {
  color: var(--ink);
}
.nav-links a:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}
.nav-brand {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(1.1rem, 2vw, 1.5rem);
  letter-spacing: 0.14em;
  text-align: center;
  white-space: nowrap;
}
/* 放入 logo 图片后自动适配（建议用深色/单色 logo，或透明底 PNG/SVG） */
.nav-brand .brand-logo {
  height: clamp(22px, 3.4vw, 34px);
  width: auto;
  display: block;
  margin: 0 auto;
}
.nav-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1.3rem;
  font-size: 0.82rem;
  letter-spacing: 0.08em;
}
.nav-icon {
  transition: color 0.3s;
  color: var(--ink-2);
}
.nav-icon:hover { color: var(--clay); }
.nav-icon.strong {
  border: 1px solid var(--ink);
  border-radius: 999px;
  padding: 0.4rem 0.95rem;
  color: var(--ink);
}
.nav-icon.strong:hover {
  background: var(--ink);
  color: var(--paper);
}
.nav-burger {
  display: none;
  flex-direction: column;
  gap: 5px;
  width: 26px;
}
.nav-burger span {
  height: 1.5px;
  background: var(--ink);
  transition: transform 0.3s;
}

/* 手机菜单 */
.mobile-menu {
  position: fixed;
  inset: 0;
  z-index: 95;
  background: var(--paper);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.4rem;
  padding: var(--edge);
  transform: translateY(-100%);
  transition: transform 0.55s var(--ease);
}
.mobile-menu.open {
  transform: translateY(0);
}
.mobile-menu a {
  font-family: var(--font-display);
  font-size: clamp(1.8rem, 8vw, 2.8rem);
  padding: 0.35rem 0;
  border-bottom: 1px solid var(--line-soft);
}

/* 搜索层 */
.search-layer {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 96;
  background: var(--ink);
  color: var(--paper);
  transform: translateY(-100%);
  transition: transform 0.5s var(--ease);
}
.search-layer.open {
  transform: translateY(0);
}
.search-inner {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  padding: 2.2rem var(--edge);
  max-width: 1100px;
  margin: 0 auto;
}
.search-inner label {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 1rem;
  border-bottom: 1px solid rgba(240, 233, 218, 0.35);
}
.search-inner label span {
  font-size: 0.72rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  opacity: 0.6;
}
.search-inner input {
  flex: 1;
  background: none;
  border: none;
  color: var(--paper);
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 4vw, 2.4rem);
  padding: 0.6rem 0;
  outline: none;
}
.search-inner input::placeholder {
  color: rgba(240, 233, 218, 0.4);
}
.search-close {
  font-size: 0.78rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(240, 233, 218, 0.7);
}
.search-close:hover { color: var(--paper); }

/* =========================================================
   HERO
   ========================================================= */
.hero {
  position: relative;
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  align-items: center;
  gap: clamp(2rem, 5vw, 5rem);
  padding: clamp(2.5rem, 7vw, 6rem) var(--edge) clamp(3rem, 6vw, 5rem);
  min-height: 82vh;
}
.hero-kicker {
  display: flex;
  justify-content: space-between;
  max-width: 30ch;
  font-size: 0.72rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-soft);
  padding-bottom: 1.4rem;
  margin-bottom: 1.8rem;
  border-bottom: 1px solid var(--line);
}
.hero-title {
  font-family: var(--font-display);
  font-weight: 340;
  font-size: clamp(4rem, 15vw, 12rem);
  line-height: 0.86;
  letter-spacing: -0.01em;
}
.hero-title .line {
  display: block;
}
.hero-title .italic {
  font-style: italic;
  font-weight: 300;
  margin-left: 0.6em;
  color: var(--clay);
}
.hero-sub {
  margin-top: 1.8rem;
  max-width: 34ch;
  font-size: 1.02rem;
  color: var(--ink-2);
}
.hero-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
  margin-top: 2.2rem;
}
.hero-media {
  position: relative;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: 2px;
}
.hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  will-change: transform;
  transform: scale(1.06);
}
.hero-tag {
  position: absolute;
  left: 1.1rem;
  bottom: 1.1rem;
  background: color-mix(in srgb, var(--paper) 90%, transparent);
  backdrop-filter: blur(6px);
  font-size: 0.68rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  padding: 0.5rem 0.9rem;
  border-radius: 999px;
}
.hero-scroll {
  position: absolute;
  left: var(--edge);
  bottom: 1.4rem;
  font-size: 0.68rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ink-soft);
  writing-mode: vertical-rl;
  display: none;
}

/* =========================================================
   跑马灯
   ========================================================= */
.marquee {
  overflow: hidden;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: var(--paper-2);
}
.marquee-track {
  display: flex;
  align-items: center;
  gap: 2.2rem;
  width: max-content;
  padding: 1.1rem 0;
  animation: slide 40s linear infinite;
}
.marquee-track span {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(1.4rem, 3.4vw, 2.4rem);
  white-space: nowrap;
}
.marquee-track i {
  color: var(--clay);
  font-style: normal;
  font-size: 1rem;
}

/* =========================================================
   宣言
   ========================================================= */
.manifesto {
  padding: clamp(4rem, 11vw, 9rem) var(--edge);
  text-align: center;
}
.manifesto p {
  font-family: var(--font-display);
  font-weight: 320;
  font-size: clamp(1.6rem, 4.6vw, 3.4rem);
  line-height: 1.28;
  letter-spacing: -0.01em;
  max-width: 22ch;
  margin: 0 auto;
}
.manifesto em {
  font-style: italic;
  color: var(--clay);
}

/* =========================================================
   精选 FEATURE
   ========================================================= */
.feature {
  padding: 0 var(--edge) clamp(4rem, 9vw, 7rem);
}
.feature-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 4vw, 4rem);
  align-items: stretch;
}
.feature-media {
  position: relative;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  cursor: pointer;
  background: var(--paper-2);
}
.feature-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 1.1s var(--ease);
}
.feature-media:hover img {
  transform: scale(1.05);
}
.feature-no {
  position: absolute;
  top: 1rem;
  left: 1rem;
  font-family: var(--font-display);
  font-size: 0.9rem;
  letter-spacing: 0.1em;
  background: var(--paper);
  padding: 0.3rem 0.7rem;
  border-radius: 999px;
}
.feature-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(1rem, 3vw, 2.5rem) 0;
}
.feature-copy .eyebrow {
  font-size: 0.74rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--clay);
  margin-bottom: 1.4rem;
}
.feature-copy h3 {
  font-family: var(--font-display);
  font-weight: 360;
  font-size: clamp(2.2rem, 6vw, 4.2rem);
  line-height: 1.02;
  margin-bottom: 1.2rem;
}
.feature-copy p {
  max-width: 40ch;
  color: var(--ink-2);
  margin-bottom: 1.8rem;
}
.feature-price {
  font-family: var(--font-display);
  font-size: 1.6rem;
  margin-bottom: 2rem;
}
.feature-copy .btn {
  align-self: flex-start;
}

/* =========================================================
   商品目录
   ========================================================= */
.collection {
  padding: clamp(2rem, 5vw, 4rem) var(--edge) clamp(4rem, 9vw, 7rem);
}
.collection-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.5rem;
  padding-bottom: 2rem;
  margin-bottom: clamp(2rem, 4vw, 3.5rem);
  border-bottom: 1px solid var(--line);
}
.collection-title h2 {
  font-family: var(--font-display);
  font-weight: 360;
  font-size: clamp(2.4rem, 7vw, 5rem);
  line-height: 0.95;
}
.filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.filter {
  font-size: 0.8rem;
  letter-spacing: 0.06em;
  padding: 0.5rem 1.1rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--ink-soft);
  transition: all 0.35s var(--ease);
}
.filter:hover {
  border-color: var(--ink);
  color: var(--ink);
}
.filter.active {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--paper);
}

.product-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(1rem, 2.5vw, 2rem) clamp(0.9rem, 2vw, 1.6rem);
}

/* 商品卡 */
.product-card {
  position: relative;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  outline: none;
}
.product-media {
  position: relative;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  background: var(--paper-2);
  border-radius: 2px;
}
.product-media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity 0.6s var(--ease), transform 1.1s var(--ease);
}
.product-media .img-hover {
  opacity: 0;
}
.product-card:hover .product-media .img-hover,
.product-card:focus-visible .product-media .img-hover {
  opacity: 1;
}
.product-card:hover .product-media img,
.product-card:focus-visible .product-media img {
  transform: scale(1.045);
}
.product-tag {
  position: absolute;
  top: 0.7rem;
  left: 0.7rem;
  z-index: 2;
  background: var(--clay);
  color: var(--paper);
  font-size: 0.64rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.32rem 0.6rem;
  border-radius: 999px;
}
.product-quick {
  position: absolute;
  left: 0.7rem;
  right: 0.7rem;
  bottom: 0.7rem;
  z-index: 2;
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter: blur(6px);
  text-align: center;
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 0.7rem;
  border-radius: 2px;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.4s var(--ease), transform 0.4s var(--ease);
}
.product-card:hover .product-quick,
.product-card:focus-visible .product-quick {
  opacity: 1;
  transform: translateY(0);
}
.product-info {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.8rem;
  padding: 0.9rem 0.1rem 0.2rem;
}
.product-info .p-name {
  font-family: var(--font-serif);
  font-weight: 500;
  font-size: 0.98rem;
  line-height: 1.3;
}
.product-info .p-cat {
  display: block;
  font-size: 0.72rem;
  color: var(--ink-soft);
  margin-top: 0.2rem;
  letter-spacing: 0.04em;
}
.product-info .p-price {
  font-family: var(--font-display);
  font-size: 1.02rem;
  white-space: nowrap;
}
.form-note {
  grid-column: 1 / -1;
  text-align: center;
  color: var(--ink-soft);
  padding: 3rem 0;
  font-family: var(--font-serif);
}
.collection-count {
  margin-top: 2.5rem;
  text-align: center;
  font-size: 0.74rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-soft);
}

/* =========================================================
   Lookbook
   ========================================================= */
.lookbook {
  padding: clamp(3rem, 7vw, 6rem) var(--edge);
  background: var(--paper-2);
  border-top: 1px solid var(--line);
}
.lookbook-head {
  margin-bottom: clamp(1.8rem, 4vw, 3rem);
}
.lookbook-head h2 {
  font-family: var(--font-display);
  font-weight: 360;
  font-size: clamp(2rem, 6vw, 4rem);
  line-height: 0.98;
}
.lookbook-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(2, clamp(200px, 30vh, 340px));
  gap: clamp(0.8rem, 2vw, 1.4rem);
}
.lb {
  position: relative;
  overflow: hidden;
  height: 100%;
  border-radius: 2px;
}
.lb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 1.2s var(--ease);
}
.lb:hover img {
  transform: scale(1.06);
}
.lb figcaption {
  position: absolute;
  left: 0.9rem;
  bottom: 0.9rem;
  color: var(--paper);
  font-size: 0.76rem;
  letter-spacing: 0.1em;
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.45);
}
/* 左侧竖图占两行，右下宽图跨两列，中间两张自动落在右上 */
.lb-tall {
  grid-column: 1;
  grid-row: 1 / span 2;
}
.lb-wide {
  grid-column: 2 / span 2;
  grid-row: 2;
}

/* =========================================================
   到店
   ========================================================= */
.visit {
  background: var(--ink);
  color: var(--cream-on-dark);
  padding: clamp(4rem, 10vw, 8rem) var(--edge);
}
.visit-inner {
  max-width: 720px;
}
.visit-inner h2 {
  font-family: var(--font-display);
  font-weight: 340;
  font-size: clamp(2.4rem, 8vw, 5.5rem);
  line-height: 0.98;
  margin-bottom: 1.5rem;
}
.visit-inner > p {
  max-width: 46ch;
  color: rgba(240, 233, 218, 0.75);
  margin-bottom: 2rem;
}
.visit-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
  margin-bottom: 3rem;
}
.visit-meta {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  border-top: 1px solid rgba(240, 233, 218, 0.18);
  padding-top: 2rem;
}
.visit-meta dt {
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(240, 233, 218, 0.5);
  margin-bottom: 0.5rem;
}
.visit-meta dd {
  font-family: var(--font-serif);
  font-size: 0.98rem;
}

/* =========================================================
   页脚
   ========================================================= */
.site-footer {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: start;
  gap: 1.5rem;
  padding: clamp(3rem, 6vw, 4.5rem) var(--edge) 2.5rem;
}
.foot-brand strong {
  font-family: var(--font-display);
  font-size: 1.5rem;
  letter-spacing: 0.1em;
}
.foot-brand p {
  color: var(--ink-soft);
  font-size: 0.9rem;
  margin-top: 0.4rem;
}
.foot-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 1.2rem;
  font-size: 0.82rem;
}
.foot-nav a {
  position: relative;
  color: var(--ink-2);
}
.foot-nav a:hover { color: var(--clay); }
.foot-copy {
  grid-column: 1 / -1;
  margin-top: 2rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--line);
  font-size: 0.74rem;
  letter-spacing: 0.1em;
  color: var(--ink-soft);
}

/* =========================================================
   商品详情弹窗
   ========================================================= */
.product-dialog {
  width: min(1080px, 94vw);
  max-height: 92vh;
  margin: auto;
  padding: 0;
  border: none;
  border-radius: 3px;
  background: var(--paper);
  color: var(--ink);
  overflow: hidden;
}
.product-dialog::backdrop {
  background: rgba(23, 20, 13, 0.55);
  backdrop-filter: blur(3px);
}
.dialog-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 5;
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  background: var(--paper);
  padding: 0.5rem 0.85rem;
  border-radius: 999px;
  border: 1px solid var(--line);
}
.dialog-close:hover {
  background: var(--ink);
  color: var(--paper);
}
.dialog-layout {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  max-height: 92vh;
}
.dialog-copy {
  padding: clamp(1.6rem, 3vw, 3rem);
  overflow-y: auto;
}
.dialog-copy .eyebrow {
  font-size: 0.72rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--clay);
  margin-bottom: 1rem;
}
.dialog-copy h3 {
  font-family: var(--font-display);
  font-weight: 360;
  font-size: clamp(1.8rem, 4vw, 2.8rem);
  line-height: 1.05;
  margin-bottom: 0.6rem;
}
.dialog-copy .price {
  font-family: var(--font-display);
  font-size: 1.4rem;
  display: block;
  margin-bottom: 1.2rem;
}
.dialog-copy > p {
  color: var(--ink-2);
  margin-bottom: 1.5rem;
}
.clothing-preview {
  margin: 0 0 1.3rem;
  border: 1px solid var(--line);
  border-radius: 2px;
  overflow: hidden;
  max-width: 180px;
}
.clothing-preview img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
.tryon-gallery {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 1.4rem;
  flex-wrap: wrap;
}
.tryon-thumb {
  width: 58px;
  height: 74px;
  border-radius: 2px;
  overflow: hidden;
  border: 1px solid var(--line);
  opacity: 0.6;
  transition: opacity 0.3s, border-color 0.3s;
}
.tryon-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.tryon-thumb.active,
.tryon-thumb:hover {
  opacity: 1;
  border-color: var(--ink);
}
.size-stock {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 1.6rem;
}
.size-stock span {
  border: 1px solid var(--line);
  border-radius: 2px;
  padding: 0.45rem 0.75rem;
  font-size: 0.82rem;
}
.size-stock strong {
  color: var(--clay);
  margin-left: 0.25rem;
}
.stock-note {
  color: var(--ink-soft);
  font-size: 0.88rem;
  margin-bottom: 1.6rem;
}

/* 3D 图片查看器（沿用原交互，重新配色） */
.photo-viewer {
  position: relative;
  overflow: hidden;
  background: var(--paper-3);
  touch-action: none;
  cursor: grab;
  min-height: 420px;
}
.photo-viewer.is-dragging {
  cursor: grabbing;
}
.viewer-bg {
  position: absolute;
  inset: -8%;
  background-size: cover;
  background-position: center;
  filter: blur(26px) saturate(1.05);
  opacity: 0.5;
  transform: scale(1.1);
}
.photo-object {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  transition: transform 0.05s linear;
  will-change: transform;
}
.photo-object img {
  max-width: 86%;
  max-height: 86%;
  object-fit: contain;
  box-shadow: 0 30px 60px rgba(23, 20, 13, 0.25);
  pointer-events: none;
}
.photo-viewer::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at var(--shine-x, 50%) var(--shine-y, 50%),
    rgba(255, 255, 255, 0.28),
    transparent 55%
  );
  mix-blend-mode: screen;
  pointer-events: none;
  opacity: 0.7;
}
.viewer-controls {
  position: absolute;
  right: 0.8rem;
  bottom: 0.8rem;
  z-index: 3;
  display: flex;
  gap: 0.35rem;
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter: blur(6px);
  padding: 0.3rem;
  border-radius: 999px;
}
.viewer-controls button {
  width: 34px;
  height: 34px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  font-size: 1.1rem;
  font-family: var(--font-serif);
  transition: background 0.3s, color 0.3s;
}
.viewer-controls button:hover {
  background: var(--ink);
  color: var(--paper);
}

/* =========================================================
   定制光标
   ========================================================= */
.cursor {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 300;
  display: none;
  place-items: center;
  width: 12px;
  height: 12px;
  border-radius: 999px;
  background: var(--clay);
  pointer-events: none;
  transform: translate(-50%, -50%);
  transition: width 0.3s var(--ease), height 0.3s var(--ease), background 0.3s;
}
.cursor.is-hover {
  width: 74px;
  height: 74px;
  background: color-mix(in srgb, var(--clay) 90%, transparent);
}
.cursor span {
  color: var(--paper);
  font-size: 0.6rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  opacity: 0;
  transition: opacity 0.3s;
}
.cursor.is-hover span {
  opacity: 1;
}

/* =========================================================
   滚动渐显
   ========================================================= */
[data-reveal] {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 0.9s var(--ease), transform 0.9s var(--ease);
}
[data-reveal].is-in {
  opacity: 1;
  transform: none;
}
.product-card {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s var(--ease), transform 0.7s var(--ease);
}
.product-card.is-in {
  opacity: 1;
  transform: none;
}

/* =========================================================
   响应式
   ========================================================= */
@media (min-width: 900px) {
  .hero-scroll { display: block; }
}

@media (max-width: 1080px) {
  .product-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 860px) {
  .nav {
    grid-template-columns: auto 1fr auto;
  }
  .nav-links { display: none; }
  .nav-burger { display: flex; }
  .hero {
    grid-template-columns: 1fr;
    min-height: auto;
    text-align: left;
  }
  .hero-media {
    order: -1;
    aspect-ratio: 16 / 12;
  }
  .feature-inner { grid-template-columns: 1fr; }
  .feature-media { aspect-ratio: 4 / 5; }
  /* 手机端：整个弹窗上下滚动，避免图片区吃掉滑动手势导致下方内容够不到 */
  .product-dialog { overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .dialog-layout { display: block; grid-template-columns: 1fr; max-height: none; }
  .dialog-copy { overflow: visible; max-height: none; }
  .photo-viewer { min-height: 0; height: 44vh; touch-action: pan-y; }
  .outfit-photo { min-height: 0; height: 44vh; }
  .lookbook-grid { grid-template-columns: repeat(2, 1fr); grid-template-rows: none; }
  .lb { height: auto; aspect-ratio: 3 / 4; }
  .lb-tall { grid-column: auto; grid-row: auto; }
  .lb-wide { grid-column: 1 / -1; grid-row: auto; aspect-ratio: 16 / 10; }
  .cursor { display: none !important; }
}

@media (max-width: 560px) {
  .product-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem 0.8rem; }
  .visit-meta { grid-template-columns: 1fr; gap: 1.1rem; }
  .site-footer { grid-template-columns: 1fr; }
  .br-desktop { display: none; }
  .announce { font-size: 0.66rem; }
}

/* =========================================================
   潮流商品卡（替代旧 product-card）
   ========================================================= */
.pcard {
  position: relative;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  outline: none;
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s var(--ease), transform 0.7s var(--ease);
}
.pcard.is-in { opacity: 1; transform: none; }
.pcard-media {
  position: relative;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  border-radius: 18px;
  background: var(--paper-2);
  box-shadow: 0 10px 24px -18px rgba(23, 20, 13, 0.4);
  transition: transform 0.5s var(--ease), box-shadow 0.5s var(--ease);
}
.pcard:hover .pcard-media,
.pcard:focus-visible .pcard-media {
  transform: translateY(-6px);
  box-shadow: 0 26px 44px -22px rgba(23, 20, 13, 0.55);
}
.pcard-media .pc-cover,
.pcard-media .pc-hover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity 0.55s var(--ease), transform 1.1s var(--ease);
}
.pcard-media .pc-hover { opacity: 0; }
.pcard:hover .pc-hover,
.pcard:focus-visible .pc-hover { opacity: 1; }
.pcard:hover .pc-cover,
.pcard:hover .pc-hover,
.pcard:focus-visible .pc-cover,
.pcard:focus-visible .pc-hover { transform: scale(1.05); }

.pcard-tag {
  position: absolute;
  top: 0.8rem;
  left: 0.8rem;
  z-index: 3;
  background: var(--clay);
  color: var(--paper);
  font-size: 0.64rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.34rem 0.65rem;
  border-radius: 999px;
}
.pcard-like {
  position: absolute;
  top: 0.6rem;
  right: 0.6rem;
  z-index: 3;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: color-mix(in srgb, var(--paper) 82%, transparent);
  backdrop-filter: blur(6px);
  transition: transform 0.3s var(--ease), background 0.3s;
}
.pcard-like svg { width: 19px; height: 19px; fill: none; stroke: var(--ink); stroke-width: 1.7; transition: fill 0.3s, stroke 0.3s, transform 0.3s; }
.pcard-like:hover { transform: scale(1.12); }
.pcard-like.is-liked svg { fill: var(--clay); stroke: var(--clay); transform: scale(1.05); }
.pcard-view {
  position: absolute;
  left: 0.7rem;
  right: 0.7rem;
  bottom: 0.7rem;
  z-index: 3;
  text-align: center;
  background: color-mix(in srgb, var(--ink) 92%, transparent);
  color: var(--paper);
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  padding: 0.7rem;
  border-radius: 12px;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.4s var(--ease), transform 0.4s var(--ease);
}
.pcard:hover .pcard-view,
.pcard:focus-visible .pcard-view { opacity: 1; transform: translateY(0); }
.pcard-info {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.8rem;
  padding: 0.95rem 0.2rem 0.2rem;
}
.pcard-name strong { font-family: var(--font-serif); font-weight: 500; font-size: 1rem; line-height: 1.3; }
.pcard-name small { display: block; margin-top: 0.25rem; font-size: 0.74rem; color: var(--ink-soft); letter-spacing: 0.02em; }
.pcard-price { font-family: var(--font-display); font-weight: 500; font-size: 1.12rem; white-space: nowrap; }

/* =========================================================
   Lookbook 可点击穿搭
   ========================================================= */
.lb { cursor: pointer; }
.lb-badge {
  position: absolute;
  top: 0.8rem;
  left: 0.8rem;
  z-index: 2;
  background: color-mix(in srgb, var(--paper) 86%, transparent);
  backdrop-filter: blur(6px);
  color: var(--ink);
  font-size: 0.62rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 0.3rem 0.6rem;
  border-radius: 999px;
}
.lb figcaption {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.lb figcaption span {
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.4s var(--ease), transform 0.4s var(--ease);
}
.lb:hover figcaption span,
.lb:focus-visible figcaption span { opacity: 0.95; transform: translateY(0); }

/* =========================================================
   穿搭详情弹窗
   ========================================================= */
.outfit-photo { background: var(--paper-3); min-height: 420px; }
.outfit-photo img { width: 100%; height: 100%; max-height: 92vh; object-fit: cover; }
.outfit-items-title {
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin: 0.4rem 0 0.8rem;
}
.outfit-items { list-style: none; margin: 0 0 1.6rem; padding: 0; }
.outfit-items li {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  padding: 0.75rem 0;
  border-bottom: 1px solid var(--line-soft);
}
.oi-name { font-family: var(--font-serif); font-size: 1rem; }
.oi-note { font-size: 0.8rem; color: var(--clay); white-space: nowrap; }

/* =========================================================
   联系方式（微信卡片）
   ========================================================= */
.wechat-card {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.2rem;
  margin: 0 0 2.4rem;
  padding: 1.1rem 1.3rem;
  border: 1px solid rgba(240, 233, 218, 0.22);
  border-radius: 14px;
  background: rgba(240, 233, 218, 0.05);
}
.wechat-card-info { display: flex; flex-direction: column; gap: 0.35rem; }
.wechat-card-info span { font-size: 0.7rem; letter-spacing: 0.2em; text-transform: uppercase; color: rgba(240, 233, 218, 0.5); }
.wechat-card-info strong { font-family: var(--font-display); font-size: 1.4rem; }
.wechat-card-qr { width: 96px; height: 96px; border-radius: 8px; object-fit: cover; background: var(--paper); }
.mini-btn {
  align-self: flex-start;
  margin-top: 0.3rem;
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  padding: 0.4rem 0.9rem;
  border-radius: 999px;
  border: 1px solid rgba(240, 233, 218, 0.4);
  color: var(--cream-on-dark);
  transition: background 0.3s, color 0.3s;
}
.mini-btn:hover { background: var(--cream-on-dark); color: var(--ink); }

/* =========================================================
   浮动联系快捷入口
   ========================================================= */
.fab {
  position: fixed;
  right: clamp(1rem, 3vw, 2rem);
  bottom: clamp(1rem, 3vw, 2rem);
  z-index: 80;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.7rem;
}
.fab-btn {
  width: 54px;
  height: 54px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  color: var(--paper);
  box-shadow: 0 12px 26px -10px rgba(23, 20, 13, 0.6);
  transition: transform 0.35s var(--ease);
}
.fab-btn:hover { transform: translateY(-3px) scale(1.05); }
.fab-btn.phone { background: var(--ink); }
.fab-btn.wechat { background: #3fa45a; }
.fab-wechat-pop {
  order: -1;
  width: 210px;
  padding: 1.1rem;
  border-radius: 14px;
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 20px 44px -18px rgba(23, 20, 13, 0.55);
  border: 1px solid var(--line);
  text-align: center;
}
.fab-wechat-pop p { font-size: 0.68rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-soft); }
.fab-wechat-pop strong { display: block; font-family: var(--font-display); font-size: 1.3rem; margin: 0.3rem 0 0.7rem; }
.fab-wechat-pop .mini-btn { border-color: var(--line); color: var(--ink); }
.fab-wechat-pop .mini-btn:hover { background: var(--ink); color: var(--paper); }
.fab-wechat-pop img { width: 100%; margin-top: 0.8rem; border-radius: 8px; }

/* =========================================================
   Toast
   ========================================================= */
.toast {
  position: fixed;
  left: 50%;
  bottom: 2rem;
  z-index: 200;
  transform: translate(-50%, 20px);
  background: var(--ink);
  color: var(--paper);
  font-size: 0.86rem;
  letter-spacing: 0.03em;
  padding: 0.8rem 1.4rem;
  border-radius: 999px;
  box-shadow: 0 16px 34px -14px rgba(23, 20, 13, 0.6);
  opacity: 0;
  transition: opacity 0.3s var(--ease), transform 0.3s var(--ease);
  pointer-events: none;
}
.toast.show { opacity: 1; transform: translate(-50%, 0); }

/* =========================================================
   定制光标 — 放大态爱心
   ========================================================= */
.cursor-heart {
  position: absolute;
  width: 100%;
  height: 100%;
  fill: #ff7d92;
  opacity: 0;
  transform: scale(0.2);
  transition: opacity 0.3s var(--ease), transform 0.35s var(--ease);
}
.cursor.is-hover {
  width: 78px;
  height: 78px;
  background: transparent;
}
.cursor.is-hover .cursor-heart {
  opacity: 1;
  transform: scale(1);
  animation: heartbeat 1s ease-in-out infinite;
}
.cursor span { position: relative; z-index: 1; }
@keyframes heartbeat {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.12); }
}

/* =========================================================
   LOGO 文字 wordmark
   ========================================================= */
.brand-word {
  font-family: var(--font-display);
  font-weight: 500;
  letter-spacing: 0.06em;
  font-feature-settings: "swsh" 1;
}
.brand-word em {
  font-style: italic;
  font-weight: 400;
  color: var(--clay);
  letter-spacing: 0.02em;
}

@media (max-width: 560px) {
  .fab-btn { width: 48px; height: 48px; }
  .fab-wechat-pop { width: 180px; }
}

/* 减少动效偏好 */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  [data-reveal],
  .product-card,
  .pcard {
    opacity: 1;
    transform: none;
  }
}

/* =========================================================
   售罄状态
   ========================================================= */
.pcard-soldout {
  position: absolute;
  top: 0.7rem;
  left: 0.7rem;
  z-index: 3;
  background: var(--ink);
  color: var(--paper);
  font-size: 0.64rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  padding: 0.34rem 0.65rem;
  border-radius: 999px;
}
.pcard.is-soldout .pcard-tag { display: none; }
.pcard.is-soldout .pc-cover,
.pcard.is-soldout .pc-hover { filter: grayscale(0.5) opacity(0.72); }
.pcard.is-soldout .pcard-price { color: var(--ink-soft); }
.stock-note.soldout { color: var(--clay); font-weight: 500; }

/* =========================================================
   导航心愿入口
   ========================================================= */
.nav-icon.wish {
  position: relative;
  font-size: 1.05rem;
  line-height: 1;
  color: var(--ink-2);
}
.nav-icon.wish.has-items { color: var(--clay); }
.nav-icon.wish .wish-count {
  font-size: 0.66rem;
  font-family: var(--font-sans);
  letter-spacing: 0;
  margin-left: 0.15rem;
  color: var(--clay);
}

/* =========================================================
   心愿单弹窗
   ========================================================= */
.wishlist-dialog {
  padding: clamp(1.6rem, 3vw, 2.6rem);
  overflow-y: auto;
}
.wishlist-head { margin-bottom: 1.6rem; }
.wishlist-head h3 {
  font-family: var(--font-display);
  font-weight: 360;
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  line-height: 1.05;
}
.wishlist-empty { color: var(--ink-soft); font-family: var(--font-serif); padding: 1.5rem 0 2rem; }
.wishlist-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: clamp(0.9rem, 2vw, 1.4rem);
}
.wish-card { cursor: pointer; }
.wish-media {
  position: relative;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  border-radius: 14px;
  background: var(--paper-2);
}
.wish-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.8s var(--ease); }
.wish-card:hover .wish-media img { transform: scale(1.05); }
.wish-remove {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter: blur(5px);
  font-size: 0.9rem;
  transition: background 0.3s, color 0.3s;
}
.wish-remove:hover { background: var(--ink); color: var(--paper); }
.wish-info {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.6rem;
  padding: 0.7rem 0.1rem 0;
}
.wish-info strong { font-family: var(--font-serif); font-weight: 500; font-size: 0.92rem; }
.wish-info span { font-family: var(--font-display); white-space: nowrap; }

/* =========================================================
   分享
   ========================================================= */
.dialog-actions { display: flex; gap: 0.6rem; flex-wrap: wrap; }
.dialog-actions .btn { flex: 1 1 auto; justify-content: center; }

.share-dialog {
  width: min(420px, 92vw);
  padding: clamp(1.8rem, 5vw, 2.6rem);
  overflow-y: auto;
}
.share-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  text-align: center;
}
.share-inner h3 {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.3rem, 4vw, 1.7rem);
  line-height: 1.2;
}
.share-inner .btn { width: 100%; justify-content: center; }
.share-qr {
  padding: 12px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  min-height: 168px;
  display: grid;
  place-items: center;
}
.share-qr canvas, .share-qr img { display: block; margin: 0 auto; }
.qr-loading { font-size: 0.85rem; color: var(--ink-soft); }
.share-hint { font-size: 0.82rem; color: var(--ink-soft); line-height: 1.6; }

.foot-share {
  font-size: 0.82rem;
  color: var(--ink-2);
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  transition: color 0.3s;
}
.foot-share:hover { color: var(--clay); }

/* =========================================================
   解压模式（多巴胺）— 模拟购物
   ========================================================= */
:root { --dopa: #ff5a8a; --dopa-deep: #e23b6d; --dopa-gold: #ffb020; }

.dopamine-only { display: none; }
body.dopamine-on .cart-btn,
body.dopamine-on .dialog-actions .dopamine-only { display: inline-flex; }
body.dopamine-on .dopamine-bar { display: flex; }
body.dopamine-on .pcard-cart { display: flex; }

.dopamine-fab {
  position: fixed;
  left: clamp(1rem, 3vw, 2rem);
  bottom: clamp(1rem, 3vw, 2rem);
  z-index: 80;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0.8rem 1.2rem;
  border-radius: 999px;
  background: var(--dopa);
  color: #fff;
  font-size: 0.9rem;
  font-weight: 500;
  box-shadow: 0 12px 26px -8px rgba(226, 59, 109, 0.6);
  animation: dopaPulse 2.2s ease-in-out infinite;
}
.dopamine-fab:hover { background: var(--dopa-deep); }
body.dopamine-on .dopamine-fab { display: none; }
@keyframes dopaPulse {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-3px) scale(1.04); }
}

.dopamine-bar {
  position: fixed;
  left: 50%;
  bottom: 1rem;
  transform: translateX(-50%);
  z-index: 81;
  align-items: center;
  gap: 12px;
  background: var(--ink);
  color: var(--cream-on-dark);
  font-size: 0.78rem;
  letter-spacing: 0.02em;
  padding: 0.6rem 1rem 0.6rem 1.2rem;
  border-radius: 999px;
  box-shadow: 0 14px 30px -12px rgba(0, 0, 0, 0.5);
  max-width: 92vw;
}
.dopamine-bar button {
  background: var(--dopa);
  color: #fff;
  font-size: 0.72rem;
  padding: 0.3rem 0.8rem;
  border-radius: 999px;
  white-space: nowrap;
}
.dopamine-bar button:hover { background: var(--dopa-deep); }

.cart-btn { position: relative; font-size: 1rem; }
.cart-count {
  font-size: 0.66rem;
  margin-left: 0.15rem;
  color: var(--dopa-deep);
  font-family: var(--font-sans);
}
.cart-btn.bump { animation: cartBump 0.4s var(--ease); }
@keyframes cartBump {
  0%, 100% { transform: scale(1); }
  35% { transform: scale(1.35); }
}

.pcard-cart {
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  margin-top: 0.6rem;
  padding: 0.6rem;
  border-radius: 999px;
  background: var(--ink);
  color: var(--paper);
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  transition: background 0.3s;
}
.pcard-cart:hover { background: var(--dopa); }

.dopamine-dialog { width: min(440px, 92vw); padding: clamp(1.8rem, 5vw, 2.6rem); }
.dopamine-intro { text-align: center; }
.dopamine-emoji { font-size: 3rem; line-height: 1; margin-bottom: 0.6rem; }
.dopamine-intro h3 { font-family: var(--font-display); font-weight: 400; font-size: clamp(1.5rem, 5vw, 2rem); margin-bottom: 1rem; }
.dopamine-warn { color: var(--ink-2); line-height: 1.8; margin-bottom: 1.6rem; }
.dopamine-warn strong { color: var(--dopa-deep); }
.dopamine-intro-actions { display: flex; flex-direction: column; gap: 0.6rem; }
.dopamine-intro-actions .btn { width: 100%; justify-content: center; }
.dopamine-intro-actions .btn.solid { background: var(--dopa); }
.dopamine-intro-actions .btn.solid:hover { background: var(--dopa-deep); }
.dopamine-mini { font-size: 0.76rem; color: var(--ink-soft); text-align: center; margin-top: 0.4rem; }

.cart-dialog, .checkout-dialog { width: min(560px, 94vw); padding: clamp(1.6rem, 4vw, 2.4rem); overflow-y: auto; }
.cart-head { margin-bottom: 1.4rem; }
.cart-head h3, .checkout-inner h3 { font-family: var(--font-display); font-weight: 400; font-size: clamp(1.5rem, 4vw, 2rem); }
.cart-empty { color: var(--ink-soft); font-family: var(--font-serif); padding: 1.5rem 0 2rem; text-align: center; }
.cart-item { display: flex; gap: 12px; align-items: center; padding: 0.9rem 0; border-bottom: 1px solid var(--line-soft); }
.cart-item img { width: 60px; height: 76px; object-fit: cover; border-radius: 8px; background: var(--paper-2); flex: none; }
.cart-item .ci-info { flex: 1; min-width: 0; }
.cart-item .ci-name { font-family: var(--font-serif); font-size: 0.95rem; }
.cart-item .ci-price { color: var(--ink-soft); font-size: 0.82rem; margin-top: 2px; }
.qty { display: inline-flex; align-items: center; gap: 8px; margin-top: 6px; }
.qty button { width: 26px; height: 26px; border-radius: 999px; border: 1px solid var(--line); display: grid; place-items: center; font-size: 1rem; }
.qty button:hover { background: var(--ink); color: var(--paper); }
.qty span { min-width: 20px; text-align: center; }
.ci-remove { color: var(--ink-soft); font-size: 0.76rem; background: none; }
.ci-remove:hover { color: var(--dopa-deep); }
.cart-foot { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1.4rem; padding-top: 1.2rem; border-top: 1px solid var(--line); }
.cart-total-num { font-family: var(--font-display); font-size: 1.5rem; }
.cart-foot .btn.solid { background: var(--dopa); }
.cart-foot .btn.solid:hover { background: var(--dopa-deep); }

.checkout-form { display: flex; flex-direction: column; gap: 1rem; margin-top: 1.2rem; }
.checkout-form label { display: flex; flex-direction: column; gap: 6px; font-size: 0.82rem; color: var(--ink-2); }
.checkout-form input, .checkout-form textarea {
  font-family: inherit; font-size: 0.95rem; padding: 0.7rem 0.9rem;
  border: 1px solid var(--line); border-radius: 10px; background: var(--paper); color: var(--ink); outline: none;
}
.checkout-form input:focus, .checkout-form textarea:focus { border-color: var(--ink); }
.checkout-total { font-family: var(--font-display); font-size: 1.2rem; padding: 0.4rem 0; }
.checkout-form .btn.solid { width: 100%; justify-content: center; background: var(--dopa); }
.checkout-form .btn.solid:hover { background: var(--dopa-deep); }

.tracking-dialog { width: min(500px, 94vw); padding: clamp(1.8rem, 5vw, 2.6rem); overflow-y: auto; }
.tracking-inner h3 { font-family: var(--font-display); font-weight: 400; font-size: clamp(1.5rem, 4vw, 2rem); margin-bottom: 0.4rem; }
.tracking-sub { color: var(--ink-soft); font-size: 0.82rem; margin-bottom: 1.6rem; }
.track-steps { list-style: none; margin: 0 0 1.4rem; padding: 0; }
.track-step { display: flex; gap: 12px; padding-bottom: 1.1rem; position: relative; opacity: 0.35; transition: opacity 0.4s; }
.track-step:not(:last-child)::before { content: ""; position: absolute; left: 9px; top: 20px; bottom: 0; width: 2px; background: var(--line); }
.track-step.done { opacity: 1; }
.track-dot { width: 20px; height: 20px; border-radius: 999px; border: 2px solid var(--line); flex: none; display: grid; place-items: center; font-size: 0.7rem; background: var(--paper); z-index: 1; }
.track-step.done .track-dot { background: var(--dopa); border-color: var(--dopa); color: #fff; }
.track-step.active .track-dot { animation: dopaPulse 1s ease-in-out infinite; }
.track-label { font-size: 0.92rem; }
.track-time { font-size: 0.75rem; color: var(--ink-soft); margin-top: 2px; }
.track-delivered {
  text-align: center; padding: 1.4rem; border-radius: 14px;
  background: color-mix(in srgb, var(--dopa) 14%, var(--paper)); margin-bottom: 1.2rem;
}
.track-delivered .big { font-size: 2.4rem; }
.track-delivered h4 { font-family: var(--font-display); font-weight: 400; font-size: 1.4rem; margin: 0.4rem 0; }
.track-delivered p { color: var(--ink-2); font-size: 0.86rem; }
.tracking-inner .btn { width: 100%; justify-content: center; }

.confetti-layer { position: fixed; inset: 0; pointer-events: none; z-index: 300; overflow: hidden; }
.confetti-piece {
  position: fixed; top: -20px; width: 9px; height: 14px; border-radius: 2px;
  z-index: 400; animation: confettiFall linear forwards;
}
@keyframes confettiFall {
  to { transform: translateY(105vh) rotate(720deg); opacity: 0.9; }
}

@media (max-width: 560px) {
  .dopamine-bar { font-size: 0.7rem; padding: 0.5rem 0.7rem 0.5rem 0.9rem; bottom: 0.6rem; }
  .dopamine-fab { padding: 0.7rem 1rem; font-size: 0.82rem; }
}

@media (prefers-reduced-motion: reduce) {
  .dopamine-fab, .track-step.active .track-dot { animation: none; }
}

/* =========================================================
   解压模式 2.0 — 多巴胺主题 + 真实网购流程
   ========================================================= */

/* 进入后：整站切换多巴胺糖果配色 */
body.dopamine-on {
  --paper: #fff2f8;
  --paper-2: #ffe4f1;
  --paper-3: #ffd3e7;
  --ink: #2a1330;
  --ink-2: #6a3560;
  --ink-soft: #a06f92;
  --line: rgba(42, 19, 48, 0.16);
  --line-soft: rgba(42, 19, 48, 0.08);
  --clay: #ff2e88;
  --clay-deep: #e01a70;
  --cream-on-dark: #fff2f8;
  background:
    radial-gradient(circle at 10% 12%, rgba(255, 214, 30, 0.38), transparent 26%),
    radial-gradient(circle at 90% 8%, rgba(181, 123, 255, 0.34), transparent 24%),
    radial-gradient(circle at 84% 82%, rgba(120, 220, 120, 0.30), transparent 26%),
    radial-gradient(circle at 14% 90%, rgba(255, 138, 61, 0.30), transparent 24%),
    radial-gradient(circle at 50% 46%, rgba(111, 211, 255, 0.14), transparent 42%),
    var(--paper);
  background-attachment: fixed;
}
body.dopamine-on .btn.solid { background: var(--clay); }
body.dopamine-on .btn.solid:hover { background: var(--clay-deep); }

/* 入口按钮（精致版，覆盖旧样式） */
.dopamine-fab {
  position: fixed;
  left: clamp(1rem, 3vw, 2rem);
  bottom: clamp(1rem, 3vw, 2rem);
  z-index: 80;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0.72rem 1.2rem;
  border-radius: 999px;
  background: var(--ink);
  color: var(--paper);
  font-family: var(--font-sans);
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  box-shadow: 0 12px 26px -12px rgba(0, 0, 0, 0.55);
  transition: transform 0.4s var(--ease);
  animation: none;
}
.dopamine-fab:hover { transform: translateY(-2px); background: var(--ink); }
body.dopamine-on .dopamine-fab { display: none; }
.dopa-dot {
  width: 9px; height: 9px; border-radius: 999px; background: #ff2e88;
  animation: dopaHue 5s linear infinite;
}
@keyframes dopaHue {
  0% { background: #ff2e88; } 25% { background: #ffd21e; }
  50% { background: #a8e05f; } 75% { background: #b57bff; } 100% { background: #ff2e88; }
}

/* 提醒条 */
.dopamine-bar { align-items: center; }

/* 全屏进入页 */
.dopamine-intro-dialog {
  width: 100vw; max-width: 100vw; height: 100vh; max-height: 100vh;
  margin: 0; padding: 0; border: none;
  display: grid; place-items: center; overflow: hidden;
  background:
    radial-gradient(circle at 16% 20%, #ffd21e, transparent 30%),
    radial-gradient(circle at 86% 14%, #b57bff, transparent 28%),
    radial-gradient(circle at 82% 84%, #a8e05f, transparent 30%),
    radial-gradient(circle at 12% 86%, #ff8a3d, transparent 28%),
    radial-gradient(circle at 50% 50%, #ff8ac4, transparent 55%),
    #ffe1ef;
}
.dopamine-intro-dialog::backdrop { background: rgba(20, 10, 25, 0.4); }
.dopa-orbs { position: absolute; inset: 0; pointer-events: none; }
.dopa-orbs i { position: absolute; border-radius: 999px; opacity: 0.85; animation: orbFloat 6s ease-in-out infinite; }
.dopa-orbs i:nth-child(1) { left: 7%; top: 16%; width: 64px; height: 64px; background: #ff2e88; animation-delay: 0s; }
.dopa-orbs i:nth-child(2) { left: 84%; top: 22%; width: 48px; height: 48px; background: #ffd21e; animation-delay: 0.6s; }
.dopa-orbs i:nth-child(3) { left: 18%; top: 74%; width: 54px; height: 54px; background: #b57bff; animation-delay: 1.1s; }
.dopa-orbs i:nth-child(4) { left: 78%; top: 70%; width: 70px; height: 70px; background: #a8e05f; animation-delay: 0.3s; }
.dopa-orbs i:nth-child(5) { left: 46%; top: 10%; width: 34px; height: 34px; background: #ff8a3d; animation-delay: 0.9s; }
.dopa-orbs i:nth-child(6) { left: 30%; top: 34%; width: 26px; height: 26px; background: #6fd3ff; animation-delay: 1.4s; }
.dopa-orbs i:nth-child(7) { left: 90%; top: 50%; width: 30px; height: 30px; background: #ff2e88; animation-delay: 0.5s; }
.dopa-orbs i:nth-child(8) { left: 6%; top: 48%; width: 40px; height: 40px; background: #ffd21e; animation-delay: 1.6s; }
@keyframes orbFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-20px); } }

.dopamine-intro-dialog .dopamine-intro {
  position: relative; z-index: 1;
  width: min(680px, 92vw); text-align: center;
  padding: clamp(1.5rem, 5vw, 3rem);
}
.dopa-kicker { font-size: 0.78rem; letter-spacing: 0.34em; color: #e01a70; margin-bottom: 1rem; }
.dopa-title {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(2.6rem, 10vw, 5.4rem); line-height: 1.02; color: #2a1330; margin-bottom: 1.4rem;
}
.dopa-title em { font-style: italic; color: #ff2e88; }
.dopa-desc { max-width: 46ch; margin: 0 auto 2.2rem; color: #5a2f52; line-height: 1.85; font-size: 1rem; }
.dopa-desc strong { color: #e01a70; }
.dopa-actions { display: flex; flex-direction: column; align-items: center; gap: 0.9rem; }
.dopa-enter-btn {
  background: #2a1330; color: #fff; padding: 1.05rem 2.6rem; border-radius: 999px;
  font-size: 1.02rem; font-weight: 500; letter-spacing: 0.02em;
  box-shadow: 0 16px 34px -12px rgba(42, 19, 48, 0.5); transition: transform 0.3s var(--ease), background 0.3s;
}
.dopa-enter-btn:hover { transform: translateY(-3px) scale(1.03); background: #ff2e88; }
.dopa-skip { color: #7a4a6f; font-size: 0.86rem; text-decoration: underline; text-underline-offset: 3px; }

/* 确认订单：分区 + 黑金卡 */
.co-section { margin-bottom: 1.4rem; }
.co-label { font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-soft); margin-bottom: 0.7rem; }
.pay-card {
  border-radius: 14px; padding: 1.15rem 1.35rem; color: #f3e4bf;
  background: linear-gradient(135deg, #17171b 0%, #2c2c34 60%, #3a3320 100%);
  box-shadow: 0 14px 30px -14px rgba(0, 0, 0, 0.6);
}
.pay-card-top { display: flex; justify-content: space-between; align-items: center; }
.pay-card-brand { font-size: 0.9rem; letter-spacing: 0.02em; color: #e8c976; }
.pay-card-chip { width: 34px; height: 24px; border-radius: 5px; background: linear-gradient(135deg, #e8c976, #b0872f); }
.pay-card-no { font-size: 1.24rem; letter-spacing: 0.14em; margin: 1rem 0 0.9rem; color: #f5e9cc; }
.pay-card-bottom { display: flex; justify-content: space-between; font-size: 0.7rem; letter-spacing: 0.06em; color: #c9b483; }
.co-foot { display: flex; flex-direction: column; gap: 0.8rem; margin-top: 0.4rem; }
.co-foot .checkout-total { text-align: right; }
.co-foot .btn.solid { width: 100%; justify-content: center; }

/* 支付弹窗 */
.payment-dialog { width: min(400px, 92vw); padding: clamp(1.8rem, 5vw, 2.6rem); text-align: center; }
.pay-amount { font-family: var(--font-display); font-weight: 400; font-size: 2.8rem; margin: 0.5rem 0 0.2rem; }
.pay-sub { color: var(--ink-soft); font-size: 0.84rem; margin-bottom: 1.6rem; }
.pay-method-row { display: inline-flex; align-items: center; gap: 8px; font-size: 0.88rem; margin-bottom: 1.6rem; }
.pay-mini-card { width: 26px; height: 17px; border-radius: 3px; background: linear-gradient(135deg, #17171b, #3a3320); display: inline-block; }
.pay-confirm-btn { width: 100%; justify-content: center; }
.pay-spinner {
  width: 54px; height: 54px; border-radius: 999px; margin: 1.4rem auto 1rem;
  border: 4px solid var(--line); border-top-color: var(--clay); animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
.pay-processing { color: var(--ink-2); font-size: 0.95rem; }
.pay-success-icon {
  width: 66px; height: 66px; border-radius: 999px; margin: 1rem auto; background: #2ec16b; color: #fff;
  display: grid; place-items: center; font-size: 2rem; animation: popIn 0.4s var(--ease);
}
@keyframes popIn { from { transform: scale(0); } to { transform: scale(1); } }

/* 物流：订单头 + 签收短信卡 */
.track-order-head { display: flex; gap: 12px; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--line); }
.track-order-head img { width: 52px; height: 66px; object-fit: cover; border-radius: 8px; flex: none; background: var(--paper-2); }
.track-order-title { font-family: var(--font-serif); font-size: 1.02rem; }
.track-order-meta { font-size: 0.8rem; color: var(--ink-soft); margin-top: 3px; }
.sms-card { background: var(--paper-2); border: 1px solid var(--line); border-radius: 14px; padding: 1.1rem 1.2rem; margin-bottom: 1.3rem; }
.sms-head { display: flex; align-items: center; gap: 6px; font-size: 0.78rem; letter-spacing: 0.02em; color: var(--clay-deep); margin-bottom: 0.55rem; }
.sms-body { font-size: 0.92rem; line-height: 1.75; }
.sms-note { color: var(--ink-soft); font-size: 0.82rem; }
