/* ==========================================================================
   玫瑰与墨 · 设计作品集
   玫瑰红玻璃拟态 / 古风 · 纯 CSS，无构建
   ========================================================================== */

/* ---------- tokens ---------- */
:root{
  --serif:"Songti SC","STSong","Source Han Serif SC","Noto Serif SC","STZhongsong","SimSun",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --ease:cubic-bezier(.19,1,.22,1);
  --r-lg:26px;
  --r-md:18px;
  --r-sm:12px;
  --pad:clamp(20px,5vw,64px);
  --max:1240px;
}

html[data-theme="dark"]{
  color-scheme:dark;
  --bg:#120608;
  --bg-2:#1d0a11;
  --bg-3:#2a0d18;
  --text:#f7eaee;
  --text-dim:rgba(247,234,238,.60);
  --text-soft:rgba(247,234,238,.82);
  --rose:#ef6b92;
  --rose-2:#ffa1bc;
  --rose-deep:#9c1440;
  --champagne:#e8c9a8;
  --line:rgba(255,180,200,.20);
  --line-strong:rgba(255,190,208,.36);
  --glass:linear-gradient(152deg,rgba(255,255,255,.105),rgba(255,255,255,.022));
  --glass-solid:rgba(30,11,18,.72);
  --shadow:0 34px 90px rgba(30,0,12,.62),0 2px 0 rgba(255,255,255,.04) inset;
  --grain-op:.055;
  --hero-veil-1:rgba(18,6,8,.55);
  --hero-veil-2:rgba(18,6,8,.94);
}

html[data-theme="light"]{
  color-scheme:light;
  --bg:#f8f0ea;
  --bg-2:#fffaf6;
  --bg-3:#f3e2dd;
  --text:#3a1a24;
  --text-dim:rgba(58,26,36,.58);
  --text-soft:rgba(58,26,36,.80);
  --rose:#bf3f6a;
  --rose-2:#a32a52;
  --rose-deep:#8d1f42;
  --champagne:#b08256;
  --line:rgba(150,50,80,.16);
  --line-strong:rgba(150,50,80,.30);
  --glass:linear-gradient(152deg,rgba(255,255,255,.78),rgba(255,255,255,.42));
  --glass-solid:rgba(255,250,247,.86);
  --shadow:0 26px 60px rgba(120,50,70,.14),0 1px 0 rgba(255,255,255,.9) inset;
  --grain-op:.03;
  --hero-veil-1:rgba(248,240,234,.55);
  --hero-veil-2:rgba(248,240,234,.97);
}

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.75;
  letter-spacing:.01em;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  transition:background .5s var(--ease),color .5s var(--ease);
}
img,video,canvas,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:rgba(239,107,146,.32);color:var(--text)}

/* scrollbar */
::-webkit-scrollbar{width:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:linear-gradient(var(--rose-deep),var(--rose));border-radius:8px;border:3px solid var(--bg)}

/* ---------- ambient ---------- */
#petals{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.9}
.grain{
  position:fixed;inset:0;z-index:4;pointer-events:none;opacity:var(--grain-op);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
  mix-blend-mode:overlay;
}
.cursor-glow{
  position:fixed;left:0;top:0;width:520px;height:520px;margin:-260px 0 0 -260px;
  border-radius:50%;pointer-events:none;z-index:1;opacity:0;
  background:radial-gradient(circle,rgba(239,107,146,.16),rgba(239,107,146,.05) 42%,transparent 68%);
  transition:opacity .6s ease;will-change:transform;
}
body.has-cursor .cursor-glow{opacity:1}
html[data-theme="light"] .cursor-glow{background:radial-gradient(circle,rgba(191,63,106,.12),transparent 66%)}

.progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:60;background:transparent}
.progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--rose-deep),var(--rose-2),var(--champagne))}

main,footer{position:relative;z-index:2}

