﻿:root {
  --white: #FFFFFF;
  --black: #000000;
  --ink: #111111;
  --muted: rgba(0,0,0,.52);
  --line: rgba(0,0,0,.18);
  --line-dark: rgba(255,255,255,.18);
  --accent: #FFB000;
  --green: #00FF41;
  --cyan: #00FFFF;
  --blue: #002FA7;
  --orange: #FF4F00;
  --ease: cubic-bezier(.22,1,.36,1);
  --mono: "IBM Plex Mono", "Courier New", Consolas, monospace;
  --sans: "Helvetica Neue", Arial, "Microsoft YaHei", "PingFang SC", sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--white); color: var(--ink); font-family: var(--sans); overflow-x: hidden; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
.site-nav, .fixed-cta { display: none; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.portfolio-hero {
  position: relative;
  min-height: 100svh;
  overflow: hidden;
  background:
    linear-gradient(180deg, rgba(4,7,18,.96), rgba(10,0,20,.98)),
    #0A0014;
  color: var(--white);
  font-family: var(--mono);
  letter-spacing: .08em;
  isolation: isolate;
}
.portfolio-hero::before { content: none !important; }
.portfolio-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    radial-gradient(circle at 50% 72%, rgba(255,176,0,.22), transparent 30%),
    radial-gradient(circle at 22% 22%, rgba(0,255,255,.14), transparent 24%),
    linear-gradient(90deg, rgba(0,0,0,.28), transparent 38%, rgba(0,0,0,.22));
}
.hero-grid { display: none; }
.hero-index {
  position: absolute;
  left: 50%;
  top: clamp(50px, 7vh, 82px);
  transform: translateX(-50%);
  z-index: 6;
  width: min(88vw, 980px);
  min-height: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  text-align: center;
}
.hero-domain-tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(12px, 1.7vw, 28px);
  margin: 0 0 18px;
}
.hero-domain-tab {
  position: relative;
  border: 0;
  background: transparent;
  color: rgba(255,255,255,.52);
  font-family: var(--mono);
  font-size: clamp(10px, .82vw, 13px);
  line-height: 1;
  text-align: center;
  padding: 0;
  font-weight: 800;
  letter-spacing: .1em;
  cursor: pointer;
  text-transform: uppercase;
  text-shadow: 0 0 14px rgba(0,255,255,.22);
}
.hero-domain-tab span { margin-right: 8px; color: rgba(255,176,0,.78); font-variant-numeric: tabular-nums; }
.hero-domain-tab.active { color: var(--white); }
.hero-domain-tab.active::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -8px;
  width: 42px;
  height: 2px;
  transform: translateX(-50%);
  background: var(--accent);
  box-shadow: 0 0 14px rgba(255,176,0,.72);
}
.hero-project-list {
  list-style: none;
  margin: 0;
  padding: 0;
  width: min(100%, 860px);
  border-top: 1px solid rgba(255,255,255,.18);
  color: rgba(255,255,255,.56);
}
.hero-project-row { opacity: .95; animation: heroIdle 5.2s ease-in-out infinite; animation-delay: calc(var(--i) * .08s); }
.portfolio-hero.has-active .hero-project-row { animation-play-state: paused; }
.hero-project-link {
  width: 100%;
  min-height: clamp(38px, 5.1vh, 56px);
  display: grid;
  grid-template-columns: 44px minmax(180px, 1.5fr) 78px 102px 96px;
  gap: clamp(10px, 1.35vw, 22px);
  align-items: center;
  border: 0;
  border-bottom: 1px solid rgba(255,255,255,.15);
  background: transparent;
  color: inherit;
  text-align: center;
  padding: 0;
  cursor: pointer;
  font-family: var(--mono);
}
.hero-data {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: clamp(10px, .78vw, 13px);
  line-height: 1;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.hero-name { font-size: clamp(13px, 1.06vw, 18px); font-weight: 900; color: inherit; }
.hero-number { color: rgba(255,176,0,.78); font-variant-numeric: tabular-nums; }
.hero-project-link:hover,
.hero-project-link:focus-visible,
.hero-project-link.is-active { color: var(--white); }
.hero-project-link:hover .hero-name,
.hero-project-link:hover .hero-kind,
.hero-project-link:hover .hero-label,
.hero-project-link:focus-visible .hero-name,
.hero-project-link:focus-visible .hero-kind,
.hero-project-link:focus-visible .hero-label,
.hero-project-link.is-active .hero-name,
.hero-project-link.is-active .hero-kind,
.hero-project-link.is-active .hero-label {
  width: fit-content;
  max-width: 100%;
  justify-self: center;
  background: var(--accent);
  color: var(--black);
  padding: 2px 6px 1px;
  box-decoration-break: clone;
  box-shadow: 0 0 18px rgba(255,176,0,.38);
}
.hero-project-link:focus-visible { outline: 1px solid var(--accent); outline-offset: -1px; }
.hero-tv {
  position: absolute;
  left: 50%;
  bottom: clamp(24px, 4vh, 52px);
  z-index: 4;
  width: min(76vw, 900px);
  transform: translateX(-50%);
  filter: drop-shadow(0 34px 42px rgba(0,0,0,.62));
}
.tv-body {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(92px, 13vw, 142px);
  gap: clamp(10px, 1.2vw, 16px);
  aspect-ratio: 16 / 8.7;
  padding: clamp(14px, 1.9vw, 24px);
  background: linear-gradient(145deg, #263039, #070a0d 46%, #1a2329);
  border: 2px solid rgba(255,255,255,.08);
  box-shadow:
    inset 0 0 0 2px rgba(0,0,0,.78),
    inset 0 0 36px rgba(255,176,0,.08),
    0 0 0 1px rgba(255,255,255,.05);
}
.tv-bezel {
  min-width: 0;
  padding: clamp(13px, 1.6vw, 20px);
  background: linear-gradient(145deg, #0d1114, #39414a 45%, #080a0c 100%);
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: inset 0 0 26px rgba(0,0,0,.82);
}
.tv-screen {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #030408;
  border-radius: 9% / 13%;
  box-shadow:
    inset 0 0 34px rgba(0,0,0,.88),
    inset 0 0 0 2px rgba(0,0,0,.9),
    0 0 20px rgba(0,255,255,.10);
}
.hero-hover-image,
.hero-hover-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  z-index: 1;
  pointer-events: none;
  transform: scale(1.035);
  transition: opacity .32s var(--ease), transform .72s var(--ease), filter .32s var(--ease);
  filter: saturate(1.08) contrast(1.08);
}
.hero-hover-image { background-position: center; background-size: cover; }
.hero-hover-image::after { display: none !important; }
.hero-hover-video { object-fit: cover; background: #030408; }
.portfolio-hero.has-active .hero-hover-image,
.portfolio-hero.has-active .hero-hover-video { transform: scale(1); }
.tv-standby {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  color: rgba(255,255,255,.82);
  background: radial-gradient(circle at 50% 50%, rgba(0,255,65,.14), rgba(0,0,0,.62) 56%, #030408 100%);
  transition: opacity .28s var(--ease);
}
.tv-standby span { font-size: clamp(11px, .9vw, 15px); font-weight: 900; color: var(--accent); }
.tv-standby strong { font-size: clamp(28px, 5vw, 64px); line-height: .9; letter-spacing: .02em; }
.portfolio-hero.has-active .tv-standby { opacity: 0; }
.tv-glass {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  background:
    linear-gradient(115deg, rgba(255,255,255,.22), transparent 22% 56%, rgba(255,255,255,.10) 72%, transparent 100%),
    radial-gradient(ellipse at 50% 48%, transparent 52%, rgba(0,0,0,.48) 100%);
  mix-blend-mode: screen;
  opacity: .38;
}
.tv-panel {
  display: grid;
  align-content: start;
  justify-items: center;
  gap: clamp(13px, 1.8vw, 22px);
  padding: clamp(12px, 1.7vw, 20px) clamp(8px, 1.1vw, 14px);
  background: linear-gradient(180deg, #1a2329, #080b0e);
  border-left: 1px solid rgba(255,255,255,.08);
  box-shadow: inset 8px 0 22px rgba(0,0,0,.42);
}
.tv-knob {
  width: clamp(46px, 5vw, 62px);
  aspect-ratio: 1;
  border-radius: 50%;
  border: 4px solid #38454d;
  background: radial-gradient(circle, #0b1014 0 30%, #303b42 31% 40%, #0a0f12 41% 100%);
  box-shadow: inset 0 0 12px rgba(0,0,0,.9), 0 0 0 1px rgba(255,255,255,.07);
}
.tv-knob::after {
  content: "";
  display: block;
  width: 3px;
  height: 50%;
  margin: 8% auto 0;
  background: rgba(255,255,255,.38);
}
.tv-knob-small { width: clamp(40px, 4.4vw, 54px); transform: rotate(-38deg); }
.tv-speaker {
  width: 76%;
  height: clamp(52px, 7vw, 78px);
  background: linear-gradient(#1f2a31 0 2px, transparent 2px 8px);
  background-size: 100% 8px;
  border: 1px solid rgba(255,255,255,.07);
}
.tv-slider {
  width: 58%;
  height: clamp(70px, 9vw, 116px);
  border-left: 3px solid rgba(255,255,255,.18);
  border-right: 3px solid rgba(255,255,255,.12);
  background: linear-gradient(90deg, transparent 44%, rgba(255,176,0,.82) 44% 58%, transparent 58%);
  box-shadow: inset 0 0 18px rgba(0,0,0,.45);
}
.tv-feet {
  display: flex;
  justify-content: space-between;
  width: 42%;
  margin: 0 auto;
}
.tv-feet span {
  width: 38%;
  height: 14px;
  background: #070a0d;
  transform: skewX(-18deg);
}
.hero-preview-caption {
  position: absolute;
  left: 50%;
  bottom: clamp(10px, 1.4vh, 18px);
  transform: translateX(-50%);
  z-index: 6;
  width: min(70vw, 760px);
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 7px 14px;
  font-family: var(--mono);
  letter-spacing: .08em;
  pointer-events: none;
  color: rgba(255,255,255,.86);
  text-align: left;
}
.hero-preview-caption span,
.hero-preview-caption em { font-size: clamp(10px, .78vw, 12px); font-style: normal; font-weight: 800; color: rgba(255,176,0,.76); text-transform: uppercase; }
.hero-preview-caption strong { grid-column: 2; grid-row: 1; font-size: clamp(12px, 1vw, 16px); line-height: 1.16; font-weight: 900; text-transform: uppercase; }
.hero-preview-caption em { grid-column: 2; color: rgba(255,255,255,.58); }
.hero-corners {
  position: absolute;
  inset: 0;
  z-index: 7;
  pointer-events: none;
  font-family: var(--mono);
  font-size: clamp(10px, .78vw, 13px);
  line-height: 1;
  font-weight: 900;
  letter-spacing: .12em;
  color: rgba(255,255,255,.78);
  text-transform: uppercase;
}
.hero-corner { position: absolute; }
.hero-corner.top-left { left: clamp(22px, 3vw, 46px); top: clamp(26px, 4vw, 54px); }
.hero-corner.top-right { right: clamp(22px, 3vw, 46px); top: clamp(30px, 4vw, 58px); }
.hero-corner.bottom-left { left: clamp(22px, 3vw, 46px); bottom: clamp(28px, 4vw, 54px); }
.hero-corner.bottom-right { right: clamp(22px, 3vw, 46px); bottom: clamp(28px, 4vw, 54px); font-variant-numeric: tabular-nums; }
.corner-square { display: block; width: 10px; height: 10px; background: var(--accent); box-shadow: 0 0 14px rgba(255,176,0,.7); }
@keyframes heroIdle { 0%, 20%, 100% { opacity: .95; } 10% { opacity: .72; } }

.profile-section {
  position: relative;
  display: grid;
  grid-template-columns: minmax(260px, .82fr) minmax(420px, 1.18fr);
  gap: clamp(28px,5vw,76px);
  align-items: stretch;
  padding: clamp(56px,8vw,104px) clamp(22px,4vw,64px);
  background: var(--white);
  color: var(--black);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  overflow: hidden;
}
.profile-section::before {
  content: "PROFILE";
  position: absolute;
  left: -1vw;
  bottom: -22px;
  font-family: var(--mono);
  font-size: clamp(96px,18vw,250px);
  line-height: .75;
  color: rgba(0,0,0,.045);
  pointer-events: none;
}
.profile-media, .profile-copy { position: relative; z-index: 1; }
.profile-media { min-height: 430px; border: 1px solid var(--line); overflow: hidden; background: #f7f7f8; animation: floatIn .9s var(--ease) both; }
.profile-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.profile-copy { align-self: center; max-width: 780px; animation: floatIn .9s var(--ease) .08s both; }
.profile-kicker { margin: 0 0 12px; font-family: var(--mono); font-size: 13px; font-weight: 900; letter-spacing: .1em; color: var(--blue); }
.profile-copy h2 { margin: 0 0 24px; font-family: var(--mono); font-size: clamp(54px, 9vw, 132px); line-height: .84; letter-spacing: 0; }
.profile-text { margin: 0 0 28px; font-size: clamp(17px,1.7vw,24px); line-height: 1.42; font-weight: 760; }
.profile-info { margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.profile-info div { padding: 16px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.profile-info dt { font-family: var(--mono); font-size: 12px; font-weight: 900; color: var(--muted); margin-bottom: 8px; }
.profile-info dd { margin: 0; font-size: 15px; font-weight: 800; line-height: 1.3; }
@keyframes floatIn { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } }

.domain { position: relative; min-height: 100svh; overflow: hidden; padding: 96px clamp(18px,4vw,64px) 110px; background: var(--black); color: var(--white); }
.domain:nth-child(even) { background: var(--blue); color: var(--white); }
.domain-word { position: absolute; left: -2vw; top: 100px; font-family: var(--mono); font-size: clamp(78px,15vw,240px); line-height: .84; opacity: .10; white-space: nowrap; pointer-events: none; }
.domain-head { position: relative; z-index: 2; display: flex; justify-content: space-between; gap: 24px; align-items: flex-start; margin-bottom: 72px; }
.domain-kicker { font-family: var(--mono); font-size: 15px; font-weight: 900; color: var(--accent); }
.domain h2 { margin: 0; font-size: clamp(48px,8vw,138px); line-height: .95; letter-spacing: 0; font-weight: 900; }
.domain-stats { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; max-width: 460px; }
.domain-stats span { border: 1px solid currentColor; padding: 8px 12px; font-family: var(--mono); font-size: 12px; font-weight: 900; }
.project-grid { position: relative; z-index: 3; display: grid; grid-template-columns: repeat(12,1fr); gap: 18px; }
.project-card { grid-column: span 4; min-height: 500px; border: 1px solid var(--line-dark); background: #090909; color: var(--white); display: flex; flex-direction: column; transition: transform .45s var(--ease), border-color .45s var(--ease); cursor: pointer; overflow: hidden; }
.project-card:hover { transform: translateY(-8px); border-color: var(--accent); }
.project-cover { height: 320px; background: #111; overflow: hidden; border-bottom: 1px solid var(--line-dark); }
.project-cover img, .project-cover video { width: 100%; height: 100%; object-fit: cover; display: block; filter: none; }
.doc-cover { height: 100%; display: grid; place-items: center; background: var(--white); color: var(--black); font-family: var(--mono); font-size: 48px; font-weight: 900; }
.project-body { padding: 22px; display: flex; min-height: 176px; flex-direction: column; gap: 14px; }
.project-body h3 { margin: 0; font-size: clamp(24px,2.4vw,36px); line-height: 1.1; letter-spacing: 0; font-weight: 900; overflow-wrap: anywhere; }
.project-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-top: auto; }
.project-meta span { border: 1px solid rgba(255,255,255,.28); padding: 7px 10px; font-family: var(--mono); font-size: 12px; font-weight: 900; color: rgba(255,255,255,.86); }
.open-project { border: 0; background: var(--accent); color: var(--black); padding: 12px 16px; font-weight: 900; cursor: pointer; width: fit-content; }

.project-dialog { width: min(1240px,calc(100vw - 28px)); max-height: calc(100svh - 28px); padding: 0; border: 1px solid var(--line-dark); background: var(--black); color: var(--white); overflow: hidden; }
.project-dialog::backdrop { background: rgba(0,0,0,.76); }
.dialog-shell { position: relative; padding: 28px; max-height: calc(100svh - 28px); overflow: auto; }
.dialog-close { position: sticky; top: 0; float: right; width: 42px; height: 42px; border: 1px solid var(--line-dark); background: var(--white); color: var(--black); cursor: pointer; font-size: 28px; line-height: 1; z-index: 3; }
.dialog-heading { margin-bottom: 22px; max-width: 860px; }
.dialog-heading span { color: var(--accent); font-family: var(--mono); font-weight: 900; }
.dialog-heading h2 { margin: 8px 0; font-size: clamp(34px,5vw,74px); line-height: 1.04; letter-spacing: 0; font-weight: 900; }
.dialog-heading p { margin: 0; color: rgba(255,255,255,.72); font-family: var(--mono); font-weight: 800; }
.dialog-media { display: block; }
.media-lightbox {
  position: fixed;
  inset: 22px;
  z-index: 80;
  display: grid;
  place-items: center;
  padding: 64px clamp(16px, 3vw, 36px) 24px;
  background: transparent;
  backdrop-filter: none;
}

.media-lightbox[hidden] {
  display: none !important;
}
.media-lightbox-close {
  position: absolute;
  top: 18px;
  right: 18px;
  width: 42px;
  height: 42px;
  border: 1px solid rgba(255,255,255,.28);
  background: rgba(255,255,255,.96);
  color: #111;
  cursor: pointer;
  font-size: 28px;
  line-height: 1;
}
.media-lightbox-stage {
  width: min(92vw, 1480px);
  max-height: calc(100svh - 120px);
  display: grid;
  gap: 12px;
  justify-items: center;
}
.media-lightbox-media {
  display: block;
  width: 100%;
  max-height: calc(100svh - 168px);
  background: #05080B;
}
.media-lightbox-media.is-image {
  object-fit: contain;
}
.media-lightbox-media.is-video {
  object-fit: contain;
}
.media-lightbox-caption {
  color: rgba(232, 220, 199, .72);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.slide-viewer { position: relative; display: grid; grid-template-columns: 64px minmax(0,1fr) 64px; align-items: center; gap: 16px; }
.slide-figure { margin: 0; min-height: min(72vh, 820px); display: grid; grid-template-rows: minmax(0,1fr) auto; background: #080808; border: 1px solid var(--line-dark); }
.slide-media { width: 100%; height: min(72vh, 820px); object-fit: contain; display: block; background: #080808; }
.slide-file { min-height: 60vh; display: grid; place-items: center; gap: 20px; background: #101010; }
.slide-file strong { font-family: var(--mono); font-size: clamp(72px,12vw,180px); }
.slide-file a { background: var(--white); color: var(--black); padding: 12px 18px; font-weight: 900; }
.slide-figure figcaption { min-height: 54px; display: flex; justify-content: space-between; gap: 18px; align-items: center; padding: 14px 16px; border-top: 1px solid var(--line-dark); color: rgba(255,255,255,.78); font-weight: 800; }
.slide-btn { width: 54px; height: 54px; border: 1px solid rgba(255,255,255,.36); background: transparent; color: var(--white); font-size: 42px; line-height: 1; cursor: pointer; transition: background .25s var(--ease), color .25s var(--ease); }
.slide-btn:hover { background: var(--accent); color: var(--black); }
.slide-strip { display: flex; gap: 8px; margin-top: 16px; overflow-x: auto; padding-bottom: 4px; }
.strip-item { flex: 0 0 auto; min-width: 34px; height: 34px; border: 1px solid rgba(255,255,255,.28); background: transparent; color: rgba(255,255,255,.72); cursor: pointer; font-family: var(--mono); font-weight: 900; }
.strip-item.active { background: var(--white); color: var(--black); border-color: var(--white); }

@media(max-width:980px) {
  .hero-index {
    top: clamp(50px, 7vh, 76px);
    width: calc(100vw - 32px);
  }
  .hero-domain-tabs { gap: 10px 18px; margin-bottom: 14px; }
  .hero-domain-tab { font-size: 11px; letter-spacing: .04em; }
  .hero-domain-tab span { display: block; margin: 0 0 5px; }
  .hero-project-list { width: 100%; }
  .hero-project-link {
    grid-template-columns: 38px minmax(0, 1fr) 54px;
    gap: 12px;
    min-height: 56px;
  }
  .hero-kind, .hero-label { display: none; }
  .hero-domain { text-align: right; }
  .hero-name { font-size: 15px; white-space: normal; line-height: 1.25; }
  .hero-tv { width: min(92vw, 760px); bottom: clamp(38px, 6vh, 70px); }
  .tv-body { grid-template-columns: minmax(0, 1fr) clamp(70px, 15vw, 106px); padding: 12px; gap: 10px; }
  .tv-bezel { padding: 12px; }
  .hero-preview-caption { width: min(86vw, 680px); bottom: 14px; grid-template-columns: 92px 1fr; }
  .hero-corner.top-right { display: none; }
  .hero-corner.bottom-left { max-width: 58vw; line-height: 1.35; }
  .profile-section { grid-template-columns: 1fr; padding: 58px 20px 72px; }
  .profile-media { min-height: 340px; }
  .profile-info { grid-template-columns: 1fr; }
  .project-card { grid-column: span 6; min-height: 450px; }
}
@media(max-width:680px) {
  .portfolio-hero { min-height: 100svh; }
  .hero-index { top: 42px; width: calc(100vw - 24px); }
  .hero-domain-tabs { gap: 8px 12px; }
  .hero-project-link { grid-template-columns: 30px minmax(0,1fr); min-height: 50px; }
  .hero-domain { display: none; }
  .hero-number { text-align: left; }
  .hero-tv { width: calc(100vw - 24px); bottom: 58px; }
  .tv-body { grid-template-columns: 1fr 58px; padding: 9px; gap: 7px; }
  .tv-bezel { padding: 8px; }
  .tv-panel { gap: 9px; padding: 8px 5px; }
  .tv-knob { width: 32px; border-width: 3px; }
  .tv-knob-small { width: 28px; }
  .tv-speaker { height: 38px; }
  .tv-slider { height: 52px; }
  .tv-standby strong { font-size: 26px; }
  .hero-preview-caption { display: none; }
  .hero-corner.bottom-left { display: none; }
  .domain { padding: 74px 16px 86px; }
  .domain-head { display: block; margin-bottom: 40px; }
  .domain-stats { justify-content: flex-start; margin-top: 18px; }
  .project-grid { gap: 16px; }
  .project-card { grid-column: 1/-1; min-height: 430px; }
  .project-cover { height: 270px; }
  .dialog-shell { padding: 18px; }
  .slide-viewer { grid-template-columns: 1fr; }
  .slide-btn { position: absolute; z-index: 4; top: 45%; background: rgba(0,0,0,.62); }
  .slide-btn.prev { left: 10px; }
  .slide-btn.next { right: 10px; }
  .slide-media { height: 62vh; }
  .slide-figure { min-height: 62vh; }
}



/* Darkroom contact print table */
.portfolio-hero {
  min-height: 100svh;
  background:
    radial-gradient(circle at 18% 18%, rgba(255,59,48,.18), transparent 22%),
    radial-gradient(circle at 76% 28%, rgba(255,176,0,.10), transparent 25%),
    linear-gradient(180deg, #060403 0%, #0b0607 52%, #050505 100%);
  color: #f8f3ea;
}
.portfolio-hero::before {
  content: "" !important;
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(255,255,255,.045) 0 1px, transparent 1px 120px),
    linear-gradient(0deg, rgba(255,255,255,.035) 0 1px, transparent 1px 120px);
  opacity: .22;
}
.portfolio-hero::after {
  background:
    radial-gradient(circle at 16% 17%, rgba(255,59,48,.26), transparent 18%),
    radial-gradient(circle at 50% 50%, transparent 0 48%, rgba(0,0,0,.44) 100%);
}
.hero-tv,
.tv-body,
.tv-bezel,
.tv-screen,
.tv-panel,
.tv-feet { display: none !important; }
.hero-print {
  position: absolute;
  left: 50%;
  top: 43%;
  z-index: 4;
  width: min(78vw, 1020px);
  transform: translate(-50%, -50%);
  filter: drop-shadow(0 32px 48px rgba(0,0,0,.62));
}
.print-stage {
  position: relative;
  padding: clamp(12px, 1.6vw, 22px);
  background:
    linear-gradient(135deg, rgba(255,255,255,.09), transparent 22% 76%, rgba(255,59,48,.08)),
    #14100d;
  border: 1px solid rgba(255,255,255,.08);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.035),
    0 0 0 1px rgba(255,176,0,.08),
    0 28px 80px rgba(0,0,0,.55);
}
.print-stage::before,
.print-stage::after {
  content: "";
  position: absolute;
  width: clamp(88px, 11vw, 142px);
  height: 16px;
  top: clamp(16px, 2vw, 26px);
  background: rgba(255,244,218,.42);
  box-shadow: 0 2px 12px rgba(0,0,0,.34);
  transform: rotate(-8deg);
  opacity: .55;
}
.print-stage::before { left: clamp(18px, 2.4vw, 34px); }
.print-stage::after { right: clamp(18px, 2.4vw, 34px); transform: rotate(7deg); }
.print-paper {
  position: relative;
  aspect-ratio: 16 / 9;
  padding: clamp(14px, 2vw, 26px);
  background:
    linear-gradient(180deg, #f8f3ea, #ddd4c7),
    #f8f3ea;
  border: 1px solid rgba(0,0,0,.28);
  box-shadow:
    inset 0 0 28px rgba(70,43,20,.16),
    0 18px 44px rgba(0,0,0,.46);
}
.print-paper::before {
  content: "LIUHAI CONTACT PRINT";
  position: absolute;
  left: clamp(16px, 2vw, 26px);
  bottom: 7px;
  color: rgba(0,0,0,.45);
  font-family: var(--mono);
  font-size: clamp(8px, .72vw, 11px);
  font-weight: 900;
  letter-spacing: .12em;
}
.print-paper::after {
  content: "01";
  position: absolute;
  right: clamp(16px, 2vw, 26px);
  bottom: 7px;
  color: rgba(0,0,0,.35);
  font-family: var(--mono);
  font-size: clamp(8px, .72vw, 11px);
  font-weight: 900;
}
.print-image {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #070707;
  border: 1px solid rgba(0,0,0,.66);
  box-shadow: inset 0 0 30px rgba(0,0,0,.72);
}
.hero-hover-image,
.hero-hover-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  z-index: 1;
  pointer-events: none;
  transform: scale(1.035);
  transition: opacity .34s var(--ease), transform .7s var(--ease), filter .34s var(--ease);
  filter: saturate(1.02) contrast(1.04);
}
.hero-hover-image { background-position: center; background-size: cover; }
.hero-hover-image::after { display: none !important; }
.hero-hover-video { object-fit: cover; background: #070707; }
.portfolio-hero.has-active .hero-hover-image,
.portfolio-hero.has-active .hero-hover-video { transform: scale(1); }
.print-standby {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  background: radial-gradient(circle at 50% 48%, rgba(255,59,48,.13), rgba(0,0,0,.84) 62%, #050505 100%);
  color: rgba(248,243,234,.84);
  transition: opacity .28s var(--ease);
}
.print-standby span { color: #FF3B30; font-family: var(--mono); font-size: clamp(10px, .82vw, 13px); font-weight: 900; }
.print-standby strong { font-family: var(--mono); font-size: clamp(26px, 4.5vw, 62px); line-height: .9; letter-spacing: .02em; }
.portfolio-hero.has-active .print-standby { opacity: 0; }
.print-sheen {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  background:
    linear-gradient(115deg, rgba(255,255,255,.16), transparent 24% 58%, rgba(255,255,255,.08) 76%, transparent 100%),
    radial-gradient(ellipse at 50% 50%, transparent 55%, rgba(0,0,0,.46) 100%);
  opacity: .42;
}
.hero-index {
  top: auto;
  bottom: clamp(28px, 4.2vh, 52px);
  left: 50%;
  transform: translateX(-50%);
  width: min(94vw, 1180px);
  z-index: 8;
  padding: 0;
}
.hero-domain-tabs {
  justify-content: center;
  margin: 0 0 13px;
  gap: clamp(14px, 1.8vw, 28px);
}
.hero-domain-tab { color: rgba(248,243,234,.55); text-shadow: none; }
.hero-domain-tab span { color: rgba(255,59,48,.82); }
.hero-domain-tab.active { color: #f8f3ea; }
.hero-domain-tab.active::after { background: #FF3B30; box-shadow: 0 0 14px rgba(255,59,48,.58); }
.hero-project-list {
  width: 100%;
  border: 0;
  display: flex;
  justify-content: center;
  gap: 0;
  overflow-x: auto;
  padding: 0 6px 12px;
  scrollbar-width: thin;
}
.hero-project-row {
  flex: 0 0 clamp(172px, 17vw, 228px);
  opacity: 1;
  animation: none;
}
.hero-project-link {
  position: relative;
  width: 100%;
  min-height: clamp(94px, 10vh, 116px);
  display: grid;
  grid-template-columns: 34px minmax(0,1fr);
  grid-template-rows: 24px 1fr 22px;
  gap: 5px 9px;
  align-items: center;
  text-align: left;
  overflow: hidden;
  padding: 22px 14px 20px;
  border: 1px solid rgba(248,243,234,.18);
  border-left: 0;
  background:
    linear-gradient(180deg, #151515 0 17px, #050505 17px calc(100% - 17px), #151515 calc(100% - 17px)),
    #050505;
  color: rgba(248,243,234,.64);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03), 0 12px 28px rgba(0,0,0,.36);
  clip-path: none;
}
.hero-project-row:first-child .hero-project-link { border-left: 1px solid rgba(248,243,234,.18); }
.hero-project-link::before,
.hero-project-link::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  height: 17px;
  background:
    radial-gradient(circle at 12px 50%, rgba(248,243,234,.78) 0 3px, transparent 3.5px) 0 0 / 24px 17px repeat-x,
    linear-gradient(90deg, rgba(255,255,255,.12), rgba(255,255,255,.02));
  opacity: .9;
}
.hero-project-link::before { top: 0; }
.hero-project-link::after { bottom: 0; }
.hero-project-link:hover,
.hero-project-link:focus-visible,
.hero-project-link.is-active {
  color: #f8f3ea;
  border-color: rgba(255,59,48,.66);
  transform: translateY(-8px);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.04),
    0 0 0 1px rgba(255,59,48,.35),
    0 20px 34px rgba(0,0,0,.48),
    0 0 24px rgba(255,59,48,.18);
}
.hero-data {
  position: relative;
  z-index: 1;
  font-size: clamp(9px, .72vw, 11px);
  letter-spacing: .08em;
}
.hero-number { grid-column: 1; grid-row: 1; color: rgba(255,59,48,.92); }
.hero-name {
  grid-column: 2;
  grid-row: 1 / 3;
  align-self: start;
  font-size: clamp(12px, .95vw, 15px);
  line-height: 1.2;
  white-space: normal;
  color: rgba(248,243,234,.88);
}
.hero-kind { grid-column: 1; grid-row: 3; align-self: end; color: rgba(248,243,234,.42); }
.hero-label { grid-column: 2; grid-row: 3; align-self: end; color: rgba(248,243,234,.62); }
.hero-domain { display: none; }
.hero-project-link:hover .hero-name,
.hero-project-link:hover .hero-kind,
.hero-project-link:hover .hero-label,
.hero-project-link:focus-visible .hero-name,
.hero-project-link:focus-visible .hero-kind,
.hero-project-link:focus-visible .hero-label,
.hero-project-link.is-active .hero-name,
.hero-project-link.is-active .hero-kind,
.hero-project-link.is-active .hero-label {
  width: auto;
  max-width: 100%;
  justify-self: stretch;
  background: transparent;
  color: #f8f3ea;
  padding: 0;
  box-shadow: none;
}
.hero-preview-caption {
  left: clamp(24px, 3vw, 46px);
  right: auto;
  bottom: clamp(154px, 16vh, 196px);
  transform: none;
  width: min(28vw, 360px);
  grid-template-columns: 82px 1fr;
  color: #f8f3ea;
}
.hero-preview-caption span,
.hero-preview-caption em { color: rgba(255,59,48,.82); }
.hero-preview-caption em { color: rgba(248,243,234,.55); }
.hero-corner.top-left .corner-square { background: #FF3B30; box-shadow: 0 0 18px rgba(255,59,48,.72); }
.hero-corner.bottom-left,
.hero-corner.bottom-right { display: none; }
@media(max-width:980px) {
  .hero-print { top: 38%; width: min(92vw, 820px); }
  .hero-index { bottom: 18px; width: calc(100vw - 26px); }
  .hero-project-list { justify-content: flex-start; }
  .hero-project-row { flex-basis: 188px; }
  .hero-project-link { min-height: 96px; }
  .hero-preview-caption { display: none; }
}
@media(max-width:680px) {
  .hero-print { top: 35%; width: calc(100vw - 22px); }
  .print-stage { padding: 8px; }
  .print-paper { padding: 10px; }
  .hero-index { bottom: 10px; }
  .hero-domain-tabs { gap: 8px 12px; margin-bottom: 8px; }
  .hero-project-row { flex-basis: 162px; }
  .hero-project-link { min-height: 82px; padding: 19px 10px 18px; }
  .hero-kind { display: none; }
  .hero-label { grid-column: 1 / -1; }
}

/* Futuristic cockpit portfolio */
.cockpit-hero {
  --tilt-x: 0deg;
  --tilt-y: 0deg;
  --shift-x: 0px;
  --shift-y: 0px;
  --ambient-a: rgba(0,255,255,.26);
  --ambient-b: rgba(255,0,110,.16);
  min-height: 100svh;
  height: 100svh;
  overflow: hidden;
  background: #0A0014;
  color: #FFFFFF;
  font-family: "IBM Plex Mono", "Space Mono", "Courier New", Consolas, monospace;
  letter-spacing: .08em;
  perspective: 1200px;
}
.cockpit-hero::before,
.cockpit-hero::after {
  content: "" !important;
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.cockpit-hero::before {
  z-index: 1;
  background:
    radial-gradient(ellipse at 50% 8%, rgba(0,255,255,.22), transparent 28%),
    radial-gradient(ellipse at 20% 62%, var(--ambient-a), transparent 36%),
    radial-gradient(ellipse at 82% 58%, var(--ambient-b), transparent 34%),
    linear-gradient(180deg, rgba(0,0,0,.06), rgba(0,0,0,.68));
}
.cockpit-hero::after {
  z-index: 5;
  background:
    radial-gradient(ellipse at 50% 52%, transparent 42%, rgba(0,0,0,.34) 74%, rgba(0,0,0,.74) 100%),
    linear-gradient(90deg, rgba(0,0,0,.62), transparent 24% 76%, rgba(0,0,0,.62));
}
.cockpit-ambient,
.cockpit-ambient-image,
.cockpit-ambient-video,
.cockpit-ambient-color {
  position: absolute;
  inset: 0;
}
.cockpit-ambient {
  z-index: 0;
  overflow: hidden;
  background: #0A0014;
}
.cockpit-ambient-image,
.cockpit-ambient-video {
  width: 100%;
  height: 100%;
  opacity: 0;
  object-fit: cover;
  background-position: center;
  background-size: cover;
  filter: blur(18px) saturate(1.32) contrast(1.04) brightness(.82);
  transform: translate(calc(var(--shift-x) * -.55), calc(var(--shift-y) * -.45)) scale(1.16);
  transition: opacity .45s var(--ease), transform .18s ease-out, filter .45s var(--ease);
}
.cockpit-ambient-color {
  background:
    radial-gradient(ellipse at 52% 36%, rgba(255,255,255,.12), transparent 23%),
    radial-gradient(ellipse at 24% 58%, var(--ambient-a), transparent 33%),
    radial-gradient(ellipse at 78% 58%, var(--ambient-b), transparent 34%),
    linear-gradient(180deg, rgba(10,0,20,.2), #0A0014 86%);
  mix-blend-mode: screen;
  opacity: .95;
}
.cockpit-shell {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  transform:
    perspective(1200px)
    rotateX(var(--tilt-y))
    rotateY(var(--tilt-x))
    translate3d(calc(var(--shift-x) * .22), calc(var(--shift-y) * .2), 0);
  transform-origin: 50% 55%;
  transition: transform .14s ease-out;
}
.cockpit-ceiling {
  position: absolute;
  left: 50%;
  top: -5vh;
  width: min(82vw, 1320px);
  height: clamp(110px, 16vh, 190px);
  transform: translateX(-50%);
  border-radius: 0 0 42px 42px;
  background:
    linear-gradient(90deg, transparent, rgba(0,255,255,.18) 18% 20%, transparent 21% 48%, rgba(0,255,255,.22) 49% 51%, transparent 52% 79%, rgba(0,255,255,.18) 80% 82%, transparent),
    linear-gradient(180deg, #182532, #060912 76%);
  border: 1px solid rgba(0,255,255,.15);
  box-shadow: inset 0 -18px 34px rgba(0,0,0,.62), 0 18px 58px rgba(0,0,0,.58);
}
.cockpit-ceiling span {
  position: absolute;
  top: 32%;
  width: clamp(5px, .5vw, 9px);
  height: 46%;
  border-radius: 999px;
  background: #00FFFF;
  box-shadow: 0 0 18px rgba(0,255,255,.78), 0 0 42px rgba(0,255,255,.35);
}
.cockpit-ceiling span:nth-child(1) { left: 31%; transform: rotate(-11deg); }
.cockpit-ceiling span:nth-child(2) { left: 50%; transform: translateX(-50%); }
.cockpit-ceiling span:nth-child(3) { right: 31%; transform: rotate(11deg); }
.cockpit-window {
  position: absolute;
  top: 18vh;
  width: clamp(190px, 24vw, 420px);
  height: clamp(300px, 48vh, 560px);
  border: 2px solid rgba(160,232,255,.2);
  background:
    linear-gradient(135deg, rgba(255,255,255,.08), transparent 34% 64%, rgba(0,255,255,.08)),
    rgba(6,14,26,.34);
  box-shadow:
    inset 0 0 36px rgba(0,0,0,.52),
    inset 0 0 0 1px rgba(255,255,255,.06),
    0 0 34px rgba(0,255,255,.08);
  backdrop-filter: blur(2px);
}
.cockpit-window::before,
.cockpit-window::after {
  content: "";
  position: absolute;
  inset: -18px;
  border: 22px solid rgba(3,8,15,.82);
  box-shadow: inset 0 0 22px rgba(0,255,255,.1), 0 18px 42px rgba(0,0,0,.48);
}
.cockpit-window::after {
  inset: 14px;
  border: 1px solid rgba(0,255,255,.22);
  background: linear-gradient(120deg, rgba(255,255,255,.16), transparent 28% 74%, rgba(255,255,255,.08));
  box-shadow: none;
}
.cockpit-window-left {
  left: max(-64px, -3vw);
  clip-path: polygon(0 4%, 90% 0, 100% 100%, 0 92%);
}
.cockpit-window-right {
  right: max(-64px, -3vw);
  clip-path: polygon(10% 0, 100% 4%, 100% 92%, 0 100%);
}
.cockpit-console {
  position: absolute;
  left: 50%;
  top: clamp(96px, 16vh, 150px);
  width: min(74vw, 1140px);
  transform: translateX(-50%);
  padding: clamp(12px, 1.8vw, 24px);
  border-radius: 34px;
  background:
    linear-gradient(140deg, rgba(255,255,255,.16), transparent 24% 74%, rgba(0,255,255,.12)),
    rgba(5,13,23,.58);
  border: 1px solid rgba(159,238,255,.23);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.06),
    inset 0 0 42px rgba(0,255,255,.08),
    0 30px 90px rgba(0,0,0,.58),
    0 0 46px rgba(0,255,255,.12);
  backdrop-filter: blur(10px);
}
.cockpit-console::before,
.cockpit-console::after {
  content: "";
  position: absolute;
  left: 7%;
  right: 7%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(0,255,255,.72), transparent);
  box-shadow: 0 0 18px rgba(0,255,255,.52);
}
.cockpit-console::before { top: 11px; }
.cockpit-console::after { bottom: 11px; }
.cockpit-screen {
  position: relative;
  aspect-ratio: 16 / 7.2;
  overflow: hidden;
  border-radius: 22px;
  background: rgba(3,6,12,.86);
  border: 1px solid rgba(190,244,255,.32);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.05),
    inset 0 0 58px rgba(0,0,0,.62),
    0 0 32px rgba(0,255,255,.13);
}
.cockpit-screen::before,
.cockpit-screen::after {
  content: "";
  position: absolute;
  z-index: 4;
  pointer-events: none;
}
.cockpit-screen::before {
  left: 5%;
  right: 5%;
  bottom: clamp(14px, 2.2vw, 28px);
  height: 2px;
  background: linear-gradient(90deg, rgba(0,255,255,.8), rgba(255,255,255,.3), transparent);
  box-shadow: 0 0 16px rgba(0,255,255,.46);
  opacity: .62;
}
.cockpit-screen::after {
  right: clamp(18px, 2vw, 30px);
  bottom: clamp(22px, 2.8vw, 40px);
  width: min(17vw, 210px);
  height: min(7vw, 72px);
  border-right: 1px solid rgba(0,255,255,.4);
  border-bottom: 1px solid rgba(0,255,255,.28);
  background:
    linear-gradient(160deg, transparent 48%, rgba(0,255,255,.18) 49% 52%, transparent 53%),
    linear-gradient(12deg, transparent 62%, rgba(255,255,255,.18) 63% 64%, transparent 65%);
  opacity: .66;
}
.cockpit-screen .hero-hover-image,
.cockpit-screen .hero-hover-video {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  opacity: 0;
  object-fit: cover;
  background-position: center;
  background-size: cover;
  filter: saturate(1.08) contrast(1.06) brightness(.92);
  transform: scale(1.045);
  transition: opacity .36s var(--ease), transform .75s var(--ease), filter .36s var(--ease);
}
.cockpit-hero.has-active .cockpit-screen .hero-hover-image,
.cockpit-hero.has-active .cockpit-screen .hero-hover-video {
  transform: scale(1);
}
.cockpit-standby {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  background:
    radial-gradient(ellipse at 50% 45%, rgba(0,255,255,.18), transparent 42%),
    linear-gradient(180deg, rgba(7,14,28,.76), rgba(2,3,10,.95));
  color: rgba(255,255,255,.92);
  transition: opacity .28s var(--ease);
}
.cockpit-standby span {
  color: #00FFFF;
  font-size: clamp(10px, .8vw, 13px);
  font-weight: 900;
}
.cockpit-standby strong {
  font-size: clamp(38px, 5.2vw, 82px);
  line-height: .88;
  font-weight: 900;
  text-shadow: 0 0 18px rgba(0,255,255,.46), 2px 0 rgba(255,0,110,.48);
}
.cockpit-hero.has-active .cockpit-standby { opacity: 0; }
.cockpit-screen-glass {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  background:
    linear-gradient(118deg, rgba(255,255,255,.22), transparent 18% 58%, rgba(255,255,255,.08) 76%, transparent),
    radial-gradient(ellipse at 50% 50%, transparent 58%, rgba(0,0,0,.32));
  mix-blend-mode: screen;
  opacity: .48;
}
.cockpit-dashboard {
  position: absolute;
  left: 50%;
  bottom: -12vh;
  width: min(88vw, 1380px);
  height: clamp(190px, 28vh, 320px);
  transform: translateX(-50%);
  border-radius: 50% 50% 0 0 / 34% 34% 0 0;
  background:
    linear-gradient(90deg, transparent, rgba(0,255,255,.24) 49% 51%, transparent),
    radial-gradient(ellipse at 50% 0%, rgba(0,255,255,.18), transparent 35%),
    linear-gradient(180deg, #182735, #05070d 72%);
  border-top: 1px solid rgba(0,255,255,.22);
  box-shadow: inset 0 24px 48px rgba(255,255,255,.05), 0 -24px 60px rgba(0,0,0,.52);
}
.cockpit-hero .hero-index {
  top: auto;
  bottom: clamp(22px, 4.2vh, 48px);
  left: 50%;
  z-index: 9;
  width: min(82vw, 1040px);
  transform: translateX(-50%) translate3d(calc(var(--shift-x) * .08), calc(var(--shift-y) * .06), 0);
  transition: transform .14s ease-out;
}
.cockpit-hero .hero-domain-tabs {
  justify-content: center;
  margin: 0 0 clamp(12px, 1.6vh, 18px);
  gap: clamp(10px, 1.2vw, 20px);
}
.cockpit-hero .hero-domain-tab {
  padding: 8px 11px;
  border: 1px solid rgba(0,255,255,.18);
  border-radius: 999px;
  background: rgba(2,8,16,.34);
  color: rgba(255,255,255,.62);
  font-size: clamp(9px, .72vw, 12px);
  letter-spacing: .06em;
  box-shadow: inset 0 0 14px rgba(0,255,255,.05);
  backdrop-filter: blur(8px);
}
.cockpit-hero .hero-domain-tab span {
  margin-right: 7px;
  color: rgba(0,255,255,.86);
}
.cockpit-hero .hero-domain-tab.active {
  color: #FFFFFF;
  border-color: rgba(0,255,255,.58);
  background: rgba(0,255,255,.12);
  box-shadow: 0 0 20px rgba(0,255,255,.2), inset 0 0 18px rgba(0,255,255,.1);
}
.cockpit-hero .hero-domain-tab.active::after { content: none; }
.cockpit-hero .hero-project-list {
  width: 100%;
  display: flex;
  justify-content: center;
  gap: clamp(10px, 1vw, 16px);
  overflow-x: auto;
  padding: 2px 4px 14px;
  border: 0;
  scrollbar-width: thin;
  scrollbar-color: rgba(0,255,255,.5) transparent;
}
.cockpit-hero .hero-project-row {
  flex: 0 0 clamp(148px, 14vw, 190px);
  opacity: 1;
  animation: none;
}
.cockpit-hero .hero-project-link {
  min-height: clamp(74px, 9.4vh, 108px);
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: auto 1fr auto;
  gap: 8px;
  padding: 14px 13px 13px;
  border: 1px solid rgba(190,244,255,.25);
  border-radius: 12px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.18), rgba(255,255,255,.03) 34%, rgba(0,255,255,.1)),
    rgba(8,20,34,.54);
  color: rgba(255,255,255,.68);
  text-align: left;
  clip-path: polygon(9% 0, 100% 0, 91% 100%, 0 100%);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.04),
    0 12px 28px rgba(0,0,0,.36);
  backdrop-filter: blur(10px);
}
.cockpit-hero .hero-project-link::before,
.cockpit-hero .hero-project-link::after { content: none; }
.cockpit-hero .hero-project-link:hover,
.cockpit-hero .hero-project-link:focus-visible,
.cockpit-hero .hero-project-link.is-active {
  color: #FFFFFF;
  border-color: rgba(0,255,255,.72);
  transform: translateY(-9px);
  background:
    linear-gradient(145deg, rgba(255,255,255,.2), rgba(0,255,255,.14) 46%, rgba(255,0,110,.12)),
    rgba(7,22,38,.68);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.08),
    0 0 0 1px rgba(0,255,255,.26),
    0 18px 34px rgba(0,0,0,.46),
    0 0 28px rgba(0,255,255,.24);
}
.cockpit-hero .hero-data {
  width: auto;
  max-width: 100%;
  justify-self: stretch;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  background: transparent !important;
  box-shadow: none !important;
  padding: 0 !important;
  color: inherit !important;
  font-size: clamp(8px, .64vw, 10px);
  line-height: 1.05;
  letter-spacing: .07em;
}
.cockpit-hero .hero-number {
  grid-column: 1;
  grid-row: 1;
  color: #00FFFF !important;
  font-variant-numeric: tabular-nums;
}
.cockpit-hero .hero-name {
  grid-column: 1;
  grid-row: 2;
  align-self: center;
  white-space: normal;
  font-size: clamp(12px, .92vw, 15px);
  line-height: 1.18;
  font-weight: 900;
  color: rgba(255,255,255,.9) !important;
}
.cockpit-hero .hero-kind,
.cockpit-hero .hero-label {
  grid-column: 1;
  grid-row: 3;
  color: rgba(255,255,255,.54) !important;
}
.cockpit-hero .hero-label { display: none; }
.cockpit-hero .hero-domain { display: none; }
.cockpit-hero .hero-preview-caption {
  left: 50%;
  top: clamp(116px, 17.5vh, 172px);
  bottom: auto;
  right: auto;
  z-index: 10;
  width: min(60vw, 820px);
  transform: translateX(-50%);
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr);
  gap: 6px 18px;
  color: #FFFFFF;
  pointer-events: none;
  text-align: left;
}
.cockpit-hero .hero-preview-caption span,
.cockpit-hero .hero-preview-caption em {
  font-size: clamp(9px, .66vw, 11px);
  color: rgba(0,255,255,.8);
  font-style: normal;
  font-weight: 900;
  text-transform: uppercase;
}
.cockpit-hero .hero-preview-caption strong {
  grid-column: 2;
  font-size: clamp(16px, 2.1vw, 34px);
  line-height: 1.05;
  font-weight: 900;
  text-transform: uppercase;
  color: #FFFFFF;
  text-shadow: 0 0 18px rgba(0,255,255,.38), 2px 0 rgba(255,0,110,.4);
}
.cockpit-hero .hero-preview-caption em {
  grid-column: 2;
  color: rgba(255,255,255,.55);
}
.cockpit-hero .hero-corners {
  z-index: 11;
  color: rgba(255,255,255,.66);
}
.cockpit-hero .hero-corner.top-left .corner-square {
  background: #00FFFF;
  box-shadow: 0 0 18px rgba(0,255,255,.72);
}
.cockpit-hero .hero-corner.bottom-left,
.cockpit-hero .hero-corner.bottom-right { display: none; }
@media(max-width:980px) {
  .cockpit-hero { min-height: 100svh; height: 100svh; }
  .cockpit-ceiling { width: 100vw; }
  .cockpit-window { top: 20vh; width: 27vw; height: 40vh; opacity: .72; }
  .cockpit-console {
    top: clamp(118px, 19vh, 160px);
    width: min(92vw, 860px);
    padding: 12px;
    border-radius: 24px;
  }
  .cockpit-screen { aspect-ratio: 16 / 8.6; border-radius: 17px; }
  .cockpit-hero .hero-preview-caption {
    top: clamp(134px, 20vh, 176px);
    width: min(78vw, 720px);
    grid-template-columns: 86px 1fr;
  }
  .cockpit-hero .hero-index {
    bottom: 16px;
    width: calc(100vw - 24px);
  }
  .cockpit-hero .hero-project-list { justify-content: flex-start; }
  .cockpit-hero .hero-project-row { flex-basis: 158px; }
  .cockpit-hero .hero-project-link { min-height: 80px; }
}
@media(max-width:680px) {
  .cockpit-window { display: none; }
  .cockpit-ceiling { height: 96px; }
  .cockpit-console {
    top: 112px;
    width: calc(100vw - 18px);
    padding: 8px;
    border-radius: 18px;
  }
  .cockpit-screen { aspect-ratio: 4 / 3; border-radius: 14px; }
  .cockpit-dashboard { height: 190px; bottom: -84px; }
  .cockpit-hero .hero-preview-caption {
    top: 126px;
    width: calc(100vw - 52px);
    grid-template-columns: 1fr;
    gap: 3px;
  }
  .cockpit-hero .hero-preview-caption span { display: none; }
  .cockpit-hero .hero-preview-caption strong,
  .cockpit-hero .hero-preview-caption em { grid-column: 1; }
  .cockpit-hero .hero-preview-caption strong { font-size: clamp(15px, 5vw, 26px); }
  .cockpit-hero .hero-domain-tabs { justify-content: flex-start; overflow-x: auto; padding-bottom: 2px; }
  .cockpit-hero .hero-domain-tab { flex: 0 0 auto; padding: 7px 9px; }
  .cockpit-hero .hero-project-row { flex-basis: 142px; }
  .cockpit-hero .hero-project-link {
    min-height: 74px;
    padding: 12px 11px;
    clip-path: polygon(7% 0, 100% 0, 93% 100%, 0 100%);
  }
}

/* Cockpit composition tuning */
.cockpit-console {
  top: clamp(54px, 8.5vh, 112px);
  width: min(66vw, 1020px);
  padding: clamp(10px, 1.35vw, 18px);
  border-radius: 28px;
}
.cockpit-screen {
  aspect-ratio: 16 / 6.4;
  border-radius: 19px;
}
.cockpit-window {
  top: clamp(112px, 19vh, 230px);
  height: clamp(230px, 38vh, 500px);
}
.cockpit-dashboard {
  bottom: -9vh;
  height: clamp(170px, 25vh, 290px);
}
.cockpit-hero .hero-index {
  bottom: clamp(30px, 5.6vh, 72px);
}
.cockpit-hero .hero-preview-caption {
  top: clamp(76px, 11vh, 138px);
  width: min(50vw, 720px);
}
@media(max-width:980px) {
  .cockpit-console {
    top: clamp(72px, 11vh, 118px);
    width: min(86vw, 820px);
  }
  .cockpit-screen { aspect-ratio: 16 / 7.1; }
  .cockpit-hero .hero-preview-caption {
    top: clamp(88px, 12.4vh, 126px);
    width: min(72vw, 660px);
  }
  .cockpit-hero .hero-index { bottom: 24px; }
}
@media(max-width:680px) {
  .cockpit-console {
    top: 92px;
    width: calc(100vw - 20px);
  }
  .cockpit-screen { aspect-ratio: 4 / 3; }
  .cockpit-hero .hero-preview-caption { top: 108px; }
  .cockpit-hero .hero-index { bottom: 14px; }
}

/* Neon CRT television portfolio */
.tv-hero {
  --tilt-x: 0deg;
  --tilt-y: 0deg;
  --shift-x: 0px;
  --shift-y: 0px;
  --ambient-a: rgba(0,255,255,.28);
  --ambient-b: rgba(255,0,110,.2);
  height: 100svh;
  min-height: 100svh;
  overflow: hidden;
  background: #0A0014;
  color: #FFFFFF;
  font-family: "IBM Plex Mono", "Courier New", Consolas, monospace;
  letter-spacing: .08em;
  isolation: isolate;
  perspective: 1100px;
}
.tv-hero::before,
.tv-hero::after {
  content: "" !important;
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.tv-hero::before {
  z-index: 1;
  background:
    radial-gradient(circle at 50% 55%, rgba(255,0,110,.38), transparent 28%),
    radial-gradient(circle at 28% 34%, rgba(0,255,255,.24), transparent 24%),
    radial-gradient(circle at 76% 24%, rgba(255,176,0,.24), transparent 20%),
    linear-gradient(180deg, rgba(10,0,20,.05), rgba(10,0,20,.72) 86%);
  mix-blend-mode: screen;
}
.tv-hero::after {
  z-index: 5;
  background:
    linear-gradient(90deg, rgba(10,0,20,.58), transparent 22% 78%, rgba(10,0,20,.58)),
    radial-gradient(ellipse at 50% 62%, transparent 35%, rgba(10,0,20,.66) 100%);
}
.tv-ambient,
.tv-ambient-image,
.tv-ambient-video,
.tv-ambient-color {
  position: absolute;
  inset: 0;
}
.tv-ambient {
  z-index: 0;
  overflow: hidden;
  background:
    radial-gradient(circle at 52% 45%, #5D34D0, transparent 35%),
    #0A0014;
}
.tv-ambient-image,
.tv-ambient-video {
  width: 100%;
  height: 100%;
  opacity: 0;
  object-fit: cover;
  background-position: center;
  background-size: cover;
  filter: blur(24px) saturate(1.7) contrast(1.05) brightness(.75);
  transform: translate(calc(var(--shift-x) * -.65), calc(var(--shift-y) * -.48)) scale(1.2);
  transition: opacity .46s var(--ease), transform .16s ease-out, filter .46s var(--ease);
}
.tv-ambient-color {
  background:
    conic-gradient(from 230deg at 50% 48%, rgba(255,0,110,.3), rgba(93,52,208,.24), rgba(0,255,255,.22), rgba(255,176,0,.12), rgba(255,0,110,.3)),
    radial-gradient(circle at 16% 72%, var(--ambient-a), transparent 28%),
    radial-gradient(circle at 84% 62%, var(--ambient-b), transparent 30%);
  mix-blend-mode: screen;
  opacity: .92;
}
.retro-scene {
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
  transform:
    perspective(1100px)
    rotateX(var(--tilt-y))
    rotateY(var(--tilt-x))
    translate3d(calc(var(--shift-x) * .18), calc(var(--shift-y) * .16), 0);
  transform-origin: 50% 58%;
  transition: transform .14s ease-out;
}
.retro-scene::before {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -13vh;
  width: min(94vw, 1280px);
  height: clamp(160px, 24vh, 250px);
  transform: translateX(-50%);
  border-radius: 50% 50% 0 0 / 28% 28% 0 0;
  background:
    linear-gradient(90deg, transparent, rgba(0,255,255,.34) 49% 51%, transparent),
    linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,0,110,.18) 36%, rgba(10,0,20,.86));
  border-top: 1px solid rgba(255,255,255,.24);
  box-shadow: 0 -26px 80px rgba(255,0,110,.32), inset 0 18px 36px rgba(255,255,255,.08);
}
.retro-light {
  position: absolute;
  width: clamp(130px, 18vw, 250px);
  height: clamp(130px, 18vw, 250px);
  border-radius: 50%;
  filter: blur(3px);
  opacity: .86;
}
.retro-light-left {
  left: -3vw;
  top: 8vh;
  background: radial-gradient(circle, rgba(0,255,255,.7), rgba(0,255,255,.08) 58%, transparent 70%);
}
.retro-light-right {
  right: -2vw;
  top: -2vh;
  background: radial-gradient(circle, rgba(255,176,0,.7), rgba(255,0,110,.24) 45%, transparent 72%);
}
.retro-prop {
  position: absolute;
  border: 1px solid rgba(255,255,255,.26);
  background:
    linear-gradient(145deg, rgba(255,255,255,.26), rgba(255,255,255,.05)),
    rgba(255,0,110,.18);
  box-shadow:
    0 0 24px rgba(255,0,110,.36),
    inset 0 0 18px rgba(255,255,255,.08);
}
.prop-mini-screen {
  left: 10vw;
  top: 16vh;
  width: clamp(62px, 7vw, 96px);
  height: clamp(70px, 8vw, 112px);
  border-radius: 18px;
  transform: rotate(-13deg);
}
.prop-mini-screen::before {
  content: "";
  position: absolute;
  inset: 12px 10px 24px;
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(0,255,255,.7), rgba(255,0,110,.52)),
    #0A0014;
  box-shadow: inset 0 0 16px rgba(10,0,20,.7);
}
.prop-polaroid {
  right: 9vw;
  top: 12vh;
  width: clamp(88px, 12vw, 170px);
  height: clamp(62px, 8vw, 112px);
  border-radius: 10px;
  transform: rotate(11deg);
  background: rgba(255,238,255,.56);
}
.prop-polaroid::before {
  content: "";
  position: absolute;
  inset: 9px 9px 20px;
  background:
    linear-gradient(135deg, rgba(255,176,0,.78), rgba(255,0,110,.6), rgba(0,255,255,.36));
  filter: blur(1px);
}
.prop-headphone {
  right: 10vw;
  bottom: 18vh;
  width: clamp(88px, 12vw, 160px);
  height: clamp(88px, 12vw, 160px);
  border-radius: 50%;
  background: transparent;
  border: 10px solid rgba(255,0,110,.42);
  box-shadow: 0 0 30px rgba(255,0,110,.42), inset 0 0 22px rgba(0,255,255,.16);
  transform: rotate(-18deg);
}
.retro-computer {
  position: absolute;
  left: 50%;
  top: clamp(86px, 12vh, 128px);
  width: min(52vw, 690px);
  transform: translateX(-50%);
  filter:
    drop-shadow(0 0 32px rgba(255,0,110,.48))
    drop-shadow(0 34px 54px rgba(10,0,20,.62));
}
.retro-monitor {
  position: relative;
  padding: clamp(24px, 3vw, 40px) clamp(24px, 3vw, 42px) clamp(54px, 6vw, 76px);
  border-radius: 36px 36px 24px 24px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.92), rgba(255,196,255,.86) 50%, rgba(208,172,255,.9)),
    #FFFFFF;
  border: 1px solid rgba(255,255,255,.74);
  box-shadow:
    inset 0 -14px 30px rgba(255,0,110,.18),
    inset 0 0 0 8px rgba(93,52,208,.16),
    0 0 48px rgba(255,0,110,.42);
}
.retro-bezel {
  position: relative;
  padding: clamp(18px, 2vw, 28px);
  border-radius: 22px;
  background:
    linear-gradient(145deg, rgba(93,52,208,.34), rgba(255,0,110,.3)),
    #5D34D0;
  box-shadow:
    inset 0 0 28px rgba(10,0,20,.68),
    0 0 22px rgba(255,0,110,.36);
}
.retro-screen {
  position: relative;
  overflow: hidden;
  aspect-ratio: 4 / 2.55;
  border-radius: 18px / 28px;
  background: #0A0014;
  box-shadow:
    inset 0 0 44px rgba(10,0,20,.92),
    inset 0 0 0 3px rgba(255,255,255,.12),
    0 0 24px rgba(0,255,255,.22);
}
.retro-screen::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
  background:
    repeating-linear-gradient(180deg, rgba(255,255,255,.08) 0 1px, transparent 1px 5px),
    radial-gradient(ellipse at 50% 50%, transparent 55%, rgba(10,0,20,.46));
  mix-blend-mode: screen;
  opacity: .18;
}
.retro-screen .hero-hover-image,
.retro-screen .hero-hover-video {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  opacity: 0;
  pointer-events: none;
  object-fit: cover;
  background-position: center;
  background-size: cover;
  filter: saturate(1.2) contrast(1.07) brightness(.96);
  transform: scale(1.045);
  transition: opacity .34s var(--ease), transform .72s var(--ease), filter .34s var(--ease);
}
.tv-hero.has-active .retro-screen .hero-hover-image,
.tv-hero.has-active .retro-screen .hero-hover-video {
  transform: scale(1);
}
.retro-standby {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  background:
    radial-gradient(circle at 50% 48%, rgba(255,0,110,.34), transparent 42%),
    linear-gradient(135deg, rgba(93,52,208,.92), rgba(10,0,20,.98));
  color: #FFFFFF;
  transition: opacity .26s var(--ease);
}
.retro-standby span {
  color: #00FFFF;
  font-size: clamp(10px, .8vw, 13px);
  font-weight: 900;
}
.retro-standby strong {
  font-size: clamp(28px, 4.5vw, 60px);
  line-height: .86;
  font-weight: 900;
  text-shadow: 3px 0 #FF006E, -3px 0 #00FFFF, 0 0 18px rgba(255,255,255,.58);
}
.tv-hero.has-active .retro-standby { opacity: 0; }
.retro-screen-glass {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  background:
    linear-gradient(120deg, rgba(255,255,255,.42), transparent 18% 64%, rgba(255,255,255,.12)),
    radial-gradient(ellipse at 50% 20%, rgba(255,255,255,.18), transparent 50%);
  mix-blend-mode: screen;
  opacity: .55;
}
.retro-drive {
  position: absolute;
  left: 21%;
  right: 32%;
  bottom: clamp(18px, 2vw, 26px);
  height: clamp(8px, .9vw, 12px);
  border-radius: 999px;
  background:
    linear-gradient(90deg, rgba(10,0,20,.54), rgba(255,255,255,.34), rgba(10,0,20,.42));
  box-shadow: inset 0 0 0 1px rgba(10,0,20,.3);
}
.retro-drive::after {
  content: "";
  position: absolute;
  right: -28%;
  top: -2px;
  width: 18%;
  height: calc(100% + 4px);
  border-radius: 999px;
  background: #FF006E;
  box-shadow: 0 0 14px rgba(255,0,110,.8);
}
.retro-keyboard {
  position: relative;
  width: 76%;
  margin: clamp(12px, 1.5vw, 20px) auto 0;
  display: grid;
  grid-template-columns: repeat(9, 1fr);
  gap: clamp(4px, .5vw, 7px);
  padding: clamp(12px, 1.4vw, 18px);
  border-radius: 15px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.82), rgba(255,196,255,.54)),
    #FFFFFF;
  box-shadow: 0 0 24px rgba(255,0,110,.32), inset 0 -7px 18px rgba(93,52,208,.2);
}
.retro-keyboard span {
  height: clamp(7px, .9vw, 12px);
  border-radius: 4px;
  background: rgba(10,0,20,.26);
  box-shadow: 0 2px 0 rgba(10,0,20,.15), inset 0 1px 0 rgba(255,255,255,.5);
}
.tv-hero .hero-index {
  position: absolute;
  inset: 0;
  z-index: 9;
  width: auto;
  min-height: 0;
  padding: 0;
  display: block;
  transform: translate3d(calc(var(--shift-x) * .08), calc(var(--shift-y) * .05), 0);
  pointer-events: none;
}
.tv-hero .hero-domain-tabs {
  position: absolute;
  left: 50%;
  top: clamp(18px, 3vh, 32px);
  transform: translateX(-50%);
  display: flex;
  justify-content: center;
  gap: clamp(8px, 1vw, 16px);
  margin: 0;
  pointer-events: auto;
}
.tv-hero .hero-domain-tab {
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 999px;
  padding: 8px 12px;
  background: rgba(10,0,20,.28);
  color: rgba(255,255,255,.68);
  font-size: clamp(9px, .72vw, 12px);
  font-family: inherit;
  font-weight: 900;
  letter-spacing: .07em;
  box-shadow: 0 0 18px rgba(255,0,110,.22), inset 0 0 12px rgba(255,255,255,.04);
  backdrop-filter: blur(10px);
}
.tv-hero .hero-domain-tab span { color: #00FFFF; margin-right: 7px; }
.tv-hero .hero-domain-tab.active {
  color: #FFFFFF;
  border-color: rgba(0,255,255,.7);
  background: rgba(0,255,255,.12);
  box-shadow: 0 0 22px rgba(0,255,255,.34), inset 0 0 18px rgba(0,255,255,.12);
}
.tv-hero .hero-domain-tab.active::after { content: none; }
.tv-hero .hero-project-list {
  position: absolute;
  inset: 0;
  width: auto;
  margin: 0;
  padding: 0;
  display: block;
  border: 0;
  overflow: visible;
  list-style: none;
  pointer-events: none;
}
.tv-hero .hero-project-row {
  position: absolute;
  z-index: 12;
  width: clamp(150px, 15vw, 220px);
  opacity: 1;
  animation: tvFloat 5.8s ease-in-out infinite;
  animation-delay: calc(var(--i) * -.7s);
  pointer-events: auto;
}
.tv-hero .hero-project-row:nth-child(1) { left: 9vw; top: 49vh; transform: rotate(-13deg); }
.tv-hero .hero-project-row:nth-child(2) { right: 9vw; top: 21vh; transform: rotate(10deg); }
.tv-hero .hero-project-row:nth-child(3) { left: 18vw; bottom: 8vh; transform: rotate(9deg); }
.tv-hero .hero-project-row:nth-child(4) { right: 18vw; bottom: 10vh; transform: rotate(-8deg); }
.tv-hero .hero-project-row:nth-child(5) { left: 4vw; top: 20vh; transform: rotate(8deg); }
.tv-hero .hero-project-row:nth-child(6) { right: 4vw; top: 52vh; transform: rotate(-12deg); }
.tv-hero .hero-project-link {
  position: relative;
  width: 100%;
  min-height: clamp(96px, 13vh, 132px);
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr);
  grid-template-rows: auto 1fr auto;
  gap: 7px 10px;
  align-items: center;
  padding: 10px;
  border: 1px solid rgba(255,255,255,.34);
  border-radius: 14px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.28), rgba(255,255,255,.08) 38%, rgba(255,0,110,.22)),
    rgba(10,0,20,.42);
  color: rgba(255,255,255,.86);
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  box-shadow:
    0 0 24px rgba(255,0,110,.34),
    0 12px 28px rgba(10,0,20,.46),
    inset 0 0 0 1px rgba(255,255,255,.06);
  backdrop-filter: blur(9px);
  transform: translateZ(0);
  transition: transform .24s var(--ease), border-color .24s var(--ease), box-shadow .24s var(--ease), background .24s var(--ease);
}
.tv-hero .hero-project-link::before,
.tv-hero .hero-project-link::after { content: none; }
.tv-hero .hero-project-link:hover,
.tv-hero .hero-project-link:focus-visible,
.tv-hero .hero-project-link.is-active {
  border-color: rgba(0,255,255,.8);
  background:
    linear-gradient(145deg, rgba(255,255,255,.34), rgba(0,255,255,.18) 44%, rgba(255,0,110,.28)),
    rgba(10,0,20,.5);
  box-shadow:
    0 0 34px rgba(0,255,255,.36),
    0 0 42px rgba(255,0,110,.28),
    0 18px 34px rgba(10,0,20,.52),
    inset 0 0 0 1px rgba(255,255,255,.1);
  transform: translateY(-8px) scale(1.035);
}
.tv-hero .hero-thumb {
  grid-column: 1;
  grid-row: 1 / 4;
  width: 54px;
  height: 72px;
  border-radius: 10px;
  background:
    var(--thumb, linear-gradient(135deg, #FF006E, #00FFFF)),
    linear-gradient(135deg, #FF006E, #00FFFF);
  background-size: cover;
  background-position: center;
  box-shadow: inset 0 0 18px rgba(10,0,20,.45), 0 0 16px rgba(255,255,255,.2);
}
.tv-hero .hero-data {
  display: block;
  width: auto;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  background: transparent !important;
  box-shadow: none !important;
  padding: 0 !important;
  color: inherit !important;
  line-height: 1.05;
  text-transform: uppercase;
}
.tv-hero .hero-number {
  grid-column: 2;
  grid-row: 1;
  color: #00FFFF !important;
  font-size: clamp(9px, .72vw, 12px);
  font-variant-numeric: tabular-nums;
}
.tv-hero .hero-name {
  grid-column: 2;
  grid-row: 2;
  align-self: center;
  white-space: normal;
  color: #FFFFFF !important;
  font-size: clamp(12px, .95vw, 16px);
  line-height: 1.18;
  font-weight: 900;
  text-shadow: 2px 0 rgba(255,0,110,.5), -1px 0 rgba(0,255,255,.4);
}
.tv-hero .hero-kind {
  grid-column: 2;
  grid-row: 3;
  color: rgba(255,255,255,.66) !important;
  font-size: clamp(8px, .62vw, 10px);
}
.tv-hero .hero-label,
.tv-hero .hero-domain { display: none; }
.tv-hero .hero-preview-caption {
  position: absolute;
  left: 50%;
  top: clamp(66px, 8vh, 86px);
  z-index: 10;
  width: min(52vw, 720px);
  transform: translateX(-50%);
  display: grid;
  grid-template-columns: 100px minmax(0, 1fr);
  gap: 5px 16px;
  color: #FFFFFF;
  pointer-events: none;
  text-align: center;
}
.tv-hero .hero-preview-caption span,
.tv-hero .hero-preview-caption em {
  font-size: clamp(9px, .65vw, 11px);
  color: #00FFFF;
  font-style: normal;
  font-weight: 900;
  text-transform: uppercase;
}
.tv-hero .hero-preview-caption span,
.tv-hero .hero-preview-caption em { display: none; }
.tv-hero .hero-preview-caption strong {
  grid-column: 1 / -1;
  font-size: clamp(18px, 2.6vw, 42px);
  line-height: .9;
  font-weight: 900;
  color: #FFFFFF;
  text-shadow: 3px 0 #FF006E, -3px 0 #00FFFF, 0 0 20px rgba(255,255,255,.44);
}
.tv-hero .hero-preview-caption em {
  grid-column: 1 / -1;
  color: rgba(255,255,255,.64);
}
.tv-hero .hero-corners { display: none; }
@keyframes tvFloat {
  0%, 100% { margin-top: 0; }
  50% { margin-top: -12px; }
}
@media(max-width:980px) {
  .retro-computer {
    top: clamp(106px, 15vh, 132px);
    width: min(76vw, 620px);
  }
  .prop-mini-screen,
  .prop-headphone { display: none; }
  .prop-polaroid { right: 4vw; top: 13vh; opacity: .72; }
  .tv-hero .hero-preview-caption { top: 72px; width: min(78vw, 680px); }
  .tv-hero .hero-domain-tabs {
    top: 18px;
    max-width: calc(100vw - 24px);
    overflow-x: auto;
    justify-content: flex-start;
  }
  .tv-hero .hero-domain-tab { flex: 0 0 auto; }
  .tv-hero .hero-project-row { width: clamp(138px, 24vw, 180px); }
  .tv-hero .hero-project-row:nth-child(1) { left: 4vw; top: 53vh; }
  .tv-hero .hero-project-row:nth-child(2) { right: 4vw; top: 51vh; }
  .tv-hero .hero-project-row:nth-child(3) { left: 12vw; bottom: 5vh; }
  .tv-hero .hero-project-row:nth-child(4) { right: 12vw; bottom: 5vh; }
}
@media(max-width:680px) {
  .retro-computer {
    top: 132px;
    width: calc(100vw - 44px);
  }
  .retro-monitor {
    padding: 20px 18px 52px;
    border-radius: 26px 26px 19px 19px;
  }
  .retro-bezel { padding: 14px; }
  .retro-keyboard { width: 86%; }
  .tv-hero .hero-preview-caption {
    top: 76px;
    width: calc(100vw - 24px);
  }
  .tv-hero .hero-preview-caption strong { font-size: clamp(20px, 7.5vw, 34px); }
  .tv-hero .hero-preview-caption span,
  .tv-hero .hero-preview-caption em { display: none; }
  .tv-hero .hero-project-row { width: 142px; }
  .tv-hero .hero-project-row:nth-child(1) { left: 4vw; top: auto; bottom: 18vh; }
  .tv-hero .hero-project-row:nth-child(2) { right: 4vw; top: auto; bottom: 18vh; }
  .tv-hero .hero-project-row:nth-child(3) { left: 8vw; bottom: 4vh; }
  .tv-hero .hero-project-row:nth-child(4) { right: 8vw; bottom: 4vh; }
  .tv-hero .hero-project-link {
    min-height: 78px;
    grid-template-columns: 44px 1fr;
    padding: 8px;
  }
  .tv-hero .hero-thumb {
    width: 44px;
    height: 58px;
  }
}

/* White room retro TV + VHS cassette deck */
.tv-hero {
  --tv-blue: #48BFD0;
  --tv-blue-dark: #2698A8;
  --cassette: #5A4B72;
  --cassette-dark: #261B32;
  height: 100svh;
  min-height: 100svh;
  overflow: hidden;
  background:
    radial-gradient(ellipse at 50% 82%, rgba(72,191,208,.16), transparent 38%),
    linear-gradient(180deg, #FFFFFF 0%, #FFFFFF 72%, #F3F7F8 100%);
  color: #111111;
  font-family: "IBM Plex Mono", "Courier New", Consolas, monospace;
  letter-spacing: .03em;
}
.tv-hero::before {
  content: "" !important;
  position: absolute;
  inset: auto 0 0;
  height: 34vh;
  z-index: 1;
  pointer-events: none;
  background: radial-gradient(ellipse at 50% 100%, rgba(0,0,0,.14), transparent 56%);
  opacity: .7;
}
.tv-hero::after { content: none !important; }
.tv-ambient { display: none; }
.retro-scene {
  z-index: 4;
  transform:
    perspective(1000px)
    rotateX(calc(var(--tilt-y) * .35))
    rotateY(calc(var(--tilt-x) * .35))
    translate3d(calc(var(--shift-x) * .08), calc(var(--shift-y) * .06), 0);
}
.retro-scene::before {
  left: 50%;
  bottom: clamp(118px, 18vh, 170px);
  width: min(62vw, 760px);
  height: 34px;
  transform: translateX(-50%);
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(0,0,0,.18), rgba(0,0,0,.05) 48%, transparent 72%);
  border: 0;
  box-shadow: none;
}
.retro-light,
.retro-prop,
.retro-keyboard { display: none; }
.retro-computer {
  left: 50%;
  top: clamp(48px, 7vh, 72px);
  width: min(62vw, 760px);
  transform: translateX(-50%);
  filter: drop-shadow(0 30px 30px rgba(35,70,77,.22));
}
.retro-computer::before,
.retro-computer::after {
  content: "";
  position: absolute;
  z-index: -1;
  transform-origin: left center;
  pointer-events: none;
}
.retro-computer::before {
  left: 35%;
  top: -42px;
  width: min(34vw, 380px);
  height: 4px;
  border-radius: 999px;
  background: linear-gradient(90deg, #276F78, #9DECF3 70%, #2A7780);
  transform: rotate(-19deg);
  box-shadow: 0 1px 0 rgba(0,0,0,.22);
}
.retro-computer::after {
  left: calc(35% + min(33vw, 370px));
  top: -106px;
  width: 14px;
  height: 8px;
  border: 2px solid #276F78;
  background: #EFFFFF;
  transform: rotate(-19deg);
}
.retro-monitor {
  position: relative;
  min-height: clamp(310px, 43vh, 460px);
  padding:
    clamp(30px, 4vw, 52px)
    clamp(130px, 17vw, 210px)
    clamp(50px, 6vw, 74px)
    clamp(34px, 4.2vw, 56px);
  border-radius: 44px 44px 26px 26px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.18), transparent 22%),
    linear-gradient(135deg, #69D9E7, var(--tv-blue) 52%, var(--tv-blue-dark));
  border: 2px solid rgba(32,126,137,.55);
  box-shadow:
    inset 0 0 0 7px rgba(255,255,255,.18),
    inset 0 -20px 28px rgba(20,120,132,.35),
    0 22px 36px rgba(0,0,0,.16);
}
.retro-monitor::before {
  content: "";
  position: absolute;
  inset: clamp(30px, 4vw, 52px) clamp(28px, 3vw, 40px) clamp(82px, 8vw, 108px) auto;
  width: clamp(86px, 11vw, 132px);
  border-radius: 14px;
  background:
    radial-gradient(circle at 50% 15%, #111 0 18px, transparent 19px),
    radial-gradient(circle at 50% 37%, #F4F4F4 0 19px, transparent 20px),
    radial-gradient(circle, #060606 0 4px, transparent 5px) 0 64% / 16px 16px,
    #1E2528;
  box-shadow:
    inset 0 0 0 3px rgba(0,0,0,.42),
    inset 0 0 18px rgba(255,255,255,.08);
}
.retro-monitor::after {
  content: "";
  position: absolute;
  left: 20%;
  right: 24%;
  bottom: clamp(19px, 2.5vw, 32px);
  height: 18px;
  background:
    linear-gradient(90deg, transparent 0 8%, #0A0A0A 8% 10%, transparent 10% 76%, #0A0A0A 76% 78%, transparent 78%),
    repeating-linear-gradient(90deg, transparent 0 10px, #0A0A0A 10px 13px, transparent 13px 20px);
  opacity: .92;
}
.retro-bezel {
  position: relative;
  padding: clamp(14px, 1.8vw, 22px);
  border-radius: 32px;
  background:
    linear-gradient(145deg, #343C3D, #111717 55%, #4B5452);
  box-shadow:
    inset 0 0 0 3px rgba(0,0,0,.45),
    inset 0 0 32px rgba(0,0,0,.72),
    0 10px 18px rgba(0,0,0,.16);
}
.retro-screen {
  aspect-ratio: 4 / 2.7;
  border-radius: 18% / 24%;
  overflow: hidden;
  background: #121619;
  box-shadow:
    inset 0 0 42px rgba(0,0,0,.9),
    inset 0 0 0 2px rgba(255,255,255,.12);
}
.retro-screen::before {
  background:
    radial-gradient(ellipse at 50% 0%, rgba(255,255,255,.26), transparent 32%),
    radial-gradient(ellipse at 50% 50%, transparent 56%, rgba(0,0,0,.28) 100%);
  opacity: .8;
}
.retro-screen .hero-hover-image,
.retro-screen .hero-hover-video {
  filter: saturate(1.05) contrast(1.02);
  transform: scale(1);
}
.retro-screen .hero-hover-image {
  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;
  background-color: #161A1D;
}
.tv-hero.media-png .retro-screen .hero-hover-image { background-color: #FFFFFF; }
.tv-hero.media-image .retro-screen .hero-hover-image { object-fit: contain; }
.tv-hero.media-video .retro-screen .hero-hover-video { object-fit: cover; }
.retro-screen-glass {
  background:
    linear-gradient(105deg, rgba(255,255,255,.28), transparent 19% 68%, rgba(255,255,255,.12)),
    radial-gradient(ellipse at 50% 10%, rgba(255,255,255,.22), transparent 40%);
  mix-blend-mode: screen;
  opacity: .72;
}
.retro-standby {
  background:
    linear-gradient(180deg, #86A7FF, #5672D8),
    #86A7FF;
  color: #FFFFFF;
}
.retro-standby span { display: none; }
.retro-standby strong {
  font-size: clamp(22px, 3.6vw, 52px);
  color: #FFFFFF;
  text-shadow: 2px 2px 0 rgba(0,0,0,.25);
}
.retro-drive {
  display: block;
  left: auto;
  right: clamp(44px, 5.2vw, 70px);
  bottom: clamp(34px, 4vw, 52px);
  width: clamp(70px, 9vw, 112px);
  height: clamp(20px, 2.4vw, 30px);
  border-radius: 999px;
  background:
    radial-gradient(circle at 28% 50%, #F8F8F8 0 8px, #555 9px 11px, transparent 12px),
    radial-gradient(circle at 72% 50%, #F8F8F8 0 8px, #555 9px 11px, transparent 12px);
  box-shadow: none;
}
.retro-drive::after { content: none; }
.tv-hero .hero-preview-caption {
  display: none;
  top: clamp(18px, 3vh, 28px);
  width: min(74vw, 900px);
  color: #111111;
}
.tv-hero .hero-preview-caption strong {
  color: #111111;
  font-size: clamp(17px, 2vw, 28px);
  line-height: 1.05;
  text-shadow: none;
  letter-spacing: .02em;
}
.tv-hero .hero-domain-tabs {
  top: auto;
  bottom: clamp(24px, 3.5vh, 42px);
  display: none;
}
.tv-hero .hero-project-list {
  position: absolute;
  inset: auto;
  left: 50%;
  top: clamp(520px, 62vh, 740px);
  bottom: auto;
  width: min(92vw, 980px);
  transform: translateX(-50%);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(12px, 1.6vw, 22px);
  overflow: visible;
  pointer-events: auto;
}
.tv-hero .hero-project-row,
.tv-hero .hero-project-row:nth-child(n) {
  position: relative;
  left: auto;
  right: auto;
  top: auto;
  bottom: auto;
  width: auto;
  transform: none;
  animation: none;
}
.tv-hero .hero-project-link {
  min-height: clamp(92px, 13vh, 132px);
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr auto;
  gap: 6px;
  padding: clamp(10px, 1.1vw, 14px);
  border: 2px solid #171221;
  border-radius: 8px;
  background:
    linear-gradient(180deg, #6A5B84 0 13%, #14111B 13% 17%, #5A4B72 17% 90%, #241A2E 90% 100%);
  color: #161616;
  box-shadow:
    0 10px 0 #14111B,
    0 18px 20px rgba(0,0,0,.18);
  backdrop-filter: none;
  transform: translateY(0);
  transition: transform .34s var(--ease), box-shadow .34s var(--ease), filter .34s var(--ease);
}
.tv-hero .hero-project-link::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 8px;
  width: 0;
  height: 0;
  transform: translateX(-50%);
  border-left: 8px solid transparent;
  border-right: 8px solid transparent;
  border-bottom: 10px solid #0A0A0A;
}
.tv-hero .hero-project-link::after {
  content: "";
  position: absolute;
  left: 8%;
  right: 8%;
  top: 34%;
  height: 40%;
  border-radius: 18px;
  background:
    radial-gradient(circle at 17% 50%, #F1DFC4 0 24px, #111 25px 41px, transparent 42px),
    radial-gradient(circle at 83% 50%, #F1DFC4 0 24px, #111 25px 41px, transparent 42px),
    linear-gradient(90deg, rgba(255,255,255,.32), transparent 14% 86%, rgba(255,255,255,.24)),
    #E8D8BD;
  border: 2px solid #23192F;
  pointer-events: none;
}
.tv-hero .hero-project-link:hover,
.tv-hero .hero-project-link:focus-visible {
  border-color: #171221;
  transform: translateY(-14px);
  box-shadow:
    0 14px 0 #14111B,
    0 24px 22px rgba(0,0,0,.2);
}
.tv-hero .hero-project-link.is-active {
  transform: translateY(-34px);
  filter: saturate(1.08);
  box-shadow:
    0 18px 0 #14111B,
    0 32px 26px rgba(0,0,0,.22);
}
.tv-hero .hero-thumb {
  position: relative;
  z-index: 2;
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  justify-self: center;
  width: min(48%, 130px);
  height: clamp(34px, 5vh, 52px);
  border-radius: 3px;
  background-color: #F5EAD2;
  background-size: cover;
  background-position: center;
  box-shadow:
    inset 0 0 0 2px rgba(35,25,47,.25),
    0 0 0 4px #F5EAD2;
}
.tv-hero .hero-data {
  position: relative;
  z-index: 3;
  color: #171221 !important;
  text-align: center;
  text-transform: none;
  text-shadow: none;
}
.tv-hero .hero-number,
.tv-hero .hero-kind,
.tv-hero .hero-label,
.tv-hero .hero-domain { display: none; }
.tv-hero .hero-name {
  grid-column: 1;
  grid-row: 2;
  align-self: end;
  justify-self: center;
  width: min(80%, 180px);
  min-height: 30px;
  padding: 6px 8px !important;
  border-radius: 3px;
  background:
    repeating-linear-gradient(180deg, transparent 0 9px, rgba(0,0,0,.16) 10px 11px, transparent 12px),
    #F2E2C5 !important;
  color: #23192F !important;
  font-size: clamp(10px, .82vw, 13px);
  line-height: 1.18;
  font-weight: 900;
  white-space: normal;
}
@media(max-width:980px) {
  .retro-computer {
    top: clamp(64px, 9vh, 96px);
    width: min(82vw, 700px);
  }
  .retro-monitor {
    min-height: clamp(280px, 40vh, 400px);
    padding-right: clamp(112px, 16vw, 170px);
  }
  .tv-hero .hero-project-list {
    top: clamp(456px, 62vh, 620px);
    width: calc(100vw - 28px);
    gap: 10px;
  }
}
@media(max-width:680px) {
  .retro-computer {
    top: 74px;
    width: calc(100vw - 26px);
  }
  .retro-computer::before,
  .retro-computer::after { display: none; }
  .retro-monitor {
    min-height: 260px;
    padding: 22px 74px 42px 20px;
    border-radius: 28px 28px 20px 20px;
  }
  .retro-monitor::before {
    right: 18px;
    width: 48px;
    background:
      radial-gradient(circle at 50% 16%, #111 0 11px, transparent 12px),
      radial-gradient(circle at 50% 36%, #F4F4F4 0 11px, transparent 12px),
      radial-gradient(circle, #060606 0 3px, transparent 4px) 0 64% / 10px 10px,
      #1E2528;
  }
  .retro-bezel { padding: 9px; border-radius: 20px; }
  .retro-screen { border-radius: 16% / 22%; }
  .retro-drive { display: none; }
  .tv-hero .hero-preview-caption { display: none; }
  .tv-hero .hero-project-list {
    top: auto;
    bottom: 16px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  .tv-hero .hero-project-link {
    min-height: 82px;
    box-shadow: 0 7px 0 #14111B, 0 12px 14px rgba(0,0,0,.16);
  }
  .tv-hero .hero-project-link.is-active { transform: translateY(-16px); }
  .tv-hero .hero-project-link::after { top: 32%; height: 36%; }
  .tv-hero .hero-thumb { height: 30px; }
  .tv-hero .hero-name {
    width: 86%;
    min-height: 24px;
    padding: 4px 6px !important;
  }
}

/* NEON ORIAN inspired full-screen portfolio */
body {
  background: #05070D;
  color: #EAF7FF;
}
.site-nav {
  display: flex;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 50;
  align-items: center;
  justify-content: space-between;
  padding: 18px clamp(18px, 3vw, 42px);
  color: #EAF7FF;
  font-family: var(--mono);
  letter-spacing: .04em;
  mix-blend-mode: normal;
  pointer-events: none;
}
.site-nav > * { pointer-events: auto; }
.brand {
  display: grid;
  gap: 3px;
  text-transform: uppercase;
}
.brand strong {
  color: #00FFFF;
  font-size: clamp(13px, 1vw, 16px);
  text-shadow: 0 0 16px rgba(0,255,255,.6);
}
.brand span {
  color: rgba(234,247,255,.56);
  font-size: 10px;
}
.nav-links {
  display: flex;
  gap: clamp(14px, 2vw, 28px);
  align-items: center;
  padding: 9px 14px;
  border: 1px solid rgba(0,255,255,.18);
  background: rgba(5,7,13,.32);
  backdrop-filter: blur(14px);
}
.nav-links a {
  color: rgba(234,247,255,.72);
  font-size: clamp(10px, .72vw, 12px);
}
.nav-links a:hover { color: #00FFFF; }
.nav-action {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  padding: 0 15px;
  border: 1px solid rgba(255,0,110,.5);
  background: rgba(255,0,110,.16);
  color: #FFFFFF;
  font-size: 11px;
  text-transform: uppercase;
  box-shadow: 0 0 20px rgba(255,0,110,.2);
}
.fixed-cta { display: none; }
.rpg-hero {
  --tilt-x: 0deg;
  --tilt-y: 0deg;
  --shift-x: 0px;
  --shift-y: 0px;
  --ambient-a: rgba(0,255,255,.28);
  --ambient-b: rgba(255,0,110,.2);
  height: 100svh;
  min-height: 100svh;
  overflow: hidden;
  background: #05070D;
  color: #EAF7FF;
  font-family: var(--mono);
  letter-spacing: .03em;
  isolation: isolate;
}
.rpg-hero::before,
.rpg-hero::after {
  content: "" !important;
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.rpg-hero::before {
  z-index: 4;
  background:
    linear-gradient(90deg, rgba(5,7,13,.84), rgba(5,7,13,.18) 38%, rgba(5,7,13,.42) 72%, rgba(5,7,13,.92)),
    linear-gradient(180deg, rgba(5,7,13,.34), rgba(5,7,13,.08) 45%, rgba(5,7,13,.86));
}
.rpg-hero::after {
  z-index: 7;
  background:
    repeating-linear-gradient(180deg, rgba(255,255,255,.055) 0 1px, transparent 1px 5px),
    radial-gradient(ellipse at 50% 50%, transparent 48%, rgba(5,7,13,.72) 100%);
  opacity: .28;
}
.rpg-media,
.rpg-ambient-image,
.rpg-ambient-video,
.rpg-media .hero-hover-image,
.rpg-media .hero-hover-video,
.rpg-media-vignette {
  position: absolute;
  inset: 0;
}
.rpg-media {
  z-index: 0;
  overflow: hidden;
  background: #05070D;
}
.rpg-ambient-image,
.rpg-ambient-video {
  width: 100%;
  height: 100%;
  opacity: 0;
  object-fit: cover;
  background-position: center;
  background-size: cover;
  filter: blur(30px) saturate(1.55) brightness(.62);
  transform: translate(calc(var(--shift-x) * -.7), calc(var(--shift-y) * -.45)) scale(1.18);
  transition: opacity .5s var(--ease), transform .16s ease-out;
}
.rpg-media .hero-hover-image,
.rpg-media .hero-hover-video {
  width: 100%;
  height: 100%;
  opacity: 0;
  pointer-events: none;
  transform: translate(calc(var(--shift-x) * -.3), calc(var(--shift-y) * -.18)) scale(1.04);
  transition: opacity .44s var(--ease), transform .16s ease-out, filter .44s var(--ease);
}
.rpg-media .hero-hover-video {
  object-fit: cover;
  filter: saturate(1.15) contrast(1.08) brightness(.82);
}
.rpg-media .hero-hover-image {
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  filter: saturate(1.15) contrast(1.06) brightness(.78);
}
.rpg-hero.media-image .rpg-media .hero-hover-image {
  background-size: contain;
  background-color: #05070D;
}
.rpg-hero.media-png .rpg-media .hero-hover-image { background-color: #FFFFFF; }
.rpg-hero.has-active .rpg-media .hero-hover-video,
.rpg-hero.has-active .rpg-media .hero-hover-image { transform: translate(calc(var(--shift-x) * -.3), calc(var(--shift-y) * -.18)) scale(1); }
.rpg-media-vignette {
  z-index: 3;
  background:
    radial-gradient(circle at 70% 34%, var(--ambient-a), transparent 28%),
    radial-gradient(circle at 28% 58%, var(--ambient-b), transparent 32%),
    linear-gradient(180deg, rgba(5,7,13,.15), rgba(5,7,13,.86));
  mix-blend-mode: screen;
  opacity: .9;
}
.hero-grid {
  display: block;
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  background:
    linear-gradient(rgba(0,255,255,.08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,255,255,.08) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: linear-gradient(180deg, rgba(0,0,0,.8), transparent 78%);
}
.rpg-orbit {
  position: absolute;
  inset: 0;
  z-index: 6;
  pointer-events: none;
  transform: translate(calc(var(--shift-x) * .14), calc(var(--shift-y) * .08));
  transition: transform .14s ease-out;
}
.rpg-orbit span {
  position: absolute;
  border: 1px solid rgba(0,255,255,.28);
  box-shadow: 0 0 28px rgba(0,255,255,.12);
}
.rpg-orbit span:nth-child(1) {
  width: 34vw;
  height: 34vw;
  right: -8vw;
  top: 12vh;
  border-radius: 50%;
}
.rpg-orbit span:nth-child(2) {
  width: 22vw;
  height: 22vw;
  left: 9vw;
  bottom: 10vh;
  transform: rotate(24deg);
}
.rpg-orbit span:nth-child(3) {
  width: 42vw;
  height: 1px;
  left: 36vw;
  top: 28vh;
  background: linear-gradient(90deg, transparent, rgba(255,0,110,.86), transparent);
  border: 0;
}
.rpg-hero .hero-index {
  position: absolute;
  inset: 0;
  z-index: 10;
  width: auto;
  min-height: 0;
  padding: clamp(84px, 11vh, 118px) clamp(20px, 4vw, 58px) clamp(24px, 4vh, 46px);
  display: grid;
  grid-template-columns: minmax(320px, .9fr) minmax(360px, 1fr);
  grid-template-rows: auto 1fr auto;
  gap: 24px clamp(24px, 5vw, 78px);
  align-items: end;
  text-align: left;
  transform: none;
  pointer-events: none;
}
.rpg-title-block {
  grid-column: 1;
  grid-row: 2;
  align-self: center;
  pointer-events: auto;
}
.rpg-kicker,
.rpg-subtitle {
  margin: 0;
  color: #00FFFF;
  font-size: clamp(10px, .8vw, 13px);
  font-weight: 900;
  text-transform: uppercase;
  text-shadow: 0 0 18px rgba(0,255,255,.45);
}
.rpg-title-block h1 {
  margin: 14px 0;
  color: #FFFFFF;
  font-size: clamp(62px, 11vw, 164px);
  line-height: .76;
  font-weight: 900;
  letter-spacing: 0;
  text-transform: uppercase;
  text-shadow:
    4px 0 #FF006E,
    -4px 0 #00FFFF,
    0 0 28px rgba(255,255,255,.34);
}
.rpg-subtitle { color: rgba(234,247,255,.66); }
.rpg-hero .hero-domain-tabs {
  grid-column: 1 / -1;
  grid-row: 1;
  position: static;
  transform: none;
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin: 0;
  pointer-events: auto;
}
.rpg-hero .hero-domain-tab {
  border: 1px solid rgba(0,255,255,.24);
  border-radius: 0;
  padding: 10px 13px;
  background: rgba(5,7,13,.42);
  color: rgba(234,247,255,.68);
  font-family: var(--mono);
  font-size: clamp(10px, .72vw, 12px);
  font-weight: 900;
  letter-spacing: .04em;
  box-shadow: inset 0 0 18px rgba(0,255,255,.05);
  backdrop-filter: blur(12px);
  cursor: pointer;
}
.rpg-hero .hero-domain-tab span {
  color: #FFB000;
  margin-right: 8px;
}
.rpg-hero .hero-domain-tab.active {
  color: #FFFFFF;
  border-color: rgba(0,255,255,.82);
  background: rgba(0,255,255,.12);
  box-shadow: 0 0 24px rgba(0,255,255,.22), inset 0 0 20px rgba(0,255,255,.1);
}
.rpg-hero .hero-domain-tab.active::after { content: none; }
.rpg-hero .hero-project-list {
  grid-column: 2;
  grid-row: 2 / 4;
  align-self: end;
  justify-self: stretch;
  position: static;
  width: 100%;
  margin: 0;
  padding: 0 0 8px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(12px, 1.4vw, 18px);
  border: 0;
  overflow: visible;
  pointer-events: auto;
  list-style: none;
}
.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n) {
  position: relative;
  inset: auto;
  width: auto;
  animation: none;
  transform: none;
}
.rpg-hero .hero-project-link {
  position: relative;
  width: 100%;
  min-height: clamp(132px, 16vh, 178px);
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr);
  grid-template-rows: auto 1fr auto;
  gap: 10px 14px;
  padding: 14px;
  overflow: hidden;
  border: 1px solid rgba(0,255,255,.24);
  border-radius: 0;
  background:
    linear-gradient(135deg, rgba(0,255,255,.1), transparent 38%, rgba(255,0,110,.08)),
    rgba(5,7,13,.58);
  color: rgba(234,247,255,.76);
  text-align: left;
  font-family: var(--mono);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.04), 0 18px 34px rgba(0,0,0,.34);
  backdrop-filter: blur(16px);
  cursor: pointer;
  transition: transform .34s var(--ease), border-color .34s var(--ease), box-shadow .34s var(--ease), background .34s var(--ease);
}
.rpg-hero .hero-project-link::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(0,255,255,.18), transparent);
  transform: translateX(-120%);
  transition: transform .55s var(--ease);
}
.rpg-hero .hero-project-link::after { content: none; }
.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible,
.rpg-hero .hero-project-link.is-active {
  transform: translateY(-8px);
  color: #FFFFFF;
  border-color: rgba(0,255,255,.78);
  background:
    linear-gradient(135deg, rgba(0,255,255,.18), transparent 36%, rgba(255,0,110,.16)),
    rgba(5,7,13,.68);
  box-shadow: 0 0 30px rgba(0,255,255,.2), 0 22px 42px rgba(0,0,0,.42);
}
.rpg-hero .hero-project-link:hover::before,
.rpg-hero .hero-project-link:focus-visible::before,
.rpg-hero .hero-project-link.is-active::before { transform: translateX(120%); }
.rpg-hero .hero-thumb {
  grid-column: 1;
  grid-row: 1 / 4;
  width: 88px;
  height: 100%;
  min-height: 100px;
  border-radius: 0;
  background:
    var(--thumb, linear-gradient(135deg, #FF006E, #00FFFF)),
    linear-gradient(135deg, #FF006E, #00FFFF);
  background-size: cover;
  background-position: center;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.12);
  filter: saturate(1.1) contrast(1.05);
}
.rpg-hero .hero-data {
  position: relative;
  z-index: 1;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  background: transparent !important;
  color: inherit !important;
  box-shadow: none !important;
  padding: 0 !important;
  text-transform: uppercase;
}
.rpg-hero .hero-number {
  grid-column: 2;
  grid-row: 1;
  color: #00FFFF !important;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.rpg-hero .hero-name {
  grid-column: 2;
  grid-row: 2;
  align-self: center;
  color: #FFFFFF !important;
  font-size: clamp(17px, 1.4vw, 24px);
  line-height: 1.1;
  font-weight: 900;
  white-space: normal;
  text-shadow: 2px 0 rgba(255,0,110,.44), -2px 0 rgba(0,255,255,.36);
}
.rpg-hero .hero-kind,
.rpg-hero .hero-label {
  grid-column: 2;
  grid-row: 3;
  color: rgba(234,247,255,.58) !important;
  font-size: 11px;
}
.rpg-hero .hero-domain { display: none; }
.rpg-hero .hero-preview-caption {
  position: absolute;
  left: clamp(20px, 4vw, 58px);
  bottom: clamp(24px, 4vh, 46px);
  z-index: 11;
  width: min(42vw, 540px);
  display: grid;
  grid-template-columns: 116px minmax(0, 1fr);
  gap: 6px 16px;
  color: #EAF7FF;
  pointer-events: none;
  text-align: left;
}
.rpg-hero .hero-preview-caption span,
.rpg-hero .hero-preview-caption em {
  color: #00FFFF;
  font-size: 11px;
  font-style: normal;
  font-weight: 900;
  text-transform: uppercase;
}
.rpg-hero .hero-preview-caption strong {
  grid-column: 2;
  grid-row: 1;
  color: #FFFFFF;
  font-size: clamp(16px, 1.3vw, 22px);
  line-height: 1.1;
  text-shadow: 2px 0 rgba(255,0,110,.44), -2px 0 rgba(0,255,255,.36);
}
.rpg-hero .hero-preview-caption em {
  grid-column: 2;
  color: rgba(234,247,255,.58);
}
.rpg-hero .hero-corners {
  z-index: 12;
  display: block;
  color: rgba(234,247,255,.62);
}
.rpg-hero .hero-corner.top-left .corner-square {
  background: #00FFFF;
  box-shadow: 0 0 18px rgba(0,255,255,.72);
}
.profile-section {
  background:
    radial-gradient(circle at 18% 12%, rgba(255,0,110,.18), transparent 28%),
    linear-gradient(135deg, #070A12, #0A0014);
  color: #EAF7FF;
  border-top: 1px solid rgba(0,255,255,.2);
}
.profile-section::before {
  color: rgba(0,255,255,.08);
  content: "SYSTEM UPLINK";
}
.profile-kicker { color: #00FFFF; }
.profile-copy h2 {
  color: #FFFFFF;
  text-shadow: 3px 0 rgba(255,0,110,.42), -3px 0 rgba(0,255,255,.32);
}
.profile-text,
.profile-info dd { color: rgba(234,247,255,.7); }
.profile-info div {
  border-color: rgba(0,255,255,.22);
  background: rgba(5,7,13,.45);
}
.domain {
  position: relative;
  background: #05070D;
  color: #EAF7FF;
  border-top: 1px solid rgba(0,255,255,.18);
}
.domain:nth-child(even) {
  background:
    radial-gradient(circle at 80% 10%, rgba(0,255,255,.12), transparent 30%),
    #080B16;
}
.domain-word {
  color: rgba(0,255,255,.08);
  text-shadow: 4px 0 rgba(255,0,110,.08);
}
.domain-kicker { color: #FFB000; }
.domain-head h2 {
  color: #FFFFFF;
  text-shadow: 3px 0 rgba(255,0,110,.38), -3px 0 rgba(0,255,255,.32);
}
.domain-stats span,
.project-meta span {
  border: 1px solid rgba(0,255,255,.22);
  background: rgba(5,7,13,.42);
  color: rgba(234,247,255,.68);
}
.project-card {
  border: 1px solid rgba(0,255,255,.2);
  background:
    linear-gradient(135deg, rgba(0,255,255,.08), transparent 38%, rgba(255,0,110,.08)),
    rgba(5,7,13,.68);
  color: #EAF7FF;
  border-radius: 0;
  box-shadow: 0 18px 40px rgba(0,0,0,.28);
}
.project-card:hover,
.project-card:focus-visible {
  border-color: rgba(0,255,255,.72);
  box-shadow: 0 0 30px rgba(0,255,255,.18), 0 24px 50px rgba(0,0,0,.36);
}
.project-cover {
  background: #070A12;
}
.project-cover img {
  object-fit: cover;
}
.project-cover video {
  object-fit: cover;
}
.project-body h3 {
  color: #FFFFFF;
}
.open-project {
  border: 1px solid rgba(255,0,110,.42);
  background: rgba(255,0,110,.14);
  color: #FFFFFF;
}
.project-dialog {
  background: rgba(5,7,13,.72);
}
.dialog-shell {
  background: #070A12;
  color: #EAF7FF;
  border: 1px solid rgba(0,255,255,.28);
}
.slide-media {
  background: #05070D;
}
.slide-figure img.slide-media {
  object-fit: contain;
}
.slide-figure {
  background: #05070D;
}
.strip-item {
  border-color: rgba(0,255,255,.26);
  color: #EAF7FF;
}
.strip-item.active {
  background: rgba(0,255,255,.18);
  border-color: #00FFFF;
}
@media(max-width:980px) {
  .site-nav {
    padding: 14px 16px;
  }
  .nav-links {
    display: none;
  }
  .rpg-hero .hero-index {
    padding: 76px 18px 20px;
    grid-template-columns: 1fr;
    grid-template-rows: auto auto 1fr;
    align-items: start;
  }
  .rpg-hero .hero-domain-tabs {
    justify-content: flex-start;
    overflow-x: auto;
  }
  .rpg-title-block {
    grid-column: 1;
    grid-row: 2;
  }
  .rpg-title-block h1 {
    font-size: clamp(54px, 16vw, 112px);
  }
  .rpg-hero .hero-project-list {
    grid-column: 1;
    grid-row: 3;
    align-self: end;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .rpg-hero .hero-preview-caption {
    display: none;
  }
}
@media(max-width:640px) {
  .brand span,
  .nav-action {
    display: none;
  }
  .rpg-hero .hero-index {
    padding-top: 64px;
  }
  .rpg-title-block h1 {
    font-size: clamp(46px, 18vw, 82px);
  }
  .rpg-hero .hero-project-list {
    grid-template-columns: 1fr;
    max-height: 42vh;
    overflow-y: auto;
  }
  .rpg-hero .hero-project-link {
    min-height: 104px;
    grid-template-columns: 72px 1fr;
  }
  .rpg-hero .hero-thumb {
    width: 72px;
    min-height: 78px;
  }
  .rpg-hero .hero-corners {
    display: none;
  }
}

/* Aura generative inspired landing stage */
body {
  background: #0b1f22;
  color: #f7f1df;
  font-family: Inter, "Helvetica Neue", Arial, "Microsoft YaHei", "PingFang SC", sans-serif;
}
.site-nav {
  padding: 20px clamp(18px, 3vw, 38px);
  background: linear-gradient(180deg, rgba(4, 25, 29, .76), rgba(4, 25, 29, 0));
  color: rgba(247, 241, 223, .76);
  font-family: Inter, "Helvetica Neue", Arial, "Microsoft YaHei", sans-serif;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.brand {
  display: flex;
  align-items: center;
  gap: 16px;
}
.brand::before {
  content: "A";
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  color: #f7f1df;
  font-size: 19px;
  font-weight: 800;
  line-height: 1;
}
.brand strong {
  color: #f7f1df;
  font-size: 11px;
  font-weight: 700;
  text-shadow: none;
}
.brand span {
  color: rgba(247, 241, 223, .36);
  font-size: 10px;
}
.nav-links {
  border: 0;
  background: transparent;
  padding: 0;
  gap: clamp(24px, 3.2vw, 44px);
  backdrop-filter: none;
}
.nav-links a {
  color: rgba(247, 241, 223, .44);
  font-size: 10px;
  font-weight: 700;
}
.nav-links a:hover {
  color: #f4c477;
}
.nav-action {
  min-height: 40px;
  border: 0;
  background: #e8bd78;
  color: #173035;
  font-size: 10px;
  font-weight: 800;
  box-shadow: 0 14px 34px rgba(34, 28, 16, .2);
}
.rpg-hero {
  --ambient-a: rgba(96, 170, 178, .42);
  --ambient-b: rgba(232, 189, 120, .36);
  background: #284f50;
  color: #f7f1df;
  font-family: Inter, "Helvetica Neue", Arial, "Microsoft YaHei", sans-serif;
  letter-spacing: 0;
}
.rpg-hero::before {
  z-index: 4;
  background:
    radial-gradient(ellipse at 78% 32%, rgba(255, 250, 221, .62) 0 7%, rgba(255, 250, 221, .2) 8% 18%, transparent 31%),
    radial-gradient(ellipse at 19% 67%, rgba(197, 188, 97, .82) 0 19%, rgba(35, 79, 62, .74) 20% 35%, transparent 36%),
    radial-gradient(ellipse at 78% 84%, rgba(15, 54, 45, .88) 0 29%, transparent 30%),
    linear-gradient(180deg, rgba(71, 158, 168, .22), rgba(33, 72, 61, .58) 61%, rgba(7, 26, 24, .72));
  mix-blend-mode: normal;
}
.rpg-hero::after {
  z-index: 7;
  opacity: .52;
  background:
    linear-gradient(180deg, rgba(10, 34, 36, .08), rgba(10, 34, 36, .42)),
    radial-gradient(ellipse at 50% 110%, rgba(0, 0, 0, .56), transparent 58%);
}
.rpg-media {
  background:
    linear-gradient(180deg, #4e9aa3, #254b41 62%, #0d2825);
}
.rpg-ambient-image,
.rpg-ambient-video {
  filter: blur(22px) saturate(1.12) brightness(.9);
  opacity: .55;
  transform: translate(calc(var(--shift-x) * -.45), calc(var(--shift-y) * -.3)) scale(1.12);
}
.rpg-media .hero-hover-video {
  object-fit: cover;
  filter: saturate(1.08) contrast(1.02) brightness(.92);
}
.rpg-media .hero-hover-image {
  background-size: cover;
  filter: saturate(1.04) contrast(1.02) brightness(.9);
}
.rpg-hero.media-image .rpg-media .hero-hover-image {
  background-size: cover;
  background-color: #e8dcc7;
}
.rpg-hero.media-png .rpg-media .hero-hover-image {
  background-color: #f7f1df;
}
.rpg-media-vignette {
  z-index: 3;
  opacity: .78;
  background:
    linear-gradient(180deg, rgba(69, 157, 166, .22) 0 36%, rgba(24, 52, 47, .42) 64%, rgba(9, 26, 23, .66)),
    radial-gradient(ellipse at 50% 52%, transparent 0 28%, rgba(8, 29, 28, .58) 78%);
  mix-blend-mode: normal;
}
.hero-grid,
.rpg-orbit,
.rpg-hero .hero-corners {
  display: none;
}
.rpg-hero .hero-index {
  z-index: 10;
  padding: 86px clamp(22px, 4vw, 54px) 28px;
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: auto 1fr auto;
  align-items: center;
  justify-items: center;
  text-align: center;
  perspective: 1300px;
}
.rpg-title-block {
  grid-column: 1;
  grid-row: 1;
  align-self: start;
  justify-self: center;
  margin-top: 5vh;
  opacity: .94;
}
.rpg-kicker,
.rpg-subtitle {
  color: rgba(247, 241, 223, .62);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .18em;
  text-shadow: none;
}
.rpg-title-block h1 {
  margin: 8px 0 10px;
  color: #f7f1df;
  font-size: clamp(42px, 7vw, 112px);
  line-height: .88;
  font-weight: 500;
  letter-spacing: -.045em;
  text-shadow: 0 18px 48px rgba(0, 0, 0, .26);
}
.rpg-subtitle {
  color: rgba(247, 241, 223, .56);
}
.rpg-hero .hero-domain-tabs {
  position: absolute;
  top: 18px;
  left: 50%;
  transform: translateX(-50%);
  justify-content: center;
  gap: 8px;
  width: min(92vw, 720px);
}
.rpg-hero .hero-domain-tab {
  border: 1px solid rgba(247, 241, 223, .24);
  border-radius: 999px;
  padding: 8px 12px;
  background: rgba(9, 42, 44, .18);
  color: rgba(247, 241, 223, .58);
  font-family: Inter, "Helvetica Neue", Arial, sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
  box-shadow: none;
  backdrop-filter: blur(14px);
}
.rpg-hero .hero-domain-tab span {
  color: rgba(232, 189, 120, .88);
}
.rpg-hero .hero-domain-tab.active {
  color: #173035;
  border-color: rgba(232, 189, 120, .72);
  background: rgba(232, 189, 120, .92);
  box-shadow: 0 18px 42px rgba(26, 43, 37, .22);
}
.rpg-hero .hero-project-list {
  grid-column: 1;
  grid-row: 2;
  align-self: center;
  justify-self: center;
  width: min(82vw, 760px);
  min-height: clamp(300px, 46vh, 520px);
  display: block;
  position: relative;
  margin: 0;
  padding: 0;
  transform-style: preserve-3d;
  pointer-events: auto;
}
.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n) {
  position: absolute;
  left: 50%;
  top: 50%;
  width: clamp(178px, 16vw, 252px);
  height: clamp(244px, 25vw, 344px);
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(var(--card-y))
    rotate(var(--card-rotate))
    translateZ(calc(var(--i) * 18px));
  transform-origin: center bottom;
  transition: transform .62s cubic-bezier(.16, 1, .3, 1), z-index .2s;
  z-index: calc(10 + var(--i));
  animation: auraCardFloat 6s ease-in-out infinite;
  animation-delay: calc(var(--i) * -.8s);
}
.rpg-hero .hero-project-row.is-featured {
  z-index: 40;
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(calc(var(--card-y) - 24px))
    rotate(calc(var(--card-rotate) * .35))
    translateZ(120px)
    scale(1.08);
}
.rpg-hero .hero-project-link {
  width: 100%;
  height: 100%;
  min-height: 0;
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr auto auto;
  gap: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(247, 241, 223, .36);
  border-radius: 22px;
  background: rgba(23, 48, 53, .62);
  color: #f7f1df;
  box-shadow: 0 28px 70px rgba(5, 20, 19, .34);
  backdrop-filter: blur(16px);
  transform: none;
}
.rpg-hero .hero-project-link::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    linear-gradient(180deg, transparent 44%, rgba(0, 0, 0, .5)),
    radial-gradient(circle at 50% 24%, rgba(255, 255, 255, .18), transparent 34%);
  transform: none;
  transition: opacity .4s cubic-bezier(.16, 1, .3, 1);
}
.rpg-hero .hero-project-link::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  border-radius: inherit;
  background-image: radial-gradient(rgba(247, 241, 223, .22) 1px, transparent 1px);
  background-size: 5px 5px;
  opacity: .18;
  pointer-events: none;
}
.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible,
.rpg-hero .hero-project-link.is-active {
  transform: none;
  border-color: rgba(232, 189, 120, .86);
  box-shadow: 0 34px 84px rgba(5, 20, 19, .42);
  background: rgba(23, 48, 53, .72);
}
.rpg-hero .hero-project-link:hover::before,
.rpg-hero .hero-project-link:focus-visible::before,
.rpg-hero .hero-project-link.is-active::before {
  opacity: .82;
  transform: none;
}
.rpg-hero .hero-thumb {
  grid-column: 1;
  grid-row: 1 / 4;
  width: 100%;
  height: 100%;
  min-height: 0;
  border-radius: 0;
  background:
    var(--thumb, linear-gradient(135deg, rgba(232, 189, 120, .95), rgba(92, 166, 166, .9))),
    linear-gradient(135deg, #e8bd78, #5ca6a6);
  background-size: cover;
  background-position: center;
  box-shadow: none;
  filter: saturate(1.04) contrast(1.02);
}
.rpg-hero .hero-data {
  z-index: 4;
  padding: 0 20px !important;
  text-transform: none;
  text-align: left;
}
.rpg-hero .hero-number {
  grid-column: 1;
  grid-row: 2;
  color: rgba(232, 189, 120, .95) !important;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .12em;
}
.rpg-hero .hero-name {
  grid-column: 1;
  grid-row: 3;
  align-self: start;
  min-height: 72px;
  color: #fff8e6 !important;
  font-size: clamp(20px, 1.9vw, 34px);
  line-height: 1.02;
  font-weight: 600;
  letter-spacing: -.045em;
  text-shadow: 0 10px 28px rgba(0, 0, 0, .44);
  padding-bottom: 22px !important;
}
.rpg-hero .hero-kind {
  display: none;
}
.rpg-hero .hero-label {
  grid-column: 1;
  grid-row: 2;
  align-self: end;
  justify-self: end;
  margin: 0 18px 3px 0;
  color: rgba(247, 241, 223, .7) !important;
  font-size: 10px;
  letter-spacing: .08em;
  text-align: right;
}
.rpg-hero .hero-preview-caption {
  left: clamp(22px, 3vw, 44px);
  bottom: 28px;
  width: auto;
  display: grid;
  grid-template-columns: auto;
  gap: 4px;
  color: rgba(247, 241, 223, .78);
}
.rpg-hero .hero-preview-caption span,
.rpg-hero .hero-preview-caption em {
  color: rgba(247, 241, 223, .54);
  font-family: Inter, "Helvetica Neue", Arial, sans-serif;
  font-size: 10px;
  letter-spacing: .12em;
  text-shadow: none;
}
.rpg-hero .hero-preview-caption strong {
  grid-column: 1;
  color: #f7f1df;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .02em;
  text-shadow: none;
}
.rpg-hero .hero-preview-caption em {
  grid-column: 1;
}
@keyframes auraCardFloat {
  0%, 100% { margin-top: 0; }
  50% { margin-top: -10px; }
}
.profile-section {
  background: #f7f1df;
  color: #173035;
  border-top: 0;
}
.profile-section::before {
  content: "PROFILE";
  color: rgba(23, 48, 53, .06);
}
.profile-kicker,
.profile-copy h2 {
  color: #173035;
  text-shadow: none;
}
.profile-text,
.profile-info dd {
  color: rgba(23, 48, 53, .68);
}
.profile-info div {
  border-color: rgba(23, 48, 53, .14);
  background: rgba(255, 255, 255, .36);
}
@media(max-width:980px) {
  .rpg-hero .hero-index {
    padding: 76px 16px 22px;
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr;
  }
  .rpg-title-block {
    margin-top: 6vh;
  }
  .rpg-title-block h1 {
    font-size: clamp(44px, 14vw, 92px);
  }
  .rpg-hero .hero-domain-tabs {
    top: 12px;
    justify-content: flex-start;
    overflow-x: auto;
    width: calc(100vw - 28px);
  }
  .rpg-hero .hero-project-list {
    width: min(96vw, 620px);
    min-height: 45vh;
  }
  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: clamp(142px, 29vw, 200px);
    height: clamp(202px, 40vw, 276px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .62))
      translateY(var(--card-y))
      rotate(var(--card-rotate));
  }
}
@media(max-width:640px) {
  .site-nav {
    padding: 16px;
  }
  .rpg-title-block {
    margin-top: 9vh;
  }
  .rpg-subtitle {
    max-width: 260px;
    margin-inline: auto;
    line-height: 1.6;
  }
  .rpg-hero .hero-domain-tabs {
    top: 54px;
  }
  .rpg-hero .hero-project-list {
    min-height: 48vh;
    overflow: visible;
  }
  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: min(43vw, 168px);
    height: min(58vw, 230px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .42))
      translateY(calc(var(--card-y) * .65))
      rotate(calc(var(--card-rotate) * .72));
  }
  .rpg-hero .hero-name {
    min-height: 56px;
    font-size: clamp(16px, 4.8vw, 22px);
    padding: 0 14px 16px !important;
  }
  .rpg-hero .hero-number,
  .rpg-hero .hero-label {
    padding-inline: 14px !important;
  }
  .rpg-hero .hero-preview-caption {
    display: none;
  }
}

/* Organic continuity for profile, project sections, and project viewer */
body {
  background: #E8DCC7;
  color: #606C38;
}

.fixed-cta {
  border: 1px solid rgba(96, 108, 56, .2);
  background: rgba(212, 184, 149, .78);
  color: #606C38;
  box-shadow: 0 18px 46px rgba(96, 108, 56, .16);
  backdrop-filter: blur(18px);
}

.profile-section {
  isolation: isolate;
  min-height: 92svh;
  padding: clamp(86px, 11vw, 150px) clamp(22px, 5vw, 72px);
  grid-template-columns: minmax(280px, 44vw) minmax(280px, 560px);
  gap: clamp(34px, 7vw, 110px);
  align-items: center;
  background:
    radial-gradient(ellipse at 18% 16%, rgba(139, 157, 131, .5), transparent 32%),
    radial-gradient(ellipse at 84% 78%, rgba(192, 142, 58, .26), transparent 34%),
    linear-gradient(135deg, #E8DCC7 0%, #D4B895 100%);
  color: #606C38;
  overflow: hidden;
}

.profile-section::before {
  content: "LIUHAI";
  left: clamp(12px, 3vw, 46px);
  top: auto;
  bottom: -2vw;
  color: rgba(96, 108, 56, .09);
  font-family: Inter, "Helvetica Neue", Arial, "Microsoft YaHei", sans-serif;
  font-size: clamp(92px, 20vw, 300px);
  font-weight: 700;
  letter-spacing: -.07em;
  line-height: .72;
}

.profile-section::after {
  content: "";
  position: absolute;
  inset: 8% auto auto 58%;
  z-index: -1;
  width: min(38vw, 460px);
  aspect-ratio: 1;
  border-radius: 50%;
  background:
    radial-gradient(circle at 42% 38%, rgba(232, 220, 199, .72), transparent 32%),
    radial-gradient(circle at 58% 58%, rgba(176, 139, 110, .4), transparent 44%);
  filter: blur(2px);
  animation: organicBreath 8s ease-in-out infinite;
}

.profile-media {
  position: relative;
  min-height: clamp(430px, 52vw, 660px);
  border: 1px solid rgba(96, 108, 56, .16);
  border-radius: 30px;
  background: rgba(232, 220, 199, .58);
  box-shadow: 0 34px 90px rgba(96, 108, 56, .18);
  overflow: hidden;
  transform: rotate(-1.6deg);
}

.profile-media::before {
  content: "";
  position: absolute;
  inset: 18px;
  z-index: 2;
  border: 1px solid rgba(232, 220, 199, .45);
  border-radius: 22px;
  pointer-events: none;
}

.profile-media img {
  width: 100%;
  height: 100%;
  min-height: inherit;
  object-fit: cover;
  filter: saturate(.96) contrast(1.03);
  transform: scale(1.02);
}

.profile-copy {
  position: relative;
  z-index: 2;
  max-width: 620px;
}

.profile-kicker {
  margin-bottom: 18px;
  color: rgba(96, 108, 56, .64);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .16em;
}

.profile-copy h2 {
  color: #606C38;
  font-size: clamp(56px, 9vw, 132px);
  font-weight: 500;
  line-height: .84;
  letter-spacing: -.055em;
}

.profile-text {
  max-width: 520px;
  margin-top: 28px;
  color: rgba(96, 108, 56, .76);
  font-size: clamp(17px, 1.5vw, 23px);
  line-height: 1.7;
}

.profile-info {
  gap: 14px;
  margin-top: 34px;
}

.profile-info div {
  border: 1px solid rgba(96, 108, 56, .16);
  border-radius: 20px;
  background: rgba(232, 220, 199, .46);
  box-shadow: 0 18px 40px rgba(96, 108, 56, .1);
  backdrop-filter: blur(18px);
}

.profile-info dt {
  color: rgba(96, 108, 56, .54);
  font-size: 10px;
  letter-spacing: .14em;
}

.profile-info dd {
  color: #606C38;
  line-height: 1.45;
}

.domain {
  isolation: isolate;
  min-height: auto;
  padding: clamp(94px, 11vw, 154px) clamp(18px, 5vw, 72px) clamp(106px, 12vw, 166px);
  background:
    radial-gradient(ellipse at 12% 12%, rgba(139, 157, 131, .42), transparent 32%),
    radial-gradient(ellipse at 80% 22%, rgba(176, 139, 110, .34), transparent 30%),
    linear-gradient(160deg, #E8DCC7 0%, #D4B895 100%);
  color: #606C38;
  overflow: hidden;
}

.domain:nth-child(even) {
  background:
    radial-gradient(ellipse at 14% 68%, rgba(192, 142, 58, .28), transparent 34%),
    radial-gradient(ellipse at 86% 18%, rgba(139, 157, 131, .54), transparent 36%),
    linear-gradient(150deg, #D4B895 0%, #E8DCC7 72%);
  color: #606C38;
}

.domain::before {
  content: "";
  position: absolute;
  inset: 34px clamp(16px, 3vw, 44px);
  z-index: -1;
  border: 1px solid rgba(96, 108, 56, .13);
  border-radius: 32px;
  pointer-events: none;
}

.domain::after {
  content: "";
  position: absolute;
  right: -12vw;
  bottom: -14vw;
  z-index: -1;
  width: min(58vw, 760px);
  aspect-ratio: 1.18;
  border-radius: 50%;
  background: rgba(139, 157, 131, .3);
  filter: blur(3px);
}

.domain-word {
  left: clamp(12px, 3vw, 44px);
  top: clamp(78px, 9vw, 128px);
  color: rgba(96, 108, 56, .09);
  font-family: Inter, "Helvetica Neue", Arial, "Microsoft YaHei", sans-serif;
  font-size: clamp(82px, 18vw, 260px);
  font-weight: 700;
  letter-spacing: -.075em;
  line-height: .78;
  opacity: 1;
  text-shadow: none;
}

.domain-head {
  max-width: 1320px;
  margin: 0 auto clamp(48px, 8vw, 92px);
  align-items: flex-end;
  color: #606C38;
}

.domain-kicker {
  margin-bottom: 14px;
  color: rgba(96, 108, 56, .58);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .14em;
}

.domain h2,
.domain-head h2 {
  color: #606C38;
  font-size: clamp(58px, 10vw, 154px);
  font-weight: 500;
  line-height: .82;
  letter-spacing: -.065em;
  text-shadow: none;
}

.domain-stats {
  gap: 12px;
}

.domain-stats span,
.project-meta span {
  border: 1px solid rgba(96, 108, 56, .18);
  border-radius: 999px;
  background: rgba(232, 220, 199, .38);
  color: rgba(96, 108, 56, .76);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .08em;
  box-shadow: none;
  backdrop-filter: blur(14px);
}

.project-grid {
  max-width: 1320px;
  margin: 0 auto;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(18px, 2.6vw, 34px);
  align-items: start;
}

.project-card {
  position: relative;
  min-height: 0;
  border: 1px solid rgba(96, 108, 56, .14);
  border-radius: 28px;
  background: rgba(232, 220, 199, .58);
  color: #606C38;
  box-shadow: 0 24px 66px rgba(96, 108, 56, .14);
  backdrop-filter: blur(16px);
  transform: translateY(var(--card-offset)) rotate(var(--card-rotate));
  transition:
    transform .55s cubic-bezier(.16, 1, .3, 1),
    box-shadow .55s cubic-bezier(.16, 1, .3, 1),
    border-color .55s cubic-bezier(.16, 1, .3, 1);
}

.project-card:nth-child(4n + 1) {
  grid-column: span 5;
}

.project-card:nth-child(4n + 2),
.project-card:nth-child(4n + 3) {
  grid-column: span 4;
}

.project-card:nth-child(4n) {
  grid-column: span 3;
}

.project-card:hover,
.project-card:focus-visible {
  border-color: rgba(192, 142, 58, .66);
  box-shadow: 0 34px 92px rgba(96, 108, 56, .22);
  transform: translateY(calc(var(--card-offset) - 18px)) rotate(calc(var(--card-rotate) * .35)) scale(1.015);
}

.project-card::before {
  content: "";
  position: absolute;
  inset: 12px;
  z-index: 2;
  border: 1px solid rgba(232, 220, 199, .44);
  border-radius: 20px;
  pointer-events: none;
}

.project-cover {
  height: clamp(300px, 32vw, 470px);
  border: 0;
  background: #E8DCC7;
  border-radius: 28px 28px 0 0;
}

.project-cover img,
.project-cover video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(.98) contrast(1.03);
  transition: transform .7s cubic-bezier(.16, 1, .3, 1), filter .7s cubic-bezier(.16, 1, .3, 1);
}

.project-card:hover .project-cover img,
.project-card:hover .project-cover video,
.project-card:focus-visible .project-cover img,
.project-card:focus-visible .project-cover video {
  transform: scale(1.045);
  filter: saturate(1.06) contrast(1.02);
}

.doc-cover {
  display: grid;
  place-items: center;
  height: 100%;
  background:
    radial-gradient(circle at 30% 22%, rgba(139, 157, 131, .38), transparent 34%),
    linear-gradient(135deg, #D4B895, #E8DCC7);
  color: #606C38;
  font-size: clamp(42px, 6vw, 86px);
  font-weight: 500;
  letter-spacing: -.04em;
}

.project-body {
  position: relative;
  z-index: 3;
  padding: 24px 24px 28px;
  background: rgba(232, 220, 199, .72);
}

.project-body h3 {
  color: #606C38;
  font-size: clamp(23px, 2.4vw, 42px);
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -.04em;
}

.project-meta {
  margin-top: 18px;
}

.open-project {
  margin-top: 24px;
  min-height: 42px;
  border: 1px solid rgba(96, 108, 56, .18);
  border-radius: 999px;
  background: #C08E3A;
  color: #E8DCC7;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .1em;
  box-shadow: 0 15px 30px rgba(96, 108, 56, .16);
}

.open-project:hover {
  background: #606C38;
  color: #E8DCC7;
}

.project-dialog {
  width: min(1320px, calc(100vw - 26px));
  max-height: calc(100svh - 26px);
  border: 1px solid rgba(96, 108, 56, .18);
  border-radius: 30px;
  background: rgba(232, 220, 199, .72);
  color: #606C38;
  box-shadow: 0 46px 120px rgba(34, 40, 24, .34);
  backdrop-filter: blur(24px);
}

.project-dialog::backdrop {
  background:
    radial-gradient(ellipse at 24% 20%, rgba(139, 157, 131, .32), transparent 34%),
    radial-gradient(ellipse at 82% 76%, rgba(192, 142, 58, .22), transparent 34%),
    rgba(96, 108, 56, .5);
  backdrop-filter: blur(12px);
}

.dialog-shell {
  padding: clamp(18px, 3vw, 36px);
  background:
    radial-gradient(ellipse at 15% 8%, rgba(139, 157, 131, .22), transparent 28%),
    linear-gradient(145deg, rgba(232, 220, 199, .95), rgba(212, 184, 149, .82));
  color: #606C38;
  border-radius: 30px;
}

.dialog-close {
  top: 0;
  width: 44px;
  height: 44px;
  border: 1px solid rgba(96, 108, 56, .2);
  border-radius: 50%;
  background: #E8DCC7;
  color: #606C38;
  box-shadow: 0 16px 34px rgba(96, 108, 56, .14);
}

.dialog-heading {
  margin-bottom: clamp(20px, 3vw, 36px);
}

.dialog-heading span,
.dialog-heading p {
  color: rgba(96, 108, 56, .62);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
}

.dialog-heading h2 {
  max-width: 960px;
  margin: 10px 0 12px;
  color: #606C38;
  font-size: clamp(36px, 6vw, 92px);
  font-weight: 500;
  line-height: .9;
  letter-spacing: -.055em;
}

.slide-viewer {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) 54px;
  gap: clamp(12px, 2vw, 24px);
  align-items: center;
}

.slide-figure {
  border: 1px solid rgba(96, 108, 56, .16);
  border-radius: 26px;
  background: #E8DCC7;
  box-shadow: 0 24px 64px rgba(96, 108, 56, .14);
  overflow: hidden;
}

.slide-media {
  width: 100%;
  max-height: min(68svh, 760px);
  object-fit: contain;
  background: #E8DCC7;
}

.slide-figure figcaption {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 18px 16px;
  color: rgba(96, 108, 56, .68);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
}

.slide-btn {
  width: 54px;
  height: 54px;
  border: 1px solid rgba(96, 108, 56, .18);
  border-radius: 50%;
  background: rgba(212, 184, 149, .62);
  color: #606C38;
  font-size: 30px;
  box-shadow: 0 18px 38px rgba(96, 108, 56, .12);
  transition: transform .3s cubic-bezier(.16, 1, .3, 1), background .3s cubic-bezier(.16, 1, .3, 1);
}

.slide-btn:hover {
  background: #C08E3A;
  color: #E8DCC7;
  transform: translateY(-3px);
}

.slide-strip {
  display: flex;
  gap: 8px;
  margin-top: 18px;
  padding: 12px;
  border: 1px solid rgba(96, 108, 56, .12);
  border-radius: 999px;
  background: rgba(232, 220, 199, .38);
  overflow-x: auto;
}

.strip-item {
  flex: 0 0 auto;
  min-width: 38px;
  height: 38px;
  border: 1px solid rgba(96, 108, 56, .16);
  border-radius: 999px;
  background: transparent;
  color: rgba(96, 108, 56, .72);
  font-size: 11px;
  font-weight: 800;
}

.strip-item.active {
  background: #606C38;
  color: #E8DCC7;
}

.slide-file {
  display: grid;
  place-items: center;
  min-height: 420px;
  border-radius: 26px;
  background:
    radial-gradient(circle at 35% 24%, rgba(139, 157, 131, .34), transparent 34%),
    linear-gradient(135deg, #D4B895, #E8DCC7);
  color: #606C38;
}

.slide-file a {
  color: #606C38;
}

@keyframes organicBreath {
  0%, 100% { transform: translate3d(0, 0, 0) scale(1); opacity: .86; }
  50% { transform: translate3d(-18px, 14px, 0) scale(1.04); opacity: .7; }
}

@media(max-width:980px) {
  .profile-section {
    grid-template-columns: 1fr;
    min-height: auto;
  }

  .profile-media {
    min-height: 430px;
    transform: rotate(-.7deg);
  }

  .domain-head {
    display: block;
  }

  .domain-stats {
    justify-content: flex-start;
    margin-top: 24px;
  }

  .project-card,
  .project-card:nth-child(n) {
    grid-column: span 6;
    transform: none;
  }

  .project-card:hover,
  .project-card:focus-visible {
    transform: translateY(-12px);
  }
}

@media(max-width:680px) {
  .profile-section,
  .domain {
    padding-inline: 16px;
  }

  .profile-media {
    min-height: 340px;
    border-radius: 24px;
  }

  .project-grid {
    display: grid;
    grid-template-columns: 1fr;
  }

  .project-card,
  .project-card:nth-child(n) {
    grid-column: 1;
  }

  .project-cover {
    height: 300px;
  }

  .slide-viewer {
    grid-template-columns: 1fr;
  }

  .slide-btn {
    position: absolute;
    z-index: 5;
    top: 50%;
    background: rgba(212, 184, 149, .82);
  }

  .slide-btn.prev { left: 16px; }
  .slide-btn.next { right: 16px; }

  .dialog-shell {
    padding: 16px;
  }
}

/* Homepage pass: ocean gallery layout */
.site-nav {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) auto minmax(160px, 1fr);
  align-items: center;
  min-height: 58px;
  padding: 0 clamp(20px, 3.2vw, 46px);
  background: rgba(9, 47, 55, .78);
  border-bottom: 1px solid rgba(232, 220, 199, .12);
  color: #E8DCC7;
  backdrop-filter: blur(18px);
}

.brand {
  justify-self: start;
  gap: 14px;
}

.brand::before {
  content: "L";
  width: 18px;
  height: 18px;
  color: #E8DCC7;
  font-size: 15px;
  font-weight: 900;
}

.brand strong {
  color: #E8DCC7;
  font-size: 11px;
  letter-spacing: .16em;
}

.brand span {
  color: rgba(232, 220, 199, .36);
  font-size: 10px;
  letter-spacing: .12em;
}

.nav-links {
  justify-self: center;
  display: flex;
  gap: clamp(18px, 3vw, 44px);
}

.nav-links a {
  color: rgba(232, 220, 199, .48);
  font-size: 10px;
  letter-spacing: .15em;
}

.nav-links a:hover {
  color: #D4B895;
}

.nav-action {
  justify-self: end;
  min-height: 38px;
  padding: 0 22px;
  border-radius: 0;
  background: #D4B895;
  color: #123D45;
  box-shadow: none;
}

.rpg-hero {
  min-height: 100svh;
  background: #123D45;
  color: #E8DCC7;
}

.rpg-media {
  background:
    linear-gradient(180deg, rgba(9, 47, 55, .05), rgba(9, 47, 55, .12)),
    url("assets/hero-main-bg.jpg") center / cover no-repeat;
  filter: brightness(.72) saturate(1.04) contrast(1.02);
  transition: filter .8s cubic-bezier(.16, 1, .3, 1), transform .8s cubic-bezier(.16, 1, .3, 1);
}

.rpg-hero::before {
  z-index: 3;
  background:
    linear-gradient(180deg, rgba(6, 42, 50, .2) 0%, rgba(6, 42, 50, 0) 28%),
    radial-gradient(ellipse at 50% 48%, rgba(232, 220, 199, .08), transparent 35%);
}

.rpg-hero::after {
  z-index: 7;
  opacity: .66;
  background:
    linear-gradient(180deg, rgba(6, 42, 50, .16), rgba(6, 42, 50, .1) 45%, rgba(6, 42, 50, .34)),
    radial-gradient(ellipse at 50% 60%, transparent 0 38%, rgba(6, 42, 50, .42) 78%);
}

.rpg-ambient-image,
.rpg-ambient-video,
.rpg-media .hero-hover-image,
.rpg-media .hero-hover-video {
  visibility: visible;
}

.rpg-media-vignette {
  opacity: 1;
  background:
    linear-gradient(180deg, rgba(6, 42, 50, .14), transparent 28%, rgba(6, 42, 50, .32)),
    linear-gradient(90deg, rgba(6, 42, 50, .2), transparent 24%, transparent 76%, rgba(6, 42, 50, .2));
  transition: opacity .8s cubic-bezier(.16, 1, .3, 1), background .8s cubic-bezier(.16, 1, .3, 1);
}

.rpg-hero.has-active .rpg-media {
  filter: brightness(1.08) saturate(1.12) contrast(1.03);
  transform: scale(1.015);
}

.rpg-hero.has-active .rpg-media-vignette {
  opacity: .72;
  background:
    linear-gradient(180deg, rgba(232, 220, 199, .1), transparent 38%, rgba(6, 42, 50, .14)),
    linear-gradient(90deg, rgba(6, 42, 50, .08), transparent 22%, transparent 78%, rgba(6, 42, 50, .08));
}

.rpg-title-block {
  display: none;
}

.rpg-hero .hero-index {
  padding: 58px clamp(16px, 3vw, 46px) 28px;
  grid-template-rows: 1fr;
  align-items: center;
  justify-items: center;
}

.rpg-hero .hero-domain-tabs {
  top: 13px;
  left: 50%;
  width: auto;
  max-width: 44vw;
  gap: 16px;
  padding: 0;
}

.rpg-hero .hero-domain-tab {
  border: 0;
  border-radius: 4px;
  padding: 3px 5px;
  background: transparent;
  color: rgba(232, 220, 199, .48);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .14em;
  box-shadow: none;
  backdrop-filter: none;
}

.rpg-hero .hero-domain-tab span {
  display: none;
}

.rpg-hero .hero-domain-tab.active {
  border: 1px solid rgba(232, 220, 199, .52);
  background: rgba(9, 47, 55, .24);
  color: #E8DCC7;
  box-shadow: none;
}

.rpg-hero .hero-project-list {
  width: min(82vw, 1180px);
  min-height: clamp(410px, 49vw, 640px);
  margin-top: clamp(20px, 6vh, 90px);
  transform-style: preserve-3d;
}

.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n) {
  width: clamp(190px, 15.8vw, 292px);
  height: clamp(268px, 22vw, 408px);
  z-index: var(--card-z);
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(var(--card-y))
    rotate(var(--card-rotate))
    translateZ(calc(var(--card-z) * 2px))
    scale(var(--card-scale));
  transition: transform .72s cubic-bezier(.16, 1, .3, 1), z-index .1s linear, opacity .5s cubic-bezier(.16, 1, .3, 1);
  animation: oceanCardFloat 7.5s ease-in-out infinite;
  animation-delay: calc(var(--i) * -.65s);
}

.rpg-hero .hero-project-row.is-featured {
  z-index: 90;
  transform:
    translate(-50%, -50%)
    translateX(0)
    translateY(38px)
    rotate(0deg)
    translateZ(220px)
    scale(.78);
  animation-play-state: paused;
}

.rpg-hero.has-active .hero-project-row:not(.is-featured) {
  opacity: .78;
  transform:
    translate(-50%, -50%)
    translateX(calc(var(--card-x) * 1.04))
    translateY(calc(var(--card-y) + 16px))
    rotate(var(--card-rotate))
    translateZ(calc(var(--card-z) * 1px))
    scale(var(--card-scale))
    scale(.9);
}

.rpg-hero .hero-project-link {
  border: 1px solid rgba(232, 220, 199, .36);
  border-radius: 18px;
  background: rgba(9, 47, 55, .54);
  box-shadow: 0 32px 74px rgba(5, 34, 40, .34);
  backdrop-filter: blur(10px);
}

.rpg-hero .hero-project-link::before {
  background:
    linear-gradient(180deg, transparent 34%, rgba(9, 47, 55, .76)),
    radial-gradient(circle at 50% 22%, rgba(232, 220, 199, .2), transparent 32%);
}

.rpg-hero .hero-project-link::after {
  opacity: .13;
  background-image: linear-gradient(rgba(232, 220, 199, .18) 1px, transparent 1px), linear-gradient(90deg, rgba(232, 220, 199, .14) 1px, transparent 1px);
  background-size: 12px 12px;
}

.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible,
.rpg-hero .hero-project-link.is-active {
  border-color: rgba(212, 184, 149, .92);
  background: rgba(9, 47, 55, .64);
  box-shadow: 0 38px 88px rgba(5, 34, 40, .44);
}

.rpg-hero .hero-thumb {
  background-color: #E8DCC7;
  filter: saturate(1.04) contrast(1.02);
}

.rpg-hero .hero-number {
  color: #D4B895 !important;
}

.rpg-hero .hero-name {
  min-height: 66px;
  color: #E8DCC7 !important;
  font-size: clamp(18px, 1.55vw, 31px);
  font-weight: 500;
  letter-spacing: -.04em;
}

.rpg-hero .hero-label {
  color: rgba(232, 220, 199, .72) !important;
}

.rpg-hero .hero-preview-caption {
  left: auto;
  right: clamp(20px, 3vw, 44px);
  bottom: 18px;
  text-align: right;
  opacity: .78;
}

.rpg-hero .hero-preview-caption span,
.rpg-hero .hero-preview-caption strong,
.rpg-hero .hero-preview-caption em {
  color: rgba(232, 220, 199, .58);
}

@keyframes oceanCardFloat {
  0%, 100% { margin-top: 0; filter: brightness(.98); }
  50% { margin-top: -16px; filter: brightness(1.08); }
}

@media(max-width:980px) {
  .site-nav {
    grid-template-columns: 1fr auto;
    gap: 14px;
  }

  .nav-links {
    display: none;
  }

  .rpg-hero .hero-domain-tabs {
    top: 68px;
    max-width: calc(100vw - 28px);
    overflow-x: auto;
    justify-content: flex-start;
  }

  .rpg-hero .hero-project-list {
    width: min(94vw, 720px);
    min-height: 52vh;
    margin-top: 80px;
  }

  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: clamp(148px, 28vw, 210px);
    height: clamp(210px, 38vw, 298px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .62))
      translateY(calc(var(--card-y) * .72))
      rotate(calc(var(--card-rotate) * .8));
  }
}

@media(max-width:640px) {
  .site-nav {
    min-height: 56px;
  }

  .brand span,
  .nav-action {
    display: none;
  }

  .rpg-hero .hero-domain-tabs {
    top: 64px;
    gap: 8px;
  }

  .rpg-hero .hero-domain-tab {
    font-size: 9px;
  }

  .rpg-hero .hero-project-list {
    width: 100vw;
    min-height: 62vh;
    margin-top: 70px;
  }

  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: min(44vw, 166px);
    height: min(61vw, 230px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .44))
      translateY(calc(var(--card-y) * .56))
      rotate(calc(var(--card-rotate) * .72));
  }
}

/* Restore referenced hero composition */
.rpg-hero {
  background: #123D45;
}

.rpg-media {
  background:
    linear-gradient(180deg, #4e9aa3, #254b41 62%, #0d2825);
  filter: none;
  transform: none;
}

.rpg-hero.has-active .rpg-media {
  filter: none;
  transform: none;
}

.rpg-ambient-image,
.rpg-ambient-video {
  filter: blur(22px) saturate(1.12) brightness(.9);
  transform: translate(calc(var(--shift-x) * -.45), calc(var(--shift-y) * -.3)) scale(1.12);
}

.rpg-media .hero-hover-video {
  object-fit: cover;
  filter: saturate(1.08) contrast(1.02) brightness(.92);
}

.rpg-media .hero-hover-image {
  background-size: cover;
  filter: saturate(1.04) contrast(1.02) brightness(.9);
}

.rpg-media-vignette,
.rpg-hero.has-active .rpg-media-vignette {
  opacity: .78;
  background:
    linear-gradient(180deg, rgba(69, 157, 166, .22) 0 36%, rgba(24, 52, 47, .42) 64%, rgba(9, 26, 23, .66)),
    radial-gradient(ellipse at 50% 52%, transparent 0 28%, rgba(8, 29, 28, .58) 78%);
}

.rpg-title-block {
  display: block;
}

.rpg-title-block h1 {
  margin: 8px 0 10px;
  color: #f7f1df;
  font-size: clamp(64px, 8.8vw, 146px);
  line-height: .82;
  font-weight: 500;
  letter-spacing: -.055em;
}

.rpg-kicker,
.rpg-subtitle {
  color: rgba(247, 241, 223, .66);
}

.rpg-hero .hero-domain-tabs {
  display: none;
}

.rpg-hero .hero-index {
  padding: 76px clamp(22px, 4vw, 54px) 30px;
  grid-template-rows: auto 1fr auto;
}

.rpg-title-block {
  grid-row: 1;
  margin-top: clamp(36px, 8vh, 84px);
}

.rpg-hero .hero-project-list {
  grid-row: 2;
  align-self: end;
  width: min(74vw, 900px);
  min-height: clamp(300px, 38vw, 510px);
  margin-top: 0;
  margin-bottom: clamp(32px, 5vh, 72px);
}

.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n) {
  width: clamp(172px, 15vw, 252px);
  height: clamp(244px, 21vw, 352px);
  z-index: var(--card-z);
  transform:
    translate(-50%, -50%)
    translateX(calc(var(--card-x) * .74))
    translateY(calc(var(--card-y) * .68))
    rotate(calc(var(--card-rotate) * .72))
    translateZ(calc(var(--card-z) * 2px))
    scale(var(--card-scale));
  animation: auraCardFloat 6s ease-in-out infinite;
  animation-delay: calc(var(--i) * -.8s);
}

.rpg-hero .hero-project-row.is-featured {
  z-index: 60;
  transform:
    translate(-50%, -50%)
    translateX(0)
    translateY(-6px)
    rotate(0deg)
    translateZ(140px)
    scale(1.08);
  animation-play-state: paused;
}

.rpg-hero.has-active .hero-project-row:not(.is-featured) {
  opacity: 1;
}

.rpg-hero .hero-project-link {
  border-radius: 22px;
  border-color: rgba(247, 241, 223, .36);
  background: rgba(23, 48, 53, .62);
  box-shadow: 0 28px 70px rgba(5, 20, 19, .34);
}

.rpg-hero .hero-preview-caption {
  left: clamp(22px, 3vw, 44px);
  right: auto;
  bottom: 28px;
  text-align: left;
}

.rpg-hero .hero-preview-caption span,
.rpg-hero .hero-preview-caption strong,
.rpg-hero .hero-preview-caption em {
  color: rgba(247, 241, 223, .78);
}

.rpg-hero .hero-preview-caption strong {
  color: #f7f1df;
}

@media(max-width:980px) {
  .rpg-title-block h1 {
    font-size: clamp(52px, 13vw, 104px);
  }

  .rpg-hero .hero-project-list {
    width: min(96vw, 680px);
    min-height: 44vh;
  }

  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: clamp(142px, 29vw, 200px);
    height: clamp(202px, 40vw, 276px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .48))
      translateY(calc(var(--card-y) * .58))
      rotate(calc(var(--card-rotate) * .66))
      scale(var(--card-scale));
  }
}

@media(max-width:640px) {
  .rpg-title-block {
    margin-top: 82px;
  }

  .rpg-title-block h1 {
    font-size: clamp(44px, 17vw, 82px);
  }

  .rpg-hero .hero-project-list {
    min-height: 42vh;
    margin-bottom: 40px;
  }

  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: min(43vw, 168px);
    height: min(58vw, 230px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .34))
      translateY(calc(var(--card-y) * .5))
      rotate(calc(var(--card-rotate) * .58))
      scale(var(--card-scale));
  }
}

/* Aura generative floating-card stage */
body {
  background: #101813;
  color: #e8dcc7;
  font-family: Inter, "Helvetica Neue", Arial, "Microsoft YaHei", "PingFang SC", sans-serif;
}

.site-nav {
  min-height: 52px;
  padding: 0 clamp(22px, 3vw, 42px);
  background: rgba(7, 45, 50, .78);
  border-bottom: 1px solid rgba(232, 220, 199, .13);
  backdrop-filter: blur(18px);
}

.brand::before {
  content: "A";
  color: #e8dcc7;
}

.brand strong,
.nav-links a {
  color: rgba(232, 220, 199, .82);
  font-size: 10px;
  letter-spacing: .12em;
}

.brand span {
  color: rgba(232, 220, 199, .32);
}

.nav-action {
  border-radius: 0;
  background: #d4b895;
  color: #123d45;
  box-shadow: none;
}

.rpg-hero {
  min-height: 100svh;
  background: #3a8b92;
  overflow: hidden;
}

.rpg-media {
  background:
    radial-gradient(ellipse at 20% 78%, #d2bf66 0 17%, #244b34 18% 31%, transparent 32%),
    radial-gradient(ellipse at 74% 73%, #d1bc62 0 16%, #294f31 17% 30%, transparent 31%),
    radial-gradient(ellipse at 50% 103%, #f0cf61 0 11%, #203f28 12% 28%, transparent 29%),
    radial-gradient(ellipse at 89% 67%, #0b342e 0 14%, transparent 15%),
    radial-gradient(circle at 78% 43%, rgba(232, 220, 199, .95) 0 5%, rgba(232, 220, 199, .46) 6% 13%, transparent 22%),
    linear-gradient(180deg, #3d98a2 0%, #73abb0 44%, #7ba889 68%, #173226 100%);
  filter: saturate(1.02) contrast(1.03);
  transform: none;
}

.rpg-media::before {
  content: "";
  position: absolute;
  left: -8vw;
  right: -8vw;
  bottom: -8vh;
  height: 58vh;
  background:
    radial-gradient(ellipse at 16% 44%, rgba(12, 41, 32, .95) 0 24%, transparent 25%),
    radial-gradient(ellipse at 34% 54%, rgba(210, 191, 98, .78) 0 18%, transparent 19%),
    radial-gradient(ellipse at 63% 42%, rgba(203, 191, 96, .78) 0 18%, transparent 19%),
    radial-gradient(ellipse at 84% 54%, rgba(10, 43, 38, .96) 0 25%, transparent 26%);
  filter: saturate(1.14) contrast(1.1);
}

.rpg-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(232, 220, 199, .06) 1px, transparent 1px),
    radial-gradient(rgba(232, 220, 199, .18) 1px, transparent 1px);
  background-size: 100% 260px, 4px 4px;
  opacity: .22;
  pointer-events: none;
}

.rpg-ambient-image,
.rpg-ambient-video,
.rpg-media .hero-hover-image,
.rpg-media .hero-hover-video {
  opacity: 0 !important;
  visibility: hidden;
}

.rpg-media-vignette,
.rpg-hero.has-active .rpg-media-vignette {
  opacity: .56;
  background:
    linear-gradient(180deg, rgba(6, 42, 50, .18), transparent 42%, rgba(6, 42, 50, .28)),
    radial-gradient(ellipse at 50% 58%, transparent 0 38%, rgba(6, 24, 20, .45) 82%);
}

.rpg-title-block,
.rpg-hero .hero-preview-caption,
.rpg-hero .hero-domain-tabs,
.rpg-hero .hero-corners {
  display: none;
}

.rpg-hero .hero-index {
  padding: 52px clamp(20px, 3vw, 44px) 34px;
  grid-template-rows: 1fr;
  align-items: center;
  justify-items: center;
  perspective: 1400px;
}

.rpg-hero .hero-project-list {
  grid-row: 1;
  align-self: center;
  width: min(70vw, 1020px);
  min-height: min(50vw, 570px);
  margin: clamp(36px, 7vh, 86px) 0 0;
}

.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n) {
  width: clamp(150px, 12.8vw, 236px);
  height: clamp(218px, 18.4vw, 336px);
  z-index: var(--card-z);
  transform:
    translate(-50%, -50%)
    translateX(calc(var(--card-x) * .78))
    translateY(calc(var(--card-y) * .45))
    rotate(calc(var(--card-rotate) * .68))
    translateZ(calc(var(--card-z) * 2px))
    scale(var(--card-scale));
  animation: generativeCardBreath 7s ease-in-out infinite;
  animation-delay: calc(var(--i) * -.7s);
}

.rpg-hero .hero-project-row.is-featured {
  z-index: 80;
  transform:
    translate(-50%, -50%)
    translateX(0)
    translateY(-18px)
    rotate(0deg)
    translateZ(170px)
    scale(1.05);
}

.rpg-hero .hero-project-link {
  border: 1px solid rgba(232, 220, 199, .28);
  border-radius: 18px;
  background: rgba(18, 61, 69, .5);
  box-shadow: 0 34px 74px rgba(5, 23, 20, .33);
  backdrop-filter: blur(12px);
}

.rpg-hero .hero-project-link::before {
  background:
    linear-gradient(180deg, transparent 35%, rgba(10, 32, 30, .64)),
    radial-gradient(circle at 52% 26%, rgba(232, 220, 199, .2), transparent 32%);
}

.rpg-hero .hero-project-link::after {
  opacity: .18;
  background-image: radial-gradient(rgba(232, 220, 199, .45) 1px, transparent 1px);
  background-size: 5px 5px;
}

.rpg-hero .hero-name {
  min-height: 62px;
  color: #fff8e6 !important;
  font-size: clamp(18px, 1.65vw, 30px);
  font-weight: 500;
}

.rpg-hero .hero-number,
.rpg-hero .hero-label {
  color: rgba(232, 220, 199, .78) !important;
}

@keyframes generativeCardBreath {
  0%, 100% { margin-top: 0; filter: brightness(.98); }
  50% { margin-top: -13px; filter: brightness(1.07); }
}

.profile-section,
.domain {
  background:
    radial-gradient(ellipse at 18% 20%, rgba(139, 157, 131, .22), transparent 34%),
    radial-gradient(ellipse at 84% 68%, rgba(96, 108, 56, .2), transparent 36%),
    linear-gradient(180deg, #4d4d4b 0%, #2f3430 48%, #0f1a14 100%);
  color: #e8dcc7;
}

.profile-section::before,
.domain-word {
  color: rgba(232, 220, 199, .18);
  opacity: 1;
}

.profile-media,
.project-card {
  border: 1px solid rgba(232, 220, 199, .14);
  border-radius: 0;
  background: rgba(8, 16, 13, .38);
  box-shadow: 0 36px 110px rgba(0, 0, 0, .32);
}

.profile-copy h2,
.domain h2,
.domain-head h2,
.project-body h3 {
  color: #e8dcc7;
}

.profile-text,
.profile-info dd,
.domain-stats span,
.project-meta span {
  color: rgba(232, 220, 199, .68);
}

.domain {
  min-height: 100svh;
  padding-top: clamp(110px, 14vw, 190px);
}

.domain:nth-child(even) {
  background:
    radial-gradient(ellipse at 24% 78%, rgba(139, 157, 131, .28), transparent 36%),
    linear-gradient(180deg, #555552 0%, #1d2c22 52%, #0b120e 100%);
}

.domain::before {
  border-color: rgba(232, 220, 199, .1);
  border-radius: 0;
}

.domain-word {
  top: 18%;
  left: -5vw;
  color: rgba(232, 220, 199, .14);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(160px, 26vw, 430px);
  font-weight: 400;
  letter-spacing: -.1em;
}

.project-grid {
  gap: clamp(44px, 6vw, 92px);
}

.project-card {
  overflow: visible;
  transform: translateY(var(--card-offset));
}

.project-card:nth-child(odd) {
  margin-top: clamp(30px, 6vw, 90px);
}

.project-cover {
  height: clamp(300px, 38vw, 560px);
  border-radius: 0;
  background: #111;
}

.project-cover img,
.project-cover video {
  object-fit: cover;
}

.project-body {
  background: rgba(9, 18, 14, .72);
  padding: 22px 0 0;
}

.open-project {
  border-radius: 0;
  background: transparent;
  color: rgba(232, 220, 199, .76);
  box-shadow: none;
}

.project-dialog {
  width: 100vw;
  height: 100svh;
  max-height: none;
  border: 0;
  border-radius: 0;
  background:
    radial-gradient(ellipse at 45% 0%, rgba(232, 220, 199, .08), transparent 38%),
    linear-gradient(180deg, rgba(80, 80, 78, .98), rgba(16, 21, 17, .98));
  color: #e8dcc7;
  overflow: hidden;
}

.project-dialog::backdrop {
  background: rgba(0, 0, 0, .62);
  backdrop-filter: blur(4px);
}

.dialog-shell {
  height: 100%;
  max-height: none;
  padding: clamp(18px, 3vw, 42px);
  overflow: hidden;
  background: transparent;
  border-radius: 0;
}

.dialog-close {
  position: fixed;
  right: clamp(18px, 3vw, 42px);
  top: clamp(16px, 2.4vw, 34px);
  border-radius: 0;
  background: rgba(232, 220, 199, .14);
  color: #e8dcc7;
  z-index: 20;
}

.dialog-heading {
  position: fixed;
  left: clamp(18px, 3vw, 42px);
  top: clamp(22px, 3vw, 44px);
  z-index: 12;
  max-width: 320px;
  margin: 0;
}

.dialog-heading h2 {
  display: none;
}

.dialog-heading span,
.dialog-heading p {
  color: rgba(232, 220, 199, .54);
  font-size: 11px;
  letter-spacing: .12em;
}

.dialog-media {
  position: relative;
  height: 100%;
}

.viewer-stage-word {
  position: absolute;
  left: 50%;
  top: 48%;
  transform: translate(-50%, -50%);
  color: rgba(232, 220, 199, .2);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(180px, 28vw, 540px);
  line-height: .72;
  letter-spacing: -.12em;
  white-space: nowrap;
  pointer-events: none;
  user-select: none;
}

.slide-viewer {
  position: relative;
  z-index: 4;
  height: 100%;
  display: grid;
  grid-template-columns: 80px minmax(0, 1fr) 80px;
  align-items: center;
  gap: clamp(12px, 3vw, 38px);
}

.slide-figure {
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.slide-media {
  width: min(78vw, 1360px);
  height: min(58svh, 720px);
  margin: 0 auto;
  object-fit: cover;
  background: #111;
  box-shadow: 0 36px 110px rgba(0, 0, 0, .36);
}

.slide-video {
  object-fit: contain;
}

.slide-figure figcaption {
  padding: 14px 0 0;
  color: rgba(232, 220, 199, .62);
}

.slide-btn {
  border-radius: 0;
  border: 1px solid rgba(232, 220, 199, .14);
  background: rgba(232, 220, 199, .08);
  color: #e8dcc7;
}

.slide-strip {
  position: fixed;
  left: 50%;
  bottom: clamp(18px, 3vw, 44px);
  transform: translateX(-50%);
  z-index: 14;
  max-width: min(70vw, 900px);
  border-radius: 0;
  border: 1px solid rgba(232, 220, 199, .12);
  background: rgba(8, 16, 13, .35);
}

.strip-item {
  border-radius: 0;
  border-color: rgba(232, 220, 199, .12);
  color: rgba(232, 220, 199, .7);
}

.strip-item.active {
  background: #d4b895;
  color: #10221b;
}

@media(max-width:900px) {
  .rpg-hero .hero-project-list {
    width: 96vw;
  }

  .slide-viewer {
    grid-template-columns: 1fr;
  }

  .slide-btn {
    position: fixed;
    top: 50%;
    z-index: 16;
  }

  .slide-btn.prev { left: 14px; }
  .slide-btn.next { right: 14px; }

  .slide-media {
    width: min(92vw, 900px);
    height: min(56svh, 620px);
  }
}

/* Current homepage adjustment: equal fan cards with video previews */
.rpg-media {
  background:
    linear-gradient(180deg, rgba(8, 48, 58, .06), rgba(8, 48, 58, .18)),
    url("assets/hero-ocean-bg.webp") center / cover no-repeat;
  filter: brightness(.94) saturate(1.08) contrast(1.02);
}

.rpg-media::before,
.rpg-media::after {
  content: none;
}

.rpg-hero.has-active .rpg-media {
  filter: brightness(1.04) saturate(1.1) contrast(1.03);
  transform: none;
}

.rpg-media-vignette,
.rpg-hero.has-active .rpg-media-vignette {
  opacity: .5;
  background:
    linear-gradient(180deg, rgba(8, 48, 58, .12), transparent 42%, rgba(8, 48, 58, .24)),
    radial-gradient(ellipse at 50% 58%, transparent 0 36%, rgba(6, 30, 32, .32) 82%);
}

.rpg-hero .hero-project-list {
  width: min(78vw, 1080px);
  min-height: clamp(360px, 43vw, 590px);
}

.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n) {
  width: clamp(190px, 15.2vw, 260px);
  height: clamp(276px, 22vw, 374px);
  z-index: var(--card-z);
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(var(--card-y))
    rotate(var(--card-rotate));
  animation: generativeCardBreath 7s ease-in-out infinite;
  animation-delay: calc(var(--i) * -.7s);
}

.rpg-hero .hero-project-row.is-featured {
  z-index: 90;
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(calc(var(--card-y) - 18px))
    rotate(var(--card-rotate));
}

.rpg-hero.has-active .hero-project-row:not(.is-featured) {
  opacity: .92;
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(var(--card-y))
    rotate(var(--card-rotate));
}

.rpg-hero .hero-project-link {
  border-radius: 20px;
  overflow: hidden;
}

.rpg-hero .hero-thumb,
.rpg-hero .hero-thumb-video {
  grid-column: 1;
  grid-row: 1 / 4;
  width: 100%;
  height: 100%;
  min-height: 0;
  border-radius: 0;
  object-fit: cover;
  background:
    var(--thumb, linear-gradient(135deg, rgba(232, 189, 120, .95), rgba(92, 166, 166, .9))),
    linear-gradient(135deg, #e8bd78, #5ca6a6);
  background-size: cover;
  background-position: center;
  box-shadow: none;
  filter: saturate(1.05) contrast(1.02);
}

.rpg-hero .hero-project-link::before {
  background:
    linear-gradient(180deg, transparent 40%, rgba(7, 27, 28, .72)),
    radial-gradient(circle at 50% 22%, rgba(232, 220, 199, .18), transparent 32%);
}

.rpg-hero .hero-name {
  font-size: clamp(17px, 1.45vw, 28px);
}

@media(max-width:980px) {
  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: clamp(148px, 28vw, 210px);
    height: clamp(218px, 40vw, 302px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .56))
      translateY(calc(var(--card-y) * .68))
      rotate(calc(var(--card-rotate) * .82));
  }
}

@media(max-width:640px) {
  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: min(43vw, 166px);
    height: min(62vw, 240px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .38))
      translateY(calc(var(--card-y) * .58))
      rotate(calc(var(--card-rotate) * .7));
  }
}

/* Uniform project windows across every portfolio section */
.domain .project-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 360px));
  justify-content: center;
  align-items: stretch;
  gap: clamp(24px, 3.6vw, 42px);
  max-width: min(1180px, calc(100vw - 40px));
  margin-inline: auto;
}

.domain .project-card,
.domain .project-card:nth-child(n) {
  grid-column: auto !important;
  width: 100%;
  height: clamp(500px, 46vw, 580px);
  min-height: 0;
  margin-top: 0 !important;
  overflow: hidden;
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  transform: none !important;
}

.domain .project-card:hover,
.domain .project-card:focus-visible {
  transform: translateY(-10px) !important;
}

.domain .project-cover {
  width: 100%;
  height: 100% !important;
  min-height: 0;
  aspect-ratio: auto;
  display: grid;
}

.domain .project-cover img,
.domain .project-cover video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.domain .project-cover img[src$=".png"],
.domain .project-cover img[src*=".png?"] {
  background: #fff;
}

.domain .project-body {
  min-height: 158px;
  padding: 18px 0 0;
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 12px;
}

.domain .project-body h3 {
  min-height: 2.2em;
  font-size: clamp(22px, 1.8vw, 28px);
  line-height: 1.1;
}

@media(max-width:760px) {
  .domain .project-grid {
    grid-template-columns: minmax(0, min(100%, 360px));
  }

  .domain .project-card,
  .domain .project-card:nth-child(n) {
    height: 500px;
  }
}

/* Static generative hero cards inspired by the reference stage */
.rpg-hero .hero-project-list {
  width: min(74vw, 1040px);
  min-height: clamp(380px, 44vw, 620px);
}

.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n) {
  width: clamp(198px, 15.8vw, 286px);
  height: clamp(286px, 22vw, 398px);
}

.rpg-hero .hero-project-row.is-featured {
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(calc(var(--card-y) - 22px))
    rotate(calc(var(--card-rotate) * .42))
    scale(1.05);
}

.rpg-hero .hero-project-link {
  border: 1px solid rgba(232, 220, 199, .42);
  border-radius: 30px;
  background: rgba(232, 220, 199, .16);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .22),
    0 34px 86px rgba(3, 31, 36, .42);
  backdrop-filter: blur(12px) saturate(1.08);
}

.rpg-hero .hero-project-link::before {
  background:
    linear-gradient(180deg, rgba(6, 34, 38, .04) 0%, rgba(6, 34, 38, .18) 46%, rgba(4, 24, 27, .82) 100%),
    radial-gradient(circle at 50% 18%, rgba(255, 255, 255, .18), transparent 34%);
}

.rpg-hero .hero-project-link::after {
  opacity: .22;
  background-image: radial-gradient(rgba(255, 248, 230, .78) .75px, transparent .75px);
  background-size: 7px 7px;
  mix-blend-mode: screen;
}

.rpg-hero .hero-thumb,
.rpg-hero .hero-thumb-video {
  background:
    var(--thumb, linear-gradient(135deg, rgba(232, 189, 120, .9), rgba(92, 166, 166, .86))),
    #e8dcc7;
  background-size: cover;
  background-position: center;
  filter: saturate(1.06) contrast(1.02);
}

.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible,
.rpg-hero .hero-project-link.is-active {
  border-color: rgba(255, 248, 230, .86);
  background: rgba(232, 220, 199, .22);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .28),
    0 44px 110px rgba(2, 28, 32, .5);
}

.rpg-hero .hero-data {
  text-shadow: 0 2px 14px rgba(0, 0, 0, .42);
}

.rpg-hero .hero-number,
.rpg-hero .hero-kind,
.rpg-hero .hero-label,
.rpg-hero .hero-domain {
  color: rgba(255, 248, 230, .74) !important;
  font-size: clamp(9px, .68vw, 11px);
  letter-spacing: .16em;
}

.rpg-hero .hero-name {
  min-height: 58px;
  color: #fff8e6 !important;
  font-size: clamp(17px, 1.32vw, 25px);
  font-weight: 500;
}

@media(max-width:980px) {
  .rpg-hero .hero-project-list {
    width: min(94vw, 720px);
  }

  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: clamp(150px, 28vw, 212px);
    height: clamp(218px, 40vw, 304px);
  }
}

@media(max-width:640px) {
  .rpg-hero .hero-project-list {
    width: 100vw;
    min-height: 58vh;
  }

  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: min(43vw, 168px);
    height: min(62vw, 236px);
  }
}

/* Smoother hero card hover, no hard top split on card faces */
.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n) {
  will-change: transform, opacity;
  backface-visibility: hidden;
  transform-style: preserve-3d;
  transition:
    transform .62s cubic-bezier(.22, 1, .36, 1),
    opacity .45s ease;
  animation-name: generativeCardFloatSmooth;
  animation-duration: 8.5s;
  animation-timing-function: cubic-bezier(.42, 0, .2, 1);
}

.rpg-hero.has-active .hero-project-row,
.portfolio-hero.has-active .hero-project-row {
  animation-play-state: running;
}

.rpg-hero .hero-project-link {
  contain: layout paint;
  will-change: transform, box-shadow;
  backface-visibility: hidden;
  transform: translateZ(0);
  transition:
    transform .55s cubic-bezier(.22, 1, .36, 1),
    box-shadow .55s cubic-bezier(.22, 1, .36, 1),
    border-color .55s cubic-bezier(.22, 1, .36, 1),
    background-color .55s cubic-bezier(.22, 1, .36, 1);
  box-shadow: 0 34px 86px rgba(3, 31, 36, .42);
}

.rpg-hero .hero-project-link::before {
  background:
    linear-gradient(180deg, rgba(6, 34, 38, 0) 0%, rgba(6, 34, 38, .04) 34%, rgba(4, 24, 27, .76) 100%);
}

.rpg-hero .hero-project-link::after {
  opacity: .14;
  background-image: radial-gradient(rgba(255, 248, 230, .6) .7px, transparent .7px);
  background-size: 7px 7px;
  mask-image: linear-gradient(180deg, transparent 0%, rgba(0, 0, 0, .68) 18%, #000 100%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, rgba(0, 0, 0, .68) 18%, #000 100%);
}

.rpg-hero .hero-thumb,
.rpg-hero .hero-thumb-video {
  transform: translateZ(0);
  will-change: transform;
  backface-visibility: hidden;
}

.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible,
.rpg-hero .hero-project-link.is-active {
  transform: translate3d(0, -4px, 0);
  box-shadow: 0 44px 100px rgba(2, 28, 32, .48);
}

@keyframes generativeCardFloatSmooth {
  0%, 100% {
    translate: 0 0;
  }

  50% {
    translate: 0 -18px;
  }
}

/* Final clean hero cards: one uninterrupted image per card */
.rpg-media {
  background:
    linear-gradient(180deg, rgba(8, 35, 30, .02), rgba(8, 35, 30, .12)),
    url("assets/222.jpg") center / cover no-repeat !important;
  filter: brightness(.98) saturate(1.02) contrast(1.02);
}

.rpg-media-vignette,
.rpg-hero.has-active .rpg-media-vignette {
  opacity: .34;
  background:
    linear-gradient(180deg, rgba(5, 31, 27, .08), transparent 44%, rgba(5, 31, 27, .24)),
    radial-gradient(ellipse at 50% 58%, transparent 0 46%, rgba(6, 33, 29, .28) 88%);
}

.rpg-hero .hero-project-link {
  border: 0;
  background: transparent !important;
  overflow: hidden;
  box-shadow: 0 34px 86px rgba(8, 37, 32, .34);
}

.rpg-hero .hero-project-link::before,
.rpg-hero .hero-project-link::after {
  content: none !important;
  display: none !important;
  background: none !important;
}

.rpg-hero .hero-thumb,
.rpg-hero .hero-thumb-video {
  grid-column: 1;
  grid-row: 1 / 4;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  background-color: transparent !important;
  background-image: var(--thumb) !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  background-blend-mode: normal !important;
  box-shadow: none !important;
  filter: none !important;
}

.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible,
.rpg-hero .hero-project-link.is-active {
  border: 0;
  background: transparent !important;
  box-shadow: 0 44px 104px rgba(8, 37, 32, .42);
}

.rpg-hero .hero-project-link[data-tone="dark"] .hero-data,
.rpg-hero .hero-project-link[data-tone="dark"] .hero-number,
.rpg-hero .hero-project-link[data-tone="dark"] .hero-kind,
.rpg-hero .hero-project-link[data-tone="dark"] .hero-label,
.rpg-hero .hero-project-link[data-tone="dark"] .hero-name,
.rpg-hero .hero-project-link[data-tone="dark"] .hero-domain {
  color: #111 !important;
  text-shadow: 0 1px 12px rgba(255, 255, 255, .58);
}

.rpg-hero .hero-project-link[data-project="project-2-0"] .hero-thumb {
  background-position: 60% 42% !important;
}

/* Final motion reset: no sticky active state, softer independent breathing */
.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n),
.rpg-hero.has-active .hero-project-row,
.rpg-hero.has-active .hero-project-row:nth-child(n),
.rpg-hero.has-active .hero-project-row:not(.is-featured),
.rpg-hero .hero-project-row.is-featured {
  opacity: 1 !important;
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(var(--card-y))
    rotate(var(--card-rotate)) !important;
  animation: none !important;
  transition: transform .7s cubic-bezier(.22, 1, .36, 1), opacity .42s ease;
  will-change: transform;
}

.rpg-hero .hero-project-link,
.rpg-hero .hero-project-link.is-active {
  animation: heroCardBreathSoft 9.5s cubic-bezier(.42, 0, .2, 1) infinite;
  animation-delay: calc(var(--i) * -.65s);
  border: 0 !important;
  outline: 0;
  background: transparent !important;
  box-shadow: 0 24px 60px rgba(8, 37, 32, .28);
  transform: translateZ(0) !important;
  will-change: translate, scale, box-shadow;
}

.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible,
.rpg-hero .hero-project-link.is-active {
  border: 0 !important;
  outline: 0;
  background: transparent !important;
  box-shadow: 0 30px 72px rgba(8, 37, 32, .34);
  transform: translateZ(0) !important;
}

.rpg-hero .hero-project-link:focus-visible {
  outline: 0 !important;
}

@keyframes heroCardBreathSoft {
  0%, 100% {
    translate: 0 0;
    scale: 1;
  }

  50% {
    translate: 0 -4px;
    scale: 1.008;
  }
}

/* Restore the previous clean-card stage and lift the composition upward */
.rpg-hero .hero-project-list {
  transform: translateY(clamp(-96px, -7vh, -54px));
}

.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n),
.rpg-hero.has-active .hero-project-row,
.rpg-hero.has-active .hero-project-row:nth-child(n),
.rpg-hero.has-active .hero-project-row:not(.is-featured) {
  opacity: 1 !important;
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(var(--card-y))
    rotate(var(--card-rotate)) !important;
  animation: generativeCardFloatSmooth 8.5s cubic-bezier(.42, 0, .2, 1) infinite !important;
  animation-delay: calc(var(--i) * -.65s) !important;
  transition: transform .62s cubic-bezier(.22, 1, .36, 1), opacity .42s ease;
  will-change: transform, opacity;
}

.rpg-hero .hero-project-row.is-featured {
  z-index: 90;
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(calc(var(--card-y) - 22px))
    rotate(calc(var(--card-rotate) * .42))
    scale(1.05) !important;
}

.rpg-hero .hero-project-link,
.rpg-hero .hero-project-link.is-active {
  animation: none !important;
  translate: 0 0;
  scale: 1;
  transform: translateZ(0) !important;
  border: 0 !important;
  outline: 0;
  background: transparent !important;
  box-shadow: 0 34px 86px rgba(8, 37, 32, .34);
}

.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible,
.rpg-hero .hero-project-link.is-active {
  transform: translateZ(0) !important;
  box-shadow: 0 44px 104px rgba(8, 37, 32, .42);
}

/* Final restore: previous lifted card stage */
.rpg-hero .hero-index {
  align-items: start;
}

.rpg-hero .hero-project-list {
  transform: translateY(clamp(-138px, -10vh, -82px)) !important;
}

.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n),
.rpg-hero.has-active .hero-project-row,
.rpg-hero.has-active .hero-project-row:nth-child(n),
.rpg-hero.has-active .hero-project-row:not(.is-featured) {
  opacity: 1 !important;
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(var(--card-y))
    rotate(var(--card-rotate)) !important;
  animation: generativeCardFloatSmooth 8.5s cubic-bezier(.42, 0, .2, 1) infinite !important;
  animation-delay: calc(var(--i) * -.65s) !important;
}

.rpg-hero .hero-project-link,
.rpg-hero .hero-project-link.is-active {
  animation: none !important;
  transform: translateZ(0) !important;
  backdrop-filter: none !important;
  transition:
    box-shadow .28s cubic-bezier(.22, 1, .36, 1),
    filter .28s cubic-bezier(.22, 1, .36, 1);
}

.rpg-hero .hero-project-row.is-featured {
  z-index: 320 !important;
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(calc(var(--card-y) - 96px))
    rotate(calc(var(--card-rotate) * .06))
    scale(1.22) !important;
}

.rpg-hero.has-active .hero-project-row:not(.is-featured) {
  z-index: 40 !important;
  opacity: .68 !important;
  transform:
    translate(-50%, -50%)
    translateX(var(--card-x))
    translateY(calc(var(--card-y) + 14px))
    rotate(calc(var(--card-rotate) * 1.02))
    scale(.92) !important;
}

.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible,
.rpg-hero .hero-project-link.is-active {
  box-shadow: 0 74px 148px rgba(5, 27, 24, .52) !important;
  filter: brightness(1.05) saturate(1.08) contrast(1.02);
}

.rpg-hero .hero-thumb {
  transition: none;
}

.rpg-hero .hero-project-link:hover .hero-thumb,
.rpg-hero .hero-project-link:focus-visible .hero-thumb,
.rpg-hero .hero-project-link.is-active .hero-thumb {
  transform: none;
}

.rpg-media,
.rpg-hero.has-active .rpg-media {
  filter: none !important;
  transform: none !important;
}

.rpg-media .hero-hover-image,
.rpg-media .hero-hover-video {
  will-change: opacity, transform;
  transition:
    opacity .24s ease,
    transform .36s cubic-bezier(.22, 1, .36, 1) !important;
}

/* Fast hero hover response: keep the card lift immediate and move media work off the critical path */
.rpg-hero .hero-project-list {
  contain: layout paint;
}

.rpg-hero .hero-project-row,
.rpg-hero .hero-project-row:nth-child(n),
.rpg-hero.has-active .hero-project-row,
.rpg-hero.has-active .hero-project-row:nth-child(n),
.rpg-hero.has-active .hero-project-row:not(.is-featured),
.rpg-hero .hero-project-row.is-featured {
  transition:
    transform .18s cubic-bezier(.22, 1, .36, 1),
    opacity .16s ease !important;
  will-change: transform;
}

.rpg-hero.is-interacting .hero-project-row,
.rpg-hero.is-interacting .hero-project-row:nth-child(n) {
  animation-play-state: paused !important;
}

.rpg-hero .hero-project-link,
.rpg-hero .hero-project-link.is-active,
.rpg-hero .hero-project-link:hover,
.rpg-hero .hero-project-link:focus-visible {
  box-shadow: 0 24px 54px rgba(5, 27, 24, .3) !important;
  filter: none !important;
  transition: none !important;
}

.rpg-media .hero-hover-image,
.rpg-media .hero-hover-video {
  transition: opacity .12s linear !important;
}

/* Resume profile section */
.profile-resume-section {
  grid-template-columns: minmax(280px, 38vw) minmax(320px, 1fr);
  align-items: center;
  gap: clamp(28px, 5vw, 72px);
  min-height: 100svh;
  padding: clamp(92px, 10vw, 136px) clamp(22px, 5vw, 76px) clamp(78px, 9vw, 120px);
  background:
    radial-gradient(circle at 72% 16%, rgba(212, 184, 149, .16), transparent 24%),
    linear-gradient(135deg, #173035 0%, #123D45 48%, #0f292f 100%);
  color: #E8DCC7;
  overflow: hidden;
}

.profile-resume-section::before {
  content: "刘海";
  color: rgba(232, 220, 199, .08);
  letter-spacing: .04em;
}

.profile-resume-section::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 68% 32%, rgba(232, 220, 199, .18), transparent 0),
    radial-gradient(circle at 24% 78%, rgba(212, 184, 149, .12), transparent 0);
  opacity: .7;
  transform: scale(.92);
  transition: opacity .95s cubic-bezier(.22, 1, .36, 1), transform 1.15s cubic-bezier(.22, 1, .36, 1);
  pointer-events: none;
}

.reveal-block {
  opacity: 0;
  transform: translateY(48px);
  filter: blur(10px);
  transition:
    opacity .85s cubic-bezier(.22, 1, .36, 1),
    transform .95s cubic-bezier(.22, 1, .36, 1),
    filter .95s cubic-bezier(.22, 1, .36, 1);
}

.profile-resume-section .profile-copy.reveal-block {
  transition-delay: .08s;
}

.profile-resume-section .resume-detail.reveal-block {
  transition-delay: .16s;
}

.profile-resume-section.is-visible::after {
  opacity: 1;
  transform: scale(1);
}

.profile-resume-section.is-visible .reveal-block {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

.profile-resume-section .profile-media {
  min-height: clamp(520px, 58vw, 760px);
  border: 1px solid rgba(232, 220, 199, .18);
  border-radius: 8px;
  background: rgba(8, 16, 13, .38);
  box-shadow: 0 42px 120px rgba(4, 18, 20, .34);
}

.profile-resume-section .profile-media::before {
  inset: 16px;
  border-color: rgba(232, 220, 199, .16);
  border-radius: 6px;
}

.profile-resume-section .profile-media img {
  object-fit: cover;
  object-position: 50% 36%;
  filter: saturate(.94) contrast(1.04);
}

.profile-resume-section .profile-copy {
  max-width: 760px;
}

.profile-resume-section .profile-kicker {
  color: rgba(212, 184, 149, .72);
  font-size: 12px;
  letter-spacing: .18em;
}

.profile-resume-section .profile-copy h2 {
  color: #E8DCC7;
  font-family: "Helvetica Neue", Arial, "Microsoft YaHei", "PingFang SC", sans-serif;
  font-size: clamp(68px, 9vw, 128px);
  font-weight: 500;
}

.profile-resume-section .profile-text {
  max-width: 680px;
  color: rgba(232, 220, 199, .78);
  font-size: clamp(18px, 1.65vw, 24px);
  line-height: 1.55;
  font-weight: 760;
}

.profile-resume-section .profile-info {
  gap: 12px;
  border: 0;
}

.profile-resume-section .profile-info div {
  border: 1px solid rgba(232, 220, 199, .16);
  border-radius: 8px;
  background: rgba(232, 220, 199, .1);
  box-shadow: none;
}

.profile-resume-section .profile-info dt {
  color: rgba(212, 184, 149, .68);
}

.profile-resume-section .profile-info dd {
  color: #E8DCC7;
}

.domain .domain-head h2,
.domain h2 {
  font-size: clamp(42px, 6.8vw, 112px) !important;
}

.resume-detail {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  position: relative;
  z-index: 2;
}

.resume-block {
  border: 1px solid rgba(232, 220, 199, .16);
  border-radius: 8px;
  background: rgba(8, 16, 13, .24);
  padding: clamp(18px, 2.2vw, 28px);
}

.resume-block:nth-child(1) {
  grid-row: span 2;
}

.resume-title {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
  border-bottom: 1px solid rgba(212, 184, 149, .28);
  padding-bottom: 12px;
}

.resume-title span {
  color: rgba(212, 184, 149, .62);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.resume-title h3 {
  margin: 0;
  color: #E8DCC7;
  font-size: clamp(22px, 2vw, 32px);
  line-height: 1;
}

.resume-item + .resume-item {
  margin-top: 24px;
}

.resume-item header {
  display: grid;
  grid-template-columns: minmax(128px, max-content) 1fr max-content;
  gap: 12px;
  align-items: baseline;
  margin-bottom: 10px;
}

.resume-item header span,
.resume-item header em {
  color: rgba(212, 184, 149, .72);
  font-size: 14px;
  font-style: normal;
  font-weight: 800;
}

.resume-item header strong {
  color: #F4E7CA;
  font-size: clamp(16px, 1.24vw, 20px);
  line-height: 1.35;
}

.resume-item ul,
.resume-skills ul {
  margin: 0;
  padding-left: 1.05em;
}

.resume-item li,
.resume-skills li {
  margin: 8px 0;
  color: rgba(232, 220, 199, .76);
  font-size: clamp(14px, 1vw, 16px);
  line-height: 1.62;
}

.resume-item b,
.resume-skills b {
  color: #F4E7CA;
}

.resume-skills {
  align-self: start;
}

@media(max-width: 980px) {
  .profile-resume-section {
    grid-template-columns: 1fr;
  }

  .profile-resume-section .profile-media {
    min-height: 520px;
  }

  .resume-detail {
    grid-template-columns: 1fr;
  }

  .resume-block:nth-child(1) {
    grid-row: auto;
  }

  .resume-item header {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

@media(max-width: 640px) {
  .profile-resume-section .profile-media {
    min-height: 420px;
  }

  .profile-resume-section .profile-info {
    grid-template-columns: 1fr;
  }
}

/* Remove fine lines from project windows */
.domain .project-card,
.domain .project-card:nth-child(n),
.domain .project-card:hover,
.domain .project-card:focus-visible {
  border: 0 !important;
  outline: 0 !important;
}

.domain .project-card::before,
.domain .project-card::after {
  content: none !important;
  display: none !important;
}

.domain .project-cover,
.domain .project-body,
.domain .project-meta span,
.domain .open-project {
  border: 0 !important;
  outline: 0 !important;
}

.domain .project-cover {
  box-shadow: none !important;
}

.domain .project-body {
  background: rgba(9, 18, 14, .78);
}

.domain .project-meta span,
.domain .open-project {
  background: rgba(232, 220, 199, .12);
}

/* Center project-card text and remove the explicit open button */
.domain .project-body {
  justify-items: center !important;
  align-items: center !important;
  text-align: center !important;
  margin-top: 0 !important;
  padding: 22px 18px 26px !important;
}

.domain .project-body h3 {
  width: 100%;
  margin-inline: auto !important;
  text-align: center !important;
}

.domain .project-meta {
  justify-content: center !important;
  align-items: center !important;
  margin-inline: auto !important;
}

.domain .open-project {
  display: none !important;
}

/* Image-project dialog mode: scroll-driven editorial gallery */
.dialog-shell.gallery-shell {
  overflow-y: auto !important;
  overflow-x: hidden !important;
  scroll-snap-type: y mandatory;
  scroll-behavior: smooth;
  overscroll-behavior: contain;
}

.dialog-media-gallery {
  position: relative;
  min-height: calc(100svh - 56px);
  padding: 72px 0 18svh;
}

.dialog-shell.faction-shell {
  scroll-snap-type: y mandatory;
  scroll-behavior: smooth;
  overscroll-behavior: contain;
}

.dialog-shell.faction-shell .dialog-heading {
  display: none;
}

.dialog-media-faction {
  position: relative;
  min-height: auto;
  padding: 0;
}

.viewer-stage-word-gallery {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  font-size: clamp(160px, 22vw, 420px);
  color: rgba(232, 220, 199, .12);
  letter-spacing: -.08em;
}

.gallery-side {
  position: fixed;
  z-index: 16;
  font-family: var(--mono);
  font-size: 11px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: .16em;
  color: rgba(232, 220, 199, .6);
  pointer-events: none;
}

.gallery-side-left {
  left: clamp(18px, 3vw, 42px);
  top: 50%;
  transform: translateY(-50%);
}

.gallery-side-right {
  right: clamp(8px, 1.2vw, 18px);
  top: 50%;
  transform: translateY(-50%) rotate(90deg);
  transform-origin: center;
}

.gallery-flow {
  position: relative;
  z-index: 4;
  display: grid;
  gap: 0;
}

.faction-flow {
  position: relative;
  z-index: 4;
  display: grid;
  gap: 20px;
}

.faction-panel {
  height: calc(100svh - 180px);
  min-height: calc(100svh - 180px);
  display: grid;
  align-content: center;
  justify-items: center;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  padding: 0;
}

.faction-sheet {
  width: min(88vw, 1560px);
  height: calc(100svh - 204px);
  padding: clamp(18px, 1.8vw, 28px);
  background: rgba(9, 23, 30, .54);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  box-shadow: 0 34px 110px rgba(0, 0, 0, .22);
  transition:
    transform .55s cubic-bezier(.22, 1, .36, 1),
    box-shadow .55s cubic-bezier(.22, 1, .36, 1),
    background-color .55s cubic-bezier(.22, 1, .36, 1),
    opacity .55s cubic-bezier(.22, 1, .36, 1);
}

.faction-panel.is-current .faction-sheet {
  transform: translateY(-10px) scale(1.01);
  background: rgba(9, 23, 30, .68);
  box-shadow: 0 54px 148px rgba(0, 0, 0, .3);
}

.faction-head {
  display: grid;
  gap: 6px;
  margin-bottom: clamp(18px, 2vw, 26px);
}

.faction-eyebrow {
  color: rgba(232, 220, 199, .62);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .16em;
}

.faction-head h3 {
  margin: 0;
  font-size: clamp(32px, 4vw, 58px);
  line-height: 1;
  color: #F5F1E6;
}

.faction-head p {
  margin: 0;
  color: rgba(232, 220, 199, .68);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.faction-layout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-rows: minmax(0, 1fr);
  gap: clamp(16px, 1.6vw, 20px);
  align-items: stretch;
  min-height: 0;
  height: 100%;
}

.faction-layout-balanced {
  grid-auto-flow: row;
}

.faction-card {
  margin: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  gap: 10px;
  padding: 14px;
  background: rgba(6, 15, 20, .64);
  min-height: 0;
  height: 100%;
}

.faction-card.is-png {
  background: #FFFFFF;
}

.faction-card-label,
.faction-card figcaption {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.faction-card-label {
  color: rgba(232, 220, 199, .7);
}

.faction-card figcaption {
  color: rgba(232, 220, 199, .68);
}

.faction-card.is-png .faction-card-label,
.faction-card.is-png figcaption {
  color: rgba(17, 17, 17, .72);
}

.faction-media {
  display: block;
  width: 100%;
  height: 100%;
  background: #0B1014;
}

.faction-image {
  object-fit: cover;
  object-position: center;
}

.faction-video {
  object-fit: cover;
}

.gallery-panel {
  min-height: 78svh;
  display: grid;
  align-content: center;
  justify-items: center;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  padding: 3svh 0 1.5svh;
}

.gallery-panel + .gallery-panel {
  margin-top: 20px;
}

.gallery-frame {
  width: min(86vw, 1560px);
  padding: clamp(18px, 1.8vw, 24px);
  background: rgba(10, 19, 16, .2);
  box-shadow: 0 34px 110px rgba(0, 0, 0, .22);
  transition:
    transform .55s cubic-bezier(.22, 1, .36, 1),
    box-shadow .55s cubic-bezier(.22, 1, .36, 1),
    background-color .55s cubic-bezier(.22, 1, .36, 1);
}

.gallery-panel.is-png .gallery-frame {
  background: #FFFFFF;
}

.gallery-panel.is-current .gallery-frame {
  transform: translateY(-10px) scale(1.012);
  background: rgba(10, 19, 16, .3);
  box-shadow: 0 54px 148px rgba(0, 0, 0, .3);
}

.gallery-panel.is-current.is-png .gallery-frame {
  background: #FFFFFF;
}

.gallery-image {
  display: block;
  width: 100%;
  max-height: 78svh;
  object-fit: contain;
  background: transparent;
}

.gallery-caption {
  width: min(86vw, 1560px);
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding-top: 12px;
  color: rgba(232, 220, 199, .68);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}

@media(max-width: 980px) {
  .dialog-media-gallery {
    padding-top: 84px;
  }

  .dialog-media-faction {
    padding-top: 8px;
  }

  .gallery-frame,
  .gallery-caption {
    width: min(92vw, 1080px);
  }

  .faction-sheet {
    width: min(92vw, 1080px);
  }

  .faction-layout {
    grid-template-columns: 1fr;
    height: auto;
  }

  .faction-panel {
    height: auto;
    min-height: calc(100svh - 180px);
  }

  .faction-sheet {
    height: auto;
    min-height: calc(100svh - 204px);
  }

  .gallery-image {
    max-height: 74svh;
  }
}

@media(max-width: 640px) {
  .gallery-side-right {
    display: none;
  }

  .gallery-side-left {
    left: 16px;
    top: auto;
    bottom: 18px;
    transform: none;
  }

  .gallery-panel {
    min-height: 76svh;
    padding: 5svh 0 2.5svh;
  }

  .faction-panel {
    height: auto;
    min-height: calc(100svh - 156px);
    padding: 0;
  }

  .gallery-frame,
  .gallery-caption {
    width: calc(100vw - 28px);
  }

  .faction-sheet {
    width: calc(100vw - 28px);
    padding: 14px;
    height: auto;
    min-height: calc(100svh - 176px);
  }

  .gallery-caption {
    font-size: 10px;
  }

  .faction-head h3 {
    font-size: clamp(28px, 8vw, 40px);
  }
}

/* Final image fill override: remove letterboxing across all project viewers */
.project-dialog .slide-media,
.project-dialog .slide-figure img.slide-media,
.project-dialog .gallery-image,
.project-dialog .faction-image {
  object-fit: cover !important;
  object-position: center !important;
}

.project-dialog .slide-media,
.project-dialog .gallery-image,
.project-dialog .faction-media {
  cursor: zoom-in;
}

.project-dialog .gallery-image {
  height: min(78svh, 820px);
}

.process-board {
  width: min(78vw, 1360px);
  height: min(58svh, 720px);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(14px, 1.8vw, 22px);
  padding: clamp(16px, 2vw, 24px);
  background: #f6f1e8;
}

.process-board-item {
  min-width: 0;
  margin: 0;
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: 10px;
}

.process-board-hit {
  width: 100%;
  height: 100%;
  display: block;
  padding: 0;
  border: 0;
  margin: 0;
  overflow: hidden;
  cursor: zoom-in;
  background: #fff;
}

.process-board-image {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain !important;
  object-position: center;
  background: #fff;
}

.process-board-item figcaption {
  text-align: center;
  font-size: 12px;
  line-height: 1.4;
  font-weight: 700;
  color: rgba(9, 18, 14, .72);
}

@media(max-width: 980px) {
  .process-board {
    width: min(92vw, 1080px);
  }

  .project-dialog .gallery-image {
    height: 74svh;
  }
}

@media(max-width: 640px) {
  .process-board {
    width: calc(100vw - 28px);
    height: auto;
    min-height: min(56svh, 620px);
    grid-template-columns: 1fr;
  }
}

/* LILT app design: keep portrait image proportions in vertical flow */
.dialog-media-gallery.is-ratio-gallery {
  padding: 72px 0 10svh;
}

.dialog-media-gallery.is-ratio-gallery .gallery-panel {
  min-height: auto;
  align-content: start;
  padding: 1.2svh 0 0;
}

.dialog-media-gallery.is-ratio-gallery .gallery-panel + .gallery-panel {
  margin-top: 24px;
}

.dialog-media-gallery.is-ratio-gallery .gallery-frame,
.dialog-media-gallery.is-ratio-gallery .gallery-caption {
  width: min(36vw, 440px);
}

.dialog-media-gallery.is-ratio-gallery .gallery-frame {
  padding: 0;
  background: transparent;
  box-shadow: none;
}

.dialog-media-gallery.is-ratio-gallery .gallery-panel.is-current .gallery-frame,
.dialog-media-gallery.is-ratio-gallery .gallery-panel.is-current.is-png .gallery-frame,
.dialog-media-gallery.is-ratio-gallery .gallery-panel.is-png .gallery-frame {
  transform: none;
  background: transparent;
  box-shadow: none;
}

.dialog-media-gallery.is-ratio-gallery .gallery-image {
  width: 100%;
  height: auto !important;
  max-height: none !important;
  object-fit: contain !important;
  object-position: center !important;
}

.dialog-media-gallery.is-ratio-gallery .gallery-video {
  max-height: min(78svh, 820px) !important;
  background: transparent;
}

.project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-image {
  object-fit: contain !important;
  object-position: center !important;
  background: transparent;
}

.project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-frame {
  width: fit-content !important;
  max-width: min(98vw, 1720px) !important;
  padding: 0 !important;
}

.project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-caption {
  width: fit-content !important;
  max-width: min(98vw, 1720px) !important;
}

.project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-video {
  object-fit: contain !important;
  object-position: center !important;
  height: min(78svh, 820px) !important;
  max-height: min(78svh, 820px) !important;
  background: transparent;
}

.project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-image {
  width: auto !important;
  max-width: min(98vw, 1720px) !important;
}

@media(max-width: 980px) {
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-video {
    height: 74svh !important;
    max-height: 74svh !important;
  }
}

.project-dialog[data-project="茂昌眼镜人脸扫描仪"] .dialog-media-gallery .gallery-frame {
  width: fit-content !important;
  max-width: min(96vw, 1760px) !important;
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.project-dialog[data-project="茂昌眼镜人脸扫描仪"] .dialog-media-gallery .gallery-caption {
  width: fit-content !important;
  max-width: min(96vw, 1760px) !important;
}

.project-dialog[data-project="茂昌眼镜人脸扫描仪"] .dialog-media-gallery .gallery-image {
  width: auto !important;
  max-width: min(96vw, 1760px) !important;
  height: auto !important;
  max-height: none !important;
  object-fit: contain !important;
  object-position: center !important;
  background: transparent !important;
}

.project-dialog[data-project="LILT露营户外宠物智能用品"] .dialog-media-gallery {
  padding: 72px 0 10svh;
}

.project-dialog[data-project="LILT露营户外宠物智能用品"] .dialog-media-gallery .gallery-panel {
  min-height: auto !important;
  align-content: start !important;
  padding: 1.2svh 0 0 !important;
}

.project-dialog[data-project="LILT露营户外宠物智能用品"] .dialog-media-gallery .gallery-panel + .gallery-panel {
  margin-top: 24px !important;
}

.project-dialog[data-project="LILT露营户外宠物智能用品"] .dialog-media-gallery .gallery-frame {
  width: fit-content !important;
  max-width: min(94vw, 1720px) !important;
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.project-dialog[data-project="LILT露营户外宠物智能用品"] .dialog-media-gallery .gallery-panel.is-current .gallery-frame,
.project-dialog[data-project="LILT露营户外宠物智能用品"] .dialog-media-gallery .gallery-panel.is-current.is-png .gallery-frame,
.project-dialog[data-project="LILT露营户外宠物智能用品"] .dialog-media-gallery .gallery-panel.is-png .gallery-frame {
  transform: none !important;
  background: transparent !important;
  box-shadow: none !important;
}

.project-dialog[data-project="LILT露营户外宠物智能用品"] .dialog-media-gallery .gallery-image {
  width: auto !important;
  max-width: min(94vw, 1720px) !important;
  height: auto !important;
  max-height: none !important;
  object-fit: contain !important;
  object-position: center !important;
  background: transparent !important;
}

.project-dialog[data-project="LILT露营户外宠物智能用品"] .dialog-media-gallery .gallery-caption {
  width: min(94vw, 1720px) !important;
  max-width: min(94vw, 1720px) !important;
  padding-top: 10px;
}

.dialog-media-gallery.is-ratio-gallery .gallery-caption {
  padding-top: 10px;
}

@media(max-width: 640px) {
  .dialog-media-gallery.is-ratio-gallery .gallery-frame,
  .dialog-media-gallery.is-ratio-gallery .gallery-caption {
    width: min(78vw, 420px);
  }
}

@media (hover: none), (pointer: coarse), (max-width: 820px) {
  .rpg-hero .hero-project-list {
    width: min(96vw, 720px);
    min-height: 56vh;
    transform: translateY(clamp(-104px, -8.6vh, -64px)) !important;
  }

  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: clamp(146px, 28vw, 196px);
    height: clamp(212px, 40vw, 286px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .52))
      translateY(calc(var(--card-y) * .62))
      rotate(calc(var(--card-rotate) * .72)) !important;
    transition:
      transform .48s cubic-bezier(.22, 1, .36, 1),
      opacity .3s ease;
  }

  .rpg-hero .hero-project-link,
  .rpg-hero .hero-project-link.is-active {
    box-shadow: 0 26px 62px rgba(5, 27, 24, .3) !important;
  }

  .rpg-hero .hero-project-row.is-featured {
    z-index: 320 !important;
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .52))
      translateY(calc(calc(var(--card-y) * .62) - 66px))
      rotate(calc(var(--card-rotate) * .08))
      scale(1.14) !important;
  }

  .rpg-hero.has-active .hero-project-row:not(.is-featured) {
    z-index: 40 !important;
    opacity: .74 !important;
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .52))
      translateY(calc(calc(var(--card-y) * .62) + 10px))
      rotate(calc(var(--card-rotate) * .72))
      scale(.94) !important;
  }

  .rpg-hero .hero-project-link.is-active,
  .rpg-hero .hero-project-link:focus-visible {
    box-shadow: 0 56px 118px rgba(5, 27, 24, .44) !important;
    filter: brightness(1.05) saturate(1.08);
  }

  .dialog-shell.gallery-shell,
  .dialog-shell.faction-shell {
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain;
  }

  .dialog-shell.faction-shell {
    touch-action: pan-y;
  }
}

@media (hover: none), (pointer: coarse), (max-width: 820px) {
  .project-dialog[data-project-slug="project-0-2"] .dialog-shell,
  .project-dialog[data-project-slug="project-0-3"] .dialog-shell,
  .project-dialog[data-project-slug="project-1-1"] .dialog-shell,
  .project-dialog[data-domain-slug="domain-2"] .dialog-shell,
  .project-dialog[data-domain-slug="domain-3"] .dialog-shell {
    width: 100vw !important;
    max-width: 100vw !important;
    overflow-x: hidden !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .dialog-media-gallery,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media-gallery,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media-gallery,
  .project-dialog[data-domain-slug="domain-2"] .dialog-media-gallery,
  .project-dialog[data-domain-slug="domain-3"] .dialog-media-gallery,
  .project-dialog[data-project-slug="project-0-2"] .gallery-flow,
  .project-dialog[data-project-slug="project-0-3"] .gallery-flow,
  .project-dialog[data-project-slug="project-1-1"] .gallery-flow,
  .project-dialog[data-domain-slug="domain-2"] .gallery-flow,
  .project-dialog[data-domain-slug="domain-3"] .gallery-flow {
    width: 100vw !important;
    max-width: 100vw !important;
    min-width: 0 !important;
    justify-items: center !important;
    overflow-x: hidden !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .dialog-media-gallery .gallery-panel,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media-gallery .gallery-panel,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media-gallery .gallery-panel,
  .project-dialog[data-domain-slug="domain-2"] .dialog-media-gallery .gallery-panel,
  .project-dialog[data-domain-slug="domain-3"] .dialog-media-gallery .gallery-panel {
    width: 100vw !important;
    max-width: 100vw !important;
    min-width: 0 !important;
    display: grid !important;
    justify-items: center !important;
    padding-inline: 0 !important;
    overflow-x: hidden !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .dialog-media-gallery .gallery-frame,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media-gallery .gallery-frame,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media-gallery .gallery-frame,
  .project-dialog[data-domain-slug="domain-2"] .dialog-media-gallery .gallery-frame,
  .project-dialog[data-domain-slug="domain-3"] .dialog-media-gallery .gallery-frame {
    width: 100% !important;
    max-width: calc(100vw - 20px) !important;
    min-width: 0 !important;
    margin-left: auto !important;
    margin-right: auto !important;
    display: grid !important;
    place-items: center !important;
    justify-self: center !important;
    overflow: visible !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .dialog-media-gallery .gallery-image,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media-gallery .gallery-image,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media-gallery .gallery-image,
  .project-dialog[data-domain-slug="domain-2"] .dialog-media-gallery .gallery-image,
  .project-dialog[data-domain-slug="domain-3"] .dialog-media-gallery .gallery-image,
  .project-dialog[data-project-slug="project-0-2"] .dialog-media-gallery .gallery-video,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media-gallery .gallery-video,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media-gallery .gallery-video {
    justify-self: center !important;
    align-self: center !important;
    margin-left: auto !important;
    margin-right: auto !important;
    max-width: calc(100vw - 20px) !important;
    object-fit: contain !important;
    object-position: center center !important;
    pointer-events: auto !important;
    touch-action: manipulation !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .dialog-media-gallery .gallery-caption,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media-gallery .gallery-caption,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media-gallery .gallery-caption,
  .project-dialog[data-domain-slug="domain-2"] .dialog-media-gallery .gallery-caption,
  .project-dialog[data-domain-slug="domain-3"] .dialog-media-gallery .gallery-caption {
    justify-self: center !important;
    text-align: left !important;
  }
}

/* Scroll-driven full-screen video background */
.page-scroll-video-shell {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  background: #000;
}

.page-scroll-bg-video {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

body {
  background:
    url("assets/hero-main-bg.jpg") center / cover fixed no-repeat,
    #000 !important;
}

header.site-nav,
main,
.profile-section,
.domain {
  position: relative;
  z-index: 1;
}

.profile-resume-section,
.portfolio-hero,
.rpg-hero,
.domain {
  background: transparent !important;
}

.page-scroll-video-shell {
  display: none !important;
}

.profile-section::before,
.profile-section::after,
.profile-resume-section::before,
.profile-resume-section::after,
.domain::before,
.domain::after,
.portfolio-hero::before,
.portfolio-hero::after,
.rpg-hero::before,
.rpg-hero::after,
.rpg-media,
.rpg-orbit {
  display: none !important;
}

.profile-resume-section .profile-media {
  background: rgba(8, 16, 13, .14) !important;
  box-shadow: 0 28px 80px rgba(4, 18, 20, .16) !important;
}

.profile-resume-section .profile-info div,
.resume-block {
  background: rgba(8, 16, 13, .12) !important;
}

.domain-stats span,
.domain .project-body,
.domain .project-meta span {
  background: rgba(8, 16, 13, .14) !important;
}

#profile {
  isolation: isolate;
}

#profile::before {
  content: "" !important;
  position: absolute;
  inset: -28px;
  z-index: -1;
  display: block !important;
  background: url("assets/section-profile-bg-optimized.jpg") center / cover no-repeat;
  filter: blur(24px);
  transform: scale(1.08);
  opacity: .94;
  pointer-events: none;
}

.portfolio-hero,
.rpg-hero {
  background:
    url("assets/hero-main-bg.jpg") center / cover no-repeat !important;
}

#domain-0,
#domain-1,
#domain-2,
#domain-3 {
  isolation: isolate;
}

#domain-0::before,
#domain-1::before,
#domain-2::before,
#domain-3::before {
  content: "" !important;
  position: absolute;
  inset: -28px;
  z-index: -1;
  display: block !important;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  filter: blur(24px);
  transform: scale(1.08);
  opacity: .96;
  pointer-events: none;
}

#domain-0::before {
  background-image: url("assets/section-ai-bg-optimized.jpg");
}

#domain-1::before {
  background-image: url("assets/section-ui-bg-optimized.jpg");
}

#domain-2::before {
  background-image: url("assets/section-product-bg-optimized.jpg");
}

#domain-3::before {
  background-image: url("assets/section-package-bg-optimized.jpg");
}

.domain-head-centered {
  justify-content: center !important;
  align-items: flex-start !important;
  text-align: center;
}

.domain-title-wrap {
  display: grid;
  justify-items: center;
}

.domain-head-centered .domain-kicker {
  margin-bottom: 12px;
  color: rgba(255, 244, 218, .5);
}

.domain-head-centered h2,
.domain-head-centered .domain-title-wrap h2 {
  margin: 0;
  text-align: center;
  color: #FFFFFF !important;
  font-family: "Bodoni MT", "Didot", "Times New Roman", "STSong", serif;
  font-style: italic;
  font-weight: 700;
  letter-spacing: 0;
  text-shadow:
    0 1px 0 rgba(255, 255, 255, .22),
    0 2px 0 rgba(150, 182, 214, .2),
    0 8px 18px rgba(18, 44, 78, .16);
}

.domain-head-centered:not(.domain-head-hero) h2 {
  font-size: clamp(34px, 4.5vw, 68px) !important;
}

#domain-0 .domain-head {
  max-width: min(1320px, calc(100vw - 56px));
  margin-bottom: clamp(28px, 4vw, 42px);
}

#domain-0 .domain-head-hero {
  justify-content: center !important;
}

#domain-0 .domain-head-hero h2 {
  font-size: clamp(34px, 4.5vw, 68px) !important;
}

#domain-0 .project-grid {
  max-width: min(1320px, calc(100vw - 56px));
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(18px, 1.8vw, 28px);
  justify-content: stretch;
}

#domain-0 .project-card,
#domain-0 .project-card:nth-child(n) {
  height: clamp(420px, 33vw, 540px);
}

#domain-0 .project-body h3 {
  min-height: 0;
}

