/* Shared styles and the Home page — jaypagare.in */
:root{--sec:clamp(96px,10vw,144px);--gap:clamp(44px,5vw,64px);--bg:#000;--fg:#F5F5F7;--mute:#A1A1A6;--dim:#6E6E73;--line:#1C1C1F;--blue:#2997FF;--blue2:#6CB6FF;--deep:#0A5BD6;--ease:cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--fg);font-family:Inter,-apple-system,"SF Pro Display",system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,p{margin:0}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
img{display:block;max-width:100%}
.wrap{max-width:1760px;margin:0 auto;padding:0 clamp(20px,4.5vw,80px);width:100%}
.muted{color:var(--mute)}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--blue2)}

.h2{font-size:clamp(32px,4.2vw,62px);font-weight:800;letter-spacing:-.035em;line-height:1.06}
.sec{padding:var(--sec) 0;position:relative}
.split .w{display:inline-block;overflow:hidden;vertical-align:top;padding:.04em .08em .2em;margin:-.04em -.08em -.2em}
.split .w>span{display:inline-block;will-change:transform}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:54px;border-radius:999px;font-size:15px;font-weight:600;border:0;cursor:pointer;white-space:nowrap;transition:background .3s var(--ease),color .3s var(--ease),border-color .3s;will-change:transform}
.btn-p{background:var(--fg);color:#0A0A0B;padding:0 6px 0 24px}
.btn-p:hover{background:var(--blue)}
.btn-p .bi{width:42px;height:42px;border-radius:999px;background:#0A0A0B;color:var(--fg);display:inline-flex;align-items:center;justify-content:center;transition:transform .4s var(--ease)}
.btn-p:hover .bi{transform:rotate(-45deg)}
.btn-s{background:rgba(255,255,255,.07);color:var(--fg);padding:0 24px;border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.btn-s:hover{background:rgba(255,255,255,.14)}
.btn-sm{min-height:42px;font-size:14px}.btn-sm.btn-p{padding:0 4px 0 18px}.btn-sm .bi{width:34px;height:34px}
.btn-ic{width:54px;padding:0}
.lnk{font-weight:600;font-size:15px;background:linear-gradient(var(--blue),var(--blue)) 0 100%/0 2px no-repeat;padding-bottom:5px;transition:background-size .45s var(--ease)}
.lnk:hover{background-size:100% 2px}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:6px}

/* header */
.hdr{position:fixed;top:0;left:0;right:0;z-index:50;transition:transform .55s var(--ease),background .3s,border-color .3s;border-bottom:1px solid transparent}
.hdr.scrolled{background:rgba(0,0,0,.72);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-color:var(--line)}
.hdr.hide{transform:translateY(-100%)}
.hdr .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:76px}
.logo{font-weight:800;font-size:19px;letter-spacing:-.02em}
.logo b{color:var(--blue)}
.nav{display:flex;gap:30px;font-size:14px;font-weight:500}
.nav a{color:var(--mute);position:relative;transition:color .25s}
.nav a:hover,.nav a.on{color:var(--fg)}
.nav a.on::after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:2px;background:var(--blue);border-radius:2px}
.burger{display:none;width:44px;height:44px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);cursor:pointer}
@media (max-width:900px){.nav{display:none}.burger{display:inline-flex;align-items:center;justify-content:center}.hdr .btn-p{display:none}}
.mnav{position:fixed;inset:0;z-index:60;background:#000;display:flex;flex-direction:column;justify-content:center;padding:40px;gap:8px;transform:translateY(-100%);transition:transform .7s var(--ease)}
.mnav.open{transform:none}
.mnav a{font-size:44px;font-weight:800;letter-spacing:-.04em}
.mnav .x{position:absolute;top:18px;right:20px}

/* hero */
.hero{position:relative;height:100vh;min-height:620px;overflow:hidden;cursor:none;background:#050507}
.hero canvas{position:absolute;inset:0;width:100%;height:100%;transform:scale(1.06);transform-origin:50% 40%}
.hero .shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.35) 0%,rgba(0,0,0,0) 30%,rgba(0,0,0,0) 55%,#000 100%);pointer-events:none}
.hero .dummy{position:absolute;top:96px;right:clamp(20px,4vw,48px);font-size:11px;letter-spacing:.16em;color:rgba(255,255,255,.55);border:1px dashed rgba(255,255,255,.25);padding:6px 10px;border-radius:8px;pointer-events:none}
.hero-ui{position:absolute;left:0;right:0;bottom:clamp(28px,5vw,56px);z-index:5}
.hero-ui .wrap{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px}
.hero-name{font-size:clamp(40px,6vw,96px);font-weight:900;letter-spacing:-.045em;line-height:1;padding-left:.04em}
.hero-role{font-size:clamp(15px,1.4vw,18px);color:#C7C7CC;margin:14px 0 26px}
.hero-right{display:flex;align-items:center;gap:16px}
.scroll-cue{font-size:11px;letter-spacing:.22em;color:var(--mute);display:flex;align-items:center;gap:10px}
.scroll-cue i{display:block;width:1px;height:38px;background:linear-gradient(var(--fg),transparent);animation:cue 1.8s var(--ease) infinite}
@keyframes cue{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.cur{position:fixed;left:0;top:0;z-index:45;pointer-events:none;display:flex;align-items:center;gap:10px;padding:6px 16px 6px 6px;border-radius:999px;background:rgba(10,10,11,.55);border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;will-change:transform,opacity}
.cur .pb{width:30px;height:30px;border-radius:999px;background:var(--blue);display:flex;align-items:center;justify-content:center}
.cur span{font-size:13px;font-weight:600}
@media (hover:none){.hero{cursor:auto}.cur{display:none}}

/* reel modal */
.modal{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;padding:4vw;opacity:0;pointer-events:none;transition:opacity .4s var(--ease)}
.modal.open{opacity:1;pointer-events:auto}
.modal .frame{width:min(1200px,100%);aspect-ratio:16/9;border-radius:20px;overflow:hidden;position:relative;background:#050507;transform:scale(.94);transition:transform .6s var(--ease)}
.modal.open .frame{transform:none}
.modal canvas{width:100%;height:100%;display:block}
.modal .close{position:absolute;top:24px;right:24px}
.modal .cap{position:absolute;left:24px;bottom:20px;font-size:13px;color:#C7C7CC}

/* loader */
.loader{position:fixed;inset:0;z-index:100;pointer-events:none}
.loader .bar{position:absolute;left:0;right:0;height:50.5%;background:#000}
.loader .bt{top:0}.loader .bb{bottom:0}
.loader .ln{position:absolute;left:8%;right:8%;top:50%;height:2px;margin-top:-1px;background:var(--blue);transform:scaleX(0);transform-origin:0 50%}
.loader .ln{animation:ldGrow 3.2s cubic-bezier(.12,.7,.2,1) .1s forwards}
@keyframes ldGrow{to{transform:scaleX(.82)}}
.loader .rec{position:absolute;top:28px;right:32px;font-size:12px;letter-spacing:.14em;color:var(--mute)}
.loader .rec b{color:#FF453A}

/* clients */
.clients{padding:clamp(56px,6vw,80px) 0;overflow:hidden;border-bottom:1px solid var(--line)}
.clients .lab{display:flex;justify-content:space-between;align-items:center;gap:16px}
.marq{display:flex;width:max-content;gap:70px;will-change:transform}
.marq span{font-size:clamp(26px,3vw,40px);font-weight:800;letter-spacing:-.03em;color:#3A3A40;white-space:nowrap;transition:color .3s}
.marq span:hover{color:var(--fg)}
.marq em{font-style:normal;color:var(--blue);font-size:22px;align-self:center}

/* media dummies */
.media{position:relative;overflow:hidden;border-radius:22px;background:#0B0B0D}
.media .fill{position:absolute;inset:-6%;transition:transform 1.2s var(--ease)}
.media .lbl{position:absolute;left:16px;top:14px;font-size:11px;letter-spacing:.14em;color:rgba(255,255,255,.7);background:rgba(0,0,0,.4);padding:5px 9px;border-radius:999px;backdrop-filter:blur(6px)}
.g1{background:radial-gradient(60% 80% at 20% 30%,#2997FF 0%,transparent 60%),radial-gradient(50% 70% at 85% 70%,#7B3FE4 0%,transparent 60%),#05070D}
.g2{background:radial-gradient(70% 70% at 70% 30%,#FF7A45 0%,transparent 60%),radial-gradient(60% 70% at 15% 80%,#2A1B5E 0%,transparent 70%),#0B0705}
.g3{background:conic-gradient(from 200deg at 60% 50%,#0A5BD6,#00C2FF,#0A0A0B 40%,#0A5BD6),#000}
.g4{background:radial-gradient(60% 70% at 30% 60%,#F5C451 0%,transparent 55%),radial-gradient(60% 70% at 80% 20%,#E4405F 0%,transparent 60%),#0A0605}
.g5{background:radial-gradient(70% 70% at 50% 50%,#5BD884 0%,transparent 55%),radial-gradient(50% 50% at 90% 90%,#0A5BD6 0%,transparent 70%),#030806}
.g6{background:linear-gradient(135deg,#1A1A1F,#000 60%),repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 2px,transparent 2px 40px)}
.anim .fill{animation:drift 14s ease-in-out infinite alternate}
@keyframes drift{from{transform:scale(1) translate(0,0)}to{transform:scale(1.12) translate(-3%,2%)}}
.grain::after{content:"";position:absolute;inset:0;opacity:.16;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E")}

/* work */
.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:64px 32px;margin-top:var(--gap);align-items:start}
@media (max-width:820px){.work-grid{grid-template-columns:1fr}}
.wcard{display:flex;flex-direction:column;gap:18px}
.wcard .media{aspect-ratio:16/11}
.wcard:hover .fill{transform:scale(1.08)}
.wcard .row{display:flex;flex-direction:column;gap:6px}
.wcard h3{font-size:clamp(22px,2.2vw,30px);font-weight:700;letter-spacing:-.025em}
.wcard .cat{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--blue2);order:-1}
.view{position:fixed;left:0;top:0;z-index:44;pointer-events:none;padding:10px 16px;border-radius:999px;background:var(--fg);color:#000;font-size:13px;font-weight:700;opacity:0;transform:translate(-50%,-50%) scale(.6);transition:opacity .25s,transform .35s var(--ease)}
.view.on{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* numbers */
.nums{background:radial-gradient(1000px 460px at 50% 0%,rgba(41,151,255,.18),transparent 70%)}
.ngrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:var(--gap);border:1px solid #1E3A5C;border-radius:30px;overflow:hidden;background:rgba(8,16,28,.55)}
@media (max-width:900px){.ngrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ncell{padding:clamp(28px,3vw,44px);border-right:1px solid #1E3A5C;border-bottom:1px solid #1E3A5C;display:flex;flex-direction:column;gap:14px}
.ncell .v{font-size:clamp(50px,5.4vw,84px);font-weight:900;letter-spacing:-.05em;line-height:1.05;padding-bottom:.06em;background:linear-gradient(180deg,#B5DBFF 0%,#2997FF 55%,#0A5BD6 100%);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.ncell .dash{width:40px;height:2px;background:var(--blue);margin:6px 0 2px}
.ncell .t{font-size:18px;font-weight:700}
.ncell .d{font-size:15px;color:#9FB6CF;line-height:1.5}

/* capabilities */
.caps{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(40px,4vw,72px);margin-top:var(--gap);align-items:start}
@media (max-width:900px){.caps{grid-template-columns:1fr}.caps .stage{display:none}}
.crow{display:flex;align-items:baseline;gap:24px;width:100%;padding:24px 0;border:0;border-bottom:1px solid var(--line);background:none;cursor:default;text-align:left}
.crow:first-child{border-top:1px solid var(--line)}
.crow .n{font-size:13px;font-weight:700;color:#55555B;width:30px;flex:none;transition:color .3s}
.crow .nm{display:block;font-size:clamp(28px,3.6vw,54px);font-weight:800;letter-spacing:-.045em;line-height:1;color:#2A2A2E;transition:color .45s var(--ease)}
.crow .sk{display:block;font-size:16px;color:var(--mute);line-height:1.5;max-height:0;overflow:hidden;opacity:0;transition:max-height .5s var(--ease),opacity .4s,margin .4s}
.crow.on .nm{color:var(--fg)}.crow.on .n{color:var(--blue)}
.crow.on .sk{max-height:60px;opacity:1;margin-top:12px}
.stage{display:flex;flex-direction:column;gap:16px}
.capsec{position:relative;border-top:1px solid var(--line);background:#000}
.capstick{padding:clamp(72px,9vh,120px) 0;will-change:transform}
@media (min-width:901px){.capstick{position:sticky;top:0}.capsec .caps{margin-top:clamp(32px,4.5vh,56px)}.capsec .crow{padding:clamp(14px,2.2vh,24px) 0}}
.stage .media{width:100%;aspect-ratio:auto;height:min(52vh,480px)}   /* fills its column, height capped so the list stays the hero */
.stage .fill{opacity:0;transition:opacity .6s var(--ease),transform 1.2s var(--ease)}
.stage .fill.on{opacity:1}

/* tools bento */
.bento{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:var(--gap)}
@media (max-width:900px){.bento{grid-template-columns:1fr}}
.tcard{display:flex;flex-direction:column;border-radius:26px;overflow:hidden;border:1px solid var(--line);background:#0B0B0D;transition:transform .5s var(--ease),border-color .3s}
.tcard:hover{transform:translateY(-4px);border-color:#2A2A2E}
.tcard.feat{grid-column:1/-1;flex-direction:row;border-color:#1E3A5C;background:linear-gradient(135deg,#07111C,#000 70%)}
@media (max-width:900px){.tcard.feat{flex-direction:column}}
.tcard .media{border-radius:0;aspect-ratio:16/10}
.tcard.feat .media{flex:1.6;aspect-ratio:auto;min-height:360px}
.tcard .body{padding:26px;display:flex;flex-direction:column;gap:12px}
.tcard.feat .body{flex:1;padding:44px;justify-content:center;gap:16px}
.tcard h3{font-size:24px;font-weight:700;letter-spacing:-.02em}
.tcard.feat h3{font-size:34px;font-weight:800;letter-spacing:-.04em}
.chip{display:inline-flex;align-items:center;font-size:12px;color:#C7C7CC;border:1px solid #2A2A2E;border-radius:999px;padding:5px 11px}
.st{font-size:11px;font-weight:700;letter-spacing:.1em;padding:5px 10px;border-radius:999px}
.st.live{background:#0E2A17;color:#5BD884}.st.wip{color:#F5C451}
.gif .fill{filter:saturate(.25) brightness(.7);transition:filter .5s,transform 1.2s var(--ease)}
.gif .anim2{position:absolute;inset:0;opacity:0;transition:opacity .4s}
.tcard:hover .gif .fill{filter:none;transform:scale(1.05)}
.tcard:hover .gif .anim2{opacity:1}
.ui-mock{position:absolute;inset:14% 12%;border-radius:14px;background:rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.12);backdrop-filter:blur(8px);display:flex;flex-direction:column;gap:10px;padding:16px}
.ui-mock i{display:block;height:8px;border-radius:4px;background:rgba(255,255,255,.18)}
.ui-mock .wave{flex:1;display:flex;align-items:center;gap:3px}
.ui-mock .wave b{flex:1;background:var(--blue);border-radius:2px;height:30%}
.tcard:hover .ui-mock .wave b{animation:wv 1s ease-in-out infinite alternate}
@keyframes wv{from{height:15%}to{height:90%}}

/* testimonials */
.tst{overflow:hidden;margin-top:var(--gap)}
.tst .track{display:flex;transition:transform .9s var(--ease)}
.tst .q{flex:0 0 100%;display:flex;flex-direction:column;align-items:center;text-align:center;gap:30px;padding:0 4vw}
.tst .q>p{font-size:clamp(22px,2.5vw,36px);font-weight:600;letter-spacing:-.025em;line-height:1.25;max-width:980px}
.tst .who p{font-size:16px}
#tstSec{cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none}
#tstSec.drag{cursor:grabbing}
#tstSec .dots button{cursor:pointer}
.drag-hint{font-size:12px;letter-spacing:.14em;color:var(--dim);text-align:center;margin-top:32px}
.tst .who{display:flex;align-items:center;gap:14px}
.tst .av{width:52px;height:52px;border-radius:999px}
.dots{display:flex;justify-content:center;gap:4px;margin-top:20px}
.dots button{width:30px;height:44px;border:0;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center}
.dots i{display:block;height:6px;width:8px;border-radius:999px;background:#3A3A40;transition:all .4s var(--ease)}
.dots button.on i{width:30px;background:var(--blue)}

/* footer */
.foot{padding:var(--sec) 0 40px;border-top:1px solid var(--line)}
.foot h2 .wd{display:inline-block;white-space:nowrap}.foot h2 .ch{display:inline-block;overflow:hidden;vertical-align:top;padding:.04em .02em .2em;margin:-.04em -.02em -.2em}.foot h2 .ch>span{display:inline-block;will-change:transform}
.foot h2{font-size:clamp(36px,5.2vw,80px);font-weight:900;letter-spacing:-.045em;line-height:1.02;max-width:1150px;padding-left:.03em}
.foot .ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:40px}
.fcols{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:40px;padding-top:40px}
@media (max-width:820px){.fcols{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fcols h4{margin:0 0 16px;font-size:11px;font-weight:600;letter-spacing:.16em;color:var(--dim)}
.fcols a,.fcols button{display:flex;align-items:center;gap:10px;color:var(--mute);font-size:15px;padding:6px 0;background:none;border:0;cursor:pointer;transition:color .25s}
.fcols a:hover,.fcols button:hover{color:var(--blue)}
.fcols a svg,.fcols button svg{transition:transform .3s var(--ease)}.fcols a:hover svg,.fcols button:hover svg{transform:translateX(2px)}
.fcols svg{flex:none}
.legal{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:var(--gap);font-size:13px;color:var(--dim)}

/* transition + toast */
/* page transition: letterbox bars + slate ("CUT TO:", scene, timecode) + edit timeline with a playhead */
.wipe{position:fixed;inset:0;z-index:90;visibility:hidden;pointer-events:none}
.wipe.on{visibility:visible;pointer-events:auto}
.wp-top,.wp-bot{position:absolute;left:0;right:0;height:50.5%;background:#050506;will-change:transform}
.wp-top{top:0}.wp-bot{bottom:0}
.wp-top::after,.wp-bot::before{content:"";position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(41,151,255,.9),transparent);box-shadow:0 0 16px 1px rgba(41,151,255,.5);transition:opacity .35s}
.wipe.shut .wp-top::after,.wipe.shut .wp-bot::before{opacity:0}   /* the seam fades once the bars meet, so it never runs through the name */
.wp-top::after{bottom:0}.wp-bot::before{top:0}
.wp-slate{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:0 24px;text-align:center}
.wp-meta{display:flex;align-items:center;gap:14px;font:600 12px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.16em;color:var(--mute)}
.wp-meta .cut{color:var(--blue2)}
.wp-meta .rec{display:inline-flex;align-items:center;gap:7px;color:#FF6B6B}
.wp-meta .rec::before{content:"";width:7px;height:7px;border-radius:9px;background:#FF453A;box-shadow:0 0 10px #FF453A;animation:wpRec 1s steps(1) infinite}
@keyframes wpRec{50%{opacity:.25}}
.wp-name{display:block;overflow:hidden;font-size:clamp(44px,7.6vw,120px);padding:.34em .12em .56em;margin:.06em -.12em -.12em;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 .3em,#000 calc(100% - .3em),transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 .3em,#000 calc(100% - .3em),transparent 100%)}   /* feathered mask: the name fades in and out instead of being cut by a hard edge; at rest it sits fully clear, letter tails included */
.wp-name span{display:block;font-size:1em;font-weight:900;letter-spacing:-.055em;line-height:1;color:var(--fg)}
.wp-tl{position:relative;width:min(520px,80vw);height:30px;margin-top:4px}
.wp-rule{position:absolute;left:0;right:0;bottom:6px;height:14px;transform-origin:0 50%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.28) 0 1px,transparent 1px 10px) bottom/100% 6px no-repeat,repeating-linear-gradient(90deg,rgba(255,255,255,.5) 0 1px,transparent 1px 50px) bottom/100% 14px no-repeat;border-bottom:1px solid #2A2A2E}
.wp-head{position:absolute;top:0;bottom:0;width:0}
.wp-head::before{content:"";position:absolute;left:-1px;top:6px;bottom:0;width:2px;background:var(--blue);box-shadow:0 0 10px rgba(41,151,255,.8)}
.wp-head::after{content:"";position:absolute;left:-6px;top:0;border:6px solid transparent;border-top:7px solid var(--blue);border-bottom:0}
.wp-tc{font:600 13px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em;color:var(--fg);font-variant-numeric:tabular-nums}
.toast{position:fixed;left:50%;bottom:28px;z-index:95;transform:translate(-50%,calc(100% + 60px));opacity:0;visibility:hidden;background:#F5F5F7;color:#000;padding:14px 20px;border-radius:999px;font-size:14px;font-weight:600;transition:transform .5s var(--ease)}
.toast{transition:transform .5s var(--ease),opacity .3s,visibility 0s linear .5s}
.toast.on{transform:translate(-50%,0);opacity:1;visibility:visible;transition:transform .5s var(--ease),opacity .3s,visibility 0s}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* arriving through the "CUT TO:" transition: the next page starts behind closed bars, then they open */
.cut-in .loader{display:none}
.cut-in .wipe{visibility:visible}
.cut-in .wp-top,.cut-in .wp-bot{transform:none!important}
.cut-in .wp-head{left:100%}
/* the slate's name and scene come from the top of the page, so they're drawn from the very first frame */
.cut-in #wipeTxt:empty::before{content:var(--cut-l,'')}
.cut-in #wipeSc:empty::before{content:var(--cut-s,'')}
.cut-in .wp-top::after,.cut-in .wp-bot::before{opacity:0}

/* ---------- Home: the "see all" button under the work wheel ---------- */
.wmore{display:flex;justify-content:center;margin-top:clamp(20px,3vh,36px)}
.wmore .btn{box-shadow:0 0 0 1px rgba(41,151,255,.0),0 14px 40px -12px rgba(41,151,255,.55)}

/* ---------- footer: links sit in a glass panel with the name, local time and a way back up; a huge wordmark closes the page ---------- */
.fpanel{position:relative;overflow:hidden;margin-top:var(--sec);border-radius:32px;border:1px solid #1E1E22;background:linear-gradient(180deg,#0C0C0F,#08080A);padding:clamp(24px,3.2vw,44px)}
.fp-glow{position:absolute;left:-10%;right:-10%;top:-60%;height:120%;background:radial-gradient(50% 50% at 30% 50%,rgba(41,151,255,.16),transparent 70%),radial-gradient(40% 45% at 85% 40%,rgba(91,80,255,.10),transparent 70%);pointer-events:none}
.fbrand{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;padding-bottom:32px;border-bottom:1px solid #1E1E22}
.fb-mark{font-size:clamp(28px,3vw,40px);font-weight:900;letter-spacing:-.045em;color:var(--fg)}
.fb-mark span{color:var(--blue)}
.fb-line{margin-top:8px;font-size:15px;color:var(--mute)}
.fb-right{display:flex;align-items:center;gap:12px}
.fb-time{display:inline-flex;align-items:center;gap:10px;height:48px;padding:0 18px;border-radius:999px;border:1px solid #2A2A2E;background:rgba(255,255,255,.03);font-size:13px;color:var(--mute)}
.fb-time i{width:7px;height:7px;border-radius:9px;background:#5BD884;box-shadow:0 0 10px rgba(91,216,132,.8)}
.fb-time b{font:600 13px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--fg);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.fb-top{all:unset;box-sizing:border-box;cursor:pointer;width:48px;height:48px;border-radius:999px;background:var(--fg);color:#000;display:inline-flex;align-items:center;justify-content:center;transition:background .3s var(--ease),transform .45s var(--ease)}
.fb-top:hover{background:var(--blue);transform:translateY(-3px)}
.fb-top:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.fpanel .legal{position:relative;border-top:1px solid #1E1E22;margin-top:36px;padding-top:24px}
@media (max-width:820px){.fbrand{align-items:flex-start}.fb-right{width:100%;justify-content:space-between}}

/* ---------- card wheel: cards on a big wheel below the screen ---------- */
.cw{position:relative;margin-top:clamp(28px,4vh,52px);perspective:1800px;perspective-origin:50% 0;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab}
.cw.drag{cursor:grabbing}
.cw-stage{position:absolute;left:50%;top:0;width:0;height:0;transform-style:preserve-3d}
.wc{position:absolute;left:calc(var(--cw) / -2);top:0;width:var(--cw);height:var(--ch);transform-origin:50% 50%;will-change:transform;-webkit-user-drag:none;backface-visibility:hidden}
.wc-in{position:absolute;inset:0;display:flex;flex-direction:column;border-radius:24px;background:linear-gradient(180deg,#141418,#0B0B0D);border:1px solid #232328;box-shadow:0 40px 80px -30px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.06);padding:10px;overflow:hidden;transition:transform .5s var(--ease),border-color .4s,box-shadow .5s var(--ease)}
.wc:hover .wc-in{transform:translateY(-10px);border-color:#2A3B52;box-shadow:0 50px 90px -30px rgba(41,151,255,.35),inset 0 1px 0 rgba(255,255,255,.08)}
.wc-media{position:relative;display:block;flex:none;height:48%;border-radius:16px;overflow:hidden;background:#0B0B0D}
.wc-media .fill{position:absolute;inset:-6%;transition:transform 1.2s var(--ease)}
.wc:hover .wc-media .fill{transform:scale(1.07)}
.wc-lbl{position:absolute;left:10px;top:10px;font-size:10px;letter-spacing:.14em;color:rgba(255,255,255,.75);background:rgba(0,0,0,.45);padding:5px 8px;border-radius:999px;backdrop-filter:blur(6px)}
.wc-body{display:flex;flex-direction:column;gap:6px;padding:14px 8px 0;flex:1;min-height:0}
.wc-cat{font-size:10.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--blue2)}
.wc-t{font-size:clamp(17px,1.35vw,21px);font-weight:700;letter-spacing:-.02em;line-height:1.2;color:var(--fg)}
.wc-p{font-size:13.5px;line-height:1.5;color:var(--mute);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.wc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 8px 6px;padding-top:12px;border-top:1px solid #1E1E22;font-size:13px;font-weight:600;color:var(--fg)}
.wc-foot i{width:32px;height:32px;border-radius:999px;background:#1C1C21;display:inline-flex;align-items:center;justify-content:center;transition:background .35s var(--ease),color .35s,transform .45s var(--ease)}
.wc:hover .wc-foot i{background:var(--blue);color:#000;transform:rotate(-45deg)}
.wc-st{position:absolute;left:10px;top:10px}
.wc-chips{display:flex;flex-wrap:wrap;gap:6px}
.wc-chips .chip{font-size:11px;padding:3px 8px}
.wc-tool .anim2{position:absolute;inset:0;opacity:0;transition:opacity .4s}
.wc-tool:hover .anim2{opacity:1}
.wc-tool .wc-media .fill{filter:saturate(.35) brightness(.75);transition:filter .5s,transform 1.2s var(--ease)}
.wc-tool:hover .wc-media .fill{filter:none}
.cw-work .wc-media{height:46%}
#hwork,#htools{overflow:hidden}

/* ---------- page scrollbar ---------- */
html.jp-sb{scrollbar-width:none}
html.jp-sb::-webkit-scrollbar{display:none}
.sb{position:fixed;right:6px;top:10px;bottom:10px;width:14px;z-index:85;cursor:pointer}
.sb::before{content:"";position:absolute;right:5px;top:0;bottom:0;width:2px;border-radius:2px;background:rgba(255,255,255,.07);transition:background .3s,width .3s,right .3s}
.sb-thumb{font-style:normal;position:absolute;right:4px;top:0;width:4px;border-radius:4px;background:rgba(255,255,255,.32);cursor:grab;transition:width .3s var(--ease),right .3s var(--ease),background .3s,box-shadow .3s}
.sb.on .sb-thumb{background:linear-gradient(180deg,#5AB0FF,var(--blue));box-shadow:0 0 12px rgba(41,151,255,.65)}
.sb:hover::before{background:rgba(255,255,255,.12)}
.sb:hover .sb-thumb,.sb.drag .sb-thumb{width:8px;right:2px;background:linear-gradient(180deg,#5AB0FF,var(--blue));box-shadow:0 0 14px rgba(41,151,255,.75)}
.sb.drag .sb-thumb{cursor:grabbing}
.sb.none{display:none}
.modal.open ~ .sb,.lb.open ~ .sb{opacity:0}

/* ---------- Capabilities (computer): the current one large on the left, a deck of clips on the right,
   a five-step strip along the bottom. Phones keep the plain list. ---------- */
.cap-hero{display:none}
@media (min-width:901px){
  .capsec .caps{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-template-areas:"hero deck" "rows rows";gap:clamp(28px,3.5vh,44px) clamp(40px,5vw,96px);align-items:center}
  .cap-hero{grid-area:hero;display:flex;flex-direction:column;gap:22px}
  .ch-n{display:flex;align-items:baseline;gap:10px;font-variant-numeric:tabular-nums}
  .ch-n b{font-size:15px;font-weight:700;color:var(--blue2);letter-spacing:.06em}
  .ch-n i{font-style:normal;font-size:13px;color:var(--dim);letter-spacing:.06em}
  .ch-t-wrap{display:block;overflow:hidden;padding-bottom:.08em}
  .ch-t{display:block;font-size:clamp(46px,5.4vw,92px);font-weight:900;letter-spacing:-.055em;line-height:.98;color:var(--fg)}
  .ch-sk{display:flex;flex-wrap:wrap;gap:8px;max-width:560px}
  .ch-sk span{font-size:14px;color:#D1D1D6;padding:8px 14px;border-radius:999px;border:1px solid #2A2A2E;background:rgba(255,255,255,.03)}
  /* the five-step strip */
  #caprows{grid-area:rows;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
  .capsec .crow,.capsec .crow:first-child{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:16px 0 0;border:0;border-top:2px solid #1E1E22}
  .capsec .crow::before{content:"";position:absolute;left:0;top:-2px;height:2px;width:calc(var(--p,0) * 100%);background:var(--blue);box-shadow:0 0 10px rgba(41,151,255,.6)}
  .capsec .crow .n{width:auto;font-size:11px}
  .capsec .crow .nm{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#6E6E73}
  .capsec .crow.on .nm{color:var(--fg)}
  .capsec .crow .sk{display:none}
  /* the deck */
  .caps .stage{grid-area:deck;gap:18px;padding-top:40px}
  .caps .stage .media{background:none;overflow:visible;height:min(46vh,430px);border-radius:0}
  .cap-card{position:absolute;inset:0;border-radius:24px;overflow:hidden;background:#0B0B0D;border:1px solid #232328;box-shadow:0 30px 60px -24px rgba(0,0,0,.95);transform-origin:50% 100%;will-change:transform,opacity}
  .cap-card .fill{position:absolute;inset:-6%;opacity:1!important}
  .cap-card .cl{position:absolute;left:14px;top:14px;font-size:11px;letter-spacing:.14em;color:rgba(255,255,255,.8);background:rgba(0,0,0,.45);padding:5px 9px;border-radius:999px;backdrop-filter:blur(6px);opacity:var(--lo,1)}
  #capLbl{display:none}
}
/* light / dark switch */
.thm{all:unset;box-sizing:border-box;cursor:pointer;position:relative;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);color:var(--fg);transition:background .3s,border-color .3s,transform .4s var(--ease)}
.thm:hover{background:rgba(255,255,255,.12)}
.thm:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.thm svg{position:absolute;transition:transform .6s var(--ease),opacity .35s}
.thm .thm-moon{opacity:0;transform:rotate(-90deg) scale(.5)}
html[data-theme="light"] .thm .thm-sun{opacity:0;transform:rotate(90deg) scale(.5)}
html[data-theme="light"] .thm .thm-moon{opacity:1;transform:none}
.thm-m{position:relative;width:auto;height:auto;gap:12px;padding:12px 18px 12px 48px;margin-top:18px;font-size:16px;font-weight:600;align-self:flex-start}
.thm-m svg{left:16px}
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
@media (max-width:900px){.hdr .thm{display:none}}
html.no-thm .thm{display:none!important}