/* ---------- nav ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:50;
  padding:18px 0;transition:padding .4s var(--ease),background .4s ease,border-color .4s ease;
  border-bottom:1px solid transparent;
}
.nav.scrolled{
  padding:10px 0;background:var(--glass-solid);border-bottom-color:var(--line);
  -webkit-backdrop-filter:blur(22px) saturate(150%);backdrop-filter:blur(22px) saturate(150%);
}
.nav-inner{
  max-width:var(--max);margin:0 auto;padding:0 var(--pad);
  display:flex;align-items:center;justify-content:space-between;gap:24px;
}
.brand{display:flex;align-items:center;gap:12px}
.seal{
  display:grid;place-items:center;width:38px;height:38px;flex:none;
  font-family:var(--serif);font-size:20px;font-weight:700;color:#ffe9ef;
  background:linear-gradient(150deg,#c8325f,#8d1239);
  border-radius:9px;box-shadow:0 8px 20px rgba(160,20,60,.4),inset 0 0 0 1px rgba(255,255,255,.25);
  transform:rotate(-3deg);
}
.seal.small{width:26px;height:26px;font-size:14px;border-radius:6px;vertical-align:-6px}
.brand-text{display:flex;flex-direction:column;line-height:1.2}
.brand-text strong{font-family:var(--serif);font-size:17px;letter-spacing:.18em}
.brand-text em{font-style:normal;font-size:9.5px;letter-spacing:.28em;color:var(--text-dim);margin-top:2px}
.nav:not(.scrolled) .nav-links a{color:rgba(250,238,242,.84)}
.nav:not(.scrolled) .nav-links a:hover{color:#fff}
.nav:not(.scrolled) .brand-text strong{color:#f8ecf0}
.nav:not(.scrolled) .brand-text em{color:rgba(250,238,242,.55)}
.nav:not(.scrolled) .icon-btn{
  color:#f8ecf0;border-color:rgba(255,190,208,.32);background:rgba(255,255,255,.10);
}
.nav.open .nav-links a{color:var(--text)}
.nav-links{display:flex;gap:34px}
.nav-links a{
  position:relative;font-size:13.5px;letter-spacing:.2em;color:var(--text-soft);padding:6px 0;
  transition:color .3s ease;
}
.nav-links a::after{
  content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;
  background:linear-gradient(90deg,var(--rose),transparent);transition:right .45s var(--ease);
}
.nav-links a:hover{color:var(--text)}
.nav-links a:hover::after{right:0}
.nav-tools{display:flex;align-items:center;gap:10px}
.icon-btn{
  width:38px;height:38px;display:grid;place-items:center;border-radius:50%;
  border:1px solid var(--line);background:var(--glass);color:var(--text-soft);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  transition:transform .35s var(--ease),border-color .3s,color .3s;
}
.icon-btn:hover{transform:translateY(-1px) rotate(-6deg);border-color:var(--line-strong);color:var(--text)}
.menu-btn{display:none;flex-direction:column;gap:5px}
.menu-btn span{display:block;width:16px;height:1.4px;background:currentColor;transition:transform .35s var(--ease),opacity .3s}

/* ---------- side index ---------- */
.side-index{
  position:fixed;right:26px;top:50%;transform:translateY(-50%) translateX(12px);z-index:30;
  display:flex;flex-direction:column;gap:16px;opacity:0;pointer-events:none;
  transition:opacity .6s ease,transform .6s var(--ease);
}
.side-index.on{opacity:1;pointer-events:auto;transform:translateY(-50%)}
.side-index a{display:flex;align-items:center;justify-content:flex-end;gap:10px;color:var(--text-dim)}
.side-index i{
  display:block;width:6px;height:6px;border-radius:50%;background:currentColor;
  opacity:.45;transition:all .4s var(--ease);
}
.side-index span{
  font-size:10.5px;letter-spacing:.22em;white-space:nowrap;opacity:0;transform:translateX(6px);
  transition:opacity .35s ease,transform .35s var(--ease);
}
.side-index a:hover span,.side-index a.active span{opacity:1;transform:none}
.side-index a.active{color:var(--rose-2)}
.side-index a.active i{opacity:1;width:16px;border-radius:3px;background:linear-gradient(90deg,transparent,var(--rose-2))}

