:root{--bg:#FFF4F4;--ink:#1B1618;--mut:#6d6165;--ac:#3674B5;--ac2:#2b5f99;--card:#fffafa;--ln:rgba(27,22,24,.12);--sans:'Space Grotesk',system-ui,sans-serif;--mono:'JetBrains Mono',ui-monospace,monospace;box-sizing:border-box;color-scheme:only light}
*,*:before,*:after{box-sizing:inherit}
html{scroll-behavior:smooth;scroll-padding-top:90px}
body{margin:0;background:var(--bg);color:var(--ink);font:400 17px/1.55 var(--sans);overflow-x:hidden;overflow-x:clip;-webkit-font-smoothing:antialiased;padding-bottom:env(safe-area-inset-bottom,0px)}
body:before{content:"";position:fixed;inset:0;z-index:-1;background-image:linear-gradient(var(--ln) 1px,transparent 1px),linear-gradient(90deg,var(--ln) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse at 50% 0,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse at 50% 0,#000 20%,transparent 75%);opacity:.7}
a{color:inherit;text-decoration:none}
.w{width:min(1160px,92%);margin:0 auto}
section{padding:clamp(64px,9vw,96px) 0}
.tag{font:500 12px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ac2);display:inline-flex;gap:8px;align-items:center}
.tag:before{content:"";width:18px;height:1px;background:var(--ac)}
h1,h2,h3{margin:0;line-height:1.05;letter-spacing:-.03em}
h1{font-size:clamp(42px,8vw,96px);font-weight:700}
h2{font-size:clamp(32px,5vw,56px);font-weight:700;margin:14px 0 14px}
h3{font-size:22px;letter-spacing:-.01em}
p{margin:0 0 14px;color:var(--mut)}
.ac{color:var(--ac)}
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 26px;border-radius:99px;font-weight:500;border:1px solid var(--ink);background:var(--ink);color:var(--bg);transition:.3s;cursor:pointer;font-family:var(--sans);font-size:16px}
@media(hover:hover){.btn:hover{background:var(--ac);border-color:var(--ac);transform:translateY(-2px);box-shadow:0 12px 30px -10px var(--ac)}}.btn:active{transform:scale(.97)}
.btn.o{background:transparent;color:var(--ink)}@media(hover:hover){.btn.o:hover{color:#fff}}
/* nav */
nav{position:fixed;top:calc(14px + env(safe-area-inset-top,0px));left:0;right:0;margin:0 auto;transform:translateZ(0);-webkit-transform:translateZ(0);z-index:100;display:flex;align-items:center;gap:6px;padding:8px 10px 8px 18px;border-radius:99px;background:rgba(255,244,244,.9);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--ln);width:min(920px,94%);justify-content:space-between}
.logo{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:-.02em;font-size:18px}
.logo .lg{height:26px;width:auto;display:block}
.nl{display:flex;gap:2px}.nl a{padding:8px 14px;border-radius:99px;font-size:14.5px;color:var(--mut);transition:.25s}.nl a:hover{background:rgba(54,116,181,.12);color:var(--ac)}
nav .btn{padding:10px 20px;font-size:14px}
.nl a.act{background:rgba(54,116,181,.12);color:var(--ac2)}
.mb{display:none;width:42px;height:42px;border-radius:50%;border:1px solid var(--ln);background:transparent;cursor:pointer;flex-direction:column;gap:5px;align-items:center;justify-content:center;padding:0}
.mb span{width:16px;height:2px;background:var(--ink);transition:.3s}
nav.open .mb span:first-child{transform:translateY(3.5px) rotate(45deg)}nav.open .mb span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
@media(max-width:820px){nav{gap:8px}nav .btn{margin-left:auto}.mb{display:flex}.nl{display:none;position:absolute;top:calc(100% + 8px);left:0;right:0;flex-direction:column;padding:10px;border-radius:24px;background:rgba(255,244,244,.97);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--ln);box-shadow:0 20px 50px -20px rgba(27,22,24,.3)}nav.open .nl{display:flex}.nl a{padding:14px 16px;font-size:16px}}
@media(max-width:600px){.fr{box-shadow:8px 8px 0 var(--ac)}.hero{padding-top:120px}.card{padding:24px}}
:focus-visible{outline:2px solid var(--ac);outline-offset:3px;border-radius:6px}
.sk{position:fixed;left:12px;top:-60px;z-index:99;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:99px;transition:top .2s}.sk:focus{top:12px}
details[open] p{animation:fd .4s}@keyframes fd{from{opacity:0;transform:translateY(-6px)}}
/* hero */
.hero{overflow-x:clip;min-height:100vh;min-height:100svh;display:flex;align-items:center;padding:140px 0 70px;position:relative}
.hero:after{content:"";position:absolute;width:560px;height:560px;right:-120px;top:10%;background:radial-gradient(circle,rgba(54,116,181,.28),transparent 65%);filter:blur(30px);z-index:-1;animation:fl 9s ease-in-out infinite}
@keyframes fl{50%{transform:translate(-40px,30px)}}
.pill{display:inline-flex;gap:10px;align-items:center;font:500 12.5px var(--mono);padding:7px 14px;border:1px solid var(--ln);border-radius:99px;background:var(--card);margin-bottom:28px}
.dot{width:8px;height:8px;border-radius:50%;background:#2fa66a;box-shadow:0 0 0 0 rgba(47,166,106,.6);animation:pu 2s infinite}
@keyframes pu{70%{box-shadow:0 0 0 9px transparent}}
.hero p.lead{font-size:clamp(17px,2vw,21px);max-width:560px;margin:26px 0 34px}
.hero .row{display:flex;gap:14px;flex-wrap:wrap}
.hg{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center}
.term{background:var(--ink);color:#e9e3e4;border-radius:18px;font:13px/1.9 var(--mono);box-shadow:0 40px 80px -30px rgba(54,116,181,.55);transition:.5s}

.term b{display:block;padding:12px 16px;border-bottom:1px solid #ffffff1c;font-weight:400;color:#9a8f92}
.term b:before{content:"● ● ●";color:#ff6b6b;letter-spacing:3px;margin-right:12px}
.term div{padding:16px 20px}.term .k{color:#7fb4ee}.term .s{color:#f2c98b}.cur{display:inline-block;width:8px;height:15px;background:var(--ac);vertical-align:-2px;animation:bl 1s steps(1) infinite}
@keyframes bl{50%{opacity:0}}
@media(max-width:860px){.hg{grid-template-columns:1fr}}
/* marquee */
.mq{border-block:1px solid var(--ln);overflow:hidden;padding:18px 0;background:var(--card)}
.mq div{display:flex;gap:0;width:max-content;animation:mq 28s linear infinite;font:500 clamp(22px,3vw,34px) var(--sans);letter-spacing:-.02em;white-space:nowrap}
.mq span{padding-right:48px}.mq span:nth-child(even){color:var(--ac);font-family:var(--mono)}
@keyframes mq{to{transform:translateX(-50%)}}
/* cards */
.card{position:relative;background:var(--card);border:1px solid var(--ln);border-radius:24px;padding:30px;overflow:hidden;transition:.4s}
.card:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(360px circle at var(--mx,50%) var(--my,0),rgba(54,116,181,.16),transparent 60%);opacity:0;transition:.4s}
@media(hover:hover){.card:hover{border-color:var(--ac);transform:translateY(-4px)}.card:hover:before{opacity:1}}
.card>*{position:relative}
.bento{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;margin-top:44px}
.bento .card:nth-child(1){grid-column:span 4}.bento .card:nth-child(2){grid-column:span 2}.bento .card:nth-child(3){grid-column:span 2}.bento .card:nth-child(4){grid-column:span 4}
.ic{width:46px;height:46px;border-radius:14px;background:rgba(54,116,181,.12);color:var(--ac);display:grid;place-items:center;font:500 18px var(--mono);margin-bottom:34px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.chips span{font:12.5px var(--mono);padding:6px 12px;border:1px solid var(--ln);border-radius:99px;color:var(--ink);background:var(--bg)}
@media(max-width:820px){.bento{grid-template-columns:1fr}.bento .card{grid-column:auto!important}}
/* about */
.ab{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:start}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.stats .card{padding:24px}.stats strong{display:block;font-size:44px;letter-spacing:-.04em;color:var(--ac);line-height:1}
.stats small{font:12px var(--mono);color:var(--mut)}
.tl{margin:26px 0 0;padding:0;list-style:none;border-left:1px solid var(--ln)}
.tl li{padding:0 0 18px 22px;position:relative;color:var(--mut)}.tl li:before{content:"";position:absolute;left:-5px;top:9px;width:9px;height:9px;border-radius:50%;background:var(--ac)}.tl b{color:var(--ink);font-weight:500}
@media(max-width:860px){.ab{grid-template-columns:1fr}}
/* portfolio / recent work: vertical project list */
.pjs{display:grid;gap:clamp(52px,7vw,80px);margin-top:44px}
.pj{width:min(100%,880px);margin:0 auto}
.md{position:relative;margin:0;width:100%;border-radius:16px;overflow:hidden;background:#fff;border:1px solid var(--ln);box-shadow:0 30px 60px -34px rgba(27,22,24,.38),0 2px 6px rgba(27,22,24,.06)}
.md video{display:block;width:100%;height:100%;object-fit:contain;background:#fff}
.cap{margin:24px 0 0;padding:0 4px}
.cap h3{font-size:clamp(22px,3vw,30px);letter-spacing:-.025em}
.cap p{margin:10px 0 14px;max-width:760px;font-size:16.5px}
.vl{display:inline-flex;align-items:center;gap:7px;font-weight:500;font-size:15px;color:var(--ink);border-bottom:1px solid var(--ink);padding-bottom:2px;transition:color .25s,border-color .25s}
.vl svg{transition:transform .25s}
@media(hover:hover){.vl:hover{color:var(--ac2);border-color:var(--ac2)}.vl:hover svg{transform:translate(2px,-2px)}}
.vpb{display:none;position:absolute;left:12px;bottom:12px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(27,22,24,.72);color:#fff;place-items:center;cursor:pointer;z-index:3}
.vpb .i-play{display:none}.vpb.paused .i-play{display:block}.vpb.paused .i-pause{display:none}
.pjs.rm .vpb{display:grid}
/* shine sweep: one pass every 5s on each video card that is on screen */
.shn{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;z-index:2}
.shn:before{content:"";position:absolute;top:-20%;bottom:-20%;left:0;width:34%;opacity:0;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.14) 30%,rgba(255,255,255,.4) 50%,rgba(255,255,255,.14) 70%,rgba(255,255,255,0) 100%);transform:translateX(-160%) skewX(-18deg)}
.pj.live .shn:before{animation:shine 5s linear .6s infinite}
@keyframes shine{0%{transform:translateX(-160%) skewX(-18deg);opacity:0}2%{opacity:1}16%{opacity:1}18%,100%{transform:translateX(420%) skewX(-18deg);opacity:0}}
@media(max-width:760px){.cap{margin-top:18px}}

/* pricing */
.pr{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:44px}
.pr .card{display:flex;flex-direction:column;padding:28px 24px}
.pr .feat{background:var(--ink);color:var(--bg);border-color:var(--ink)}.pr .feat p,.pr .feat li,.pr .feat small{color:#cfc6c8}.pr .feat .am{color:#fff}.pr .feat .hs{color:#cfc6c8}
.pr small{font:12px var(--mono);color:var(--mut);text-transform:uppercase;letter-spacing:.1em}
.am{font-size:42px;font-weight:700;letter-spacing:-.04em;margin:14px 0 0;line-height:1}.am sub{font:13px var(--mono);color:var(--mut);letter-spacing:0}
.hs{padding:12px 0;margin:14px 0;border-block:1px dashed var(--ln);font-size:14px;color:var(--mut)}.hs b{color:var(--ac);font-size:20px}
.pr ul{list-style:none;padding:0;margin:0 0 24px;flex:1}.pr li{padding:5px 0 5px 24px;position:relative;font-size:15px;color:var(--mut)}.pr li:before{content:"✓";position:absolute;left:0;color:var(--ac);font-weight:700}
.pr .btn{justify-content:center}.feat .btn{background:var(--ac);border-color:var(--ac);color:#fff}
.fn{font-size:13px;color:var(--mut);margin-top:22px}
@media(max-width:900px){.pr{grid-template-columns:1fr;max-width:520px;margin-inline:auto}}
.gr{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:44px}
@media(max-width:820px){.gr{grid-template-columns:1fr}}
/* faq */
details{border-bottom:1px solid var(--ln);padding:22px 0}summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px;font-size:20px;font-weight:500;letter-spacing:-.01em}
summary::-webkit-details-marker{display:none}summary:after{content:"+";font:300 28px/1 var(--mono);color:var(--ac);transition:.3s}details[open] summary:after{transform:rotate(45deg)}
details p{margin:14px 0 0;max-width:760px}
/* cta/contact */
.cta{background:var(--ink);color:var(--bg);border-radius:32px;padding:clamp(32px,6vw,72px);display:grid;grid-template-columns:1fr 1fr;gap:48px;position:relative;overflow:hidden}
.cta:before{content:"";position:absolute;width:420px;height:420px;right:-100px;top:-120px;background:radial-gradient(circle,rgba(54,116,181,.7),transparent 65%)}
.cta>*{position:relative}.cta p{color:#cfc6c8}.cta h2{margin-top:0}
form{display:grid;gap:12px}
input,textarea{width:100%;padding:15px 18px;border-radius:14px;border:1px solid #ffffff2e;background:#ffffff0f;color:#fff;font:16px var(--sans);outline:0;transition:.25s}
input:focus,textarea:focus{border-color:var(--ac);background:#ffffff18}textarea{min-height:120px;resize:vertical}
::placeholder{color:#a69b9e}
form .btn{background:var(--ac);border-color:var(--ac);color:#fff;justify-content:center}
@media(max-width:860px){.cta{grid-template-columns:1fr}}
footer{padding:48px 0 40px;border-top:1px solid var(--ln);margin-top:90px}
.ft{display:flex;justify-content:space-between;gap:30px;flex-wrap:wrap}.ft p{max-width:380px;font-size:15px}
.ft nav{all:unset;display:flex;gap:18px;flex-wrap:wrap;font-size:15px;color:var(--mut)}.ft nav a:hover{color:var(--ac)}
.cp{margin-top:34px;font:12.5px var(--mono);color:var(--mut)}
.rv{opacity:0;transform:translateY(28px);transition:opacity .8s,transform .8s cubic-bezier(.2,.7,.2,1)}.rv.on{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}}
.logo,nav .btn{white-space:nowrap}
@media(max-width:600px){nav{padding:7px 8px 7px 14px}.logo{font-size:16px;gap:7px}.logo .lg{height:22px}nav .btn{padding:9px 15px;font-size:13.5px}.mb{width:38px;height:38px}}
@media(max-width:380px){.logo{font-size:15px}.logo .lg{height:20px}nav .btn{padding:8px 12px;font-size:12.5px}}
.cta .tag{display:flex;margin-bottom:18px}.cta .tag:before{display:none}

.card .pop{position:absolute;top:20px;right:20px;font:500 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;background:var(--ac);color:#fff;padding:5px 11px;border-radius:99px}

#ck{position:fixed;left:0;right:0;bottom:calc(14px + env(safe-area-inset-bottom,0px));margin:0 auto;width:min(560px,92%);z-index:90;display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:16px 18px;background:rgba(255,250,250,.97);border:1px solid var(--ln);border-radius:20px;box-shadow:0 20px 50px -20px rgba(27,22,24,.35);font-size:14px;color:var(--mut)}
#ck[hidden]{display:none}#ck p{margin:0;flex:1 1 240px}#ck a{color:var(--ac2);text-decoration:underline}#ck .b{display:flex;gap:8px}#ck .btn{padding:9px 18px;font-size:14px}
.pv{max-width:760px;margin:0 auto;padding:130px 0 40px}.pv h1{font-size:clamp(34px,6vw,52px);margin-bottom:6px}.pv h2{font-size:22px;margin:32px 0 8px;letter-spacing:-.01em}.pv p,.pv li{color:var(--mut)}.pv ul{padding-left:20px}.pv li{margin-bottom:8px}.pv b{color:var(--ink)}
.ft nav a[data-site-only]{white-space:nowrap}
