@font-face { font-family: 'Monument'; src: url('MonumentExtended-Regular.otf') format('opentype'); font-weight: 400; }
@font-face { font-family: 'Monument'; src: url('MonumentExtended-Ultrabold.otf') format('opentype'); font-weight: 800; }

:root {
    --bg: #000;
    --bg-soft: #0a0a0c;
    --card: #101013;
    --border: rgba(255,255,255,.08);
    --text: #f5f5f7;
    --text-dim: #86868b;
    --grad: linear-gradient(100deg,#2997ff 0%,#a259ff 45%,#ff6482 100%);
    --radius: 22px;
    --ease: cubic-bezier(.22,1,.36,1);
    --font-display: 'Monument', -apple-system, sans-serif;
    --font-body: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', 'PingFang SC', 'Helvetica Neue', sans-serif;
}

* { margin:0; padding:0; box-sizing:border-box; }
body {
    background: var(--bg); color: var(--text);
    font-family: var(--font-body);
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    cursor: none;
}
a { color: inherit; text-decoration: none; cursor: none; }
::selection { background:#a259ff; color:#fff; }

/* Cursor */
.cursor-dot, .cursor-ring { position: fixed; top:0; left:0; pointer-events:none; z-index:10000; border-radius:50%; }
.cursor-dot { width:8px; height:8px; background:#fff; mix-blend-mode:difference; }
.cursor-ring {
    width:36px; height:36px; border:1px solid rgba(255,255,255,.5);
    transition: width .35s var(--ease), height .35s var(--ease), background .35s;
    mix-blend-mode:difference;
}
.cursor-ring.is-hover { width:64px; height:64px; background:rgba(255,255,255,.9); }
@media (hover:none) { .cursor-dot,.cursor-ring{display:none;} body,a{cursor:auto;} }

/* Nav */
nav {
    position:fixed; top:0; left:0; right:0; z-index:900;
    display:flex; justify-content:space-between; align-items:center;
    padding: 16px 44px;
    background: rgba(0,0,0,.55);
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    border-bottom: 1px solid transparent;
    transition: border-color .4s;
}
nav.scrolled { border-bottom-color: var(--border); }
.nav-logo { font-family:var(--font-display); font-weight:800; font-size:.95rem; letter-spacing:3px; }
.nav-logo em { font-style:normal; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.nav-links { display:flex; gap:34px; font-size:.8rem; color:var(--text-dim); letter-spacing:.06em; }
.nav-links a { position:relative; padding:4px 0; transition:color .3s; }
.nav-links a::after { content:''; position:absolute; left:0; bottom:0; width:0; height:1px; background:var(--text); transition:width .35s var(--ease); }
.nav-links a:hover { color:var(--text); }
.nav-links a:hover::after { width:100%; }
@media (max-width:640px){ .nav-links{display:none;} nav{padding:14px 22px;} }

/* 全局统一背景：整页连续流动的极光画布（无接缝） */
.page-bg { position:fixed; inset:0; z-index:-1; pointer-events:none; }
#page-aurora { position:absolute; inset:0; width:100%; height:100%; }
.page-bg::after {
    content:''; position:absolute; inset:0; opacity:.035;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Hero */
.hero {
    position:relative;
    display:flex; flex-direction:column; justify-content:flex-start; align-items:center;
    text-align:center; overflow:hidden; padding:84px 24px 64px;
}
#hero-bg {
    position:absolute; inset:0; width:100%; height:100%;
    z-index:0; pointer-events:none;
    /* 底部渐隐，与全站极光背景自然衔接，杜绝接缝 */
    -webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent 100%);
    mask-image:linear-gradient(to bottom,#000 55%,transparent 100%);
}
.hero > *:not(#hero-bg):not(.hero-noise):not(.hero-glow) { position:relative; z-index:3; }
.hero-noise {
    position:absolute; inset:0; z-index:2; pointer-events:none; opacity:.05;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.hero-glow {
    position:absolute; width:900px; height:900px; border-radius:50%;
    background: radial-gradient(circle, rgba(162,89,255,.18), rgba(41,151,255,.08) 45%, transparent 70%);
    top:50%; left:50%; transform:translate(-50%,-55%);
    pointer-events:none; filter:blur(10px);
    -webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent 100%);
    mask-image:linear-gradient(to bottom,#000 55%,transparent 100%);
}
.hero-eyebrow {
    font-size:.8rem; letter-spacing:.35em; color:var(--text-dim);
    text-transform:uppercase; margin-bottom:28px; margin-top:0;
    display:inline-flex; align-items:center; gap:12px;
}
.hero-eyebrow::before,.hero-eyebrow::after { content:''; width:36px; height:1px; background:var(--border); }
.hero h1 {
    font-family:var(--font-display); font-weight:800;
    font-size: clamp(2.6rem, 10.5vw, 10.5rem);
    line-height:1.06; letter-spacing:-.01em; text-transform:uppercase;
    max-width:100%;
}
.hero h1 .line {
    display:block; overflow:hidden;
    /* 外扩内边距补偿，防止字形在揭示动画容器边缘被裁切 */
    padding:.08em .12em; margin:-.08em -.12em;
}
.hero h1 .line span { display:inline-block; transform:translateY(110%); }
.hero h1 .grad { background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.hero-sub { margin-top:34px; max-width:560px; color:var(--text-dim); font-size:1.05rem; line-height:1.8; opacity:0; }
.hero-cta { margin-top:44px; display:flex; gap:16px; opacity:0; }
.hero-wave {
    display:block; width:100%; height:110px; margin-top:36px;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
    mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
}
#about-aurora { height:150px; margin-top:0; }
.hero-wave.band { height:120px; margin-top:0; }
.btn {
    padding:14px 34px; border-radius:980px; font-size:.9rem; letter-spacing:.04em;
    transition: transform .35s var(--ease), box-shadow .35s, background .35s;
    display:inline-block;
}
.btn-primary { background:#fff; color:#000; font-weight:600; }
.btn-primary:hover { transform:scale(1.05); box-shadow:0 12px 40px rgba(255,255,255,.18); }
.btn-ghost { border:1px solid var(--border); color:var(--text); }
.btn-ghost:hover { background:rgba(255,255,255,.08); transform:scale(1.05); }
.scroll-cue { display:none; }
.scroll-cue .bar { width:1px; height:44px; background:var(--border); overflow:hidden; position:relative; }
.scroll-cue .bar::after {
    content:''; position:absolute; top:-100%; left:0; width:100%; height:100%;
    background:linear-gradient(#fff,transparent); animation:cue 1.8s var(--ease) infinite;
}
@keyframes cue { to { top:100%; } }

/* Work strip (Hero 与 About 之间的作品卡带，三条方向错开) */
.work-strip { padding:72px 0; position:relative; }
.strip-row {
    overflow:hidden;
    -webkit-mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.strip-row + .strip-row { margin-top:16px; }
.strip-track { display:flex; gap:16px; width:max-content; will-change:transform; }
.strip-card {
    flex:0 0 auto; width:252px; height:170px; border-radius:16px; overflow:hidden;
    border:1px solid rgba(255,255,255,.14); background:#15151a; position:relative;
}
.strip-card img, .strip-card video {
    width:100%; height:100%; object-fit:cover; display:block;
    transform:scale(1.02); filter:saturate(.95);
    transition:transform .8s var(--ease), filter .5s;
}
.strip-card:hover img, .strip-card:hover video { transform:scale(1.08); filter:saturate(1.12); }
.strip-card::after {
    content:''; position:absolute; inset:0; pointer-events:none;
    background:linear-gradient(160deg, rgba(255,255,255,.08), transparent 45%);
}
@media (max-width:640px){ .strip-card{ width:200px; height:136px; } }

/* Marquee */
.marquee { border-top:1px solid var(--border); border-bottom:1px solid var(--border); padding:22px 0; overflow:hidden; white-space:nowrap; background:rgba(10,10,12,.66); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); }
.marquee-track { display:inline-flex; gap:56px; will-change:transform; }
.marquee-track span {
    font-family:var(--font-display); font-weight:800; font-size:1.15rem;
    letter-spacing:.14em; text-transform:uppercase; color:var(--text-dim);
    display:inline-flex; align-items:center; gap:56px;
}
.marquee-track span i { font-style:normal; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }

/* Sections */
.container { max-width:1280px; margin:0 auto; padding:0 40px; }
@media (max-width:640px){ .container{padding:0 22px;} }
.section-eyebrow {
    font-size:.72rem; letter-spacing:.32em; text-transform:uppercase;
    color:var(--text-dim); margin-bottom:36px; display:flex; align-items:center; gap:14px;
}
.section-eyebrow::before { content:''; width:40px; height:1px; background:var(--grad); }

/* About */
.about { padding:110px 0 140px; position:relative; overflow:hidden; }
.about .container { position:relative; z-index:1; }

/* About 局部装饰已移除：统一由全站极光画布提供背景，避免区块边界截断产生接缝 */

/* About 旋转徽章 */
.about-badge { position:absolute; right:0; top:-6px; width:122px; height:122px; }
.about-badge svg { width:100%; height:100%; overflow:visible; animation:badgeSpin 14s linear infinite; }
.about-badge text { font-size:10.5px; letter-spacing:2.4px; fill:var(--text-dim); text-transform:uppercase; }
.about-badge .badge-dot {
    position:absolute; inset:0; margin:auto; width:10px; height:10px; border-radius:50%;
    background:linear-gradient(120deg, #2997ff, #a259ff, #ff6482);
    box-shadow:0 0 18px rgba(162,89,255,.8);
    animation:badgePulse 2.4s ease-in-out infinite;
}
@keyframes badgeSpin { to { transform:rotate(360deg); } }
@keyframes badgePulse { 0%,100% { transform:scale(1); opacity:1; } 50% { transform:scale(1.5); opacity:.6; } }
@media (max-width:720px){ .about-badge{ display:none; } }
.about-text { font-size: clamp(1.5rem, 3.2vw, 2.6rem); line-height:1.65; font-weight:500; max-width:980px; }
.about-text .w { opacity:.12; }
.stats { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--border); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; margin-top:90px; }
.stat { background:rgba(12,12,16,.5); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); padding:44px 36px; }
.stat b { font-family:var(--font-display); font-weight:800; font-size:clamp(2.4rem,5vw,4rem); display:block; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.stat small { color:var(--text-dim); font-size:.82rem; letter-spacing:.12em; text-transform:uppercase; display:block; margin-top:12px; }
@media (max-width:720px){ .stats{grid-template-columns:1fr;} }

/* Works */
.works { padding: 60px 0 40px; }
.works-head { padding: 60px 0 20px; position:relative; perspective:900px; }
/* 3D 陀螺环 */
.gyro {
    position:absolute; right:0; top:-10px; width:170px; height:170px;
    transform-style:preserve-3d; pointer-events:none;
    animation:gyroSpin 14s linear infinite;
}
.gyro i { position:absolute; inset:0; border-radius:50%; border:1.8px solid; }
.gyro i:nth-child(1) { transform:rotateX(75deg); border-color:rgba(41,151,255,.85); box-shadow:0 0 22px rgba(41,151,255,.35); }
.gyro i:nth-child(2) { transform:rotateY(75deg); border-color:rgba(162,89,255,.85); box-shadow:0 0 22px rgba(162,89,255,.35); }
.gyro i:nth-child(3) { transform:rotateX(75deg) rotateY(75deg); border-color:rgba(255,100,130,.65); box-shadow:0 0 18px rgba(255,100,130,.3); }
.gyro i:nth-child(4) { inset:36px; border-color:rgba(255,255,255,.45); transform:rotateX(20deg) rotateY(55deg); }
@keyframes gyroSpin { to { transform:rotateX(360deg) rotateY(360deg); } }
@media (max-width:640px){ .gyro{ display:none; } }

/* Toolkit 旋转虚线环 */
.toolkit .container { position:relative; }
.spin-ring {
    position:absolute; right:10px; top:-30px; width:130px; height:130px;
    pointer-events:none; animation:ringRotate 12s linear infinite;
}
.spin-ring i { position:absolute; inset:0; border-radius:50%; border:1.6px dashed rgba(41,151,255,.7); box-shadow:0 0 18px rgba(41,151,255,.28); }
.spin-ring i:nth-child(2) { inset:24px; border-color:rgba(162,89,255,.6); animation:ringRotate 8s linear infinite reverse; }
.spin-ring::after {
    content:''; position:absolute; top:-5px; left:calc(50% - 5px); width:10px; height:10px;
    border-radius:50%; background:#2997ff; box-shadow:0 0 16px #2997ff;
}
@keyframes ringRotate { to { transform:rotate(360deg); } }
@media (max-width:640px){ .spin-ring{ display:none; } }

/* Footer 扩散脉冲环 */
footer .container { position:relative; }
.pulse-rings { position:absolute; right:8%; top:30px; width:180px; height:180px; pointer-events:none; }
.pulse-rings i { position:absolute; inset:0; border-radius:50%; border:1.4px solid rgba(162,89,255,.55); animation:pulseRing 3.4s ease-out infinite; }
.pulse-rings i:nth-child(2) { animation-delay:1.15s; border-color:rgba(41,151,255,.5); }
.pulse-rings i:nth-child(3) { animation-delay:2.3s; border-color:rgba(255,100,130,.45); }
.pulse-rings::after {
    content:''; position:absolute; inset:0; margin:auto; width:12px; height:12px;
    border-radius:50%; background:linear-gradient(120deg,#2997ff,#a259ff);
    box-shadow:0 0 20px rgba(162,89,255,.9); animation:badgePulse 2.4s ease-in-out infinite;
}
@keyframes pulseRing { 0% { transform:scale(.25); opacity:.95; } 100% { transform:scale(1.5); opacity:0; } }
@media (max-width:720px){ .pulse-rings{ display:none; } }
.works-head h2 {
    font-family:var(--font-display); font-weight:800;
    font-size: clamp(2.6rem, 7vw, 5.6rem); text-transform:uppercase; letter-spacing:-.01em; line-height:1.02;
}
.works-head h2 .grad { background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.works-head p { color:var(--text-dim); margin-top:22px; max-width:520px; line-height:1.8; }

.project { padding:110px 0; border-top:1px solid var(--border); }
.project-head { display:flex; align-items:flex-end; justify-content:space-between; gap:30px; margin-bottom:54px; flex-wrap:wrap; }
.project-index { font-size:.78rem; color:var(--text-dim); letter-spacing:.3em; margin-bottom:16px; display:block; }
.project-title { font-family:var(--font-display); font-weight:800; font-size:clamp(2.2rem,5.5vw,4.4rem); text-transform:uppercase; line-height:1; }

/* 系列标题错落排版：左 / 右 / 中 交替 */
.project:nth-child(3n+2) .project-head { flex-direction:row-reverse; }
.project:nth-child(3n+2) .project-head > div:first-child { text-align:right; margin-left:auto; }
.project:nth-child(3n+2) .title-row { justify-content:flex-end; }
.project:nth-child(3n+3) .project-head { flex-direction:column; align-items:center; text-align:center; gap:22px; }
.project:nth-child(3n+3) .project-desc { margin:0 auto; }

/* 系列标题背景律动：柔和光晕 + 发丝轨道，极简克制 */
.project-head { position:relative; }
.project-head > div:not(.fx-stage) { position:relative; z-index:1; }
.fx-stage {
    position:absolute; width:400px; height:400px; top:50%; right:-110px; margin-top:-200px;
    pointer-events:none; z-index:0; opacity:.85;
    transform:perspective(1100px) rotateX(58deg) rotateZ(-12deg);
}
.project:nth-child(3n+2) .fx-stage { right:auto; left:-110px; transform:perspective(1100px) rotateX(58deg) rotateZ(12deg); }
.project:nth-child(3n+3) .fx-stage { right:auto; left:50%; margin-left:-200px; opacity:.5; transform:perspective(1100px) rotateX(64deg); }
@media (max-width:720px){
    .fx-stage { width:260px; height:260px; margin-top:-130px; right:-80px; }
    .project:nth-child(3n+2) .fx-stage { left:-80px; }
    .project:nth-child(3n+3) .fx-stage { margin-left:-130px; }
}
.mini-fx { width:100%; height:100%; position:relative; animation:fxFloat 9s ease-in-out infinite; }
@keyframes fxFloat { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-10px); } }
.mini-fx::before {
    content:''; position:absolute; inset:-12%; border-radius:50%;
    background:radial-gradient(circle, rgba(150,120,255,.13), rgba(41,151,255,.05) 45%, transparent 70%);
}
.mini-fx i { position:absolute; border-radius:50%; }
.mini-fx i:nth-child(1) {
    inset:4%; border:1px solid rgba(255,255,255,.16);
    animation:ringRotate 46s linear infinite;
}
.mini-fx i:nth-child(1)::after {
    content:''; position:absolute; top:-3px; left:calc(50% - 3px); width:6px; height:6px;
    border-radius:50%; background:#fff;
    box-shadow:0 0 12px rgba(170,150,255,.9), 0 0 34px rgba(120,120,255,.5);
}
.mini-fx i:nth-child(2) {
    inset:24%; border:1px dashed rgba(255,255,255,.09);
    animation:ringRotate 70s linear infinite reverse;
}
.project-desc { color:var(--text-dim); max-width:420px; line-height:1.8; font-size:.95rem; }
.project-count { color:var(--text-dim); font-size:.75rem; letter-spacing:.2em; margin-top:14px; display:block; }

.masonry { columns:3; column-gap:18px; }
@media (max-width:1024px){ .masonry{columns:2;} }
@media (max-width:640px){ .masonry{columns:1;} }
.card {
    break-inside:avoid; margin-bottom:18px; border-radius:var(--radius);
    overflow:hidden; position:relative; background:var(--card);
    border:1px solid var(--border);
    transform:translateY(46px); opacity:0;
    transition: transform .9s var(--ease), opacity .9s var(--ease), box-shadow .5s;
}
.card.in { transform:translateY(0); opacity:1; }
.card:hover { box-shadow:0 30px 80px rgba(0,0,0,.6); }
.card img, .card video {
    width:100%; display:block; transform:scale(1.02);
    transition:transform 1.1s var(--ease), filter .6s;
    filter:saturate(.92);
}
.card:hover img, .card:hover video { transform:scale(1.08); filter:saturate(1.1); }
.card .veil {
    position:absolute; inset:0; display:flex; align-items:flex-end; padding:20px;
    background:linear-gradient(to top, rgba(0,0,0,.55), transparent 55%);
    opacity:0; transition:opacity .5s;
    font-size:.72rem; letter-spacing:.22em; text-transform:uppercase;
}
.card:hover .veil { opacity:1; }
.card .veil .zoom {
    margin-left:auto; width:34px; height:34px; border-radius:50%;
    background:rgba(255,255,255,.14); backdrop-filter:blur(8px);
    display:flex; align-items:center; justify-content:center;
}
.extra-stack { display:none; }
.extra-stack.shown { display:block; column-span:all; columns:3; column-gap:18px; }
@media (max-width:1024px){ .extra-stack.shown{columns:2;} }
@media (max-width:640px){ .extra-stack.shown{columns:1;} }

.load-more {
    display:block; margin:36px auto 0; padding:15px 42px; border-radius:980px;
    border:1px solid var(--border); background:transparent; color:var(--text);
    font-family:var(--font-body); font-size:.85rem; letter-spacing:.1em;
    transition:all .35s var(--ease); cursor:none;
}
.load-more:hover { background:#fff; color:#000; transform:scale(1.04); }

/* Toolkit */
.toolkit { padding:150px 0; border-top:1px solid var(--border); }
.toolkit h2 { font-family:var(--font-display); font-weight:800; font-size:clamp(2rem,5vw,3.6rem); text-transform:uppercase; margin-bottom:60px; }
.tools { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px; }
.tool {
    border:1px solid rgba(255,255,255,.12); border-radius:var(--radius); padding:34px 26px;
    background:rgba(255,255,255,.045); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.09);
    transition:transform .45s var(--ease), border-color .45s, background .45s;
    transform-style:preserve-3d; will-change:transform;
}
.tool:hover { border-color:rgba(162,89,255,.5); background:rgba(255,255,255,.08); }
.tool b { font-family:var(--font-display); font-size:1.05rem; letter-spacing:.06em; display:block; margin-bottom:10px; }
.tool small { color:var(--text-dim); font-size:.78rem; line-height:1.6; display:block; }

/* Footer */
footer { border-top:1px solid var(--border); padding:140px 0 60px; background:rgba(10,10,12,.55); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); }
.footer-big { font-family:var(--font-display); font-weight:800; font-size:clamp(2.6rem,8vw,7rem); text-transform:uppercase; line-height:1; }
.footer-big .grad { background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.footer-grid { display:flex; justify-content:space-between; align-items:flex-end; gap:40px; margin-top:80px; flex-wrap:wrap; }
.contact-line { color:var(--text-dim); font-size:.9rem; line-height:2.1; letter-spacing:.05em; }
.contact-line a { color:var(--text); border-bottom:1px solid var(--border); transition:border-color .3s, color .3s; }
.contact-line a:hover { color:#a259ff; border-color:#a259ff; }
.wechat-wrap { position:relative; }
.qr-pop {
    position:absolute; bottom:calc(100% + 16px); right:0; width:190px; padding:10px;
    background:#16161a; border:1px solid var(--border); border-radius:18px;
    opacity:0; transform:translateY(12px) scale(.96); pointer-events:none;
    transition:all .45s var(--ease); box-shadow:0 24px 60px rgba(0,0,0,.6);
}
.wechat-wrap:hover .qr-pop { opacity:1; transform:translateY(0) scale(1); }
.qr-pop img { width:100%; display:block; border-radius:10px; }
.copyright { margin-top:80px; padding-top:28px; border-top:1px solid var(--border); display:flex; justify-content:space-between; color:var(--text-dim); font-size:.72rem; letter-spacing:.18em; text-transform:uppercase; flex-wrap:wrap; gap:10px; }

/* Lightbox */
.lightbox {
    position:fixed; inset:0; z-index:2000; background:rgba(0,0,0,.9);
    backdrop-filter:blur(24px); -webkit-backdrop-filter:blur(24px);
    display:flex; align-items:center; justify-content:center;
    opacity:0; pointer-events:none; transition:opacity .45s var(--ease);
}
.lightbox.open { opacity:1; pointer-events:auto; }
.lightbox img, .lightbox video {
    max-width:88vw; max-height:86vh; border-radius:14px;
    box-shadow:0 40px 120px rgba(0,0,0,.8);
    transform:scale(.94); transition:transform .5s var(--ease);
}
.lightbox.open img, .lightbox.open video { transform:scale(1); }
.lightbox-close {
    position:absolute; top:28px; right:34px; width:46px; height:46px; border-radius:50%;
    background:rgba(255,255,255,.1); color:#fff; border:1px solid var(--border);
    font-size:1.1rem; display:flex; align-items:center; justify-content:center; cursor:none;
    transition:background .3s, transform .3s;
}
.lightbox-close:hover { background:rgba(255,255,255,.25); transform:rotate(90deg); }

.reveal { opacity:0; transform:translateY(50px); }