/* ---------- hero ---------- */
.hero{
  position:relative;min-height:100svh;display:flex;align-items:center;
  padding:130px var(--pad) 90px;overflow:hidden;isolation:isolate;
  /* 首屏永远落在深色山水上，文字固定用亮色，不随主题变化 */
  --text:#f8ecf0;
  --text-soft:rgba(250,238,242,.88);
  --text-dim:rgba(250,238,242,.66);
  --line:rgba(255,182,202,.22);
  --line-strong:rgba(255,194,212,.42);
  --rose-2:#ffb0c7;
  --glass:linear-gradient(152deg,rgba(255,255,255,.16),rgba(255,255,255,.05));
  color:var(--text);
}
.hero-bg{
  position:absolute;inset:-4%;
  background:url("../img/covers/hero-bg.webp") center 46%/cover no-repeat;
  filter:saturate(1.3) brightness(.94) blur(3px);transform:scale(1.08);
  animation:heroDrift 26s ease-in-out infinite alternate;
}
@keyframes heroDrift{from{transform:scale(1.08) translate3d(0,0,0)}to{transform:scale(1.14) translate3d(-1.4%,-1.2%,0)}}
.hero-veil{
  position:absolute;inset:0;
  background:
    radial-gradient(125% 95% at 52% 46%,rgba(14,4,8,0) 38%,rgba(14,4,8,.58) 100%),
    linear-gradient(96deg,rgba(10,2,5,.94) 0%,rgba(10,2,5,.80) 22%,rgba(10,2,5,.44) 44%,rgba(10,2,5,.08) 64%,rgba(10,2,5,0) 78%),
    radial-gradient(54% 46% at 24% 28%,rgba(239,107,146,.22),transparent 74%),
    radial-gradient(48% 48% at 88% 86%,rgba(156,20,64,.30),transparent 76%),
    linear-gradient(180deg,rgba(16,5,9,.62) 0%,rgba(16,5,9,0) 24%,rgba(18,6,8,.22) 58%,rgba(14,4,8,.92) 100%);
}
.hero::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:16%;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,transparent,var(--bg));
}
.hero-vtext{
  position:absolute;right:calc(var(--pad) - 6px);top:120px;
  writing-mode:vertical-rl;font-family:var(--serif);font-size:12px;letter-spacing:.5em;
  color:var(--text-dim);opacity:.7;
}
.hero-inner{position:relative;z-index:2;max-width:var(--max);margin:0 auto;width:100%}
.eyebrow{
  font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--text-dim);
  margin:0 0 18px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.eyebrow .dot{color:var(--rose);opacity:.8}
