
@font-face{font-family:"PS2P";src:url("../fonts/ps2p.woff2") format("woff2");font-display:swap}
@font-face{font-family:"InterV";src:url("../fonts/inter.woff2") format("woff2");font-weight:100 900;font-display:swap}
:root{--g:clamp(20px,5.5vw,40px);--ink:#111;--paper:#fff;--soft:#f4f4f4;--acc:#8b1d4a;--blue:#2b3a8c;--s:1;
--vh:100vh;--sp1:8px;--sp2:16px;--sp3:24px;--sp4:32px;--sp5:48px;--sp6:64px;--sp7:96px}
@supports(height:100svh){:root{--vh:100svh}}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:#fff;color:var(--ink);font:400 16px/1.9 "InterV",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;overflow-x:hidden}
body.locked{overflow:hidden;height:var(--vh)}
img,canvas{display:block}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
a{color:inherit}
.px{font-family:"PS2P",ui-monospace,monospace;-webkit-font-smoothing:none;-moz-osx-font-smoothing:grayscale;font-weight:400;letter-spacing:0}
:focus-visible{outline:3px solid #f0c040;outline-offset:3px}

/* ---------- header + menu ---------- */
.hdr{position:fixed;top:0;right:0;z-index:301;padding:16px var(--g) 0 0;mix-blend-mode:difference;opacity:0;pointer-events:none;transition:opacity 1.6s ease-out}
body.unlocked .hdr{opacity:1;pointer-events:auto}
body.menu-open .hdr{mix-blend-mode:normal}
.burger{position:relative;width:44px;height:44px;display:block}
.burger i{position:absolute;left:7px;width:30px;height:4px;background:#fff;transition:transform .3s ease,opacity .2s ease,top .3s ease}
.burger i:nth-child(1){top:12px}.burger i:nth-child(2){top:20px}.burger i:nth-child(3){top:28px}
body.menu-open .burger i:nth-child(1){top:20px;transform:rotate(45deg)}
body.menu-open .burger i:nth-child(2){opacity:0}
body.menu-open .burger i:nth-child(3){top:20px;transform:rotate(-45deg)}
.menu{position:fixed;z-index:300;top:0;right:0;bottom:0;width:0;overflow:hidden;background:#111;transition:width .3s ease-out;pointer-events:none}
body.menu-open .menu{width:100%;pointer-events:auto}
.menu ul{list-style:none;margin:0;padding:96px var(--g) var(--sp5);text-align:right;height:100%;overflow-y:auto;opacity:0;transition:opacity .2s ease}
body.menu-open .menu ul{opacity:1;transition-delay:.18s}
.menu a{display:inline-block;padding:14px 0;font-size:16px;line-height:16px;color:#f4f4f4;text-decoration:none;white-space:nowrap;transition:color .2s}
.menu a:hover,.menu a:focus-visible{color:#e3b23c}
@media (max-width:600px){.menu ul{padding-top:80px}.menu a{font-size:14px;line-height:14px;padding:15px 0}}

/* ---------- stage ---------- */
.stage{position:fixed;inset:0;height:var(--vh);z-index:1;overflow:hidden;background:#fff}
.stage::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 38%,#2a5257 0%,#15292d 55%,#0a1214 100%);opacity:0;transition:opacity 1.2s ease}
.stage::after{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.07) 1px,transparent 1.5px);background-size:16px 16px;opacity:0;transition:opacity 1.2s ease}
body.phase2 .stage::before,body.phase2 .stage::after{opacity:1}
.stage::before,.stage::after{pointer-events:none;z-index:0}
.hero{position:absolute;z-index:1;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp4);padding:0 var(--g)}
.hero-row{display:flex;align-items:center;gap:var(--sp3)}
.avatar{width:160px;height:160px;opacity:0;transform:scale(.85);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1)}
.avatar img{width:100%;height:100%;image-rendering:pixelated}
.loaded .avatar{opacity:1;transform:none}
.hero-txt-wrap{width:232px;overflow:hidden;white-space:nowrap;transition:width .5s ease-out}
.hero-txt{opacity:0;transition:opacity .5s ease-out}
.loaded2 .hero-txt{opacity:1}
.hero-txt span{display:block;font-size:12px;line-height:16px;margin-bottom:var(--sp2);color:#555}
.hero-txt strong{display:block;font-weight:400;font-size:24px;line-height:36px}
.start{min-height:44px;padding:14px 16px;font-size:12px;line-height:16px;color:var(--ink);opacity:0;pointer-events:none;text-transform:uppercase}
.loaded3 .start{opacity:1;pointer-events:auto;animation:blink 1.2s steps(1) infinite}
.start:hover{color:var(--acc)}
@keyframes blink{0%,70%{opacity:1}71%,100%{opacity:0}}
body.intro .hero-txt-wrap{width:0}
body.intro .avatar{opacity:0;transform:scale(.5);transition-delay:.8s}
body.intro .start{opacity:0;animation:none;pointer-events:none}
body.unlocked .hero{display:none}
@media (max-width:600px){.hero-row{flex-direction:column;gap:var(--sp3)}.hero-txt-wrap{width:240px;text-align:center}.hero-txt strong{font-size:20px;line-height:32px}.avatar{width:112px;height:112px}}

/* intro cartridge */
.intro-cart{position:absolute;left:50%;top:50%;width:220px;height:240px;margin:-120px 0 0 -110px;perspective:1200px;opacity:0;pointer-events:none;z-index:3}
.intro-cart .cart{transform:rotateY(0)}

/* ---------- console ---------- */
.console-wrap{position:absolute;left:50%;top:50%;width:360px;height:590px;margin:-295px 0 0 -180px;transform:translateY(calc(var(--vh) * 1)) scale(var(--s));transition:transform 1.1s cubic-bezier(.2,.75,.2,1);z-index:2}
body.phase2 .console-wrap{transform:translateY(var(--cy,0px)) scale(var(--s))}
body.zoomed .console-wrap{transform:translateY(calc(var(--cy,0px) + 127px * var(--s) * 1.7)) scale(calc(var(--s) * 1.7))}
.console{position:relative;width:360px;height:590px;border-radius:12px 12px 72px 12px;background:linear-gradient(165deg,#efeee9 0%,#dedcd5 60%,#d3d1c9 100%);box-shadow:inset -6px -8px 0 rgba(0,0,0,.07),inset 4px 4px 0 rgba(255,255,255,.7),0 40px 80px rgba(0,0,0,.45),0 2px 0 #bdbab2}
.slot{position:absolute;left:70px;right:70px;top:-4px;height:6px;border-radius:3px 3px 0 0;background:#2a2a2a;opacity:.0}
.topline{position:absolute;left:0;right:0;top:22px;height:4px;border-top:2px solid rgba(0,0,0,.08);border-bottom:2px solid rgba(255,255,255,.7)}
.topline i{position:absolute;top:-22px;width:2px;height:22px;background:rgba(0,0,0,.08)}
.topline i:first-child{left:20px}.topline i:last-child{right:20px}
.power{position:absolute;left:34px;top:0;width:88px;height:24px;display:block}
.power::before{content:"";position:absolute;left:8px;top:6px;width:44px;height:10px;border-radius:5px;background:#c5c2ba;box-shadow:inset 0 2px 2px rgba(0,0,0,.25)}
.power .knob{position:absolute;left:10px;top:7px;width:18px;height:8px;border-radius:4px;background:#77746d;transition:left .25s ease}
.power em{position:absolute;left:58px;top:7px;font:normal 6px/8px "PS2P",monospace;color:#9a978f;white-space:nowrap}
.power.on .knob{left:32px;background:#5c5953}
.ribbon{position:absolute;right:-6px;top:-6px;width:96px;height:96px;overflow:hidden;z-index:4;transition:opacity .4s}
.ribbon span{position:absolute;left:-12px;top:22px;width:150px;padding:6px 0;transform:rotate(45deg);background:var(--acc);color:#fff;text-align:center;font:normal 7px/8px "PS2P",monospace;box-shadow:0 3px 8px rgba(0,0,0,.25)}
.ribbon.hide{opacity:0}
.bezel{position:absolute;left:28px;top:46px;width:304px;height:238px;border-radius:10px 10px 44px 10px;background:linear-gradient(180deg,#5a5e6b,#4a4e5a)}
.bezel-head{position:absolute;left:14px;right:14px;top:10px;height:8px;display:flex;align-items:center;justify-content:center;gap:8px}
.bezel-head::before,.bezel-head::after{content:"";flex:1;height:2px;background:linear-gradient(var(--acc),var(--acc)) 0 0/100% 1px no-repeat,linear-gradient(var(--blue),var(--blue)) 0 1px/100% 1px no-repeat}
.bezel-head span{font:normal 5px/8px "PS2P",monospace;color:#b9bcc8;white-space:nowrap}
.led-wrap{position:absolute;left:12px;top:96px;width:30px;text-align:center}
.led{display:block;width:10px;height:10px;margin:0 auto 6px;border-radius:50%;background:#3b2e33;box-shadow:inset 0 1px 1px rgba(0,0,0,.5);transition:background .2s,box-shadow .2s}
.led.on{background:#ff3b45;box-shadow:0 0 8px 2px rgba(255,59,69,.7)}
.led-wrap small{font:normal 5px/6px "PS2P",monospace;color:#b9bcc8}
.screen{position:absolute;left:52px;top:28px;width:200px;height:180px;background:#8f9b62;box-shadow:inset 0 3px 6px rgba(0,0,0,.35);overflow:hidden;cursor:zoom-in}
.screen canvas{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;opacity:0;transition:opacity .3s}
.screen.on canvas{opacity:1}
body.zoomed .screen{cursor:zoom-out}
.brand{position:absolute;left:30px;top:298px;display:flex;align-items:baseline;gap:8px;color:var(--blue)}
.brand b{font:italic 800 24px/28px "InterV",Arial,sans-serif;letter-spacing:-.5px}
.brand span{font:normal 9px/10px "PS2P",monospace}
.dpad{position:absolute;left:24px;top:380px;width:102px;height:102px}
.dp,.dp-mid{position:absolute;width:34px;height:34px;background:#2b2b30;box-shadow:0 3px 0 #17171a}
.dp.up{left:34px;top:0;border-radius:4px 4px 0 0}.dp.down{left:34px;top:68px;border-radius:0 0 4px 4px}
.dp.left{left:0;top:34px;border-radius:4px 0 0 4px}.dp.right{left:68px;top:34px;border-radius:0 4px 4px 0}
.dp-mid{left:34px;top:34px;box-shadow:none}
.dp-mid::after{content:"";position:absolute;inset:9px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#3a3a40,#222226)}
.dp::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:3px;margin:-1px 0 0 -5px;background:rgba(255,255,255,.08);border-radius:2px}
.dp.left::after,.dp.right::after{width:3px;height:10px;margin:-5px 0 0 -1px}
.dp.press{background:#232327;box-shadow:0 1px 0 #17171a;transform:translateY(2px)}
.ab{position:absolute;right:22px;top:368px;width:132px;height:92px;transform:rotate(-24deg)}
.abb{position:absolute;width:52px;text-align:center}
.abb.b{left:0;top:30px}.abb.a{left:72px;top:2px}
.abb button{display:block;width:52px;height:52px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#a42a5c,#7f1a44);box-shadow:0 4px 0 #5a1130,inset 0 -2px 3px rgba(0,0,0,.2)}
.abb button.press{transform:translateY(3px);box-shadow:0 1px 0 #5a1130}
.abb small,.ssb small{display:block;margin-top:10px;font:normal 9px/10px "PS2P",monospace;color:var(--blue)}
.ss{position:absolute;left:104px;top:500px;display:flex;gap:18px}
.ssb{width:56px;text-align:center;transform:rotate(-24deg)}
.ssb button{display:block;width:48px;height:12px;margin:0 auto;border-radius:6px;background:#8f8c85;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2),0 0 0 3px #d2d0c8}
.ssb button.press{background:#7a7770}
.ssb small{font-size:6px;line-height:8px;margin-top:8px}
.grille{position:absolute;right:30px;bottom:34px;display:flex;gap:9px;transform:rotate(-30deg)}
.grille i{width:6px;height:56px;border-radius:3px;background:rgba(0,0,0,.14);box-shadow:inset 1px 1px 2px rgba(0,0,0,.2)}
/* stage overlays */
.notice{position:absolute;z-index:5;left:0;top:0;font-size:12px;line-height:16px;color:#f4f4f4;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .4s;min-height:44px;display:flex;align-items:center}
.notice span{animation:bob 1.2s ease-in-out infinite;display:inline-block}
body.unlocked .notice.show{opacity:1;pointer-events:auto;cursor:pointer}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.info{position:absolute;z-index:5;width:44px;height:44px;border-radius:50%;font-size:12px;color:#f4f4f4;border:2px solid rgba(255,255,255,.6);opacity:0;pointer-events:none;transition:opacity .4s}
body.unlocked .info{opacity:1;pointer-events:auto}
.info:hover{background:rgba(255,255,255,.1)}
.keys{position:absolute;z-index:6;width:240px;padding:var(--sp3);background:rgba(10,18,20,.94);color:#f4f4f4;border:2px solid rgba(255,255,255,.25);font-size:8px;line-height:12px;opacity:0;pointer-events:none;transition:opacity .25s}
.keys.show{opacity:1;pointer-events:auto}
.keys p{margin:0 0 var(--sp2);font-size:10px}
.keys ul{list-style:none;margin:0;padding:0}
.keys li{display:flex;justify-content:space-between;gap:var(--sp2);padding:6px 0;border-top:1px solid rgba(255,255,255,.12)}
.keys b{font-weight:400;color:#e3b23c}
.scroll-note{position:absolute;z-index:5;left:50%;bottom:20px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--sp1);font-size:8px;line-height:8px;color:#f4f4f4;opacity:0;transition:opacity .5s;pointer-events:none}
.scroll-note i{width:12px;height:12px;border-right:3px solid #f4f4f4;border-bottom:3px solid #f4f4f4;transform:rotate(45deg);animation:bob 1.2s ease-in-out infinite}
body.unlocked .scroll-note{opacity:1}
body.scrolled .scroll-note{opacity:0}
@media (hover:none){.info{display:none}}

/* ---------- cartridge ---------- */
.cart-wrap{flex:0 0 auto;width:220px;height:240px;perspective:1200px}
.cart{position:relative;width:220px;height:240px;transform-style:preserve-3d;will-change:transform;transition:transform 1.4s cubic-bezier(.25,.8,.25,1)}
.cart.scroll-trigger.activated{transform:rotateY(720deg)}
.cf{position:absolute;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.cf-front,.cf-back{left:0;top:0;width:220px;height:240px;border-radius:4px 4px 16px 4px}
.cf-front{transform:translateZ(12px);background:linear-gradient(170deg,#c9c7c2,#b2b0aa);box-shadow:inset -3px -4px 0 rgba(0,0,0,.08),inset 2px 2px 0 rgba(255,255,255,.5)}
.cf-ridges{position:absolute;left:14px;right:14px;top:10px}
.cf-ridges i{display:block;height:4px;margin-bottom:3px;border-bottom:2px solid rgba(0,0,0,.12);border-top:1px solid rgba(255,255,255,.4)}
.cf-label{position:absolute;left:16px;right:16px;top:44px;height:162px;padding:8px 8px 0;border-radius:6px;background:#26272b;box-shadow:inset 0 0 0 2px #1a1b1e}
.label-cv{width:172px;height:129px;image-rendering:pixelated;image-rendering:crisp-edges;background:#d6e4a0}
.cf-tag{display:flex;justify-content:space-between;align-items:center;height:25px;color:#e7e4dc}
.cf-tag span{font:normal 7px/8px "PS2P",monospace}
.cf-tag small{font:500 8px/10px "InterV",Arial,sans-serif;opacity:.7;text-transform:uppercase;letter-spacing:.06em}
.cf-arrow{position:absolute;left:16px;bottom:10px;font:600 8px/12px "InterV",Arial,sans-serif;color:#6e6c67;text-transform:uppercase;letter-spacing:.08em}
.cf-arrow::before{content:"";display:inline-block;width:0;height:0;margin-right:6px;border:5px solid transparent;border-bottom:7px solid #6e6c67;border-top:0;vertical-align:1px}
.cf-back{transform:rotateY(180deg) translateZ(12px);background:linear-gradient(170deg,#bdbbb6,#a6a49e);box-shadow:inset 3px -4px 0 rgba(0,0,0,.08)}
.cb-line{position:absolute;left:0;right:0;top:40px;text-align:center;font:normal 8px/10px "PS2P",monospace;color:#8c8a84;text-shadow:0 1px 0 rgba(255,255,255,.5)}
.cb-notch{position:absolute;left:50%;bottom:0;width:120px;height:26px;margin-left:-60px;background:#8f8d87;border-radius:4px 4px 0 0;box-shadow:inset 0 2px 3px rgba(0,0,0,.25)}
.cb-screws{position:absolute;left:30px;right:30px;top:110px;display:flex;justify-content:space-between}
.cb-screws i{width:14px;height:14px;border-radius:50%;background:radial-gradient(circle,#7d7b76 40%,#97958f 42%);box-shadow:inset 0 1px 2px rgba(0,0,0,.35)}
.cb-small{position:absolute;left:0;right:0;top:150px;text-align:center;font:600 9px/12px "InterV",Arial,sans-serif;color:#7d7b76;text-transform:uppercase;letter-spacing:.1em}
.cf-left,.cf-right{top:2px;width:24px;height:222px;background:#a3a19b}
.cf-left{left:-12px;transform:rotateY(-90deg)}
.cf-right{right:-12px;transform:rotateY(90deg)}
.cf-left,.cf-right,.cf-top{backface-visibility:visible;-webkit-backface-visibility:visible}
.cf-top{left:0;top:-12px;width:220px;height:24px;background:#b9b7b1;transform:rotateX(90deg)}

/* ---------- sections ---------- */
.content-wrapper{position:relative;z-index:2;margin-top:var(--vh);display:none}
body.unlocked .content-wrapper{display:block}
.sec{position:relative;min-height:var(--vh);display:flex;align-items:center;padding:var(--sp7) var(--g)}
.sec.dark{background:#111 radial-gradient(rgba(255,255,255,.045) 1px,transparent 1.5px) 0 0/16px 16px;color:#f4f4f4}
.sec.light{background:#fff;color:#111}
.content{display:flex;align-items:center;gap:80px;width:100%;max-width:1040px;margin:0 auto}
.content.rev{flex-direction:row-reverse}
.txt{flex:1 1 auto;min-width:0;max-width:560px}
.kicker{margin:0 0 var(--sp2);font:normal 10px/16px "PS2P",monospace;opacity:.6}
.sec h2{margin:0 0 var(--sp3);font:normal 20px/32px "PS2P",monospace}
.sec h3{margin:var(--sp3) 0 var(--sp1);font:normal 10px/16px "PS2P",monospace;opacity:.7}
.sec p{margin:0 0 var(--sp2)}
.links{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp1);margin-top:var(--sp3)}
.shelf .links{margin-top:0}
.slink{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 12px;font:normal 12px/16px "PS2P",monospace;text-decoration:none;color:inherit;z-index:0;transition:color .25s ease}
.slink::before{content:"";position:absolute;z-index:-1;left:0;right:0;bottom:8px;height:6px;background:var(--acc);transition:height .25s ease,bottom .25s ease}
.dark .slink::before{background:#e3b23c}
.slink:hover,.slink:focus-visible{color:#fff}
.dark .slink:hover,.dark .slink:focus-visible{color:#111}
.slink:hover::before,.slink:focus-visible::before{bottom:0;height:100%}
.url{font:normal 8px/16px "PS2P",monospace;opacity:.5;padding:0 4px;overflow-wrap:anywhere}
.mail{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp1) var(--sp2)}
.mail a{font-weight:600;font-size:18px;text-decoration:none;border-bottom:2px solid currentColor;overflow-wrap:anywhere}
.copy{min-height:44px}
@media (min-width:992px){
 .sec{padding:140px var(--g)}
 .sec+.sec{margin-top:-64px;padding-top:204px;clip-path:polygon(0 64px,100% 0,100% 100%,0 100%)}
}
@media (max-width:991px){
 .content,.content.rev{flex-direction:column;gap:var(--sp5);align-items:stretch}
 .cart-wrap{margin:0 auto}
 .txt{max-width:640px;margin:0 auto;width:100%}
 .sec{min-height:0;padding:var(--sp7) var(--g)}
}
@media (max-width:600px){
 .sec h2{font-size:16px;line-height:28px}
 .kicker{font-size:8px;line-height:14px}
 .slink{font-size:10px;padding:0 10px}
 body{font-size:16px;line-height:1.8}
}

/* ---------- footer + colophon ---------- */
.foot{position:relative;z-index:2;background:#111;color:#ccc;text-align:center;padding:160px var(--g) var(--sp6)}
.foot ul{list-style:none;margin:0;padding:0}
.foot li{font-size:12px;line-height:16px}
.foot li.sp{margin-top:var(--sp3)}
.foot a,.foot button{display:inline-block;padding:14px 8px;color:#ccc;text-decoration:none;transition:color .2s}
.foot a:hover,.foot button:hover{color:#fff}
.foot .sm{margin-top:var(--sp5);font-size:8px;color:#777}
@media (max-width:600px){.foot li{font-size:10px}}
.colophon{position:fixed;inset:0;z-index:400;background:rgba(17,17,17,.97);color:#f4f4f4;overflow-y:auto;opacity:0;pointer-events:none;transition:opacity .3s}
.colophon.show{opacity:1;pointer-events:auto}
.col-in{max-width:640px;margin:0 auto;padding:96px var(--g) var(--sp6)}
.col-in h3{margin:0 0 var(--sp3);font-size:16px;line-height:24px}
.col-in p{margin:0 0 var(--sp2)}
.col-in .small{font-size:8px;opacity:.6;margin-top:var(--sp4)}
.col-x{position:fixed;top:16px;right:var(--g);min-height:44px;padding:0 12px;font-size:10px;color:#f4f4f4;border:2px solid rgba(255,255,255,.3)}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

@media (min-width:992px){.cart-wrap{width:286px;height:312px}.cart-wrap .cart{transform-origin:0 0;scale:1.3}}
@media (max-width:600px){.notice{font-size:10px}}
