/* 李德浩 — Editorial annual-report design */
:root {
  --bg-0:#f5f2ec; --bg-1:#fff; --bg-2:#efece4;
  --line:rgba(0,0,0,.85); --line-soft:rgba(0,0,0,.18);
  --border:rgba(0,0,0,.1); --border-strong:rgba(0,0,0,.22);
  --text:#000; --text-soft:#2a2a2a; --text-muted:#6a6a6a;
  --p-teal:#b8ebe1; --p-mint:#d6f0d3; --p-pink:#f5b9d3;
  --p-magenta:#e7a8d8; --p-lavender:#c9b5ec; --p-cream:#f6efde; --p-cyan:#c5e8ee;
  --font-display:"Instrument Serif","Tiempos Headline",Georgia,serif;
  --font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue",sans-serif;
  --font-mono:"JetBrains Mono","SF Mono",Menlo,Consolas,monospace;
  --container:1240px; --container-wide:1440px; --nav-h:64px;
  --ease:cubic-bezier(.22,.61,.36,1); --t-fast:200ms; --t-mid:420ms;
}
html[lang="zh-CN"] {
  --font-display:"Instrument Serif","Songti SC","STSong","SimSun",serif;
  --font-sans:"Inter","Microsoft YaHei","PingFang SC","Noto Sans CJK SC",sans-serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--bg-0);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.55;font-weight:400;letter-spacing:-.005em;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{background:none;border:0;color:inherit;font:inherit;cursor:pointer}
::selection{background:#000;color:var(--bg-0)}

/* Aurora — watercolor pastel diffuse */
.aurora{position:fixed;inset:-10%;z-index:0;pointer-events:none;
  background:
    radial-gradient(ellipse 50% 40% at 20% 18%,var(--p-pink),transparent 70%),
    radial-gradient(ellipse 55% 45% at 82% 22%,var(--p-cyan),transparent 72%),
    radial-gradient(ellipse 60% 50% at 75% 75%,var(--p-lavender),transparent 72%),
    radial-gradient(ellipse 55% 45% at 18% 80%,var(--p-teal),transparent 72%),
    radial-gradient(ellipse 40% 35% at 50% 50%,var(--p-cream),transparent 76%);
  filter:blur(40px) saturate(108%);
  animation:drift 36s ease-in-out infinite alternate;opacity:.88}
@keyframes drift{0%{transform:translate(0,0) scale(1)}50%{transform:translate(-1.5%,1%) scale(1.03)}100%{transform:translate(1%,-1.5%) scale(1.01)}}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:1000;opacity:.045;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}

/* Nav */
.nav{position:fixed;top:0;left:0;right:0;height:var(--nav-h);z-index:100;display:flex;align-items:center;background:rgba(245,242,236,.7);backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);border-bottom:1px solid var(--line);transition:background var(--t-mid) var(--ease)}
.nav.is-scrolled{background:rgba(245,242,236,.92)}
.nav__inner{max-width:var(--container-wide);width:100%;margin:0 auto;padding:0 clamp(20px,4vw,56px);display:flex;align-items:center;justify-content:space-between;gap:32px}
.nav__brand{font-family:var(--font-display);font-size:24px;font-weight:400;letter-spacing:-.015em;color:var(--text);display:flex;align-items:center;gap:10px}
.nav__brand em{font-style:italic;font-weight:400}
.nav__logo{width:32px;height:32px;display:block;flex-shrink:0;object-fit:contain}
.nav__links{display:flex;align-items:center;gap:clamp(20px,3vw,36px);list-style:none;font-size:15px;font-weight:400}
.nav__links a{position:relative;padding:6px 0;color:var(--text);font-size:15px;transition:all var(--t-fast) var(--ease)}
.nav__links a:hover{opacity:.55}
.nav__links a.is-active{font-size:17px;font-weight:600;letter-spacing:-.01em}
.nav__links a.is-active::before{content:"";position:absolute;left:50%;top:-6px;transform:translateX(-50%);width:5px;height:5px;background:var(--text);border-radius:50%}
.nav__toggle{display:none;width:44px;height:44px;position:relative;margin-right:-10px;flex-shrink:0}
.nav__toggle span{position:absolute;left:9px;right:9px;height:1px;background:var(--text)}
.nav__toggle span:nth-child(1){top:18px}.nav__toggle span:nth-child(2){bottom:18px}
@media(max-width:720px){
  .nav__links{display:none}.nav__toggle{display:block}
  .nav__links.is-open{display:flex;position:absolute;top:var(--nav-h);left:0;right:0;flex-direction:column;gap:0;background:rgba(245,242,236,.97);padding:8px 24px 18px;border-bottom:1px solid var(--line)}
  .nav__links.is-open li{padding:12px 0;border-bottom:1px solid var(--border)}
  .nav__links.is-open li:last-child{border-bottom:0}
}