.eyebrow::before{content:"";width:34px;height:1px;background:linear-gradient(90deg,var(--rose),transparent)}
.hero-title{
  font-family:var(--serif);font-weight:700;margin:0;line-height:1.02;
  font-size:clamp(3.6rem,11.5vw,8.4rem);letter-spacing:.09em;
}
.hero-title .line{display:block;overflow:hidden}
.hero-title .line span{
  display:inline-block;
  background:linear-gradient(168deg,#ffffff 0%,#ffe0e9 26%,#ff9bb8 54%,#f3b494 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 10px 26px rgba(10,2,5,.55)) drop-shadow(0 18px 46px rgba(200,30,80,.30));
  animation:titleUp 1.25s var(--ease) both;
}
.hero-title .line:nth-child(2) span{animation-delay:.12s}
.hero-title .line span:nth-child(2){animation-delay:.06s}
.hero-title .line:nth-child(2) span:nth-child(2){animation-delay:.18s}
@keyframes titleUp{from{transform:translateY(110%) rotate(3deg);opacity:0}to{transform:none;opacity:1}}
.hero-lead{
  margin:26px 0 0;font-size:clamp(15px,1.5vw,18px);line-height:1.9;color:var(--text-soft);
  max-width:30em;letter-spacing:.04em;
}
.hero-actions{display:flex;gap:14px;margin-top:36px;flex-wrap:wrap}
.btn{
  display:inline-flex;align-items:center;gap:8px;padding:13px 28px;border-radius:999px;
  font-size:13.5px;letter-spacing:.14em;border:1px solid transparent;
  transition:transform .4s var(--ease),box-shadow .4s ease,border-color .3s,background .3s,color .3s;
}
.btn-primary{
  color:#fff5f8;background:linear-gradient(135deg,#d43a68,#93133c 70%);
  box-shadow:0 14px 34px rgba(180,25,70,.42),inset 0 1px 0 rgba(255,255,255,.28);
}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 20px 44px rgba(180,25,70,.55),inset 0 1px 0 rgba(255,255,255,.3)}
.btn-ghost{
  border-color:var(--line-strong);color:var(--text-soft);
  background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
}
.btn-ghost:hover{transform:translateY(-2px);border-color:var(--rose);color:var(--text)}
.hero-stats{
  display:flex;gap:clamp(24px,5vw,64px);margin:52px 0 0;padding:0;
  border-top:1px solid var(--line);padding-top:22px;max-width:640px;
}
.hero-stats div{display:flex;flex-direction:column;gap:4px}
.hero-stats dt{
  font-family:var(--serif);font-size:clamp(1.5rem,3vw,2rem);letter-spacing:.06em;
  background:linear-gradient(160deg,var(--text),var(--rose-2));-webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero-stats dd{margin:0;font-size:11px;letter-spacing:.24em;color:var(--text-dim)}
.scroll-cue{
  position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:3;
  width:22px;height:42px;border-radius:12px;border:1px solid var(--line-strong);
  display:grid;place-items:start center;padding-top:8px;
}
.scroll-cue span{width:2px;height:8px;border-radius:2px;background:var(--rose);animation:cue 1.8s ease-in-out infinite}
@keyframes cue{0%,100%{transform:translateY(0);opacity:.4}50%{transform:translateY(12px);opacity:1}}

/* ---------- section head ---------- */
.works{padding:clamp(70px,10vw,130px) var(--pad) clamp(40px,6vw,70px);max-width:var(--max);margin:0 auto}
.section-head{max-width:640px;margin-bottom:clamp(34px,5vw,56px)}
h2{
  font-family:var(--serif);font-weight:700;letter-spacing:.06em;line-height:1.25;
  font-size:clamp(1.9rem,4.2vw,3.1rem);margin:0 0 18px;text-wrap:balance;
}
.section-lead{margin:0;color:var(--text-dim);font-size:14.5px;letter-spacing:.04em}

/* ---------- works grid ---------- */
.works-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2vw,24px)}
.work-card{
  position:relative;display:flex;flex-direction:column;gap:16px;padding:12px 12px 18px;
  border-radius:var(--r-lg);border:1px solid var(--line);background:var(--glass);
  -webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);
  box-shadow:var(--shadow);overflow:hidden;
  transition:transform .55s var(--ease),border-color .4s ease,box-shadow .55s ease;
  transform-style:preserve-3d;
}
.work-card::after{
  content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%),rgba(255,170,195,.16),transparent 62%);
  opacity:0;transition:opacity .5s ease;
}
.work-card:hover{transform:translateY(-6px);border-color:var(--line-strong);box-shadow:0 44px 90px rgba(30,0,12,.5)}
.work-card:hover::after{opacity:1}
.wc-no{
  position:absolute;top:18px;left:20px;z-index:2;font-size:10.5px;letter-spacing:.28em;
  color:#ffe9ef;background:rgba(120,15,45,.5);border:1px solid rgba(255,200,215,.3);
  padding:3px 9px;border-radius:999px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
}
.wc-media{
  position:relative;border-radius:16px;overflow:hidden;aspect-ratio:16/10;background:var(--bg-3);
}
.wc-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease),filter .6s ease}
.work-card:hover .wc-media img{transform:scale(1.06)}
.wc-media::after{
  content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 42%,rgba(20,4,10,.55));
  opacity:.7;transition:opacity .5s ease;
}
.badge{
  position:absolute;z-index:2;right:10px;bottom:10px;font-size:10px;letter-spacing:.18em;
  padding:4px 10px;border-radius:999px;color:#fff1f5;
  background:rgba(160,20,60,.72);border:1px solid rgba(255,200,215,.34);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
}
.badge.play{background:rgba(20,8,14,.66)}
.wc-body{display:flex;flex-direction:column;gap:6px;padding:0 6px}
.wc-title{font-family:var(--serif);font-size:17.5px;letter-spacing:.06em}
.wc-tags{font-size:11.5px;letter-spacing:.16em;color:var(--text-dim)}
.wc-arrow{
  position:absolute;right:18px;bottom:20px;width:28px;height:28px;display:grid;place-items:center;
  border-radius:50%;border:1px solid var(--line);font-size:13px;color:var(--text-dim);
  transition:all .45s var(--ease);
}
.work-card:hover .wc-arrow{background:var(--rose);border-color:var(--rose);color:#fff;transform:rotate(45deg)}

/* ---------- work sections ---------- */
.work{
  padding:clamp(60px,9vw,120px) var(--pad);max-width:var(--max);margin:0 auto;
  scroll-margin-top:80px;
}
#works,#about{scroll-margin-top:72px}
.work-head{max-width:720px;margin-bottom:clamp(28px,4vw,48px)}
.work-head .num{
  font-family:var(--serif);color:var(--rose);font-size:13px;letter-spacing:.1em;margin-right:6px;
}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 0}
.chips span{
  font-size:11px;letter-spacing:.16em;color:var(--text-soft);
  padding:5px 12px;border-radius:999px;border:1px solid var(--line);background:var(--glass);
}
.work-body{display:grid;grid-template-columns:1.18fr .82fr;gap:clamp(26px,4vw,58px);align-items:start}
.flip .work-body{grid-template-columns:.82fr 1.18fr}
.flip .work-media{order:2}
.flip .work-text{order:1}
.work-media{display:flex;flex-direction:column;gap:16px;min-width:0}
.work-text{padding-top:6px}
.work-text .lead{
  font-family:var(--serif);font-size:clamp(1.12rem,1.75vw,1.34rem);line-height:1.7;
  letter-spacing:.03em;margin:0 0 20px;color:var(--text);text-wrap:pretty;
}
.work-text p{margin:0 0 16px;color:var(--text-soft);font-size:14.8px;line-height:1.95}
.work-text .muted{color:var(--text-dim);font-size:13px}
.media-note{margin:0;font-size:11.5px;letter-spacing:.1em;color:var(--text-dim)}
.inline-link{
  display:inline-block;margin:6px 0 20px;font-size:13px;letter-spacing:.1em;color:var(--rose-2);
  border-bottom:1px solid currentColor;padding-bottom:2px;
}
.inline-link:hover{color:var(--text)}
.facts{
  margin:26px 0 0;padding:18px 0 0;border-top:1px solid var(--line);
  display:flex;flex-direction:column;gap:10px;
}
.facts > div{display:flex;justify-content:space-between;gap:16px;font-size:12.5px}
.facts dt{color:var(--text-dim);letter-spacing:.16em;flex:none}
.facts dd{margin:0;color:var(--text-soft);text-align:right}
.pull{
  margin:24px 0 0;padding:2px 0 2px 18px;border-left:2px solid var(--rose);
  font-family:var(--serif);font-size:1.02rem;line-height:1.85;color:var(--text-soft);
  letter-spacing:.06em;
}
.mood-list{list-style:none;margin:22px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mood-list li{
  display:flex;align-items:baseline;gap:10px;padding:10px 12px;border-radius:12px;
  border:1px solid var(--line);background:var(--glass);font-size:12.5px;
}
.mood-list b{font-family:var(--serif);font-size:16px;color:var(--rose-2)}
.mood-list span{color:var(--text-dim);letter-spacing:.06em}

/* ---------- gallery ---------- */
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}
.gallery.six{grid-template-columns:1fr 1fr;gap:10px}
.gallery.stack{grid-template-columns:1fr;gap:12px;flex:1}
.gallery .shot{aspect-ratio:4/3}
.gallery .shot.wide{grid-column:1/-1;aspect-ratio:16/9}
/* 竖版合版图：名片方案一（正反两页拼在一起的原稿） */
.sheet-card{margin:0 0 14px;display:flex;flex-direction:column;align-items:flex-start;gap:9px}
.sheet-card .shot{width:min(100%,340px);aspect-ratio:1152/1716}
.sheet-card figcaption{font-size:11.5px;letter-spacing:.1em;color:var(--text-dim)}
.gallery.cards{align-items:start}
.shot{
  padding:0;border-radius:var(--r-md);overflow:hidden;position:relative;
  border:1px solid var(--line);background:var(--bg-3);cursor:zoom-in;
  transition:transform .5s var(--ease),border-color .35s;
}
.shot img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease)}
.shot::after{
  content:"＋";position:absolute;right:10px;bottom:8px;color:#fff;font-size:14px;
  opacity:0;transition:opacity .35s ease;text-shadow:0 2px 10px rgba(0,0,0,.6);
}
.shot:hover{transform:translateY(-3px);border-color:var(--line-strong)}
.shot:hover img{transform:scale(1.04)}
.shot:hover::after{opacity:1}

