html.op-lock,html.op-lock body{overflow:hidden!important}
.op{position:fixed;inset:0;z-index:2147483000;background:#000;color:#ece2cf;font-family:"Jost",sans-serif;--fl:0;transition:opacity 1.2s ease,filter 1.2s}
.op.bye{opacity:0;filter:blur(12px) brightness(1.6);pointer-events:none}
.op::after{content:"";position:absolute;inset:0;background:#fff;opacity:var(--fl);pointer-events:none;z-index:9;mix-blend-mode:screen}
.op-stage{position:absolute;inset:0;overflow:hidden}
.op-v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.06);transition:opacity 1.4s ease,transform 12s linear}
.op-v.on{opacity:1;transform:scale(1.16)}
.op-stage.zc .op-v.on{animation:opZoom .8s cubic-bezier(.7,0,.3,1)}
@keyframes opZoom{0%{filter:none}45%{transform:scale(1.9);filter:blur(14px) brightness(1.8)}100%{filter:none}}
.op-grade{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 45%,rgba(0,0,0,.75) 100%),linear-gradient(180deg,rgba(0,0,0,.35),transparent 30%,transparent 65%,rgba(0,0,0,.6));pointer-events:none}
.op-leak{position:absolute;inset:-20%;pointer-events:none;background:radial-gradient(circle at 20% 30%,rgba(255,170,80,.35),transparent 40%),radial-gradient(circle at 85% 70%,rgba(63,193,182,.25),transparent 45%);mix-blend-mode:screen;animation:opLeak 9s ease-in-out infinite alternate}
@keyframes opLeak{to{transform:translate(8%,-6%) rotate(8deg);opacity:.6}}
.op-grain{position:absolute;inset:-50%;pointer-events:none;opacity:.09;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:cxg 1s steps(6) infinite}
.op-bar{position:absolute;left:0;right:0;height:9vh;background:#000;z-index:5;transition:height 1.6s cubic-bezier(.7,0,.2,1)}.op-bar.t{top:0}.op-bar.b{bottom:0}
.op-fx{position:absolute;inset:0;width:100%;height:100%;z-index:7;pointer-events:none}
.op-titles{position:absolute;left:0;right:0;bottom:16vh;z-index:6;text-align:center;padding:0 20px;pointer-events:none}
.op-t{transition:opacity .9s,filter .9s,transform .9s}.op-t.out{opacity:0;filter:blur(10px);transform:translateY(-14px)}
.op-t small{display:block;font-size:clamp(10px,1.2vw,13px);letter-spacing:.55em;color:#e2c48a;text-shadow:0 2px 12px rgba(0,0,0,.8)}
.op-t small span{display:inline-block;opacity:0;transform:translateY(12px);filter:blur(6px);animation:opCh .7s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes opCh{to{opacity:1;transform:none;filter:none}}
.op-t h2{margin:14px 0 0;font-family:"Marcellus",Georgia,serif;font-weight:400;font-size:clamp(22px,3.6vw,48px);letter-spacing:.06em;color:#fff6dd;text-shadow:0 4px 30px rgba(0,0,0,.7);opacity:0;animation:opH 1.6s cubic-bezier(.2,.7,.2,1) .5s forwards}
.op-t.big h2{font-size:clamp(28px,4.8vw,66px)}.op-t.pre h2{display:none}
.op-t.final h2{font-size:clamp(20px,2.6vw,32px);font-family:"Cormorant Garamond",serif;font-style:italic;letter-spacing:.02em}
.op-t.final small{font-family:"Marcellus",serif;font-size:clamp(26px,5vw,68px);letter-spacing:.2em;color:transparent;background:linear-gradient(100deg,#c9a465 20%,#fff6dd 45%,#c9a465 70%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;animation:cjShine 4s linear infinite}
.op-t.final small span{animation-duration:1s}
@keyframes opH{0%{opacity:0;letter-spacing:.5em;filter:blur(12px)}100%{opacity:1;letter-spacing:.06em;filter:none}}
.op-logo{position:absolute;left:50%;top:44%;width:min(34vw,300px);aspect-ratio:1;transform:translate(-50%,-50%) scale(.6);opacity:0;z-index:8;transition:opacity 1s,transform 1.4s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.op-logo.in{opacity:1;transform:translate(-50%,-50%) scale(1)}.op-logo.gone{opacity:0;transition:none}
.op-logo img{position:absolute;inset:0;width:100%;height:100%;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px #c9a465,0 0 60px rgba(226,196,138,.55),0 0 160px rgba(63,193,182,.35)}
.op-ring{position:absolute;inset:-14%;border-radius:50%;border:1px solid rgba(226,196,138,.6);animation:opSpin 8s linear infinite;border-top-color:#fff6dd;border-left-color:transparent}
@keyframes opSpin{to{transform:rotate(360deg)}}
.op-shine{position:absolute;inset:0;border-radius:50%;overflow:hidden}.op-shine::before{content:"";position:absolute;top:-20%;bottom:-20%;left:-60%;width:40%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.85),transparent);transform:skewX(-20deg)}
.op-logo.shine .op-shine::before{animation:opSw 1.2s ease-in-out}
@keyframes opSw{to{left:130%}}
.op-ui{position:absolute;top:calc(9vh + 14px);right:18px;z-index:10;display:flex;gap:8px}
.op-ui button{background:rgba(0,0,0,.45);border:1px solid rgba(226,196,138,.6);color:#e2c48a;font:500 11px "Jost",sans-serif;letter-spacing:.24em;padding:9px 14px;cursor:pointer;backdrop-filter:blur(4px)}
.op-ui button:hover{background:#c9a465;color:#000}
.op-prog{position:absolute;left:0;right:0;bottom:9vh;height:2px;z-index:6;background:rgba(255,255,255,.12)}.op-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,#c9a465,#3fc1b6)}
.op-go{pointer-events:auto;display:inline-block;margin-top:22px;padding:14px 30px;background:#c9a465;color:#04080a;text-decoration:none;font:500 13px "Jost";letter-spacing:.3em;animation:opH 1s forwards}
@media(max-width:700px){.op-logo{width:56vw}.op-titles{bottom:14vh}}
.op-img.on{transform:scale(1.24) translate(-2%,-1.5%)}.op-note{position:absolute;left:18px;bottom:calc(9vh + 10px);z-index:10;font:400 10px "Jost",sans-serif;letter-spacing:.18em;color:rgba(236,226,207,.65)}.op-img{object-position:center 42%}.op-point{position:absolute;inset:0;z-index:8;pointer-events:none;opacity:0;transition:opacity .6s}.op-point.on{opacity:1}
.op-point svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.opp-line,.opp-head{fill:none;stroke:#fff6dd;stroke-width:2.4;stroke-linecap:round;filter:drop-shadow(0 0 6px #e2c48a);stroke-dasharray:1;stroke-dashoffset:1}
.op-point.on .opp-line{animation:oppDraw 1.1s cubic-bezier(.7,0,.2,1) forwards}.op-point.on .opp-head{animation:oppDraw .4s ease 1s forwards}
@keyframes oppDraw{to{stroke-dashoffset:0}}
.opp-ring{position:absolute;left:23.5%;top:40%;width:15vw;height:15vw;max-width:220px;max-height:220px;transform:translate(-50%,-50%) scale(.4);border:2px solid #e2c48a;border-radius:50%;opacity:0;box-shadow:0 0 30px rgba(226,196,138,.6),inset 0 0 30px rgba(226,196,138,.3)}
.op-point.on .opp-ring{animation:oppRing 1.6s cubic-bezier(.2,.8,.2,1) .9s infinite}.op-point.on .opp-ring.r2{animation-delay:1.7s;border-color:#3fc1b6}
@keyframes oppRing{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}25%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1.25)}}
.opp-lbl{position:absolute;left:61%;top:19%;transform:translateX(-10%);padding:10px 16px;background:rgba(4,8,10,.78);border:1px solid rgba(201,164,101,.7);backdrop-filter:blur(4px);opacity:0;display:grid;gap:2px}
.op-point.on .opp-lbl{animation:oppLbl .8s cubic-bezier(.2,.8,.2,1) .3s forwards}
@keyframes oppLbl{from{opacity:0;transform:translateX(-10%) translateY(10px)}to{opacity:1;transform:translateX(-10%) translateY(0)}}
.opp-lbl small{font:500 9px "Jost",sans-serif;letter-spacing:.32em;color:#3fc1b6}.opp-lbl b{font:400 clamp(14px,1.6vw,20px) "Marcellus",serif;letter-spacing:.16em;color:#fff6dd}.opp-lbl span{font:300 10px "Jost",sans-serif;letter-spacing:.14em;color:#e2c48a}
@media(max-width:700px){.opp-lbl{left:50%;top:12%;transform:translateX(-50%)}}
.op-ui .pulse{animation:opPulse 1.4s ease-in-out infinite;background:rgba(201,164,101,.25)!important;color:#fff6dd!important}@keyframes opPulse{50%{box-shadow:0 0 0 6px rgba(226,196,138,.25),0 0 24px rgba(226,196,138,.6)}}