@import url("https://fonts.googleapis.com/css2?family=Archivo:wght@300;400;500;600;700;800;900&family=Libre+Bodoni:ital,wght@0,400;0,500;1,400&family=Noto+Sans+SC:wght@300;400;500;600;700;900&display=swap");

:root {
  --bg: #080808;
  --paper: #e9e6df;
  --ink: #0a0a0a;
  --text: #f1efe9;
  --muted: #aaa69e;
  --line: rgba(255,255,255,.17);
  --accent: #c8b889;
  --serif: "Libre Bodoni", "Times New Roman", serif;
  --pad: clamp(22px, 5.5vw, 88px);
  --ease: cubic-bezier(.16,1,.3,1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  overflow-x: hidden;
  background: var(--bg);
  color: var(--text);
  font-family: "Archivo", "Noto Sans SC", sans-serif;
  cursor: none;
  font-weight: 400;
}
a { color: inherit; text-decoration: none; }
img { display: block; width: 100%; }

.noise {
  position: fixed; inset: 0; z-index: 90; pointer-events: none; opacity: .035;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.65'/%3E%3C/svg%3E");
}

/* 扫描线 */
.scanlines { position: fixed; inset: 0; z-index: 89; pointer-events: none; opacity: .03; background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(255,255,255,.04) 2px, rgba(255,255,255,.04) 4px); }