/* ---------- video ---------- */
.video-card{
  margin:0;padding:10px;border-radius:var(--r-lg);border:1px solid var(--line);
  background:var(--glass);box-shadow:var(--shadow);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
}
.video-card video{width:100%;border-radius:14px;background:#07040a}
.video-card figcaption{
  padding:10px 6px 2px;font-size:11.5px;letter-spacing:.14em;color:var(--text-dim);
}
.video-card.portrait{max-width:300px}
.video-row{display:flex;gap:16px;align-items:flex-start}
.video-row.two{display:grid;grid-template-columns:1fr 1fr}
.video-row .gallery{flex:1}

/* ---------- embed (click to load) ---------- */
.embed{
  position:relative;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);
  aspect-ratio:16/10;background:var(--bg-3);box-shadow:var(--shadow);isolation:isolate;
}
.embed[data-ratio="16/9"]{aspect-ratio:16/9}
.embed[data-ratio="4/3"]{aspect-ratio:4/3}
.embed[data-ratio="1/1"]{aspect-ratio:1/1;max-height:640px}
.embed > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease),filter .6s}
.embed:hover > img{transform:scale(1.03)}
.embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#0b0508}
.embed-play{
  position:absolute;inset:0;display:block;
  background:linear-gradient(180deg,rgba(10,2,5,.30),rgba(10,2,5,.68));
  transition:background .5s ease;
}
.play-core{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  display:flex;flex-direction:column;align-items:center;gap:14px;width:max-content;max-width:80%;
}
.play-core em{text-align:center}
.embed-play em{font-style:normal;font-size:12px;letter-spacing:.24em;color:#ffeef4}
.play-dot{
  width:58px;height:58px;border-radius:50%;position:relative;
  border:1px solid rgba(255,220,230,.5);background:rgba(200,30,80,.42);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  box-shadow:0 10px 34px rgba(160,20,60,.45);
  transition:transform .5s var(--ease),background .4s;
}
.play-dot::after{
  content:"";position:absolute;left:52%;top:50%;transform:translate(-50%,-50%);
  border-style:solid;border-width:8px 0 8px 13px;border-color:transparent transparent transparent #fff;
}
.embed-play:hover .play-dot{transform:scale(1.08);background:rgba(220,40,95,.62)}
.embed-play:hover{background:linear-gradient(180deg,rgba(10,2,5,.24),rgba(10,2,5,.58))}
.embed-open{
  position:absolute;right:12px;top:12px;z-index:3;font-size:10.5px;letter-spacing:.16em;
  padding:4px 10px;border-radius:999px;color:#ffeef4;
  background:rgba(18,6,12,.5);border:1px solid rgba(255,200,215,.3);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
}
.embed-open:hover{background:rgba(160,20,60,.7)}
.duo{display:grid;grid-template-columns:1fr;gap:14px}

/* ---------- about ---------- */
.about{padding:clamp(60px,9vw,120px) var(--pad);position:relative}
.about::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:radial-gradient(60% 50% at 50% 0%,rgba(160,25,65,.16),transparent 70%);
}
.about-inner{
  max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:1.15fr .85fr;
  gap:clamp(28px,5vw,64px);align-items:start;
}
.about-text p{color:var(--text-soft);font-size:15px;line-height:2;margin:0 0 16px;max-width:34em}
.about-text code{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;
  padding:2px 6px;border-radius:6px;background:rgba(239,107,146,.14);color:var(--rose-2);
}
.signature{display:flex;align-items:center;gap:10px;margin-top:28px!important;font-family:var(--serif);letter-spacing:.2em;color:var(--text)!important}
.about-side{display:flex;flex-direction:column;gap:16px}
.panel{
  padding:24px;border-radius:var(--r-lg);border:1px solid var(--line);
  background:var(--glass);box-shadow:var(--shadow);
  -webkit-backdrop-filter:blur(20px) saturate(140%);backdrop-filter:blur(20px) saturate(140%);
}
.panel h3{
  font-family:var(--serif);font-size:14px;letter-spacing:.24em;margin:0 0 16px;
  color:var(--text-dim);font-weight:400;
}
.chip-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.chip-list li{
  font-size:11.5px;letter-spacing:.1em;padding:5px 11px;border-radius:999px;
  border:1px solid var(--line);color:var(--text-soft);background:rgba(255,255,255,.03);
}
.toc{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.toc a{
  display:flex;align-items:center;justify-content:space-between;padding:9px 2px;
  font-size:13px;letter-spacing:.08em;color:var(--text-soft);
  border-bottom:1px dashed var(--line);transition:color .3s,padding-left .4s var(--ease);
}
.toc li:last-child a{border-bottom:0}
.toc a:hover{color:var(--rose-2);padding-left:6px}

/* ---------- ornament ---------- */
.ornament{
  display:flex;align-items:center;justify-content:center;gap:16px;
  max-width:var(--max);margin:0 auto;padding:0 var(--pad);color:var(--rose);opacity:.5;
}
.ornament span{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--line-strong),transparent)}