/* Layout */
.container{width:100%;min-width:0;max-width:var(--container);margin:0 auto;padding:0 clamp(24px,4vw,56px);position:relative;z-index:2}
.container--wide{max-width:var(--container-wide)}
main{position:relative;z-index:2}
.section{padding:clamp(45px,6.3vw,77px) 0}
.section--tight{padding:clamp(34px,4.2vw,56px) 0}
.eyebrow{font-family:var(--font-sans);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text);margin-bottom:20px;display:inline-flex;align-items:center;gap:8px}
.eyebrow::before{content:"—"}
.section-title{font-family:var(--font-display);font-weight:400;font-size:clamp(40px,5.4vw,76px);line-height:.96;letter-spacing:-.015em;margin-bottom:22px;color:var(--text)}
.section-title em{font-style:italic;font-weight:400}
.section-lead{font-size:clamp(15px,1.3vw,17px);color:var(--text-soft);max-width:62ch;line-height:1.6}

/* Hero */
.hero{min-height:92vh;padding-top:calc(var(--nav-h) + 56px);padding-bottom:60px;position:relative;display:flex;align-items:center}
.hero__lines{position:absolute;inset:var(--nav-h) 0 0 0;pointer-events:none;z-index:1}
.hero__lines::before{content:"";position:absolute;left:0;right:0;top:42%;height:1px;background:var(--line)}
.hero__lines::after{content:"";position:absolute;top:0;bottom:0;left:72%;width:1px;background:var(--line)}
.hero__lines .v-left{position:absolute;top:0;bottom:0;left:28%;width:1px;background:var(--line);opacity:.35}
.hero__corner-tl{position:absolute;top:calc(var(--nav-h) + 18px);left:clamp(24px,4vw,56px);font-family:var(--font-sans);font-size:10px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--text);z-index:3}
.hero__corner-tr{position:absolute;top:calc(var(--nav-h) + 18px);right:clamp(24px,4vw,56px);font-family:var(--font-display);font-size:22px;font-style:italic;font-weight:400;color:var(--text);z-index:3;line-height:1.1;text-align:right}
.hero__corner-bl{position:absolute;bottom:28px;left:clamp(24px,4vw,56px);font-family:var(--font-display);font-size:28px;font-weight:500;letter-spacing:-.02em;color:var(--text);z-index:3;display:flex;align-items:baseline;gap:8px}
.hero__corner-bl em{font-style:italic;font-weight:400;color:var(--text-soft)}
.hero__corner-br{position:absolute;bottom:28px;right:clamp(24px,4vw,56px);font-family:var(--font-sans);font-size:10.5px;color:var(--text);z-index:3;text-align:right;line-height:1.5}
.hero__corner-br b{font-weight:600}
@media(max-width:720px){.hero__lines::after,.hero__lines .v-left{display:none}.hero__corner-bl,.hero__corner-br{position:static;margin-top:24px}}
.hero__inner{position:relative;z-index:2;width:100%;min-width:0;display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(32px,5vw,72px);align-items:center}
@media(max-width:960px){.hero__inner{grid-template-columns:1fr;gap:40px}}
.hero__title{font-family:var(--font-display);font-weight:500;font-size:clamp(40px,7vw,100px);line-height:.94;letter-spacing:-.025em;margin-bottom:28px;color:var(--text)}
.hero__title em{font-style:italic;font-weight:400}
.hero__title .line{display:block}
.hero__sub{font-family:var(--font-sans);font-size:11.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text);margin-bottom:22px}
.hero__sub::before{content:"—";margin-right:8px}
.hero__lead{font-size:clamp(15px,1.25vw,16.5px);color:var(--text-soft);line-height:1.6;max-width:48ch;margin-bottom:32px}
.hero__cta{display:flex;flex-wrap:wrap;gap:10px}
.btn{display:inline-flex;align-items:center;gap:10px;padding:12px 22px;font-size:13px;letter-spacing:.02em;font-weight:500;border-radius:0;transition:all var(--t-mid) var(--ease);border:1px solid var(--text)}
.btn--primary{background:var(--text);color:var(--bg-0)}
.btn--primary:hover{background:var(--bg-0);color:var(--text)}
.btn--ghost{background:transparent;color:var(--text)}
.btn--ghost:hover{background:var(--text);color:var(--bg-0)}
.btn .arrow{transition:transform var(--t-mid) var(--ease)}
.btn:hover .arrow{transform:translateX(3px)}
.hero__figure{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--bg-1);border:1px solid var(--line)}
.hero__figure img{width:100%;height:100%;object-fit:cover;transition:transform 1.8s var(--ease)}
.hero__figure:hover img{transform:scale(1.04)}
.hero__figure-tag{position:absolute;bottom:14px;left:16px;z-index:2;font-family:var(--font-sans);font-size:9.5px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--text);background:var(--bg-0);padding:5px 10px;border:1px solid var(--line)}
.hero__marquee{margin-top:clamp(48px,8vh,80px);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;overflow:hidden;white-space:nowrap;position:relative;z-index:2}
.hero__marquee-track{display:inline-flex;gap:56px;animation:marquee 60s linear infinite;font-family:var(--font-display);font-size:16px;font-style:italic;font-weight:400;letter-spacing:-.01em;color:var(--text)}
.hero__marquee-track span{display:inline-flex;align-items:center;gap:56px}
.hero__marquee-track .star{font-family:var(--font-sans);font-style:normal;font-size:12px}
@keyframes marquee{to{transform:translateX(-50%)}}