@media(max-width: 1180px) {
  #domain-0 .project-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media(max-width: 760px) {
  #domain-0 .project-grid {
    grid-template-columns: 1fr;
  }
}

@media(max-width: 640px) {
  .rpg-hero .hero-project-list {
    width: 100vw;
    min-height: 54vh;
    transform: translateY(clamp(-88px, -7.4vh, -46px)) !important;
  }

  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: min(44vw, 160px);
    height: min(63vw, 228px);
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .34))
      translateY(calc(var(--card-y) * .52))
      rotate(calc(var(--card-rotate) * .46)) !important;
  }

  .rpg-hero .hero-project-row.is-featured {
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .34))
      translateY(calc(calc(var(--card-y) * .52) - 52px))
      rotate(calc(var(--card-rotate) * .05))
      scale(1.1) !important;
  }

  .rpg-hero.has-active .hero-project-row:not(.is-featured) {
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .34))
      translateY(calc(calc(var(--card-y) * .52) + 8px))
      rotate(calc(var(--card-rotate) * .46))
      scale(.92) !important;
  }
}

/* Mobile dialog rescue: show full media instead of cropping to a third */
@media (max-width: 900px) {
  .project-dialog {
    width: 100vw !important;
    max-width: 100vw !important;
    height: 100svh;
    max-height: 100svh !important;
    overflow: auto !important;
  }

  .dialog-shell {
    padding: 16px 12px 18px !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .dialog-shell.gallery-shell {
    scroll-padding-top: 72px;
  }

  .dialog-heading {
    margin-bottom: 14px;
    padding-right: 52px;
  }

  .slide-viewer {
    grid-template-columns: 1fr !important;
    gap: 10px;
  }

  .slide-figure {
    min-height: auto !important;
  }

  .project-dialog .slide-media,
  .project-dialog .slide-figure img.slide-media,
  .project-dialog .gallery-image,
  .project-dialog .gallery-video,
  .project-dialog .faction-image,
  .project-dialog .faction-video {
    width: auto !important;
    max-width: 100% !important;
    margin-inline: auto !important;
    object-fit: contain !important;
    object-position: center !important;
    background: transparent !important;
  }

  .project-dialog .slide-media {
    height: min(62svh, 460px) !important;
    max-height: min(62svh, 460px) !important;
  }

  .project-dialog .gallery-image,
  .project-dialog .gallery-video {
    height: auto !important;
    max-height: calc(100svh - 170px) !important;
  }

  .gallery-frame,
  .gallery-caption,
  .faction-sheet,
  .process-board,
  .dialog-media-gallery.is-ratio-gallery .gallery-frame,
  .dialog-media-gallery.is-ratio-gallery .gallery-caption {
    width: calc(100vw - 24px) !important;
    max-width: calc(100vw - 24px) !important;
  }

  .gallery-frame {
    width: fit-content !important;
    max-width: calc(100vw - 24px) !important;
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    margin-inline: auto !important;
  }

  .dialog-media-gallery {
    min-height: auto !important;
    padding: 68px 0 24px !important;
  }

  .gallery-panel {
    min-height: calc(100svh - 122px) !important;
    padding: 8px 0 12px !important;
    align-content: center !important;
  }

  .gallery-panel + .gallery-panel {
    margin-top: 12px !important;
  }

  .gallery-caption {
    width: min(calc(100vw - 24px), 100%) !important;
    max-width: calc(100vw - 24px) !important;
    margin-inline: auto !important;
    padding-top: 8px !important;
  }

  .slide-figure figcaption,
  .gallery-caption {
    flex-wrap: wrap;
    row-gap: 6px;
    font-size: 10px;
    line-height: 1.4;
  }

  .faction-panel,
  .faction-sheet {
    height: auto !important;
    min-height: auto !important;
  }

  .faction-layout {
    grid-template-columns: 1fr !important;
    gap: 10px;
  }

  .faction-card {
    height: auto !important;
    min-height: 0 !important;
    padding: 10px;
  }
}

@media (max-width: 640px) {
  .project-dialog .slide-media {
    height: min(56svh, 380px) !important;
    max-height: min(56svh, 380px) !important;
  }

  .project-dialog .gallery-image,
  .project-dialog .gallery-video,
  .project-dialog .faction-image,
  .project-dialog .faction-video {
    max-height: calc(100svh - 156px) !important;
  }

  .gallery-frame,
  .gallery-caption,
  .faction-sheet,
  .process-board {
    width: calc(100vw - 20px) !important;
    max-width: calc(100vw - 20px) !important;
  }

  .gallery-frame,
  .dialog-media-gallery.is-ratio-gallery .gallery-frame,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-frame,
  .project-dialog[data-project="茂昌眼镜人脸扫描仪"] .dialog-media-gallery .gallery-frame {
    width: fit-content !important;
    max-width: calc(100vw - 20px) !important;
    padding: 0 !important;
  }

  .gallery-caption,
  .dialog-media-gallery.is-ratio-gallery .gallery-caption,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-caption,
  .project-dialog[data-project="茂昌眼镜人脸扫描仪"] .dialog-media-gallery .gallery-caption {
    width: min(calc(100vw - 20px), 100%) !important;
    max-width: calc(100vw - 20px) !important;
  }

  .dialog-media-gallery {
    padding: 62px 0 20px !important;
  }

  .gallery-panel {
    min-height: calc(100svh - 112px) !important;
    padding: 6px 0 10px !important;
  }
}

.project-dialog[data-project="游戏设定集"] .dialog-media-faction {
  padding: 0;
}

.project-dialog[data-project="游戏设定集"] .faction-flow {
  gap: 0;
}

.project-dialog[data-project="游戏设定集"] .faction-panel {
  min-height: calc(100svh - 96px);
  height: calc(100svh - 96px);
  padding: 0;
}

.project-dialog[data-project="游戏设定集"] .faction-sheet {
  width: min(92vw, 1580px);
  height: calc(100svh - 118px);
  padding: clamp(14px, 1.4vw, 22px);
  background: rgba(4, 8, 12, .52);
}

.project-dialog[data-project="游戏设定集"] .faction-panel.is-current .faction-sheet {
  transform: none;
}

.project-dialog[data-project="游戏设定集"] .faction-head {
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: end;
  gap: 14px;
  margin-bottom: clamp(10px, 1.2vw, 16px);
}

.project-dialog[data-project="游戏设定集"] .faction-eyebrow {
  padding-bottom: 5px;
}

.project-dialog[data-project="游戏设定集"] .faction-head h3 {
  font-size: clamp(30px, 3.2vw, 50px);
}

.project-dialog[data-project="游戏设定集"] .faction-head p {
  justify-self: end;
  padding-bottom: 5px;
  white-space: nowrap;
}

.project-dialog[data-project="游戏设定集"] .faction-layout {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-template-rows: repeat(2, minmax(0, 1fr));
  grid-auto-rows: minmax(0, 1fr);
  gap: clamp(10px, 1vw, 16px);
}

.project-dialog[data-project="游戏设定集"] .faction-card {
  min-height: 0;
  height: 100%;
  padding: clamp(8px, .85vw, 12px);
  background: rgba(4, 10, 14, .58);
  overflow: hidden;
}

.project-dialog[data-project="游戏设定集"] .faction-card.is-png {
  background: rgba(255, 255, 255, .96);
}

.project-dialog[data-project="游戏设定集"] .faction-media,
.project-dialog[data-project="游戏设定集"] .faction-image,
.project-dialog[data-project="游戏设定集"] .faction-video {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: none !important;
  object-fit: contain !important;
  object-position: center !important;
}

.project-dialog[data-project="游戏设定集"] .faction-image,
.project-dialog[data-project="游戏设定集"] .faction-video {
  background: transparent !important;
}

@media (max-width: 820px) {
  .project-dialog[data-project="游戏设定集"] .faction-panel {
    min-height: calc(100svh - 96px) !important;
    height: calc(100svh - 96px) !important;
    align-content: center;
  }

  .project-dialog[data-project="游戏设定集"] .faction-sheet {
    width: calc(100vw - 20px) !important;
    max-width: calc(100vw - 20px) !important;
    height: calc(100svh - 112px) !important;
    min-height: 0 !important;
    padding: 10px;
    grid-template-rows: auto minmax(0, 1fr);
  }

  .project-dialog[data-project="游戏设定集"] .faction-head {
    grid-template-columns: 1fr auto;
    gap: 4px 8px;
    margin-bottom: 8px;
  }

  .project-dialog[data-project="游戏设定集"] .faction-eyebrow {
    grid-column: 1 / -1;
    padding-bottom: 0;
    font-size: 10px;
  }

  .project-dialog[data-project="游戏设定集"] .faction-head h3 {
    font-size: clamp(24px, 8vw, 34px);
  }

  .project-dialog[data-project="游戏设定集"] .faction-head p {
    align-self: end;
    padding-bottom: 2px;
    font-size: 9px;
  }

  .project-dialog[data-project="游戏设定集"] .faction-layout {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-template-rows: repeat(2, minmax(0, 1fr));
    gap: 8px;
    height: 100%;
  }

  .project-dialog[data-project="游戏设定集"] .faction-card {
    padding: 7px;
    gap: 5px;
    grid-template-rows: auto minmax(0, 1fr);
  }

  .project-dialog[data-project="游戏设定集"] .faction-card figcaption {
    display: none;
  }

  .project-dialog[data-project="游戏设定集"] .faction-card-label {
    font-size: 9px;
    letter-spacing: .08em;
  }
}

/* Performance pass: defer expensive below-the-fold sections until needed. */
.domain,
.profile-resume-section {
  content-visibility: auto;
  contain-intrinsic-size: 900px;
}

.domain .project-cover img,
.domain .project-cover video,
.rpg-hero .hero-thumb {
  content-visibility: auto;
}

@media (hover: none), (pointer: coarse), (max-width: 820px) {
  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery,
  .project-dialog[data-domain="产品设计"] .dialog-media-gallery,
  .project-dialog[data-domain="包装设计"] .dialog-media-gallery {
    padding: 62px 0 10svh !important;
  }

  .project-dialog[data-project="游戏设定集"] .viewer-stage-word-gallery,
  .project-dialog[data-project="游戏设定集"] .gallery-side,
  .project-dialog[data-project="IP角色"] .viewer-stage-word-gallery,
  .project-dialog[data-project="IP角色"] .gallery-side,
  .project-dialog[data-project="渔康宝ui设计"] .viewer-stage-word-gallery,
  .project-dialog[data-project="渔康宝ui设计"] .gallery-side,
  .project-dialog[data-domain="产品设计"] .viewer-stage-word-gallery,
  .project-dialog[data-domain="产品设计"] .gallery-side,
  .project-dialog[data-domain="包装设计"] .viewer-stage-word-gallery,
  .project-dialog[data-domain="包装设计"] .gallery-side {
    display: none !important;
  }

  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery .gallery-panel,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery .gallery-panel,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-panel,
  .project-dialog[data-domain="产品设计"] .dialog-media-gallery .gallery-panel,
  .project-dialog[data-domain="包装设计"] .dialog-media-gallery .gallery-panel {
    min-height: auto !important;
    align-content: start !important;
    justify-items: center !important;
    padding: 1.2svh 0 0 !important;
  }

  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery .gallery-panel + .gallery-panel,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery .gallery-panel + .gallery-panel,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-panel + .gallery-panel,
  .project-dialog[data-domain="产品设计"] .dialog-media-gallery .gallery-panel + .gallery-panel,
  .project-dialog[data-domain="包装设计"] .dialog-media-gallery .gallery-panel + .gallery-panel {
    margin-top: 24px !important;
  }

  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery .gallery-frame,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery .gallery-frame,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-frame,
  .project-dialog[data-domain="产品设计"] .dialog-media-gallery .gallery-frame,
  .project-dialog[data-domain="包装设计"] .dialog-media-gallery .gallery-frame {
    width: fit-content !important;
    max-width: calc(100vw - 20px) !important;
    padding: 0 !important;
    margin-inline: auto !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery .gallery-panel.is-current .gallery-frame,
  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery .gallery-panel.is-current.is-png .gallery-frame,
  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery .gallery-panel.is-png .gallery-frame,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery .gallery-panel.is-current .gallery-frame,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery .gallery-panel.is-current.is-png .gallery-frame,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery .gallery-panel.is-png .gallery-frame,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-panel.is-current .gallery-frame,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-panel.is-current.is-png .gallery-frame,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-panel.is-png .gallery-frame,
  .project-dialog[data-domain="产品设计"] .dialog-media-gallery .gallery-panel.is-current .gallery-frame,
  .project-dialog[data-domain="产品设计"] .dialog-media-gallery .gallery-panel.is-current.is-png .gallery-frame,
  .project-dialog[data-domain="产品设计"] .dialog-media-gallery .gallery-panel.is-png .gallery-frame,
  .project-dialog[data-domain="包装设计"] .dialog-media-gallery .gallery-panel.is-current .gallery-frame,
  .project-dialog[data-domain="包装设计"] .dialog-media-gallery .gallery-panel.is-current.is-png .gallery-frame,
  .project-dialog[data-domain="包装设计"] .dialog-media-gallery .gallery-panel.is-png .gallery-frame {
    transform: none !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery .gallery-image,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery .gallery-image,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-image,
  .project-dialog[data-domain="产品设计"] .dialog-media-gallery .gallery-image,
  .project-dialog[data-domain="包装设计"] .dialog-media-gallery .gallery-image {
    display: block !important;
    width: auto !important;
    height: auto !important;
    max-width: calc(100vw - 20px) !important;
    max-height: none !important;
    margin-inline: auto !important;
    object-fit: contain !important;
    object-position: center !important;
    background: transparent !important;
  }

  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery .gallery-video,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery .gallery-video,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-video {
    width: auto !important;
    height: auto !important;
    max-width: calc(100vw - 20px) !important;
    max-height: calc(100svh - 146px) !important;
    margin-inline: auto !important;
    object-fit: contain !important;
    object-position: center !important;
    background: transparent !important;
  }

  .project-dialog[data-project="游戏设定集"] .dialog-media-gallery .gallery-caption,
  .project-dialog[data-project="IP角色"] .dialog-media-gallery .gallery-caption,
  .project-dialog[data-project="渔康宝ui设计"] .dialog-media-gallery .gallery-caption,
  .project-dialog[data-domain="产品设计"] .dialog-media-gallery .gallery-caption,
  .project-dialog[data-domain="包装设计"] .dialog-media-gallery .gallery-caption {
    width: min(calc(100vw - 20px), 100%) !important;
    max-width: calc(100vw - 20px) !important;
    margin-inline: auto !important;
    padding-top: 10px !important;
  }
}

@media (hover: none), (pointer: coarse), (max-width: 820px) {
  .project-dialog[data-project-slug="project-0-2"],
  .project-dialog[data-project-slug="project-0-3"],
  .project-dialog[data-project-slug="project-1-1"],
  .project-dialog[data-domain-slug="domain-2"],
  .project-dialog[data-domain-slug="domain-3"] {
    width: 100vw !important;
    max-width: 100vw !important;
    margin: auto !important;
    overflow-x: hidden !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .dialog-shell,
  .project-dialog[data-project-slug="project-0-3"] .dialog-shell,
  .project-dialog[data-project-slug="project-1-1"] .dialog-shell,
  .project-dialog[data-domain-slug="domain-2"] .dialog-shell,
  .project-dialog[data-domain-slug="domain-3"] .dialog-shell {
    width: 100vw !important;
    max-width: 100vw !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    overflow-x: hidden !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .dialog-heading,
  .project-dialog[data-project-slug="project-0-3"] .dialog-heading,
  .project-dialog[data-project-slug="project-1-1"] .dialog-heading,
  .project-dialog[data-domain-slug="domain-2"] .dialog-heading,
  .project-dialog[data-domain-slug="domain-3"] .dialog-heading {
    margin-left: 12px !important;
    margin-right: 12px !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .dialog-media,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media,
  .project-dialog[data-domain-slug="domain-2"] .dialog-media,
  .project-dialog[data-domain-slug="domain-3"] .dialog-media,
  .project-dialog[data-project-slug="project-0-2"] .dialog-media-gallery,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media-gallery,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media-gallery,
  .project-dialog[data-domain-slug="domain-2"] .dialog-media-gallery,
  .project-dialog[data-domain-slug="domain-3"] .dialog-media-gallery,
  .project-dialog[data-project-slug="project-0-2"] .gallery-flow,
  .project-dialog[data-project-slug="project-0-3"] .gallery-flow,
  .project-dialog[data-project-slug="project-1-1"] .gallery-flow,
  .project-dialog[data-domain-slug="domain-2"] .gallery-flow,
  .project-dialog[data-domain-slug="domain-3"] .gallery-flow {
    width: 100vw !important;
    max-width: 100vw !important;
    margin-inline: auto !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    overflow-x: hidden !important;
    justify-items: center !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .gallery-panel,
  .project-dialog[data-project-slug="project-0-3"] .gallery-panel,
  .project-dialog[data-project-slug="project-1-1"] .gallery-panel,
  .project-dialog[data-domain-slug="domain-2"] .gallery-panel,
  .project-dialog[data-domain-slug="domain-3"] .gallery-panel {
    width: 100vw !important;
    max-width: 100vw !important;
    min-width: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    justify-items: center !important;
    overflow-x: hidden !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .gallery-frame,
  .project-dialog[data-project-slug="project-0-3"] .gallery-frame,
  .project-dialog[data-project-slug="project-1-1"] .gallery-frame,
  .project-dialog[data-domain-slug="domain-2"] .gallery-frame,
  .project-dialog[data-domain-slug="domain-3"] .gallery-frame {
    width: calc(100vw - 20px) !important;
    max-width: calc(100vw - 20px) !important;
    min-width: 0 !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding: 0 !important;
    display: grid !important;
    place-items: center !important;
    justify-self: center !important;
    background: transparent !important;
    box-shadow: none !important;
    transform: none !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .gallery-image,
  .project-dialog[data-project-slug="project-0-3"] .gallery-image,
  .project-dialog[data-project-slug="project-1-1"] .gallery-image,
  .project-dialog[data-domain-slug="domain-2"] .gallery-image,
  .project-dialog[data-domain-slug="domain-3"] .gallery-image,
  .project-dialog[data-project-slug="project-0-2"] .gallery-video,
  .project-dialog[data-project-slug="project-0-3"] .gallery-video,
  .project-dialog[data-project-slug="project-1-1"] .gallery-video {
    display: block !important;
    width: auto !important;
    height: auto !important;
    max-width: calc(100vw - 20px) !important;
    max-height: none !important;
    margin-left: auto !important;
    margin-right: auto !important;
    justify-self: center !important;
    object-fit: contain !important;
    object-position: center center !important;
    transform: none !important;
    pointer-events: auto !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .gallery-video,
  .project-dialog[data-project-slug="project-0-3"] .gallery-video,
  .project-dialog[data-project-slug="project-1-1"] .gallery-video {
    max-height: calc(100svh - 148px) !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .gallery-caption,
  .project-dialog[data-project-slug="project-0-3"] .gallery-caption,
  .project-dialog[data-project-slug="project-1-1"] .gallery-caption,
  .project-dialog[data-domain-slug="domain-2"] .gallery-caption,
  .project-dialog[data-domain-slug="domain-3"] .gallery-caption {
    width: calc(100vw - 20px) !important;
    max-width: calc(100vw - 20px) !important;
    margin-left: auto !important;
    margin-right: auto !important;
    justify-self: center !important;
  }
}

@media (hover: none), (pointer: coarse), (max-width: 820px) {
  .project-dialog[data-project-slug="project-0-2"],
  .project-dialog[data-project-slug="project-0-3"],
  .project-dialog[data-project-slug="project-1-1"],
  .project-dialog[data-domain-slug="domain-2"],
  .project-dialog[data-domain-slug="domain-3"] {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
    overflow-x: hidden !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .dialog-shell,
  .project-dialog[data-project-slug="project-0-3"] .dialog-shell,
  .project-dialog[data-project-slug="project-1-1"] .dialog-shell,
  .project-dialog[data-domain-slug="domain-2"] .dialog-shell,
  .project-dialog[data-domain-slug="domain-3"] .dialog-shell,
  .project-dialog[data-project-slug="project-0-2"] .dialog-media,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media,
  .project-dialog[data-domain-slug="domain-2"] .dialog-media,
  .project-dialog[data-domain-slug="domain-3"] .dialog-media,
  .project-dialog[data-project-slug="project-0-2"] .dialog-media-gallery,
  .project-dialog[data-project-slug="project-0-3"] .dialog-media-gallery,
  .project-dialog[data-project-slug="project-1-1"] .dialog-media-gallery,
  .project-dialog[data-domain-slug="domain-2"] .dialog-media-gallery,
  .project-dialog[data-domain-slug="domain-3"] .dialog-media-gallery,
  .project-dialog[data-project-slug="project-0-2"] .gallery-flow,
  .project-dialog[data-project-slug="project-0-3"] .gallery-flow,
  .project-dialog[data-project-slug="project-1-1"] .gallery-flow,
  .project-dialog[data-domain-slug="domain-2"] .gallery-flow,
  .project-dialog[data-domain-slug="domain-3"] .gallery-flow,
  .project-dialog[data-project-slug="project-0-2"] .gallery-panel,
  .project-dialog[data-project-slug="project-0-3"] .gallery-panel,
  .project-dialog[data-project-slug="project-1-1"] .gallery-panel,
  .project-dialog[data-domain-slug="domain-2"] .gallery-panel,
  .project-dialog[data-domain-slug="domain-3"] .gallery-panel {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    overflow-x: hidden !important;
    justify-items: center !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .gallery-frame,
  .project-dialog[data-project-slug="project-0-3"] .gallery-frame,
  .project-dialog[data-project-slug="project-1-1"] .gallery-frame,
  .project-dialog[data-domain-slug="domain-2"] .gallery-frame,
  .project-dialog[data-domain-slug="domain-3"] .gallery-frame {
    box-sizing: border-box !important;
    width: calc(100% - 20px) !important;
    max-width: calc(100% - 20px) !important;
    min-width: 0 !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding: 0 !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    justify-self: center !important;
    overflow: visible !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .gallery-image,
  .project-dialog[data-project-slug="project-0-3"] .gallery-image,
  .project-dialog[data-project-slug="project-1-1"] .gallery-image,
  .project-dialog[data-domain-slug="domain-2"] .gallery-image,
  .project-dialog[data-domain-slug="domain-3"] .gallery-image,
  .project-dialog[data-project-slug="project-0-2"] .gallery-video,
  .project-dialog[data-project-slug="project-0-3"] .gallery-video,
  .project-dialog[data-project-slug="project-1-1"] .gallery-video {
    box-sizing: border-box !important;
    display: block !important;
    width: auto !important;
    height: auto !important;
    max-width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
    flex: 0 1 auto !important;
    object-fit: contain !important;
    object-position: center center !important;
  }

  .project-dialog[data-project-slug="project-0-2"] .gallery-caption,
  .project-dialog[data-project-slug="project-0-3"] .gallery-caption,
  .project-dialog[data-project-slug="project-1-1"] .gallery-caption,
  .project-dialog[data-domain-slug="domain-2"] .gallery-caption,
  .project-dialog[data-domain-slug="domain-3"] .gallery-caption {
    box-sizing: border-box !important;
    width: calc(100% - 20px) !important;
    max-width: calc(100% - 20px) !important;
  }
}

/* Desktop repair: avoid clipping the rotated hero cards and keep dialog media eager. */
@media (hover: hover) and (pointer: fine) and (min-width: 821px) {
  .rpg-hero,
  .rpg-hero .hero-index,
  .rpg-hero .hero-project-list {
    overflow: visible !important;
  }

  .rpg-hero .hero-project-list {
    contain: none !important;
  }

  .rpg-hero .hero-project-link,
  .rpg-hero .hero-thumb {
    contain: none !important;
    content-visibility: visible !important;
  }

  .rpg-hero .hero-project-link {
    border-radius: 30px !important;
  }

  .project-dialog .gallery-image,
  .project-dialog .gallery-video,
  .project-dialog .faction-image,
  .project-dialog .faction-video,
  .project-dialog .slide-media {
    content-visibility: visible !important;
  }
}

/* Mobile polish: keep hero card corners inside the viewport. */
@media (hover: none), (pointer: coarse), (max-width: 820px) {
  .rpg-hero {
    overflow: clip !important;
  }

  .rpg-hero .hero-index,
  .rpg-hero .hero-project-list {
    overflow: visible !important;
  }

  .rpg-hero .hero-project-list {
    box-sizing: border-box !important;
    width: calc(100vw - 32px) !important;
    margin-inline: auto !important;
    padding-inline: 16px !important;
    contain: none !important;
  }

  .rpg-hero .hero-project-row,
  .rpg-hero .hero-project-row:nth-child(n) {
    width: clamp(124px, 34vw, 146px) !important;
    max-width: calc(48vw - 24px) !important;
    contain: none !important;
    overflow: visible !important;
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .22))
      translateY(calc(var(--card-y) * .44))
      rotate(calc(var(--card-rotate) * .38)) !important;
  }

  .rpg-hero .hero-project-row.is-featured {
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .22))
      translateY(calc(calc(var(--card-y) * .44) - 46px))
      rotate(calc(var(--card-rotate) * .05))
      scale(1.06) !important;
  }

  .rpg-hero.has-active .hero-project-row:not(.is-featured) {
    transform:
      translate(-50%, -50%)
      translateX(calc(var(--card-x) * .22))
      translateY(calc(calc(var(--card-y) * .44) + 8px))
      rotate(calc(var(--card-rotate) * .38))
      scale(.92) !important;
  }

  .rpg-hero .hero-project-link,
  .rpg-hero .hero-thumb,
  .rpg-hero .hero-thumb-video {
    contain: none !important;
    content-visibility: visible !important;
    mask-image: none !important;
    -webkit-mask-image: none !important;
  }

  .rpg-hero .hero-project-link {
    border-radius: 24px !important;
    overflow: hidden !important;
    clip-path: none !important;
    transform: translateZ(0) !important;
  }

  .rpg-hero .hero-thumb,
  .rpg-hero .hero-thumb-video {
    overflow: hidden !important;
    border-radius: inherit !important;
    inset: 0 !important;
    transform: none !important;
    will-change: auto !important;
  }
}