/* ---------- footer ---------- */
.footer{
  position:relative;padding:clamp(60px,9vw,110px) var(--pad) 40px;overflow:hidden;
  border-top:1px solid var(--line);margin-top:40px;
}
.footer::before{
  content:"";position:absolute;left:50%;bottom:-46%;width:120vw;height:80vh;transform:translateX(-50%);
  background:radial-gradient(closest-side,rgba(200,30,80,.20),transparent 72%);z-index:-1;
}
.footer-inner{max-width:var(--max);margin:0 auto}
.footer-title{
  font-family:var(--serif);font-size:clamp(2.4rem,7vw,5rem);margin:8px 0 14px;letter-spacing:.14em;
  background:linear-gradient(160deg,var(--text) 10%,var(--rose-2) 60%,var(--champagne));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.footer-lead{color:var(--text-dim);margin:0;font-size:14px;letter-spacing:.04em}
.footer-actions{display:flex;gap:12px;margin:28px 0 44px;flex-wrap:wrap}
.footer-meta{
  display:flex;gap:24px;flex-wrap:wrap;justify-content:space-between;
  padding-top:20px;border-top:1px solid var(--line);
  font-size:11px;letter-spacing:.18em;color:var(--text-dim);
}

/* ---------- lightbox ---------- */
.lightbox{
  position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;
  background:rgba(8,2,5,.9);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
  padding:5vmin;opacity:0;transition:opacity .35s ease;
}
.lightbox[hidden]{display:none}
.lightbox.open{opacity:1}
.lightbox img{max-width:92vw;max-height:88vh;border-radius:14px;box-shadow:0 40px 90px rgba(0,0,0,.6)}
.lb-close,.lb-nav{
  position:absolute;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;
  border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.08);color:#fff;font-size:20px;
  transition:background .3s,transform .3s;
}
.lb-close{top:22px;right:22px;font-size:15px}
.lb-nav.prev{left:18px;top:50%;transform:translateY(-50%)}
.lb-nav.next{right:18px;top:50%;transform:translateY(-50%)}
.lb-close:hover,.lb-nav:hover{background:rgba(200,40,90,.6)}