/* Stats */
.stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
@media(max-width:720px){.stats{grid-template-columns:repeat(2,1fr)}}
.stat{padding:24px 20px 24px 4px;border-right:1px solid var(--line-soft)}
.stat:last-child{border-right:0}
.stat__num{font-family:var(--font-display);font-size:clamp(36px,4.4vw,56px);font-weight:500;line-height:1;letter-spacing:-.025em;color:var(--text);margin-bottom:8px}
.stat__num em{font-style:italic;font-weight:400}
.stat__label{font-family:var(--font-sans);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}

/* Skills */
.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
@media(max-width:900px){.skills-grid{grid-template-columns:1fr}}
.skill-card{padding:28px 26px 32px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background var(--t-mid) var(--ease)}
.skill-card:hover{background:rgba(255,255,255,.35)}
.skill-card__num{font-family:var(--font-sans);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:18px}
.skill-card__title{font-family:var(--font-display);font-size:26px;font-weight:400;letter-spacing:-.018em;margin-bottom:16px;color:var(--text)}
.skill-card__title em{font-style:italic}
.skill-card__list{display:flex;flex-wrap:wrap;gap:6px}
.tag{display:inline-block;padding:4px 11px;border:1px solid var(--line);font-size:11.5px;color:var(--text);background:transparent;transition:all var(--t-fast) var(--ease)}
.tag:hover{background:var(--text);color:var(--bg-0)}

/* Timeline */
.timeline{margin-top:36px;border-top:1px solid var(--line)}
.timeline__item{display:grid;grid-template-columns:200px 1fr;gap:32px;padding:28px 0;border-bottom:1px solid var(--line-soft);transition:background var(--t-mid) var(--ease)}
.timeline__item:hover{background:rgba(255,255,255,.32)}
@media(max-width:720px){.timeline__item{grid-template-columns:1fr;gap:8px}}
.timeline__date{font-family:var(--font-sans);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);padding-top:6px}
.timeline__company{font-family:var(--font-display);font-size:clamp(22px,2.2vw,28px);font-weight:500;letter-spacing:-.018em;margin-bottom:4px;color:var(--text)}
.timeline__company em{font-style:italic;font-weight:400;font-size:.75em;margin-left:10px;color:var(--text-muted)}
.timeline__role{font-family:var(--font-sans);font-size:13px;color:var(--text-muted);margin-bottom:10px;font-weight:500}
.timeline__desc{color:var(--text-soft);font-size:14.5px;line-height:1.6;max-width:72ch}

/* Education */
.edu{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-left:1px solid var(--line)}
@media(max-width:720px){.edu{grid-template-columns:1fr}}
.edu__card{padding:28px 26px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background var(--t-mid) var(--ease)}
.edu__card:hover{background:rgba(255,255,255,.32)}
.edu__year{font-family:var(--font-sans);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:14px}
.edu__school{font-family:var(--font-display);font-size:26px;font-weight:400;letter-spacing:-.018em;margin-bottom:6px}
.edu__degree{color:var(--text-soft);font-size:13.5px;line-height:1.55}

