:root{--ink:#040605;--bone:#eaf2ec;--dim:#8a9a90;--mint:#b6f5c8;--moss:#14402b;--sage:#5fa97f;
--display:'Syne','Helvetica Neue',Arial,sans-serif;--body:'Instrument Sans','Helvetica Neue',Arial,sans-serif;
box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);color-scheme:dark}
*,*::before,*::after{box-sizing:inherit}
html{background:var(--ink);scroll-behavior:auto}
body{margin:0;background:var(--ink);color:var(--bone);font-family:var(--body);overflow-x:hidden}
a{color:inherit}
:focus-visible{outline:2px solid var(--mint);outline-offset:3px}
nav{position:fixed;top:env(safe-area-inset-top,0px);left:0;right:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:1.1rem 5vw;mix-blend-mode:difference}
nav b{font-family:var(--display);font-weight:800;letter-spacing:-.02em}
nav div{display:flex;gap:1.6rem}
nav a{text-decoration:none;font-size:.95rem}
nav a:hover{color:var(--mint)}
.scene{position:relative;height:300vh}
.stage{position:sticky;top:0;height:100vh;overflow:hidden;display:grid;place-items:center}
.glow{position:absolute;width:70vmin;height:70vmin;border-radius:50%;background:conic-gradient(from 0deg,var(--moss),var(--mint),var(--sage),var(--moss));filter:blur(70px);opacity:.55;transform:rotate(calc(var(--p)*160deg)) scale(calc(.8 + var(--p)*.6))}
.ring{position:absolute;width:92vmin;height:92vmin;border:1px solid rgba(182,245,200,.25);border-radius:50%;transform:rotate(calc(var(--p)*-90deg)) scaleX(.55)}
.vidwrap{position:relative;width:min(90vw,76vh*1.7778);aspect-ratio:16/9;border-radius:24px;overflow:hidden;border:1px solid rgba(182,245,200,.25);transform:scale(calc(3.4 - 2.4*var(--p)));background:#000}
.vidwrap video{width:100%;height:100%;object-fit:cover;display:block}
.vidwrap::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(4,6,5,.82),transparent 55%)}
.hero-txt{position:absolute;z-index:2;left:6vw;bottom:calc(11vh + env(safe-area-inset-bottom,0px));opacity:var(--t);transform:translateY(calc((1 - var(--t))*26px))}
h1{font-family:var(--display);font-weight:800;font-size:clamp(2.6rem,9.5vw,8rem);line-height:.92;margin:0;letter-spacing:-.035em}
.sub{margin:.9rem 0 0;color:var(--mint);font-size:clamp(1rem,1.8vw,1.25rem)}
.snd{position:absolute;z-index:3;right:4%;bottom:7%;font:inherit;font-size:.95rem;color:var(--ink);background:var(--mint);border:0;border-radius:99px;padding:.6rem 1.2rem;cursor:pointer;opacity:var(--t)}
.snd:hover{background:var(--bone)}
.hint{position:absolute;bottom:calc(5vh + env(safe-area-inset-bottom,0px));left:0;right:0;text-align:center;color:var(--dim);opacity:calc(1 - var(--p)*8);z-index:3}
.say{height:220vh}
.words{margin:0;padding:0 6vw;font-family:var(--display);font-weight:600;font-size:clamp(2rem,6.2vw,5.2rem);line-height:1.08;letter-spacing:-.02em;max-width:22ch}
.words span{opacity:.15}
.work{height:800vh}
.panel{position:absolute;inset:0;display:grid;place-content:center;justify-items:start;gap:1.1rem;padding:0 6vw;opacity:0;pointer-events:none}
.frame{width:min(86vw,62vh*1.7778,1000px);aspect-ratio:16/9;border-radius:22px;overflow:hidden;border:1px solid rgba(182,245,200,.2);background:#000}
.frame.tall{aspect-ratio:9/16;width:auto;height:min(52vh,560px)}
.frame{position:relative}
.frame .snd{opacity:1;right:12px;bottom:12px;padding:.45rem .95rem;font-size:.85rem}
.frame video{width:100%;height:100%;object-fit:cover;display:block}
.frame.soon{display:grid;place-items:center;background:radial-gradient(circle at 30% 30%,var(--sage),transparent 55%),radial-gradient(circle at 75% 80%,var(--moss),transparent 60%),#07100b}
.frame.soon span{font-family:var(--display);font-weight:800;font-size:clamp(1.4rem,4vw,3rem);color:var(--mint)}
.cap h2{font-family:var(--display);font-weight:800;font-size:clamp(1.6rem,4vw,3rem);margin:0;letter-spacing:-.02em}
.cap p{margin:.3rem 0 0;color:var(--dim)}
/* services */
#services{display:none;padding:18vh 6vw 12vh;min-height:100vh}
.svc{border-top:1px solid rgba(182,245,200,.25);padding:2.2rem 0;display:grid;gap:.6rem;transition:padding .3s}
.svc:hover{padding-left:1.4rem}
.svc h2{font-family:var(--display);font-weight:800;font-size:clamp(2.2rem,7vw,5.6rem);line-height:1;margin:0;letter-spacing:-.03em}
.svc:hover h2{color:var(--mint)}
.svc p{margin:0;color:var(--dim);max-width:46ch;font-size:1.1rem}
#services h1{font-size:clamp(2.6rem,9vw,7rem);margin-bottom:4rem}
/* contact */
.contact{padding:16vh 6vw 10vh;min-height:100vh;position:relative}
.contact h2{font-family:var(--display);font-weight:800;font-size:clamp(2.6rem,9vw,7.5rem);line-height:.92;letter-spacing:-.035em;margin:0 0 2.5rem}
form{display:grid;gap:1.1rem;max-width:620px}
label{display:grid;gap:.4rem;font-size:.95rem;color:var(--dim)}
input,select,textarea{font:inherit;color:var(--bone);background:rgba(182,245,200,.06);border:1px solid rgba(182,245,200,.25);border-radius:12px;padding:.9rem 1rem}
input:focus,select:focus,textarea:focus{outline:2px solid var(--mint);outline-offset:1px}
select option{background:#0b120e}
textarea{min-height:130px;resize:vertical}
.btn{font:inherit;font-weight:500;cursor:pointer;color:var(--ink);background:var(--mint);border:0;border-radius:99px;padding:1rem 2.2rem;text-decoration:none;display:inline-block;text-align:center}
.btn:hover{background:var(--bone)}
.row{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}
.btn.ghost{background:transparent;color:var(--bone);border:1px solid rgba(182,245,200,.4)}
#status{margin:.2rem 0 0;color:var(--mint);min-height:1.4em}
@media (prefers-reduced-motion:reduce){
 .scene{height:auto}.stage{position:relative;height:auto;min-height:100vh;padding:14vh 0}
 .glow,.ring,.vidwrap{transform:none}.hero-txt{opacity:1;transform:none}.hint{display:none}
 .words span{opacity:1}.work .stage{display:block}.panel{position:relative;opacity:1!important;transform:none!important;margin-bottom:12vh}
}

.intro{position:absolute;inset:0;z-index:5;background:var(--ink);display:grid;place-items:center;animation:iout .8s ease 4.4s forwards}
.intro.skip{animation:iout .35s ease forwards}
@keyframes iout{to{opacity:0;visibility:hidden}}
.intro::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(182,245,200,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(182,245,200,.06) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(circle,#000 20%,transparent 72%);mask-image:radial-gradient(circle,#000 20%,transparent 72%)}
.iin{position:relative;width:min(86vw,900px);display:grid;gap:1.5rem}
.ibar{display:flex;align-items:center;gap:1rem;color:var(--dim);font-variant-numeric:tabular-nums;opacity:0;animation:fin .5s ease .15s forwards}
@keyframes fin{to{opacity:1}}
.play{width:42px;height:42px;border-radius:50%;background:var(--mint);position:relative;animation:pop .5s ease 1s}
.play::before{content:"";position:absolute;left:16px;top:12px;border-left:14px solid var(--ink);border-top:9px solid transparent;border-bottom:9px solid transparent}
@keyframes pop{50%{transform:scale(1.25)}}
.itime{color:var(--mint)}.ilabel{margin-left:auto}
.iname{font-family:var(--display);font-weight:800;font-size:calc(min(86vw,900px)/7.3);line-height:1;letter-spacing:-.035em;margin:0;white-space:nowrap;clip-path:inset(0 100% 0 0);animation:wipe 2.4s linear 1s forwards}
@keyframes wipe{to{clip-path:inset(0 0 0 0)}}
.tl{display:grid;grid-template-rows:repeat(3,1fr);gap:8px;height:120px;border-top:1px solid rgba(182,245,200,.2);padding-top:10px}
.trk{position:relative;background:rgba(182,245,200,.05);border-radius:6px}
.clip{position:absolute;top:2px;bottom:2px;border-radius:5px;transform:scaleX(0);transform-origin:left;animation:clip .5s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:var(--d)}
@keyframes clip{to{transform:scaleX(1)}}
.c1{background:var(--mint)}.c2{background:var(--sage)}.c3{background:var(--moss);border:1px solid rgba(182,245,200,.45)}
.head{position:absolute;top:2.6rem;bottom:-6px;left:0;width:2px;background:var(--mint);box-shadow:0 0 14px var(--mint);opacity:0;animation:sweep 2.4s linear 1s forwards}
.head::before{content:"";position:absolute;top:-6px;left:-5px;border-top:8px solid var(--mint);border-left:6px solid transparent;border-right:6px solid transparent}
@keyframes sweep{0%{left:0;opacity:1}100%{left:100%;opacity:1}}
@media (prefers-reduced-motion:reduce){.intro{display:none}}

.full{position:absolute;z-index:3;top:12px;right:12px;height:40px;padding:0 .95rem 0 .8rem;border-radius:99px;display:inline-flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--mint);background:rgba(4,6,5,.65);border:1px solid rgba(182,245,200,.5);text-decoration:none}
.full::after{content:"Full video"}
.full:hover{background:var(--mint);color:var(--ink)}
.hero-full{top:5%;right:4%;opacity:var(--t)}
#portfolio{display:none;padding:18vh 6vw 12vh;min-height:100vh}
#portfolio h1{font-size:clamp(2.6rem,9vw,7rem);margin-bottom:3.5rem}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:2.5rem 2rem}
.card img,.soonbox{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:18px;border:1px solid rgba(182,245,200,.2);display:block;background:#000}
.card img.contain{object-fit:contain}
.soonbox{display:grid;place-items:center;background:radial-gradient(circle at 30% 30%,var(--sage),transparent 55%),radial-gradient(circle at 75% 80%,var(--moss),transparent 60%),#07100b}
.soonbox span{font-family:var(--display);font-weight:800;font-size:1.8rem;color:var(--mint)}
.card h2{font-family:var(--display);font-weight:800;font-size:1.7rem;letter-spacing:-.02em;margin:1rem 0 .2rem}
.card p{margin:0 0 .8rem;color:var(--dim)}
.more{display:inline-flex;gap:.5rem;align-items:center;color:var(--mint);text-decoration:none;border-bottom:1px solid rgba(182,245,200,.4);padding-bottom:2px}
.more:hover{color:var(--bone)}
#toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--mint);color:var(--ink);padding:.7rem 1.3rem;border-radius:99px;opacity:0;pointer-events:none;transition:opacity .25s;z-index:20}
#toast.show{opacity:1}
.cap p{max-width:min(86vw,62vh*1.7778,1000px);font-size:.95rem;line-height:1.5}
.card p{font-size:.95rem;line-height:1.55}
.panel:has(.frame.tall){justify-items:center}
.panel:has(.frame.tall) .cap{text-align:center}
.panel:has(.frame.tall) .cap p{margin-left:auto;margin-right:auto}
html{-webkit-text-size-adjust:100%}
@supports (height:100svh){.stage{height:100svh}}
@media (max-width:700px){
 nav{padding:.8rem 4vw;flex-wrap:wrap;gap:.2rem .8rem}
 nav b{font-size:.95rem}
 nav div{gap:.9rem}
 nav a{font-size:.85rem;padding:.35rem 0}
 .vidwrap{width:92vw;aspect-ratio:3/4;max-height:76vh}
 .hero-txt{left:5%;right:5%;bottom:6%}
 h1{font-size:clamp(2.2rem,12vw,3.4rem)}
 .sub{font-size:1rem}
 .snd#snd{top:4%;left:4%;right:auto;bottom:auto}
 .hero-full{top:4%;right:4%}
 .words{font-size:clamp(1.8rem,8vw,2.6rem)}
 .panel{padding:0 5vw;gap:.8rem}
 .frame{width:min(90vw,62vh*1.7778)}
 .frame.tall{width:auto;height:min(42vh,380px)}
 .cap h2{font-size:1.45rem}
 .cap p{font-size:.88rem;line-height:1.45;max-width:90vw}
 .frame .snd,.frame .full{font-size:.8rem}
 .frame .full{height:36px;top:8px;right:8px}
 .frame .snd{bottom:8px;right:8px;padding:.4rem .8rem}
 #services,#portfolio{padding-top:22vh}
 .svc h2{font-size:clamp(1.9rem,9vw,2.8rem)}
 .contact{padding:20vh 5vw 8vh}
 .btn{padding:.9rem 1.6rem}
 .grid{gap:2rem}
}

.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