/* ---------- to top ---------- */
.to-top{
  position:fixed;right:24px;bottom:26px;z-index:40;width:44px;height:44px;border-radius:50%;
  display:grid;place-items:center;font-size:15px;color:var(--text);
  border:1px solid var(--line-strong);background:var(--glass-solid);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  opacity:0;pointer-events:none;transform:translateY(12px);
  transition:opacity .4s ease,transform .4s var(--ease);
}
.to-top.show{opacity:1;pointer-events:auto;transform:none}
.to-top:hover{background:var(--rose);color:#fff;border-color:var(--rose)}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(30px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.reveal.in{opacity:1;transform:none}
.work-card.reveal{transition-delay:calc(var(--i,0)*70ms)}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .works-grid{grid-template-columns:1fr 1fr}
  .work-body,.flip .work-body{grid-template-columns:1fr}
  .flip .work-media{order:0}
  .flip .work-text{order:0}
  .side-index{display:none}
  .about-inner{grid-template-columns:1fr}
  .video-card.portrait{max-width:none}
}
@media (max-width:820px){
  .nav-links{
    position:absolute;left:0;right:0;top:100%;flex-direction:column;gap:0;
    background:var(--glass-solid);border-bottom:1px solid var(--line);
    padding:8px var(--pad) 18px;display:none;
    -webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);
  }
  .nav.open .nav-links{display:flex}
  .nav-links a{padding:12px 0;border-bottom:1px dashed var(--line)}
  .menu-btn{display:flex}
  .nav.open .menu-btn span:first-child{transform:translateY(3.2px) rotate(45deg)}
  .nav.open .menu-btn span:last-child{transform:translateY(-3.2px) rotate(-45deg)}
  .hero{padding-top:112px;min-height:92svh}
  .hero::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:16%;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,transparent,var(--bg));
}
.hero-vtext{display:none}
  .hero-stats{gap:20px}
  .works-grid{grid-template-columns:1fr}
  .work{padding-top:clamp(40px,8vw,70px)}
  .duo{grid-template-columns:1fr}
  .video-row{flex-direction:column}
  .video-row.two{grid-template-columns:1fr}
  .video-row .gallery{width:100%}
  .embed{aspect-ratio:4/3!important}
  .embed[data-ratio="1/1"]{aspect-ratio:3/4!important}
  .gallery.six{grid-template-columns:1fr 1fr}
  .to-top{right:14px;bottom:16px}
  .footer-meta{flex-direction:column;gap:8px}
}
@media (max-width:520px){
  body{font-size:15px}
  .hero-title{font-size:clamp(3rem,17vw,4.4rem)}
  /* 窄屏按钮竖排，避免两个长标签并排把容器撑出屏幕 */
  .hero-actions{flex-direction:column;gap:10px;align-items:stretch}
  .hero-actions .btn{flex:none;width:100%;justify-content:center;min-width:0}
  .mood-list{grid-template-columns:1fr}
  .gallery.six{grid-template-columns:1fr 1fr}
  .facts > div{flex-direction:column;gap:2px}
  .facts dd{text-align:left}
}

/* ---------- motion preference ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .reveal{opacity:1;transform:none}
  #petals{display:none}
}