/* 图片暗角 */
.project-media img, .about-photo img, .hero-media img, .hero-video { filter: brightness(0.92); }
.project-media::before { content: ''; position: absolute; z-index: 1; inset: 0; pointer-events: none; background: radial-gradient(ellipse at center, transparent 55%, rgba(0,0,0,0.35) 100%); }
.about-photo::before { content: ''; position: absolute; z-index: 1; inset: 0; pointer-events: none; background: radial-gradient(ellipse at center, transparent 50%, rgba(0,0,0,0.3) 100%); }
.cursor-dot,.cursor-ring { position: fixed; left: 0; top: 0; z-index: 120; pointer-events: none; border-radius: 50%; }
.cursor-dot { width: 6px; height: 6px; background: #fff; margin: -3px; }
.cursor-ring { width: 36px; height: 36px; margin: -18px; border: 1px solid rgba(255,255,255,.42); transition: width .35s var(--ease), height .35s var(--ease), margin .35s var(--ease), background .35s; }
body.cursor-active .cursor-ring { width: 64px; height: 64px; margin: -32px; background: rgba(200,184,137,.08); }
.scroll-progress { position:fixed; z-index:100; left:0; top:0; width:100%; height:1px; background:rgba(255,255,255,.08); }
.scroll-progress i { display:block; width:100%; height:100%; background:var(--accent); transform:scaleX(0); transform-origin:left; }

.loader { position: fixed; inset: 0; z-index: 200; display: grid; place-content: center; gap: 24px; background: #050505; text-align: center; pointer-events: none; transition: opacity 0.4s 1s; }
.loader.is-done { opacity: 0; pointer-events: none; }
.loader.is-done .loader-content { opacity: 0; transition: opacity 0.3s 0.2s; }
.loader.is-done .loader-panel--top { transform: translateY(-100%); }
.loader.is-done .loader-panel--bot { transform: translateY(100%); }

/* 幕布面板 */
.loader-panel { position: fixed; left: 0; width: 100%; height: 50%; background: #050505; z-index: 199; transition: transform 0.85s cubic-bezier(.7,0,.2,1); will-change: transform; }
.loader-panel--top { top: 0; }
.loader-panel--bot { bottom: 0; }

.loader-content { position: relative; z-index: 201; }

.loader-word { overflow: hidden; font-size: clamp(42px,9vw,120px); font-weight: 900; letter-spacing: -.03em; }
.loader-word span { display: block; animation: loaderWord 1s var(--ease) both; }
.loader-sub { color: rgba(200,184,137,0.5); font-size: 8px; letter-spacing: .32em; font-weight: 500; opacity: 0; animation: fadeIn 0.5s 0.7s ease-out both; }
.loader-line { width: min(56vw,500px); height: 1px; background: #292929; overflow: hidden; }
.loader-line i { display: block; height: 100%; background: var(--accent); animation: loadLine 1.05s var(--ease) both; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

.site-header { position: fixed; z-index: 80; top: 0; left: 0; width: 100%; padding: 24px var(--pad); display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; mix-blend-mode: difference; }
.logo { display: flex; align-items: center; gap: 12px; width: max-content; }
.logo span { font-size: 15px; font-weight: 600; letter-spacing: .04em; }
.logo small { color: #aaa; font-size: 8px; line-height: 1.1; text-transform: uppercase; letter-spacing: .14em; }
nav { display: flex; gap: 38px; font-size: 10px; text-transform: uppercase; letter-spacing: .18em; }
nav a { position: relative; padding: 10px 0; }
nav a::after { content:""; position:absolute; left:0; bottom:5px; width:100%; height:1px; background:#fff; transform:scaleX(0); transform-origin:right; transition:transform .45s var(--ease); }
nav a:hover::after { transform:scaleX(1); transform-origin:left; }
.chapter { justify-self: end; font-size: 9px; letter-spacing: .2em; }
.chapter span { color: var(--accent); }

.hero { position: relative; min-height: 100svh; padding: 0; overflow: hidden; }
.hero-media { position:absolute; inset:0; overflow:hidden; }
.hero-shade { position:absolute; inset:0; background:linear-gradient(90deg,rgba(0,0,0,.7) 0%,rgba(0,0,0,.24) 47%,rgba(0,0,0,.06) 72%),linear-gradient(0deg,rgba(0,0,0,.64),transparent 50%); pointer-events:none; }
.hero-media img, .hero-poster { height: 108%; object-fit: cover; object-position: center; transform: scale(1.04); animation: heroIn 2s .7s var(--ease) both; }
.hero-poster { position:absolute; inset:0; width:100%; transition: opacity 1.2s var(--ease); }
.hero-video { position:absolute; inset:0; width:100%; height:108%; object-fit:cover; object-position:center; transform:scale(1.04); opacity:0; transition:opacity 1.2s var(--ease); }
.hero-media.is-video-ready .hero-video { opacity:1; }
.hero-media.is-video-ready .hero-poster, .hero-media.is-video-ready img { opacity:0; }

/* 高速车流 Canvas */
.hero-traffic { position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: 0.85; }

/* 镜头光晕 */
.lens-flare { position: absolute; z-index: 1; pointer-events: none; width: 600px; height: 600px; border-radius: 50%; background: radial-gradient(circle at center, rgba(220,200,140,0.12) 0%, rgba(200,180,130,0.05) 25%, rgba(180,150,100,0.02) 50%, transparent 70%); transform: translate(-50%, -50%); opacity: 0; transition: opacity 0.8s; mix-blend-mode: screen; }
.lens-flare.is-active { opacity: 1; }

/* 逐字弹出 */
.char-stagger { display: inline-block; font-style: normal; animation: charPop 0.7s cubic-bezier(.16,1,.3,1) both; }
.char-stagger:nth-child(1) { animation-delay: 0.5s; }
.char-stagger:nth-child(2) { animation-delay: 0.62s; }
.char-stagger:nth-child(3) { animation-delay: 0.74s; }
.char-stagger:nth-child(4) { animation-delay: 0.86s; }
@keyframes charPop {
  from { transform: translateY(120%) scale(0.6); opacity: 0; filter: blur(8px); }
  to { transform: translateY(0) scale(1); opacity: 1; filter: blur(0); }
}

.hero-copy { position:relative; z-index:2; min-height:100svh; padding: 18vh var(--pad) 7vh; display:flex; flex-direction:column; justify-content:space-between; }
.hero-identity { align-self:flex-start; width:min(480px,42vw); }
.hero-kicker { margin:0; color:#d5d1c8; font-size:9px; text-transform:uppercase; letter-spacing:.25em; }
.hero-kicker b { margin-right:16px; color:var(--accent); font-weight:500; }
h1 { width:auto; margin:28px 0 0; font-size:clamp(48px,5.8vw,86px); font-weight:620; line-height:1; letter-spacing:-.055em; }
.title-line { display:block; overflow:hidden; padding: .09em 0; }
.title-line i { display:inline-block; font-style:normal; }
.title-line i:not(.char-stagger) { display:block; animation:titleIn 1.5s .85s var(--ease) both; }
.hero-title-en { display:block; margin-top:18px; color:rgba(255,255,255,.64); font-family:var(--serif); font-size:clamp(14px,1.4vw,20px); font-weight:400; font-style:italic; letter-spacing:.06em; }
.hero-bottom { width:100%; display:flex; align-items:flex-end; justify-content:space-between; margin-left:0; padding-left:0; }
.hero-bottom p { max-width:360px; margin:0; color:#d3d0c8; font-size:clamp(12px,.9vw,14px); line-height:1.85; font-weight:300; }
.round-link { width:102px; height:102px; display:grid; place-content:center; position:relative; border:1px solid rgba(255,255,255,.38); border-radius:50%; text-align:center; font-size:9px; line-height:1.25; letter-spacing:.16em; transition:background .45s var(--ease),color .45s var(--ease),transform .45s var(--ease),box-shadow .45s; }
.round-link svg { position:absolute; width:17px; right:13px; bottom:16px; fill:none; stroke:currentColor; }
.round-link:hover { background:var(--paper); color:var(--ink); transform:rotate(-8deg); box-shadow: 0 0 60px rgba(200,184,137,0.35), 0 0 120px rgba(200,184,137,0.1); }
.hero-index { position:absolute; z-index:3; right:24px; bottom:7vh; font-size:8px; letter-spacing:.18em; writing-mode:vertical-rl; }

.section-label { margin:0; color:var(--accent); font-size:10px; text-transform:uppercase; letter-spacing:.22em; }
.statement { min-height:88svh; padding:0 var(--pad); background:var(--paper); color:var(--ink); }
.statement-inner { width:min(100%,1120px); min-height:88svh; margin:0 auto; padding:14vh 0 9vh; display:grid; grid-template-columns:180px 1fr; grid-template-rows:auto 1fr auto; column-gap:clamp(40px,8vw,130px); }
.statement .section-label { grid-column:1; grid-row:1; }
.statement-copy { grid-column:2; grid-row:1/3; align-self:center; }
.statement h2 { max-width:720px; margin:0; font-size:clamp(34px,4vw,58px); line-height:1.35; letter-spacing:-.04em; font-weight:500; }
.statement-en { margin:42px 0 0; color:#777168; font-family:var(--serif); font-size:clamp(14px,1.3vw,19px); font-style:italic; line-height:1.55; }
.statement-footer { grid-column:2; grid-row:3; display:flex; gap:28px; padding-top:22px; border-top:1px solid rgba(0,0,0,.18); color:#716c63; font-size:9px; letter-spacing:.16em; }

.work { padding:16vh var(--pad); }
.work-heading { margin-bottom:16vh; }
.work-title { position:relative; margin-top:42px; }
.work-heading h2 { margin:0; font-size:clamp(52px,7.5vw,116px); line-height:.88; letter-spacing:-.065em; font-weight:750; overflow:hidden; }
.work-heading .outline { margin-left:13vw; color:transparent; -webkit-text-stroke:1px rgba(238,238,238,.78); }
.work-title>p { position:absolute; right:4vw; bottom:.5vw; margin:0; color:var(--muted); font-family:var(--serif); font-size:clamp(12px,1vw,15px); line-height:1.55; font-style:italic; }
.project-list { display:grid; grid-template-columns:repeat(12,1fr); gap:20vh 28px; }
.project { position:relative; }
/* 序号水印 */
.project::before { content: attr(data-index); position: absolute; z-index: 0; right: -2vw; top: -6vh; font-size: clamp(120px,16vw,220px); font-weight: 900; letter-spacing: -.06em; color: rgba(200,184,137,0.06); pointer-events: none; line-height: 1; }
.project-wide { grid-column:2/12; }
.project-split { grid-column:1/7; }
.project-tall { grid-column:8/13; margin-top:20vh; }
.project-media { overflow:hidden; background:#151515; clip-path:inset(0 0 100% 0); transition:clip-path 1.45s var(--ease), transform .7s var(--ease); position:relative; z-index:1; }
/* 光晕追踪边框 */
.project-media::after { content: ''; position: absolute; inset: 0; z-index: 2; pointer-events: none; opacity: 0; transition: opacity 0.35s; background: radial-gradient(circle 280px at var(--mx,50%) var(--my,50%), rgba(200,184,137,0.22) 0%, rgba(200,184,137,0.06) 40%, transparent 70%); }
.project-link:hover .project-media::after { opacity: 1; }
.project-media.is-visible { clip-path:inset(0); }
.project-wide .project-media { aspect-ratio:16/8.8; }
.project-split .project-media { aspect-ratio:4/4.6; }
.project-tall .project-media { aspect-ratio:4/4.8; }
.project-media img { height:115%; object-fit:cover; transition:transform 1s var(--ease),filter 1s; will-change:transform; }
.project-link:hover img { transform:scale(1.035); filter:brightness(.72); }
.project-meta { position:absolute; inset:auto 24px 22px; display:grid; grid-template-columns:1fr auto; align-items:end; pointer-events:none; }
.project-meta span { position:absolute; left:0; bottom:calc(100% + 18px); font-size:9px; text-transform:uppercase; letter-spacing:.18em; }
.project-meta h3 { margin:0; font-size:clamp(30px,3.8vw,58px); line-height:.86; letter-spacing:-.05em; font-weight:650; }
.project-meta p { margin:0 0 2px; font-size:12px; writing-mode:vertical-rl; letter-spacing:.15em; }
.project-arrow { position:absolute; right:22px; top:22px; width:48px; height:48px; display:grid; place-items:center; border:1px solid rgba(255,255,255,.42); border-radius:50%; font-size:18px; opacity:0; transform:translate(-10px,10px); transition:opacity .45s var(--ease),transform .45s var(--ease),background .45s,color .45s; }
.project-link:hover .project-arrow { opacity:1; transform:none; background:#f0eee8; color:#111; }

.about { min-height:100svh; display:grid; grid-template-columns:1.08fr .92fr; background:#d4d0c7; color:var(--ink); }
.about-photo { min-height:100svh; overflow:hidden; clip-path:inset(0 100% 0 0); transition:clip-path 1.4s var(--ease); }
.about-photo.is-visible { clip-path:inset(0); }
.about-photo img { height:110%; object-fit:cover; object-position:65% center; filter:grayscale(1) contrast(1.1); }
.about-copy { padding:14vh var(--pad); display:flex; flex-direction:column; justify-content:center; }
.about-name { margin:9vh 0 14px!important; color:#706b61; font-size:9px!important; font-weight:600; letter-spacing:.22em; text-transform:uppercase; }
.about-copy h2 { margin:0 0 7vh; font-size:clamp(48px,5.4vw,78px); line-height:1.04; letter-spacing:-.055em; font-weight:650; }
.about-copy blockquote { max-width:680px; margin:0 0 5vh; padding:0; border:0; color:#282621; font-family:var(--serif); font-size:clamp(24px,2.35vw,38px); font-weight:400; line-height:1.45; letter-spacing:-.025em; }
.about-intro { max-width:540px; margin:0; color:#4f4b43; font-size:clamp(14px,1.05vw,17px); font-weight:400; line-height:1.9; }
.about-tags { display:flex; flex-wrap:wrap; gap:8px; margin-top:48px; }
.about-tags span { padding:10px 14px; border:1px solid rgba(0,0,0,.35); border-radius:999px; font-size:10px; text-transform:uppercase; letter-spacing:.12em; }
.about-signature { margin-top:8vh!important; padding-top:18px; border-top:1px solid rgba(0,0,0,.2); color:#6b665d; font-size:8px!important; letter-spacing:.2em; }
.about-signature i { display:inline-block; margin:0 12px; font-style:normal; }

.contact { min-height:82svh; padding:16vh var(--pad) 5vh; display:flex; flex-direction:column; justify-content:space-between; background:#090909; }
.contact-title { display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); padding-bottom:34px; font-size:clamp(46px,7vw,108px); font-weight:750; letter-spacing:-.065em; line-height:.94; }
.contact-title svg { flex:0 0 auto; width:clamp(48px,8vw,120px); fill:none; stroke:currentColor; stroke-width:1; transition:transform .5s var(--ease); }
.contact-title:hover svg { transform:translate(10px,-10px); }
.contact-bottom { display:flex; justify-content:space-between; gap:24px; padding-top:50px; color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.15em; }

.reveal-line { overflow:hidden; }
.reveal-line>span { display:block; transform:translateY(110%); transition:transform 1.25s var(--ease); }
.reveal-line.is-visible>span { transform:translateY(0); }
.reveal-up { opacity:0; transform:translateY(35px); transition:opacity 1s var(--ease),transform 1s var(--ease); }
.reveal-up.is-visible { opacity:1; transform:none; }

/* Section 过渡线 */
.section-divider { position: relative; }
.section-divider::before { content: ''; position: absolute; bottom: 0; left: var(--pad); right: var(--pad); height: 1px; background: linear-gradient(90deg, transparent, var(--accent), transparent); transform: scaleX(0); transition: transform 1.5s var(--ease); }
.section-divider.divider-visible::before { transform: scaleX(1); }

/* 导航栏滚动变化 */
.site-header { transition: background 0.5s var(--ease), backdrop-filter 0.5s; }
.site-header.scrolled { background: rgba(8,8,8,0.72); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.site-header nav a.active { color: var(--accent); }
.site-header nav a.active::after { transform: scaleX(1); transform-origin: left; }
.split-copy .word { display:inline-block; overflow:hidden; vertical-align:bottom; }
.split-copy .word i { display:inline-block; font-style:inherit; transform:translateY(110%); transition:transform .85s var(--ease); }
.split-copy.is-visible .word i { transform:translateY(0); }

@keyframes loaderWord { from{transform:translateY(110%)} to{transform:none} }
@keyframes loadLine { from{width:0} to{width:100%} }
@keyframes titleIn { from{transform:translateY(110%)} to{transform:none} }
@keyframes heroIn { from{transform:scale(1.16);filter:brightness(.35)} to{transform:scale(1.04);filter:none} }

@media (max-width:800px) {
  body { cursor:auto; }
  .cursor-dot,.cursor-ring { display:none; }
  .site-header { padding-top:18px; grid-template-columns:1fr auto; }
  .site-header nav { display:none; }
  .site-header nav.is-open { display:flex; flex-direction:column; position:fixed; inset:0; background:rgba(5,5,5,0.97); z-index:200; align-items:center; justify-content:center; gap:32px; font-size:18px; backdrop-filter:blur(20px); }
  .site-header nav.is-open a { font-size:24px; padding:12px 0; }
  .menu-btn { display:grid; width:40px; height:40px; place-items:center; background:none; border:none; cursor:pointer; z-index:210; position:relative; }
  .menu-btn span,.menu-btn::before,.menu-btn::after { content:''; display:block; width:22px; height:1.5px; background:#fff; border-radius:2px; transition:all .35s; position:absolute; }
  .menu-btn::before { transform:translateY(-7px); }
  .menu-btn::after { transform:translateY(7px); }
  .menu-btn.is-active span { opacity:0; }
  .menu-btn.is-active::before { transform:rotate(45deg); }
  .menu-btn.is-active::after { transform:rotate(-45deg); }
  .chapter { display:none; }
  .hero { min-height:680px; }
  .hero-media { inset:0; }
  .hero-shade { inset:0; background:linear-gradient(0deg,rgba(0,0,0,.76),rgba(0,0,0,.08) 70%),linear-gradient(90deg,rgba(0,0,0,.32),transparent); }
  .hero-media img { object-position:64% center; }
  .hero-copy { padding:20vh 20px 28px; }
  .hero-identity { width:100%; }
  h1 { width:100%; margin-top:18px; font-size:clamp(48px,14vw,68px); line-height:1; }
  .hero-title-en { font-size:14px; }
  .hero-bottom { width:100%; margin-left:0; padding-left:0; }
  .round-link { width:88px; height:88px; }
  .statement { min-height:auto; }
  .statement-inner { min-height:auto; padding:14vh 0 10vh; display:block; }
  .statement-copy { margin-top:70px; }
  .statement h2 { font-size:clamp(34px,10vw,48px); }
  .statement-footer { margin-top:80px; gap:14px; flex-wrap:wrap; }
  .work-title>p { position:static; margin:32px 0 0 2px; }
  .project-list { display:block; }
  .project { margin:0 0 90px; }
  .project-tall { margin-top:0; }
  .project-wide .project-media,.project-split .project-media,.project-tall .project-media { aspect-ratio:4/4.8; }
  .project-meta { inset:auto 14px 16px; }
  .project-meta h3 { font-size:48px; }
  .project-arrow { opacity:1; transform:none; width:40px; height:40px; }
  .about { grid-template-columns:1fr; }
  .about-photo { min-height:70svh; }
  .about-copy { padding-top:12vh; padding-bottom:12vh; }
  .contact-bottom { flex-direction:column; }
}

/* ===== 03 · Services ===== */
.services { padding: 12vh var(--pad); background: #0a0a0a; }
.services-inner { max-width: 1280px; margin: 0 auto; }
.services-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;
  margin-top: 6vh;
}
.service-card {
  padding: 38px 26px 32px;
  border: 1px solid rgba(255,255,255,.09);
  border-radius: 14px;
  transition: border-color .45s var(--ease), transform .45s var(--ease), background .45s;
}
.service-card.reveal-up { transition-delay: var(--delay, 0s); }
.service-card:hover { border-color: rgba(200,184,137,.32); transform: translateY(-4px); background: rgba(255,255,255,.015); }
.service-icon { font-size: 34px; margin-bottom: 22px; line-height: 1; }
.service-card h3 { margin: 0 0 12px; font-size: 15px; font-weight: 600; letter-spacing: -.02em; }
.service-card p { margin: 0 0 20px; color: var(--muted); font-size: 12px; line-height: 1.75; }
.service-tag { display: inline-block; padding: 5px 12px; border: 1px solid rgba(255,255,255,.12); border-radius: 100px; font-size: 8px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); }

/* ===== 05 · Numbers ===== */
.numbers { padding: 12vh var(--pad); background: #060606; }
.numbers-inner { max-width: 1280px; margin: 0 auto; }
.numbers-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; margin: 8vh 0 10vh; }
.num-card { text-align: center; }
.num-ring { position: relative; width: 140px; height: 140px; margin: 0 auto 22px; }
.num-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.ring-bg { fill: none; stroke: rgba(255,255,255,.05); stroke-width: 5; }
.ring-fg { fill: none; stroke-width: 5; stroke-linecap: round; transition: stroke-dashoffset 1.8s cubic-bezier(.16,1,.3,1); }
.ring-fg--gold { stroke: var(--accent); }
.ring-fg--accent { stroke: #e6d5a8; }
.num-ring-center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.num-big { font-size: 30px; font-weight: 700; letter-spacing: -.04em; color: var(--text); }
.num-unit { font-size: 18px; font-weight: 400; color: var(--accent); }
.num-label { margin-top: 4px; color: var(--muted); font-size: 9px; text-transform: uppercase; letter-spacing: .16em; }

.data-panels { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.data-panel { border: 1px solid rgba(255,255,255,.07); border-radius: 14px; padding: 38px; }
.data-label { display: block; margin-bottom: 28px; color: var(--accent); font-size: 10px; text-transform: uppercase; letter-spacing: .2em; }

/* 月度热力图 - 柱状 */
.heatmap-bar { display: flex; align-items: flex-end; gap: 6px; height: 140px; }
.heatmap-bar .hb-col { flex: 1; border-radius: 4px 4px 0 0; background: var(--accent); transition: height 1.2s cubic-bezier(.16,1,.3,1); min-height: 4px; position: relative; }
.heatmap-bar .hb-col::after { content: attr(data-mo); position: absolute; bottom: -20px; left: 50%; transform: translateX(-50%); font-size: 8px; color: rgba(255,255,255,.25); letter-spacing: .1em; white-space: nowrap; }
.heatmap-bar .hb-col.high { background: #e8d5a4; }
.heatmap-bar .hb-col.mid { background: #c8b889; }
.heatmap-bar .hb-col.low { background: rgba(200,184,137,.45); }

/* 柱状图 */
.bar-chart { display: flex; flex-direction: column; gap: 12px; padding-top: 8px; }
.bc-row { display: flex; align-items: center; gap: 14px; }
.bc-label { width: 52px; font-size: 10px; color: var(--muted); letter-spacing: .08em; text-align: right; flex-shrink: 0; }
.bc-bar-wrap { flex: 1; height: 8px; background: rgba(255,255,255,.05); border-radius: 100px; overflow: hidden; }
.bc-bar { height: 100%; border-radius: 100px; transition: width 1.4s cubic-bezier(.16,1,.3,1); }
.bc-bar--gold { background: var(--accent); }
.bc-bar--silver { background: rgba(200,184,137,.5); }
.bc-val { width: 42px; font-size: 11px; color: var(--text); text-align: right; font-weight: 500; flex-shrink: 0; }

/* ===== 07 · Timeline ===== */
.timeline-section { padding: 14vh var(--pad) 12vh; background: #090909; }
.timeline { max-width: 720px; margin: 0 auto; position: relative; }
.timeline::before { content: ''; position: absolute; left: 16px; top: 4px; bottom: 4px; width: 1px; background: rgba(255,255,255,.1); }
.tl-item { position: relative; padding-left: 56px; margin-bottom: 48px; }
.tl-item:last-child { margin-bottom: 0; }
.tl-item::before { content: ''; position: absolute; left: 16px; top: 6px; width: 9px; height: 9px; border-radius: 50%; background: var(--accent); transform: translateX(-4px); }
.tl-year { display: inline-block; padding: 3px 14px; border: 1px solid var(--accent); border-radius: 100px; font-size: 9px; color: var(--accent); letter-spacing: .18em; margin-bottom: 10px; }
.tl-badge { display: inline-block; padding: 3px 14px; border-radius: 100px; font-size: 9px; color: #050505; background: var(--accent); letter-spacing: .18em; margin-bottom: 10px; margin-left: 8px; }
.tl-item h4 { margin: 0 0 6px; font-size: 20px; font-weight: 600; letter-spacing: -.02em; }
.tl-item p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.7; max-width: 480px; }

@media (max-width:800px) {
  .services-grid { grid-template-columns: 1fr 1fr; }
  .numbers-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
  .data-panels { grid-template-columns: 1fr; }
  .timeline::before { left: 12px; }
  .tl-item { padding-left: 44px; }
  .tl-item::before { left: 12px; }
}
@media (max-width:520px) {
  .services-grid { grid-template-columns: 1fr; }
}

/* ===== Lightbox ===== */
.lightbox { position: fixed; inset: 0; z-index: 300; background: rgba(0,0,0,0.94); display: flex; align-items: center; justify-content: center; opacity: 0; pointer-events: none; transition: opacity 0.45s var(--ease); backdrop-filter: blur(20px); }
.lightbox.is-open { opacity: 1; pointer-events: auto; }
.lightbox-img-wrap { position: relative; max-width: 85vw; max-height: 80vh; }
.lightbox-img-wrap img { max-width: 85vw; max-height: 80vh; object-fit: contain; border-radius: 4px; box-shadow: 0 0 80px rgba(200,184,137,0.12); }
.lightbox-info { position: absolute; bottom: -48px; left: 0; right: 0; text-align: center; color: var(--muted); font-size: 11px; letter-spacing: .12em; }
.lightbox-close { position: fixed; top: 24px; right: 24px; width: 48px; height: 48px; border: 1px solid rgba(255,255,255,0.28); border-radius: 50%; background: none; color: #fff; font-size: 22px; cursor: pointer; display: grid; place-items: center; transition: all 0.35s; z-index: 301; }
.lightbox-close:hover { background: #fff; color: #000; border-color: #fff; }
.lightbox-nav { position: fixed; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border: 1px solid rgba(255,255,255,0.2); border-radius: 50%; background: rgba(0,0,0,0.5); color: #fff; font-size: 20px; cursor: pointer; display: grid; place-items: center; transition: all 0.35s; z-index: 301; backdrop-filter: blur(8px); }
.lightbox-nav:hover { background: rgba(200,184,137,0.25); border-color: var(--accent); }
.lightbox-prev { left: 24px; }
.lightbox-next { right: 24px; }
.lightbox-counter { position: fixed; bottom: 28px; left: 50%; transform: translateX(-50%); color: rgba(255,255,255,0.4); font-size: 10px; letter-spacing: .18em; z-index: 301; }

/* ===== 品牌滚动条 ===== */
.brands-marquee { padding: 0; overflow: hidden; background: #0c0c0c; border-top: 1px solid rgba(255,255,255,0.05); border-bottom: 1px solid rgba(255,255,255,0.05); }
.marquee-track { display: flex; gap: 0; white-space: nowrap; padding: 28px 0; animation: marquee 30s linear infinite; width: max-content; }
.marquee-track span { font-size: clamp(18px,2.4vw,28px); font-weight: 650; letter-spacing: -.02em; color: var(--text); padding: 0 clamp(16px,2vw,32px); transition: color 0.35s; }
.marquee-track i { color: var(--accent); font-style: normal; font-weight: 300; opacity: 0.5; }
.marquee-track:hover { animation-play-state: paused; }
.marquee-track span:hover { color: var(--accent); }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ===== 装备区 ===== */
.gear { padding: 12vh var(--pad); background: #0a0a0a; }
.gear-inner { max-width: 1280px; margin: 0 auto; }
.gear-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; margin-top: 5vh; }
.gear-item { padding: 28px 18px 24px; border: 1px solid rgba(255,255,255,0.06); border-radius: 12px; text-align: center; transition: border-color 0.45s, transform 0.45s, background 0.45s; }
.gear-item:hover { border-color: rgba(200,184,137,0.3); transform: translateY(-4px); background: rgba(255,255,255,0.02); }
.gear-icon { font-size: 32px; margin-bottom: 14px; }
.gear-item h4 { margin: 0 0 6px; font-size: 12px; font-weight: 600; letter-spacing: -.02em; }
.gear-item p { margin: 0; color: var(--muted); font-size: 9px; letter-spacing: .05em; }

/* ===== 回到顶部 ===== */
.back-top { position: fixed; z-index: 100; bottom: 28px; right: 28px; width: 44px; height: 44px; border: 1px solid rgba(255,255,255,0.15); border-radius: 50%; background: rgba(10,10,10,0.8); color: var(--accent); font-size: 18px; cursor: pointer; display: grid; place-items: center; opacity: 0; transform: translateY(10px); pointer-events: none; transition: all 0.45s var(--ease); backdrop-filter: blur(12px); }
.back-top.is-visible { opacity: 1; transform: none; pointer-events: auto; }
.back-top:hover { background: var(--accent); color: #050505; border-color: var(--accent); box-shadow: 0 0 40px rgba(200,184,137,0.3); }

@media (max-width:800px) {
  .gear-grid { grid-template-columns: repeat(3, 1fr); }
  .marquee-track span { font-size: 16px; padding: 0 12px; }
}
@media (max-width:520px) {
  .gear-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; scroll-behavior:auto!important; }
  .loader { display:none; }
  .reveal-line>span,.reveal-up,.split-copy .word i { opacity:1; transform:none; }
  .project-media,.about-photo { clip-path:none; }
}