/* Contact */
.contact{text-align:center;padding:clamp(60px,8vw,100px) 0;border-top:1px solid var(--line);position:relative}
.contact .eyebrow{margin-left:auto;margin-right:auto}
.contact__title{font-family:var(--font-display);font-size:clamp(28px,4.5vw,64px);font-weight:500;line-height:1;letter-spacing:-.022em;margin-bottom:24px}
.contact__title em{font-style:italic;font-weight:400}
.contact__email{display:inline-block;font-family:var(--font-sans);font-size:clamp(14px,1.3vw,17px);font-weight:500;letter-spacing:.02em;color:var(--text);border:1px solid var(--text);padding:12px 24px;transition:all var(--t-mid) var(--ease)}
.contact__email:hover{background:var(--text);color:var(--bg-0)}

/* Footer */
.footer{border-top:1px solid var(--line);padding:24px 0;font-family:var(--font-sans);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text)}
.footer__inner{display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px}

/* Page header */
.page-header{padding:calc(var(--nav-h) + 80px) 0 64px;border-bottom:1px solid var(--line);position:relative}
.page-header__meta{font-family:var(--font-sans);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text);margin-bottom:24px;display:inline-flex;align-items:center;gap:8px}
.page-header__meta::before{content:"—"}
.page-header__title{font-family:var(--font-display);font-weight:500;font-size:clamp(39px,6.3vw,92px);line-height:.96;letter-spacing:-.023em;margin-bottom:18px}
.page-header__title em{font-style:italic;font-weight:400}
.page-header__lead{font-size:clamp(14.5px,1.3vw,16.5px);color:var(--text-soft);max-width:58ch;line-height:1.6}

/* Collection */
.collection{padding:clamp(42px,5.6vw,70px) 0;border-top:1px solid var(--line-soft)}
.collection:first-of-type{border-top:0}
.collection__head{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:end;margin-bottom:28px}
@media(max-width:720px){.collection__head{grid-template-columns:1fr;gap:14px}}
.collection__num{font-family:var(--font-sans);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:14px}
.collection__title{font-family:var(--font-display);font-size:clamp(32px,4vw,52px);font-weight:500;line-height:1;letter-spacing:-.022em}
.collection__title em{font-style:italic;font-weight:400}
.collection__desc{color:var(--text-soft);font-size:14.5px;line-height:1.6;max-width:52ch}

/* Gallery */
.gallery{display:grid;gap:14px}
.gallery--2{grid-template-columns:repeat(2,1fr)}.gallery--3{grid-template-columns:repeat(3,1fr)}.gallery--4{grid-template-columns:repeat(4,1fr)}.gallery--6{grid-template-columns:repeat(6,1fr)}
@media(max-width:960px){.gallery--3,.gallery--4{grid-template-columns:repeat(2,1fr)}.gallery--6{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.gallery--2,.gallery--3,.gallery--4{grid-template-columns:1fr}.gallery--6{grid-template-columns:repeat(2,1fr)}}

/* Mosaic */
.mosaic{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}
.mosaic .m{position:relative;overflow:hidden;background:var(--bg-1);border:1px solid var(--line)}
.mosaic .m--lg{grid-column:span 8;aspect-ratio:16/9}
.mosaic .m--md{grid-column:span 4;aspect-ratio:4/5}
.mosaic .m--sm{grid-column:span 4;aspect-ratio:1/1}
.mosaic .m--w{grid-column:span 6;aspect-ratio:16/9}
@media(max-width:720px){.mosaic{grid-template-columns:1fr}.mosaic .m,.mosaic .m--lg,.mosaic .m--md,.mosaic .m--sm,.mosaic .m--w{grid-column:span 1;aspect-ratio:16/9}}

/* Fig */
.fig{position:relative;overflow:hidden;background:var(--bg-1);border:1px solid var(--line);aspect-ratio:16/9;cursor:zoom-in;transition:all var(--t-mid) var(--ease)}
.fig:hover{transform:translateY(-2px)}
.fig--square{aspect-ratio:1/1}.fig--portrait{aspect-ratio:3/4}.fig--wide{aspect-ratio:21/9}
.fig img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.fig:hover img{transform:scale(1.04)}
.fig::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.65) 100%);z-index:1;pointer-events:none;opacity:0;transition:opacity var(--t-mid) var(--ease)}
.fig:hover::before{opacity:1}
.fig__caption{position:absolute;bottom:0;left:0;right:0;padding:14px 16px;font-family:var(--font-display);font-size:14px;font-style:italic;font-weight:400;color:#fff;z-index:2;transform:translateY(8px);opacity:0;transition:all var(--t-mid) var(--ease)}
.fig:hover .fig__caption{transform:translateY(0);opacity:1}
.fig__caption::before{content:"—";margin-right:6px}

/* Lightbox */
.lightbox{position:fixed;inset:0;background:rgba(245,242,236,.96);backdrop-filter:blur(20px);z-index:200;display:none;align-items:center;justify-content:center;padding:32px;cursor:zoom-out;opacity:0;transition:opacity var(--t-mid) var(--ease)}
.lightbox.is-open{display:flex;opacity:1}
.lightbox img{max-width:92vw;max-height:88vh;object-fit:contain;border:1px solid var(--line)}
.lightbox__caption{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);font-family:var(--font-display);font-size:16px;font-style:italic;color:var(--text);text-align:center;max-width:80vw}
.lightbox__close{position:absolute;top:24px;right:24px;width:40px;height:40px;border:1px solid var(--line);color:var(--text);display:grid;place-items:center;font-size:14px;background:var(--bg-0)}
.lightbox__close:hover{background:var(--text);color:var(--bg-0)}

