:root{
  --bg:#07111c;
  --bg2:#0a0f16;
  --ink:#f5f1e7;
  --muted:#9ca8b6;
  --line:rgba(255,255,255,.14);
  --panel:rgba(9,17,27,.78);
  --gold:#d8ad68;
  --red:#c95e3e;
  --blue:#77bdf7;
  --indigo:#466dff;
  --max:1320px;
  --navh:72px;
  --ease:cubic-bezier(.2,.75,.18,1);
}
*{box-sizing:border-box}
html{background:var(--bg);scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overflow-x:hidden}
body.is-leaving{overflow:hidden}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button{font:inherit;color:inherit}
button,a{-webkit-tap-highlight-color:transparent}
::selection{background:#d8ad68;color:#07111c}
.skip-link{position:absolute;left:-999px;top:8px;z-index:1000;background:#fff;color:#000;padding:.6rem .8rem;border-radius:.4rem}.skip-link:focus{left:8px}

/* NAV */
.site-nav{position:fixed;z-index:120;top:0;left:0;right:0;height:var(--navh);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,4vw,58px);background:linear-gradient(180deg,rgba(3,9,15,.92),rgba(3,9,15,.46),transparent);backdrop-filter:blur(10px);border-bottom:1px solid transparent;transition:background .25s ease,border-color .25s ease}
.site-nav.scrolled,.interior .site-nav{background:rgba(4,10,17,.9);border-color:var(--line)}
.mark{width:36px;height:36px;display:grid;place-items:center}.mark svg{width:27px;height:27px;fill:none;stroke:var(--ink);stroke-width:1.35;opacity:.95}
.desktop-nav{display:flex;gap:clamp(18px,2.7vw,40px);align-items:center}.desktop-nav a,.menu-toggle{font-size:.69rem;letter-spacing:.2em;text-transform:uppercase;color:#edf1f5}.desktop-nav a{position:relative;padding:.4rem 0}.desktop-nav a:after{content:"";position:absolute;left:0;right:100%;bottom:-5px;height:1px;background:#fff;transition:right .22s ease}.desktop-nav a:hover:after,.desktop-nav a.active:after{right:0}
.menu-toggle{display:none;background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:999px;padding:.58rem .82rem}
.mobile-nav{position:fixed;z-index:119;top:var(--navh);left:0;right:0;background:#07111cf7;border-bottom:1px solid var(--line);padding:1rem 1.25rem}.mobile-nav a{display:flex;justify-content:space-between;padding:1rem 0;border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.14em;font-size:.78rem}.mobile-nav a:last-child{border-bottom:0}

/* WORLD TRANSITIONS */
.page-transition{position:fixed;inset:0;z-index:500;pointer-events:none;opacity:0;visibility:hidden;overflow:hidden;background:#07111c}
.page-transition:before,.page-transition:after{content:"";position:absolute;inset:-12%;opacity:0;will-change:transform,opacity,clip-path}
body.is-leaving .page-transition{visibility:visible;animation:worldCover .72s var(--ease) forwards}
@keyframes worldCover{0%{opacity:0}18%{opacity:1}100%{opacity:1}}

/* One Piece: sunset flare + rising hand-painted wave bands */
body.transition-to-one .page-transition{background:linear-gradient(180deg,#160e0b 0%,#0a0f17 72%)}
body.transition-to-one .page-transition:before{inset:-18%;background:radial-gradient(circle at 58% 42%,rgba(255,236,174,.95) 0 4%,rgba(237,126,62,.62) 9%,rgba(174,65,36,.24) 20%,transparent 36%),linear-gradient(180deg,rgba(235,112,56,.12),transparent 58%);mix-blend-mode:screen;animation:oneSun .72s var(--ease) forwards}
body.transition-to-one .page-transition:after{inset:auto -12% -30% -12%;height:88%;background:radial-gradient(ellipse at 18% 100%,transparent 0 41%,rgba(242,238,220,.92) 42% 44%,rgba(57,108,143,.94) 45% 55%,transparent 56%),radial-gradient(ellipse at 48% 108%,transparent 0 39%,rgba(247,242,224,.88) 40% 42%,rgba(45,88,127,.96) 43% 54%,transparent 55%),radial-gradient(ellipse at 78% 100%,transparent 0 42%,rgba(246,239,219,.9) 43% 45%,rgba(39,78,119,.95) 46% 57%,transparent 58%);filter:drop-shadow(0 -18px 28px rgba(232,112,61,.16));animation:oneWave .72s var(--ease) forwards}
@keyframes oneSun{0%{opacity:0;transform:scale(.55)}45%{opacity:.78}100%{opacity:1;transform:scale(1.28)}}
@keyframes oneWave{0%{opacity:0;transform:translateY(48%) scaleY(.7)}30%{opacity:.7}100%{opacity:1;transform:translateY(-12%) scaleY(1.35)}}

/* Greninja: water ripples + rotating shuriken aperture */
body.transition-to-greninja .page-transition{background:radial-gradient(circle at 50% 50%,#13254d 0%,#07101d 58%,#030812 100%)}
body.transition-to-greninja .page-transition:before{inset:-24%;background:repeating-radial-gradient(circle at 50% 50%,transparent 0 52px,rgba(121,174,255,.2) 54px 56px,transparent 58px 92px),radial-gradient(circle at 50% 50%,rgba(100,153,255,.24),transparent 37%);mix-blend-mode:screen;animation:ninjaRipple .72s ease-out forwards}
body.transition-to-greninja .page-transition:after{inset:50% auto auto 50%;width:min(72vw,900px);aspect-ratio:1;transform:translate(-50%,-50%) rotate(0deg) scale(.15);background:conic-gradient(from 22.5deg,transparent 0 8deg,rgba(210,229,255,.92) 9deg 29deg,transparent 30deg 98deg,rgba(122,176,255,.88) 99deg 119deg,transparent 120deg 188deg,rgba(210,229,255,.9) 189deg 209deg,transparent 210deg 278deg,rgba(122,176,255,.9) 279deg 299deg,transparent 300deg 360deg);clip-path:polygon(50% 0,62% 37%,100% 50%,62% 63%,50% 100%,38% 63%,0 50%,38% 37%);filter:blur(.3px) drop-shadow(0 0 34px rgba(92,145,255,.35));animation:ninjaShuriken .72s var(--ease) forwards}
@keyframes ninjaRipple{0%{opacity:0;transform:scale(.28)}35%{opacity:.85}100%{opacity:.55;transform:scale(1.5)}}
@keyframes ninjaShuriken{0%{opacity:0;transform:translate(-50%,-50%) rotate(-95deg) scale(.08)}28%{opacity:.9}100%{opacity:.16;transform:translate(-50%,-50%) rotate(125deg) scale(2.05)}}

/* LEGO: studs/grid assemble upward in chunky blocks */
body.transition-to-lego .page-transition{background:#090d12}
body.transition-to-lego .page-transition:before{inset:-4%;background-image:radial-gradient(circle,rgba(241,221,174,.36) 0 17%,transparent 19%),linear-gradient(90deg,rgba(215,169,92,.2) 1px,transparent 1px),linear-gradient(rgba(215,169,92,.16) 1px,transparent 1px);background-size:56px 42px,112px 84px,112px 84px;background-position:0 0,0 0,56px 42px;transform:translateY(112%);clip-path:polygon(0 0,100% 0,100% 100%,0 100%);animation:legoBuildUp .72s cubic-bezier(.22,.78,.18,1) forwards}
body.transition-to-lego .page-transition:after{inset:0;background:linear-gradient(90deg,transparent 0 8%,rgba(245,235,211,.1) 8% 16%,transparent 16% 28%,rgba(245,235,211,.08) 28% 39%,transparent 39% 51%,rgba(245,235,211,.12) 51% 63%,transparent 63% 77%,rgba(245,235,211,.07) 77% 89%,transparent 89%);transform:translateY(100%);animation:legoColumns .68s .06s var(--ease) forwards}
@keyframes legoBuildUp{0%{opacity:0;transform:translateY(105%) scale(1.05)}20%{opacity:.55}100%{opacity:1;transform:translateY(-3%) scale(1)}}
@keyframes legoColumns{0%{opacity:0;transform:translateY(100%)}100%{opacity:.9;transform:translateY(-8%)}}

/* Collection: stacked archive cards shutter across */
body.transition-to-collection .page-transition{background:#080c12}
body.transition-to-collection .page-transition:before{inset:-8%;background:repeating-linear-gradient(90deg,rgba(214,224,232,.1) 0 1px,transparent 1px 18vw),linear-gradient(120deg,rgba(255,255,255,.07),transparent 38%);transform:translateX(-110%) skewX(-8deg);animation:archiveSlide .7s var(--ease) forwards}
body.transition-to-collection .page-transition:after{inset:12% 8%;border:1px solid rgba(255,255,255,.16);box-shadow:-11vw 7vh 0 rgba(255,255,255,.035),11vw -6vh 0 rgba(255,255,255,.045),0 0 0 999px rgba(4,8,12,.42);transform:scale(.72) rotate(-2deg);animation:archiveStack .7s var(--ease) forwards}
@keyframes archiveSlide{0%{opacity:0;transform:translateX(-110%) skewX(-8deg)}100%{opacity:1;transform:translateX(0) skewX(0)}}
@keyframes archiveStack{0%{opacity:0;transform:scale(.72) rotate(-2deg)}100%{opacity:.85;transform:scale(1.08) rotate(0)}}

/* Back to map: parchment edge + sea-blue opening */
body.transition-to-map .page-transition{background:linear-gradient(180deg,#07111c,#0b2234)}
body.transition-to-map .page-transition:before{inset:auto -4% -14% -4%;height:66%;background:linear-gradient(180deg,transparent 0 5%,rgba(235,218,174,.96) 6% 18%,rgba(169,129,75,.96) 65%,rgba(89,58,31,.98));clip-path:polygon(0 26%,6% 15%,12% 23%,18% 11%,25% 21%,33% 9%,42% 20%,50% 12%,61% 23%,70% 11%,79% 22%,88% 13%,95% 20%,100% 12%,100% 100%,0 100%);animation:mapParchment .72s var(--ease) forwards}
body.transition-to-map .page-transition:after{inset:-18%;background:repeating-radial-gradient(ellipse at 50% 72%,transparent 0 40px,rgba(135,198,235,.11) 41px 44px,transparent 45px 72px);animation:mapSea .72s ease-out forwards}
@keyframes mapParchment{0%{opacity:0;transform:translateY(70%)}100%{opacity:1;transform:translateY(-8%)}}
@keyframes mapSea{0%{opacity:0;transform:scale(.55)}100%{opacity:.8;transform:scale(1.22)}}

/* Incoming world reveals echo the destination, then clear quickly. */
.page-enter{position:fixed;inset:0;z-index:499;pointer-events:none;overflow:hidden;background:#07111c;animation:pageEnterFade .88s var(--ease) forwards}
.page-enter:before,.page-enter:after{content:"";position:absolute;inset:-12%;pointer-events:none}
.page-one .page-enter{background:linear-gradient(180deg,#26120d,#0b0f16)}
.page-one .page-enter:before{inset:auto -12% -24% -12%;height:82%;background:radial-gradient(ellipse at 20% 100%,transparent 0 43%,rgba(244,238,218,.78) 44% 46%,rgba(47,93,130,.82) 47% 58%,transparent 59%),radial-gradient(ellipse at 66% 106%,transparent 0 41%,rgba(245,237,215,.74) 42% 44%,rgba(40,79,119,.84) 45% 57%,transparent 58%);animation:enterWaveOut .86s var(--ease) forwards}
.page-greninja .page-enter{background:#07101d}
.page-greninja .page-enter:before{background:repeating-radial-gradient(circle at 50% 50%,transparent 0 46px,rgba(124,177,255,.18) 48px 50px,transparent 52px 80px);animation:enterRippleOut .86s ease-out forwards}
.page-lego .page-enter{background:#090d12}
.page-lego .page-enter:before{background-image:radial-gradient(circle,rgba(235,216,171,.24) 0 17%,transparent 19%);background-size:54px 40px;animation:enterStudsOut .82s var(--ease) forwards}
.page-collection .page-enter{background:#080c12}
.page-collection .page-enter:before{inset:9% 7%;border:1px solid rgba(255,255,255,.15);box-shadow:-10vw 6vh 0 rgba(255,255,255,.035),10vw -5vh 0 rgba(255,255,255,.04);animation:enterArchiveOut .84s var(--ease) forwards}
.home .page-enter{background:#07111c}
.home .page-enter:before{background:repeating-radial-gradient(ellipse at 50% 70%,transparent 0 44px,rgba(130,190,225,.1) 45px 47px,transparent 48px 74px);animation:enterMapOut .8s ease-out forwards}
@keyframes pageEnterFade{0%,48%{opacity:1}100%{opacity:0;visibility:hidden}}
@keyframes enterWaveOut{0%{opacity:1;transform:translateY(-8%)}100%{opacity:0;transform:translateY(62%) scaleY(.72)}}
@keyframes enterRippleOut{0%{opacity:.8;transform:scale(1.45)}100%{opacity:0;transform:scale(.45)}}
@keyframes enterStudsOut{0%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(1.22) translateY(-12%)}}
@keyframes enterArchiveOut{0%{opacity:.8;transform:scale(1.08)}100%{opacity:0;transform:scale(.82) rotate(1deg)}}
@keyframes enterMapOut{0%{opacity:.75;transform:scale(1.25)}100%{opacity:0;transform:scale(.6)}}

/* HOME HERO */
.hero{position:relative;min-height:100svh;background:#07111c;overflow:hidden}
.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 54%;filter:saturate(.84) contrast(1.13) brightness(.78);transform:scale(1.02);transition:transform 1.05s var(--ease),filter .9s var(--ease),opacity .9s var(--ease)}
.hero-vignette{position:absolute;inset:0;background:radial-gradient(circle at 64% 48%,transparent 0 17%,rgba(0,0,0,.04) 32%,rgba(0,0,0,.64) 100%),linear-gradient(180deg,rgba(2,9,15,.25),rgba(2,9,15,.08) 46%,rgba(2,9,15,.76));transition:opacity .8s var(--ease)}
.hero-glow{position:absolute;width:min(36vw,530px);aspect-ratio:1;border-radius:50%;left:61%;top:48%;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(238,248,255,.38) 0 22%,rgba(92,178,255,.19) 42%,rgba(52,131,240,.035) 62%,transparent 70%);filter:blur(3px);mix-blend-mode:screen;pointer-events:none;transition:transform 1s var(--ease),opacity .7s ease}
.light-beams{position:absolute;inset:11% 10% 18% 42%;display:flex;justify-content:space-around;opacity:.34;pointer-events:none}.light-beams i{display:block;width:2px;background:linear-gradient(180deg,transparent,#9fd5ff 30%,#fff 67%,transparent);filter:blur(.4px);transform:skewX(-4deg);animation:beamPulse 4.5s ease-in-out infinite alternate}.light-beams i:nth-child(2){opacity:.5;animation-delay:-1s}.light-beams i:nth-child(4){height:84%;align-self:flex-end;animation-delay:-2s}.light-beams i:nth-child(5){opacity:.4;animation-delay:-.5s}@keyframes beamPulse{to{opacity:.45;transform:skewX(-4deg) translateY(-5px)}}
.hero-lines{position:absolute;inset:0;opacity:.22;pointer-events:none;background:linear-gradient(112deg,transparent 0 48%,rgba(255,255,255,.12) 48.05% 48.15%,transparent 48.2%),radial-gradient(ellipse at 62% 51%,transparent 0 17%,rgba(255,255,255,.12) 17.2% 17.35%,transparent 17.55%);mix-blend-mode:screen}
.hero-ui{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:max(48px,6vh);z-index:3}.kicker{margin:0 0 1.3rem;font-size:.65rem;text-transform:uppercase;letter-spacing:.29em;color:#eef5fa}.enter{display:flex;flex-direction:column;align-items:center;gap:.35rem;background:transparent;border:0;cursor:pointer;font-size:.71rem;text-transform:uppercase;letter-spacing:.4em;color:#fff}.enter b{font-size:1.15rem;font-weight:400;animation:drift 1.8s ease-in-out infinite}@keyframes drift{50%{transform:translateY(5px)}}
.hero-parchment{position:absolute;z-index:2;left:-4%;right:-4%;bottom:-30%;height:40%;opacity:0;transform:translateY(40%);background:linear-gradient(180deg,transparent 0 10%,rgba(224,196,136,.25) 10% 12%,rgba(181,145,86,.84) 44%,rgba(117,84,46,.92));clip-path:polygon(0 30%,5% 22%,12% 28%,19% 18%,25% 25%,33% 16%,42% 24%,50% 17%,61% 25%,70% 18%,79% 26%,88% 19%,96% 25%,100% 20%,100% 100%,0 100%);transition:bottom 1s var(--ease),opacity .65s ease,transform 1s var(--ease)}
.hero.map-entering .hero-photo{transform:scale(1.12);filter:saturate(.65) contrast(1.2) brightness(.42)}
.hero.map-entering .hero-glow{transform:translate(-50%,-50%) scale(1.35);opacity:.15}
.hero.map-entering .hero-vignette{opacity:1}
.hero.map-entering .hero-parchment{bottom:-2%;opacity:1;transform:translateY(0)}
.hero.map-entering .hero-ui{opacity:0;transition:opacity .35s ease}

/* MAP */
#map{scroll-margin-top:var(--navh)}
.map-section{position:relative;background:#0a1018;padding:0 0 5rem;overflow:hidden}
.map-section:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 10%,rgba(216,173,104,.06),transparent 34%);pointer-events:none}
.map-wrap{max-width:1500px;margin:0 auto;padding:0 clamp(0px,1.5vw,20px)}
.map-viewport{position:relative;width:100%;overflow:hidden;border:1px solid rgba(255,255,255,.12);border-radius:0 0 22px 22px;background:#0b1621}
.map-inner{position:relative;width:100%;aspect-ratio:1.97/1;min-width:860px}
.map-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center bottom;transform:scale(1.005)}
.map-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,11,18,.02),transparent 32%,rgba(5,11,18,.08));pointer-events:none}
.hotspot{position:absolute;display:grid;place-items:center;border-radius:50%;outline:1px solid transparent;transition:background .2s ease,outline-color .2s ease,transform .25s ease;cursor:pointer}
.hotspot span{position:absolute;width:max-content;opacity:0;pointer-events:none;background:rgba(5,10,17,.88);border:1px solid rgba(255,255,255,.24);border-radius:999px;padding:.45rem .7rem;text-transform:uppercase;letter-spacing:.17em;font-size:.65rem;transition:opacity .2s ease}
.hotspot:hover,.hotspot:focus-visible{background:rgba(255,255,255,.08);outline-color:rgba(255,255,255,.55);transform:scale(1.035)}.hotspot:hover span,.hotspot:focus-visible span{opacity:1}
.hotspot-lego{left:4%;top:24%;width:34%;height:56%}.hotspot-one{left:35%;top:13%;width:33%;height:66%}.hotspot-greninja{left:66%;top:21%;width:31%;height:67%}.hotspot-collection{left:15%;top:69%;width:23%;height:24%}
.secret-island{position:absolute;left:43.4%;top:71.5%;width:13.5%;aspect-ratio:435/330;display:block;isolation:isolate;transform:rotate(-2deg);transition:transform .3s var(--ease),filter .3s ease;z-index:4;animation:islandPulse 7s ease-in-out infinite}
.secret-island-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;filter:saturate(.96) contrast(1.03) brightness(.96);filter:drop-shadow(0 12px 16px rgba(0,0,0,.28));pointer-events:none}
.secret-logo-flag{position:absolute;left:59.8%;top:27.5%;width:9.5%;height:auto;transform:translate(-50%,-50%) rotate(-2deg);filter:drop-shadow(0 0 4px rgba(83,230,237,.35));opacity:.92;z-index:2;pointer-events:none;animation:flagDrift 3.6s ease-in-out infinite}
.secret-island span{position:absolute;left:50%;bottom:8%;transform:translateX(-50%);width:max-content;opacity:0;pointer-events:none;background:rgba(5,10,17,.9);border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:.42rem .68rem;text-transform:uppercase;letter-spacing:.17em;font-size:.58rem;white-space:nowrap;transition:opacity .2s ease,transform .2s ease}
.secret-island:hover,.secret-island:focus-visible{transform:rotate(-2deg) translateY(-3px) scale(1.025);filter:brightness(1.04) saturate(1.04)}
.secret-island:hover span,.secret-island:focus-visible span{opacity:1;transform:translateX(-50%) translateY(-4px)}
.secret-island .pulse-ring,.secret-island .spark{pointer-events:none}
.secret-island.is-activated{animation:none;filter:brightness(1.08) saturate(1.08)}
.secret-island.is-activated .secret-logo-flag{animation:none;transform:translate(-50%,-54%) rotate(-2deg) scale(1.07)}
.secret-island .pulse-ring{position:absolute;left:49%;top:60%;width:20%;aspect-ratio:1;border-radius:999px;border:1px solid rgba(255,232,169,.52);transform:translate(-50%,-50%) scale(.7);opacity:0;mix-blend-mode:screen;animation:pulseRing 4.8s ease-out infinite}
.secret-island .pulse-ring.r2{animation-delay:1.6s}.secret-island .pulse-ring.r3{animation-delay:3.2s}
.secret-island .spark{position:absolute;left:var(--x);top:var(--y);width:5px;height:5px;background:radial-gradient(circle,#fff 0 32%,#f0d89a 33% 63%,transparent 64%);border-radius:50%;opacity:0;transform:translate(-50%,-50%) scale(.4);animation:sparkle .9s ease-out forwards}
@keyframes islandPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.035)}}
@keyframes flagDrift{0%,100%{transform:translate(-50%,-50%) rotate(-2deg)}50%{transform:translate(-50%,-53%) rotate(1deg)}}
@keyframes pulseRing{0%{opacity:0;transform:translate(-50%,-50%) scale(.55)}18%{opacity:.48}100%{opacity:0;transform:translate(-50%,-50%) scale(3.1)}}
@keyframes sparkle{0%{opacity:0;transform:translate(-50%,-50%) scale(.35)}18%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.05)}}
.map-hint{display:none;margin:12px 16px 0;color:#9ca8b6;font-size:.63rem;text-transform:uppercase;letter-spacing:.18em}
.destination-strip{max-width:var(--max);margin:0 auto;padding:1.2rem clamp(18px,4vw,56px) 0;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.destination-strip a{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:1rem .2rem .4rem;font-size:.69rem;text-transform:uppercase;letter-spacing:.18em;color:#dce3ea;transition:color .2s ease}.destination-strip a:hover{color:#fff}.destination-strip span{font-size:1rem}

/* INTERIOR SHELL */
.interior{background:#080d14}
.page-main{min-height:100svh;padding-top:var(--navh);overflow:hidden}
.page-hero{position:relative;min-height:min(78svh,820px);display:grid;align-items:end;overflow:hidden;border-bottom:1px solid var(--line)}
.page-hero:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(5,9,14,.05),rgba(5,9,14,.4) 58%,rgba(5,9,14,.96));z-index:2}
.page-hero-content{position:relative;z-index:4;max-width:var(--max);width:100%;margin:0 auto;padding:clamp(52px,8vw,100px) clamp(18px,4vw,56px)}
.page-hero .eyebrow{margin:0 0 .7rem;color:#bbc5d0;font-size:.67rem;letter-spacing:.24em;text-transform:uppercase}.page-hero h1{margin:0;font-family:Georgia,"Times New Roman",serif;font-weight:500;font-size:clamp(4.8rem,10vw,10rem);line-height:.82;letter-spacing:-.055em}.page-hero .subline{max-width:580px;margin:1.2rem 0 0;color:#d6dde4;font-size:clamp(.92rem,1.5vw,1.08rem);line-height:1.65}
.page-hero .hero-media{position:absolute;inset:0;z-index:0}
.page-hero .hero-media img{position:absolute;width:100%;height:100%;object-fit:cover}
.page-hero .hero-media:after{content:"";position:absolute;inset:0;pointer-events:none}
.hero-sidecard{position:absolute;z-index:4;right:clamp(18px,5vw,76px);top:clamp(90px,14vw,160px);width:min(330px,28vw);border:1px solid rgba(255,255,255,.18);background:rgba(7,12,19,.7);backdrop-filter:blur(12px);padding:1rem;transform:rotate(1.5deg)}
.hero-sidecard img{width:100%;aspect-ratio:4/3;object-fit:cover;border:1px solid rgba(255,255,255,.1)}.hero-sidecard strong{display:block;margin-top:.85rem;font-family:Georgia,serif;font-size:1.3rem;font-weight:500}.hero-sidecard small{display:block;margin-top:.25rem;color:#aeb8c4;letter-spacing:.08em;text-transform:uppercase}
.content-shell{max-width:var(--max);margin:0 auto;padding:clamp(62px,8vw,110px) clamp(18px,4vw,56px)}
.section-title{display:flex;justify-content:space-between;align-items:end;gap:2rem;margin-bottom:28px}.section-title h2{margin:0;font-family:Georgia,serif;font-size:clamp(2.3rem,5vw,4.7rem);font-weight:500;letter-spacing:-.04em}.section-title p{margin:0;color:var(--muted);max-width:450px;font-size:.86rem;line-height:1.6}
.eyebrow{color:var(--muted);font-size:.66rem;letter-spacing:.23em;text-transform:uppercase}
.back-map{display:inline-flex;margin-top:3rem;border-bottom:1px solid rgba(255,255,255,.35);padding-bottom:.3rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.18em;color:#d7dde4}
.page-footer{border-top:1px solid var(--line);padding:28px clamp(18px,4vw,56px);display:flex;justify-content:space-between;gap:1rem;color:#8996a4;font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;background:#05090e}
.page-footer .brand-nod{margin-left:auto;color:#a9b4bf;text-decoration:none;opacity:.62;transition:opacity .2s ease,color .2s ease;white-space:nowrap}
.page-footer .brand-nod:hover,.page-footer .brand-nod:focus-visible{opacity:1;color:#f0eee8}


/* ONE PIECE */
.page-one{--portal:rgba(206,103,61,.75)}
.page-one .page-hero{background:linear-gradient(180deg,#15100e,#0b0f16)}
.page-one .page-hero .hero-media .op-bg{inset:-2%;filter:saturate(.96) contrast(1.05) brightness(.72);object-position:center 38%}
.page-one .page-hero .hero-media:after{background:radial-gradient(circle at 70% 35%,rgba(213,101,53,.17),transparent 28%),linear-gradient(90deg,rgba(7,11,17,.95) 0 28%,rgba(7,11,17,.42) 55%,rgba(7,11,17,.2))}
.character-strip{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.35rem}.character-strip span{border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:.45rem .72rem;font-size:.71rem;color:#e4e9ef;background:rgba(0,0,0,.16)}
.op-collage{display:grid;grid-template-columns:1.4fr .8fr .8fr;grid-template-rows:320px 260px;gap:14px}.visual-card{position:relative;overflow:hidden;border:1px solid var(--line);background:#0b0e13}.visual-card img{width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease),filter .35s ease}.visual-card:hover img{transform:scale(1.035);filter:saturate(1.05)}.visual-card.large{grid-row:1/3}.visual-card .label{position:absolute;left:0;right:0;bottom:0;padding:4.2rem 1rem 1rem;background:linear-gradient(180deg,transparent,rgba(0,0,0,.88))}.visual-card .label strong{font-family:Georgia,serif;font-size:1.45rem;font-weight:500}.visual-card .label small{display:block;margin-top:.35rem;color:#cfd7df;text-transform:uppercase;letter-spacing:.12em}.crop-baratie img{object-position:center 28%}.crop-merry img{object-position:center 66%}.crop-shanks img{object-position:center 34%}
.card-wall{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.card-wall figure{margin:0;aspect-ratio:.73/1;overflow:hidden;border:1px solid var(--line);background:#0a0d11}.card-wall figure:nth-child(-n+4){aspect-ratio:1/1.15}.card-wall img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}.card-wall figure:hover img{transform:scale(1.04)}

/* LEGO */
.page-lego{background:#090d12}
.page-lego .page-hero{min-height:min(72svh,760px);background:#0b0d10}.page-lego .page-hero .hero-media{display:grid;grid-template-columns:1.58fr .72fr .72fr;grid-template-rows:1fr 1fr;gap:8px;background:#0a0d11}.page-lego .page-hero .hero-media img{position:relative;inset:auto;width:100%;height:100%;object-fit:cover;filter:saturate(.9) contrast(1.03) brightness(.86)}.page-lego .page-hero .hero-media img:first-child{grid-row:1/3;filter:saturate(.82) contrast(1.02) brightness(.78)}.page-lego .page-hero .hero-media:after{background:linear-gradient(90deg,rgba(7,11,16,.32) 0%,rgba(7,11,16,.10) 58%,rgba(7,11,16,.04) 100%),linear-gradient(180deg,transparent 46%,rgba(7,11,16,.93) 100%)}.page-lego .page-hero .hero-media .arkham{object-position:center 25%}.page-lego .page-hero .hero-media .baratie{object-position:center 30%}.page-lego .page-hero .hero-media .ray{object-position:center 34%}.page-lego .page-hero .hero-media .going{object-position:center 51%}.page-lego .page-hero .hero-media .speed{object-position:center 56%}
.filter-row{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 24px}.filter-row button{border:1px solid var(--line);background:rgba(255,255,255,.02);border-radius:999px;padding:.5rem .8rem;font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;cursor:pointer}.filter-row button.active{background:#f2ede2;color:#07111c;border-color:#f2ede2}
.build-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.build-card{border:1px solid var(--line);background:#0b0f14;min-width:0;cursor:pointer;transition:transform .25s var(--ease),border-color .25s ease}.build-card:hover{transform:translateY(-3px);border-color:rgba(255,255,255,.26)}.build-card[hidden]{display:none}.build-card.featured{grid-column:span 2}.build-card .image-frame{position:relative;overflow:hidden;background:#0d1116;aspect-ratio:4/3}.build-card.featured .image-frame{aspect-ratio:16/10}.build-card img{width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease)}.build-card:hover img{transform:scale(1.025)}.build-card .meta{padding:1rem}.build-card h3{margin:0 0 .55rem;font-family:Georgia,serif;font-size:1.38rem;font-weight:500}.build-card p{margin:0;color:#c7d0da;font-size:.79rem}.build-card .muted{color:#7f8b99}.build-card .pill{position:absolute;top:12px;left:12px;background:rgba(5,9,14,.75);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.15);padding:.4rem .55rem;border-radius:999px;font-size:.58rem;text-transform:uppercase;letter-spacing:.12em}.build-card.coming-soon{border-style:dashed;background:linear-gradient(180deg,#0b0f14,#0a0e13)}.build-card.coming-soon img{filter:saturate(.68) brightness(.78)}.build-card.coming-soon:hover img{filter:saturate(.8) brightness(.86)}.build-card .soon-badge{position:absolute;right:12px;bottom:12px;background:rgba(242,237,226,.92);color:#07111c;border:1px solid rgba(255,255,255,.35);padding:.44rem .62rem;border-radius:999px;font-size:.56rem;font-weight:700;text-transform:uppercase;letter-spacing:.13em;box-shadow:0 8px 24px rgba(0,0,0,.22)}.build-card .coming-text{color:#d9d2c3;text-transform:uppercase;letter-spacing:.12em;font-size:.67rem}.build-card.coming-soon:after{display:none}
/* crop original social review text out of thumbnails */
.build-card[data-build="baratie"] img{object-position:center 23%}.build-card[data-build="going"] img{object-position:center 75%}.build-card[data-build="arlong"] img{object-position:center 70%}.build-card[data-build="rayquaza"] img{object-position:center 22%}.build-card[data-build="speed"] img{object-position:center 68%}.build-card[data-build="minions"] img{object-position:center 70%}.build-card[data-build="arkham"] img{object-position:center 22%}

.build-modal{position:fixed;z-index:300;inset:0;display:grid;place-items:center;padding:20px;background:rgba(2,7,12,.86);backdrop-filter:blur(12px)}.build-modal[hidden]{display:none}.modal-panel{width:min(980px,100%);max-height:min(86svh,850px);overflow:auto;border:1px solid rgba(255,255,255,.18);background:#0a0f15;display:grid;grid-template-columns:1.3fr .7fr;box-shadow:0 30px 80px rgba(0,0,0,.45)}.modal-panel img{width:100%;height:100%;min-height:520px;object-fit:contain;background:#05090d}.modal-copy{padding:clamp(24px,4vw,48px);display:flex;flex-direction:column;justify-content:center}.modal-copy .eyebrow{margin-bottom:.7rem}.modal-copy h2{font-family:Georgia,serif;font-size:clamp(2.4rem,5vw,4.6rem);font-weight:500;line-height:.9;margin:0 0 1rem}.modal-copy .score{margin:0 0 1.2rem;color:#d4dce4}.modal-copy blockquote{margin:0;padding-left:1rem;border-left:1px solid rgba(255,255,255,.2);color:#aeb9c5;line-height:1.65;font-size:.92rem}.modal-close{position:fixed;top:20px;right:20px;z-index:301;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.22);background:rgba(3,8,13,.72);cursor:pointer;font-size:1.2rem}

/* GRENINJA */
.page-greninja{background:#07101d}
.page-greninja .page-hero{background:#07101d}.page-greninja .page-hero .hero-media .greninja-bg{filter:saturate(.92) contrast(1.08) brightness(.65);object-position:center 52%}.page-greninja .page-hero .hero-media:after{background:radial-gradient(circle at 74% 30%,rgba(93,121,255,.18),transparent 28%),linear-gradient(90deg,rgba(4,8,16,.95) 0 30%,rgba(4,8,16,.28) 60%,rgba(4,8,16,.12))}.page-greninja .page-hero h1{font-size:clamp(4.5rem,10vw,9.2rem)}
.master-status{display:inline-flex;gap:.65rem;align-items:center;margin-top:1.25rem;padding:.55rem .8rem;border:1px solid rgba(143,171,255,.24);background:rgba(9,18,38,.55);font-size:.68rem;letter-spacing:.15em;text-transform:uppercase}.master-status i{width:7px;height:7px;border-radius:50%;background:#79a0ff;box-shadow:0 0 18px #79a0ff}
.greninja-showcase{display:grid;grid-template-columns:1.35fr .65fr;gap:14px}.greninja-showcase figure{margin:0;overflow:hidden;border:1px solid rgba(139,169,255,.22);background:#080d16}.greninja-showcase .main-art img{width:100%;height:100%;min-height:640px;object-fit:cover}.greninja-stack{display:grid;gap:14px}.greninja-stack figure{min-height:0}.greninja-stack img{width:100%;height:100%;object-fit:cover;max-height:313px}
.master-panel{display:grid;grid-template-columns:1.4fr .6fr;margin-top:14px;border:1px solid rgba(139,169,255,.22);background:rgba(8,16,32,.72)}.master-panel>div{padding:1.2rem 1.35rem}.master-panel>div+div{border-left:1px solid rgba(139,169,255,.18)}.master-panel small{display:block;color:#8293ae;font-size:.61rem;letter-spacing:.18em;text-transform:uppercase;margin-bottom:.45rem}.master-panel strong{font-size:.9rem;font-weight:600}.master-panel p{margin:.3rem 0 0;color:#8f9caf;font-size:.79rem}
.greninja-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.greninja-grid figure{margin:0;aspect-ratio:1/1.1;overflow:hidden;border:1px solid rgba(139,169,255,.18);background:#080d16}.greninja-grid img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}.greninja-grid figure:hover img{transform:scale(1.035)}

/* COLLECTION */
.page-collection{background:#0a0d12}.page-collection .page-hero{min-height:62svh;background:#0a0d12}.page-collection .page-hero .hero-media{display:grid;grid-template-columns:repeat(3,1fr);gap:0}.page-collection .page-hero .hero-media img{position:relative;width:100%;height:100%;object-fit:cover;filter:saturate(.8) brightness(.7)}.page-collection .page-hero .hero-media:after{background:linear-gradient(180deg,rgba(4,8,12,.25),rgba(4,8,12,.92)),linear-gradient(90deg,rgba(4,8,12,.45),transparent)}
.archive-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.archive-card{position:relative;min-height:460px;overflow:hidden;border:1px solid var(--line)}.archive-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease)}.archive-card:hover img{transform:scale(1.035)}.archive-card .label{position:absolute;left:1rem;bottom:1rem;background:rgba(5,9,14,.82);border:1px solid var(--line);padding:.55rem .75rem;text-transform:uppercase;font-size:.67rem;letter-spacing:.18em}

/* MOBILE */
@media(max-width:950px){
  :root{--navh:62px}
  .desktop-nav{display:none}.menu-toggle{display:block}.site-nav{height:var(--navh)}.mobile-nav{top:var(--navh)}
  .hero{min-height:92svh}.hero-photo{object-position:43% center}.hero-glow{left:66%;width:54vw}.light-beams{inset:20% 6% 22% 48%}
  .map-wrap{padding:0}.map-viewport{overflow-x:auto;overflow-y:hidden;border-radius:0}.map-inner{width:1100px;min-width:1100px;aspect-ratio:1.97/1}.secret-island{left:43.6%;top:71.8%;width:150px}.map-hint{display:block}.destination-strip{grid-template-columns:1fr 1fr}
  .page-hero{min-height:72svh}.hero-sidecard{display:none}.page-hero-content{padding-bottom:64px}.page-hero h1{font-size:clamp(4.2rem,15vw,7rem)}
  .op-collage{grid-template-columns:1.2fr .8fr;grid-template-rows:330px 260px}.visual-card.large{grid-column:1/3;grid-row:auto}.card-wall{grid-template-columns:repeat(3,1fr)}
  .page-lego .page-hero .hero-media{grid-template-columns:1.35fr .65fr;grid-template-rows:1fr 1fr}.page-lego .page-hero .hero-media .arkham{grid-row:1/3}.page-lego .page-hero .hero-media .baratie{grid-column:2;grid-row:1}.page-lego .page-hero .hero-media .ray{grid-column:2;grid-row:2}.page-lego .page-hero .hero-media .going,.page-lego .page-hero .hero-media .speed{display:none}.build-grid{grid-template-columns:1fr 1fr}.build-card.featured{grid-column:span 2}
  .greninja-showcase{grid-template-columns:1fr}.greninja-showcase .main-art img{min-height:0;aspect-ratio:4/3}.greninja-stack{grid-template-columns:1fr 1fr}.greninja-stack img{height:300px}.greninja-grid{grid-template-columns:1fr 1fr}
  .archive-grid{grid-template-columns:1fr 1fr}.archive-card:last-child{grid-column:span 2}
  .modal-panel{grid-template-columns:1fr}.modal-panel img{min-height:0;max-height:48svh}.modal-copy{padding:24px}
}
@media(max-width:620px){
  .site-nav{padding:0 16px}.hero{min-height:86svh}.hero-photo{object-position:39% center}.kicker{font-size:.57rem;letter-spacing:.2em}.hero-lines{opacity:.15}
  .map-inner{width:960px;min-width:960px}.secret-island{left:43.8%;top:71.9%;width:132px}.destination-strip{grid-template-columns:1fr;padding:1rem 16px 0}.destination-strip a{padding:1rem 0 .5rem}
  .page-hero{min-height:68svh}.page-hero-content{padding:58px 16px 48px}.page-hero .subline{font-size:.9rem}.page-hero h1{font-size:clamp(4rem,20vw,6rem)}
  .content-shell{padding:64px 16px}.section-title{align-items:flex-start;flex-direction:column;gap:.7rem}.section-title h2{font-size:clamp(2.2rem,12vw,3.6rem)}
  .character-strip{gap:.4rem}.character-strip span{font-size:.66rem;padding:.4rem .58rem}
  .op-collage{display:flex;overflow-x:auto;gap:10px;scroll-snap-type:x mandatory}.visual-card,.visual-card.large{min-width:84vw;height:450px;scroll-snap-align:center}.card-wall{grid-template-columns:1fr 1fr}.card-wall figure,.card-wall figure:nth-child(-n+4){aspect-ratio:.74/1}
  .page-lego .page-hero .hero-media{grid-template-columns:1fr}.page-lego .page-hero .hero-media img:not(:first-child){display:none}.build-grid{grid-template-columns:1fr}.build-card.featured{grid-column:auto}.build-card.featured .image-frame,.build-card .image-frame{aspect-ratio:4/3}.filter-row{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.filter-row button{white-space:nowrap}
  .greninja-stack{grid-template-columns:1fr 1fr}.greninja-stack img{height:220px}.master-panel{grid-template-columns:1fr}.master-panel>div+div{border-left:0;border-top:1px solid rgba(139,169,255,.18)}.greninja-grid{grid-template-columns:1fr 1fr}
  .archive-grid{grid-template-columns:1fr}.archive-card,.archive-card:last-child{grid-column:auto;min-height:410px}
  .page-footer{flex-direction:column}
  .page-footer .brand-nod{margin-left:0}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.enter b,.light-beams i,.secret-island,.secret-island .secret-logo-flag,.secret-island .pulse-ring,.secret-island .spark{animation:none}.hero-photo,.hero-glow,.hero-parchment,.visual-card img,.build-card,.build-card img,.card-wall img,.greninja-grid img,.archive-card img,.secret-island{transition:none}.page-enter{animation:none;display:none}}

/* Progressive enhancement for browsers with View Transitions */
@view-transition{navigation:auto}
::view-transition-old(root){animation:.22s ease-out both fadeOld}
::view-transition-new(root){animation:.42s ease-out both fadeNew}
@keyframes fadeOld{to{opacity:0;filter:blur(3px)}}
@keyframes fadeNew{from{opacity:0;filter:blur(3px)}}

/* V2.6 DESTINATION POLISH */
[data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .72s var(--ease),transform .72s var(--ease)}
[data-reveal].is-visible{opacity:1;transform:none}

/* One Piece: cinematic hero + build/card staging */
.op-hero{min-height:min(84svh,880px)}
.op-hero .hero-media .op-bg{filter:saturate(.98) contrast(1.08) brightness(.58);object-position:center 43%;transform:scale(1.035)}
.op-hero .hero-media:after{background:radial-gradient(circle at 70% 30%,rgba(235,128,65,.19),transparent 26%),linear-gradient(90deg,rgba(6,9,14,.96) 0 27%,rgba(6,9,14,.58) 46%,rgba(6,9,14,.16) 72%),linear-gradient(180deg,transparent 48%,rgba(6,9,14,.9))}
.op-horizon{position:absolute;z-index:3;left:0;right:0;bottom:0;height:36%;pointer-events:none;opacity:.32;background:repeating-radial-gradient(ellipse at 65% 100%,transparent 0 44px,rgba(255,232,197,.12) 45px 47px,transparent 48px 72px);mix-blend-mode:screen}
.op-hero-cards{position:absolute;z-index:4;right:clamp(30px,7vw,100px);top:18%;width:min(420px,30vw);height:55%;pointer-events:none}
.op-float-card{position:absolute;margin:0;border:1px solid rgba(255,255,255,.16);background:#070b10;box-shadow:0 28px 60px rgba(0,0,0,.34);overflow:hidden;transition:transform .25s ease-out}
.op-float-card img{width:100%;height:100%;object-fit:cover}
.op-float-shanks{width:45%;aspect-ratio:.73/1;right:2%;top:0;transform:rotate(6deg)}
.op-float-luffy{width:38%;aspect-ratio:.73/1;right:43%;top:34%;transform:rotate(-5deg)}
.op-builds{position:relative}
.op-builds:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 74% 28%,rgba(200,91,50,.06),transparent 24%)}
.op-build-grid{display:grid;grid-template-columns:1.5fr .75fr;grid-template-rows:1fr 1fr;gap:14px}
.op-build-feature,.op-build-tile{position:relative;overflow:hidden;border:1px solid var(--line);background:#0b0e13;min-height:300px}
.op-build-feature{grid-row:1/3;min-height:680px}
.op-build-feature img,.op-build-tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .65s var(--ease),filter .35s ease}
.op-build-feature img{object-position:center 42%}.op-build-tile:first-of-type img{object-position:center 55%}
.op-build-feature:after,.op-build-tile:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 42%,rgba(4,7,11,.92) 100%)}
.op-build-feature:hover img,.op-build-tile:hover img{transform:scale(1.025);filter:saturate(1.05)}
.op-build-meta{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:clamp(18px,2.8vw,34px)}
.op-build-meta h3{margin:.15rem 0 .55rem;font-family:Georgia,serif;font-size:clamp(1.8rem,3.7vw,4rem);font-weight:500;letter-spacing:-.035em}.op-build-tile .op-build-meta h3{font-size:clamp(1.5rem,2.2vw,2.4rem)}
.op-build-meta p{margin:0;color:#e6ebef;font-size:.84rem}.op-build-meta p span{opacity:.45;margin:0 .35rem}.op-build-meta small{display:block;margin-top:.75rem;color:#aeb7c1;font-size:.8rem}
.op-route-divider{max-width:var(--max);height:58px;margin:0 auto;position:relative;display:flex;align-items:center;justify-content:center;gap:clamp(46px,8vw,110px);opacity:.5;overflow:hidden}.op-route-divider:before{content:"";position:absolute;left:8%;right:8%;top:50%;border-top:1px dashed rgba(236,199,135,.45)}.op-route-divider i{position:relative;width:7px;height:7px;border-radius:50%;background:#d9ad67;box-shadow:0 0 12px rgba(217,173,103,.3)}
.op-card-stage{display:grid;grid-template-columns:.62fr .62fr 1.7fr;gap:14px;align-items:stretch}
.op-card-spotlight{position:relative;margin:0;aspect-ratio:.73/1;overflow:hidden;border:1px solid var(--line);background:#080c12;cursor:zoom-in}.op-card-spotlight img{width:100%;height:100%;object-fit:cover}.op-card-spotlight figcaption{position:absolute;left:12px;bottom:12px;background:rgba(5,9,14,.8);border:1px solid var(--line);padding:.5rem .65rem;text-transform:uppercase;letter-spacing:.16em;font-size:.62rem}
.op-binder-stack{display:grid;grid-template-columns:1fr 1fr;gap:12px}.op-binder-stack figure{margin:0;overflow:hidden;border:1px solid var(--line);background:#080c12;cursor:zoom-in;min-height:250px}.op-binder-stack img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}.op-binder-stack figure:hover img{transform:scale(1.025)}

/* Greninja: water motion + cleaner collection status */
.greninja-hero{min-height:min(82svh,850px)}
.water-rings{position:absolute;z-index:2;right:9%;top:16%;width:min(480px,35vw);aspect-ratio:1;pointer-events:none}.water-rings i{position:absolute;inset:22%;border:1px solid rgba(129,184,255,.18);border-radius:50%;animation:waterRing 5.2s ease-out infinite}.water-rings i:nth-child(2){animation-delay:1.7s}.water-rings i:nth-child(3){animation-delay:3.4s}@keyframes waterRing{0%{opacity:0;transform:scale(.45)}18%{opacity:.7}100%{opacity:0;transform:scale(1.45)}}
.greninja-hero-card{position:absolute;z-index:4;right:clamp(24px,7vw,100px);top:20%;width:min(250px,18vw);aspect-ratio:.73/1;margin:0;border:1px solid rgba(130,168,255,.28);background:#07101b;box-shadow:0 28px 70px rgba(0,0,0,.38);transform:rotate(4deg);overflow:hidden}.greninja-hero-card img{width:100%;height:100%;object-fit:cover;transition:transform .2s ease-out}.greninja-hero-card span{position:absolute;left:0;right:0;bottom:0;padding:3rem .9rem .8rem;background:linear-gradient(180deg,transparent,rgba(4,8,16,.94));font-size:.62rem;text-transform:uppercase;letter-spacing:.16em}
.master-strip{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid rgba(139,169,255,.22);background:linear-gradient(90deg,rgba(9,18,38,.8),rgba(5,13,26,.7));margin-bottom:14px}.master-strip>div{padding:1.05rem 1.25rem}.master-strip>div+div{border-left:1px solid rgba(139,169,255,.18)}.master-strip small{display:block;color:#8293ae;font-size:.59rem;letter-spacing:.18em;text-transform:uppercase;margin-bottom:.35rem}.master-strip strong{font-size:.86rem;font-weight:600}
.foil-card{position:relative;isolation:isolate;overflow:hidden}.foil-card:after{content:"";position:absolute;inset:-40%;z-index:3;pointer-events:none;background:linear-gradient(115deg,transparent 36%,rgba(255,255,255,.05) 42%,rgba(113,184,255,.22) 48%,rgba(255,164,219,.12) 52%,transparent 59%);transform:translateX(-55%) rotate(2deg);transition:transform .65s var(--ease),opacity .35s ease;opacity:.2}.foil-card:hover:after,.foil-card:focus-within:after{transform:translateX(55%) rotate(2deg);opacity:.9}
.greninja-showcase figure,.greninja-grid figure{cursor:zoom-in}

/* LEGO: cleaner hero + score hierarchy */
.lego-subline{margin-top:.9rem!important;letter-spacing:.08em;text-transform:uppercase;font-size:.72rem!important;color:#aeb8c4!important}
.lego-hero-stats{display:flex;gap:.55rem;margin-top:1rem}.lego-hero-stats span{border:1px solid rgba(255,255,255,.17);background:rgba(5,9,14,.35);padding:.45rem .65rem;border-radius:999px;font-size:.62rem;letter-spacing:.13em;text-transform:uppercase;color:#dbe1e8}
.build-card .meta p b{font-weight:600}.build-card .meta p{letter-spacing:.01em}.build-card:after{content:"↗";position:absolute;right:12px;top:12px;width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:rgba(5,9,14,.72);border:1px solid rgba(255,255,255,.16);font-size:.72rem;opacity:0;transform:translateY(4px);transition:opacity .2s ease,transform .2s ease}.build-card:hover:after,.build-card:focus-visible:after{opacity:1;transform:none}
.build-modal:not([hidden]) .modal-panel{animation:modalIn .28s var(--ease) both}@keyframes modalIn{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}

/* Generic image lightbox */
.image-lightbox{position:fixed;z-index:350;inset:0;display:grid;place-items:center;background:rgba(2,7,12,.9);backdrop-filter:blur(14px);padding:clamp(18px,4vw,48px)}.image-lightbox[hidden]{display:none}.image-lightbox img{max-width:min(1100px,92vw);max-height:86svh;object-fit:contain;border:1px solid rgba(255,255,255,.15);box-shadow:0 24px 80px rgba(0,0,0,.45)}.image-lightbox button{position:fixed;right:20px;top:20px;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:rgba(4,9,15,.7);font-size:1.2rem;cursor:pointer}

@media(max-width:950px){
  .op-hero-cards{right:24px;width:38vw;height:50%}.op-build-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto}.op-build-feature{grid-column:1/3;grid-row:auto;min-height:560px}.op-build-tile{min-height:340px}.op-card-stage{grid-template-columns:1fr 1fr}.op-binder-stack{grid-column:1/3}.water-rings{right:2%;width:42vw}.greninja-hero-card{right:26px;width:22vw}.master-strip{grid-template-columns:1fr 1fr 1fr}
}
@media(max-width:620px){
  [data-reveal]{transform:translateY(14px)}
  .op-hero{min-height:72svh}.op-hero-cards{display:none}.op-horizon{opacity:.2}.op-build-grid{display:flex;overflow-x:auto;gap:10px;scroll-snap-type:x mandatory}.op-build-feature,.op-build-tile{min-width:84vw;min-height:470px;scroll-snap-align:center}.op-build-feature{grid-column:auto}.op-route-divider{height:44px}.op-card-stage{display:flex;overflow-x:auto;gap:10px;scroll-snap-type:x mandatory}.op-card-spotlight{min-width:68vw;scroll-snap-align:center}.op-binder-stack{display:contents}.op-binder-stack figure{min-width:84vw;min-height:420px;scroll-snap-align:center}.water-rings{right:-8%;top:22%;width:70vw}.greninja-hero-card{display:none}.master-strip{grid-template-columns:1fr}.master-strip>div+div{border-left:0;border-top:1px solid rgba(139,169,255,.18)}.lego-hero-stats{flex-wrap:wrap}
}
@media(prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none}.water-rings i{animation:none}.foil-card:after{display:none}}


/* V2.7 Greninja hero correction */
.page-greninja .greninja-hero{min-height:min(76svh,780px);background:#07101d}
.page-greninja .greninja-hero .hero-media .greninja-bg{inset:-1.5%;filter:saturate(.92) contrast(1.08) brightness(.56);object-position:center 47%;transform:scale(1.03)}
.page-greninja .greninja-hero .hero-media:after{background:radial-gradient(circle at 76% 48%,rgba(79,123,255,.18),transparent 26%),linear-gradient(90deg,rgba(4,8,16,.96) 0 31%,rgba(4,8,16,.72) 43%,rgba(4,8,16,.28) 66%,rgba(4,8,16,.18) 100%),linear-gradient(180deg,rgba(4,8,16,.05) 0 54%,rgba(4,8,16,.72) 100%)}
.page-greninja .greninja-hero:after{content:"";position:absolute;z-index:3;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(118,166,255,.42),transparent)}
.greninja-hero-copy{max-width:var(--max);padding-bottom:clamp(54px,7vw,88px)}
.page-greninja .greninja-hero h1{font-size:clamp(4.8rem,8.4vw,8rem);line-height:.86}
.greninja-card-fan{position:absolute;z-index:4;right:clamp(32px,6.5vw,96px);top:16%;width:min(470px,34vw);height:68%;pointer-events:none}
.greninja-card-fan .fan-label{position:absolute;right:3%;top:0;z-index:5;padding:.45rem .68rem;border:1px solid rgba(137,177,255,.25);background:rgba(5,12,25,.58);backdrop-filter:blur(10px);text-transform:uppercase;letter-spacing:.18em;font-size:.58rem;color:#c8d7ef}
.greninja-card-fan .fan-card{position:absolute;margin:0;overflow:hidden;border:1px solid rgba(140,174,255,.24);background:#07101b;box-shadow:0 28px 72px rgba(0,0,0,.42);aspect-ratio:.73/1;transform-origin:50% 90%;transition:transform .35s var(--ease),filter .35s ease}
.greninja-card-fan .fan-card img{width:100%;height:100%;object-fit:cover}
.greninja-card-fan .fan-card-a{width:39%;right:43%;top:19%;transform:rotate(-8deg)}
.greninja-card-fan .fan-card-b{width:44%;right:15%;top:9%;z-index:2;transform:rotate(4deg)}
.greninja-card-fan .fan-card-c{width:35%;right:0;top:33%;z-index:1;transform:rotate(10deg);filter:brightness(.86)}
.greninja-card-fan:hover .fan-card-a{transform:rotate(-10deg) translateX(-5px) translateY(-2px)}
.greninja-card-fan:hover .fan-card-b{transform:rotate(3deg) translateY(-4px)}
.greninja-card-fan:hover .fan-card-c{transform:rotate(12deg) translateX(4px)}
.page-greninja .water-rings{right:10%;top:17%;width:min(520px,38vw);opacity:.85}
@media(max-width:950px){
  .page-greninja .greninja-hero{min-height:72svh}
  .greninja-card-fan{right:22px;top:19%;width:38vw;height:62%}
  .greninja-card-fan .fan-card-c{display:none}
  .greninja-card-fan .fan-card-a{width:46%;right:45%}.greninja-card-fan .fan-card-b{width:50%;right:8%}
  .page-greninja .water-rings{right:-2%;width:48vw}
  .greninja-hero-copy{max-width:62%}
}
@media(max-width:620px){
  .page-greninja .greninja-hero{min-height:64svh}
  .page-greninja .greninja-hero .hero-media .greninja-bg{object-position:48% center;filter:saturate(.9) contrast(1.08) brightness(.5)}
  .page-greninja .greninja-hero .hero-media:after{background:linear-gradient(90deg,rgba(4,8,16,.94),rgba(4,8,16,.56) 72%,rgba(4,8,16,.35)),linear-gradient(180deg,transparent 38%,rgba(4,8,16,.76))}
  .greninja-card-fan{display:none}
  .greninja-hero-copy{max-width:none}
  .page-greninja .greninja-hero h1{font-size:clamp(4.2rem,20vw,6rem)}
  .page-greninja .water-rings{right:-12%;top:20%;width:78vw;opacity:.55}
}