/* Project */
.project{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(28px,4vw,64px);padding:clamp(48px,6vw,84px) 0;border-top:1px solid var(--line-soft);align-items:center}
.project:first-of-type{border-top:0;padding-top:24px}
.project.is-flip{grid-template-columns:1fr 1.4fr}
.project.is-flip .project__visual{order:2}
@media(max-width:900px){.project,.project.is-flip{grid-template-columns:1fr}.project.is-flip .project__visual{order:0}}
.project__visual{position:relative;overflow:hidden;background:var(--bg-1);border:1px solid var(--line);aspect-ratio:16/9;transition:all var(--t-mid) var(--ease)}
.project__visual:hover{transform:translateY(-2px)}
.project__visual.is-vertical{aspect-ratio:9/16;max-width:320px}
.project__visual img,.project__visual video{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease);display:block}
.hero__figure.is-media-error::after,.project__visual.is-media-error::after{content:"视频暂时无法加载，点击重试";position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:3;padding:8px 12px;background:rgba(245,242,236,.88);border:1px solid var(--line);font:12px/1.3 var(--font-mono);white-space:nowrap}
video[data-media-state="error"]{opacity:.86}
.project__visual iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;z-index:0}
.project__visual:hover img{transform:scale(1.04)}
.project__visual::after{content:"";position:absolute;top:12px;left:12px;padding:4px 10px;background:var(--bg-0);border:1px solid var(--line);font-family:var(--font-sans);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--text)}
.project__visual[data-type="video"]::after{content:"▶ 视频"}
.project__visual[data-type="vertical"]::after{content:"▶ 竖屏"}
.project__num{font-family:var(--font-sans);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:14px;display:flex;align-items:center;gap:10px}
.project__num::before{content:"";width:22px;height:1px;background:var(--text)}
.project__title{font-family:var(--font-display);font-size:clamp(28px,3.2vw,44px);font-weight:500;line-height:1;letter-spacing:-.022em;margin-bottom:16px;color:var(--text)}
.project__title em{font-style:italic;font-weight:400}
.project__desc{color:var(--text-soft);font-size:14.5px;line-height:1.6;margin-bottom:24px}
.project__meta{display:grid;grid-template-columns:96px 1fr;gap:10px 18px;font-size:12.5px;border-top:1px solid var(--line-soft);padding-top:20px}
.project__meta dt{font-family:var(--font-sans);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);padding-top:3px}
.project__meta dd{color:var(--text-soft);line-height:1.55}
.project__meta dd .pill{display:inline-block;padding:2px 9px;border:1px solid var(--line);font-size:11px;margin:0 5px 5px 0;color:var(--text);background:var(--bg-0)}

/* Group head */
.group-head{padding:clamp(32px,5vw,56px) 0 0;margin-bottom:18px}
.group-head__num{font-family:var(--font-sans);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:14px}
.group-head__title{font-family:var(--font-display);font-size:clamp(26px,3vw,38px);font-weight:400;line-height:1.05;letter-spacing:-.02em;color:var(--text)}
.group-head__title em{font-style:italic}

/* Image placeholder */
.fig img,.project__visual img,.hero__figure img{background:linear-gradient(135deg,var(--p-pink),var(--p-lavender) 50%,var(--p-teal))}

/* Reveal */
.reveal{opacity:0;transform:translateY(20px);transition:opacity 800ms var(--ease),transform 800ms var(--ease)}
.reveal.is-in{opacity:1;transform:translateY(0)}
.reveal[data-delay="1"]{transition-delay:70ms}.reveal[data-delay="2"]{transition-delay:140ms}
.reveal[data-delay="3"]{transition-delay:210ms}.reveal[data-delay="4"]{transition-delay:280ms}

@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.aurora{animation:none}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
