:root{--void:#080a12;--pitch:#05060c;--coal:#0b0d16;--inkblue:#0b1020;--bone:#ecebe4;--paper:#e6e5dd;--graphite:#10131b;--linen:#eef1f8;--accent:#274bff;--accent-lo:#6d84ff;--accent-hi:#143cff;--accent-deep:#1f3ce0;--grid:#141e460e;--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"Inter", system-ui, -apple-system, sans-serif;--fs-kicker:clamp(.66rem, .6rem + .18vw, .78rem);--fs-body:clamp(.95rem, .9rem + .3vw, 1.1rem);--fs-lead:clamp(1.05rem, .95rem + .55vw, 1.42rem);--fs-h2:clamp(2.1rem, 1.2rem + 3.6vw, 4.4rem);--fs-h1:clamp(2.3rem, 1rem + 5.2vw, 6.2rem);--fs-huge:clamp(2.8rem, 1.2rem + 6.4vw, 7.4rem);--ease-out:cubic-bezier(.22,1,.36,1);--ui:#f4efe6;--ui-line:#f4efe629}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--void);-webkit-text-size-adjust:100%}body{font-family:var(--font-body);font-size:var(--fs-body);color:var(--linen);background:var(--void);-webkit-font-smoothing:antialiased;line-height:1.6;overflow-x:hidden}img{max-width:100%;display:block}a{color:inherit}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.024em;margin:0;font-weight:700;line-height:1.02}p{margin:0}ul,ol,dl,dd,dt{margin:0;padding:0;list-style:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.skip{z-index:99;background:var(--accent);color:#fff;border-radius:999px;padding:10px 16px;font-weight:600;text-decoration:none;position:fixed;top:10px;left:10px;transform:translateY(-160%)}.skip:focus{transform:none}.boot{z-index:90;background:var(--void);flex-direction:column;justify-content:flex-end;gap:clamp(16px,2.4vh,26px);padding:clamp(24px,5vh,60px) clamp(20px,5vw,64px);display:none;position:fixed;inset:0}html.booting .boot{display:flex}.boot__row{font-family:var(--font-display);color:var(--linen);justify-content:space-between;align-items:baseline;gap:20px;font-weight:700;display:flex}.boot__name{font-size:clamp(2.4rem,1rem7vw,7rem);letter-spacing:-.03em;line-height:1}.boot__pct{font-size:clamp(1rem,.8rem1vw,1.5rem);font-variant-numeric:tabular-nums;color:var(--accent);font-style:normal}.boot__pct:after{content:"%";opacity:.4;margin-left:.15em}.boot__bar{background:var(--ui-line);height:2px;display:block;overflow:hidden}.boot__fill{transform-origin:0;background:linear-gradient(90deg,var(--accent-hi),var(--accent-lo));height:100%;display:block;transform:scaleX(0)}.glow{z-index:1;pointer-events:none;opacity:0;background:radial-gradient(closest-side,#5a78ff1c,#274bff0a 42%,#0000 72%);width:74vmax;height:74vmax;margin:-37vmax 0 0 -37vmax;position:fixed;top:0;left:0}.grain{z-index:8;pointer-events:none;position:fixed;inset:0}.grain:before{content:"";opacity:.05;mix-blend-mode:overlay;will-change:transform;background:url(/textures/grain.png) 0 0/280px;animation:1.2s steps(5,end) infinite grain;position:absolute;inset:-150%}.grain:after{content:"";mix-blend-mode:soft-light;background:radial-gradient(120% 100% at 50% 46%,#0000 56%,#00000047);position:absolute;inset:0}@keyframes grain{0%{transform:translate(0)}20%{transform:translate(-4%,3%)}40%{transform:translate(3%,-5%)}60%{transform:translate(-3%,4%)}80%{transform:translate(5%,2%)}to{transform:translate(0)}}.cursor{display:none}html.cursor-on .cursor{z-index:80;pointer-events:none;mix-blend-mode:difference;display:block;position:fixed;top:0;left:0}html.cursor-on,html.cursor-on a,html.cursor-on [data-magnetic]{cursor:none}.cursor__ring,.cursor__dot{border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.cursor__ring{width:38px;height:38px;transition:width .3s var(--ease-out), height .3s var(--ease-out), opacity .3s;border:1.5px solid #fff}.cursor__dot{background:#fff;width:5px;height:5px}html.cursor-hot .cursor__ring{width:64px;height:64px}html.cursor-hot .cursor__dot{opacity:0}.hud{z-index:40;color:var(--ui);pointer-events:none;justify-content:space-between;align-items:center;gap:20px;padding:clamp(14px,2.4vh,26px) clamp(16px,4vw,54px);display:flex;position:fixed;top:0;left:0;right:0}.hud a{pointer-events:auto}.hud__mark{font-family:var(--font-display);letter-spacing:.16em;font-weight:700;font-size:var(--fs-kicker);align-items:center;gap:.55em;text-decoration:none;display:inline-flex}.hud__dot{background:var(--accent);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #274bff38}.hud__nav{gap:clamp(12px,2vw,30px);display:flex}.hud__nav a{font-size:var(--fs-kicker);letter-spacing:.12em;text-transform:uppercase;color:var(--ui);opacity:.45;transition:opacity .35s var(--ease-out);text-decoration:none;position:relative}.hud__nav a:after{content:"";background:var(--accent);transform-origin:0;height:1px;transition:transform .45s var(--ease-out);position:absolute;bottom:-6px;left:0;right:0;transform:scaleX(0)}.hud__nav a:hover,.hud__nav a[aria-current=true]{opacity:1}.hud__nav a[aria-current=true]:after{transform:scaleX(1)}.handle{z-index:40;font-family:var(--font-display);font-size:var(--fs-kicker);letter-spacing:.2em;color:var(--ui);opacity:.3;pointer-events:none;position:fixed;bottom:clamp(14px,2.4vh,26px);left:clamp(16px,4vw,54px)}.meter{z-index:40;font-family:var(--font-display);font-size:var(--fs-kicker);letter-spacing:.2em;color:var(--ui);opacity:.42;pointer-events:none;font-variant-numeric:tabular-nums;align-items:baseline;gap:.5em;display:flex;position:fixed;bottom:clamp(14px,2.4vh,26px);right:clamp(16px,4vw,54px)}.meter__n{color:var(--accent);opacity:.95;font-style:normal}.rail{z-index:40;background:#8c827829;height:2px;position:fixed;bottom:0;left:0;right:0}.rail__fill{transform-origin:0;background:linear-gradient(90deg,var(--accent-hi),var(--accent-lo));height:100%;display:block;transform:scaleX(0)}.stage{position:relative}.scene{min-height:100vh;color:var(--fg);isolation:isolate;place-items:center;display:grid;position:relative;overflow:hidden}.scene__cover{z-index:0;background:var(--bg);position:absolute;inset:0}.scene--about .scene__cover{background:radial-gradient(115% 92% at 50% 122%, #16266e 0%, transparent 60%), radial-gradient(80% 62% at 12% 2%, #0e1636 0%, transparent 64%), var(--bg)}.scene--contact .scene__cover{background:radial-gradient(100% 74% at 50% 112%, #274bff42 0%, transparent 64%), var(--bg)}.scene--skills .scene__cover{background:radial-gradient(94% 74% at 80% 2%, #12172c 0%, transparent 64%), var(--bg)}.scene--journey .scene__cover{background:radial-gradient(80% 60% at 50% 42%, #0c0a09 0%, transparent 70%), var(--bg)}.scene__in{z-index:1;width:min(1180px,92vw);padding:clamp(84px,12vh,120px) 0 clamp(60px,9vh,96px);position:relative}.kicker{font-family:var(--font-display);font-size:var(--fs-kicker);letter-spacing:.28em;text-transform:uppercase;opacity:.45;margin-bottom:clamp(14px,2vh,22px)}.sec__h{font-size:var(--fs-h2);margin-bottom:clamp(24px,4vh,48px)}.wd{white-space:nowrap;display:inline-block}.w{vertical-align:top;margin:-.2em -.06em -.26em;padding:.2em .06em .26em;display:inline-block;overflow:hidden}.w>*{font-style:inherit;display:inline-block}.streak{pointer-events:none;z-index:0;opacity:.9;width:100%;height:100%;position:absolute;inset:0}.streak__head{opacity:0}.scene--grid .scene__cover{background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:46px 46px}.scene--hero .scene__in{text-align:center}.hero__block,.hero__text{flex-direction:column;align-items:center;display:flex}.hero__dot{z-index:2;background:radial-gradient(120% 120% at 34% 28%, var(--accent-lo), var(--accent) 48%, var(--accent-hi));will-change:transform;border-radius:50%;width:clamp(56px,6.5vw,88px);height:clamp(56px,6.5vw,88px);margin-bottom:clamp(20px,3.4vh,38px);position:relative;box-shadow:0 22px 46px -16px #274bff80}.hero__namestack{place-items:center;display:grid}.hero__namestack>*{grid-area:1/1}.hero__hi{font-family:var(--font-display);font-weight:700;font-size:var(--fs-huge);letter-spacing:-.02em;color:var(--fg);line-height:.98}.hero__name{font-size:var(--fs-huge);white-space:nowrap;line-height:.98}.hero__name em{color:var(--accent);font-style:normal}.hero__name .w>*{transform-origin:50% 100%}.hero__uline{width:clamp(150px,21vw,266px);height:auto;color:var(--accent);margin:.16em auto 0;display:block;overflow:visible}.hero__role{max-width:42ch;font-size:var(--fs-lead);color:color-mix(in srgb, var(--fg) 60%, transparent);margin-top:clamp(20px,3.4vh,34px)}.hl{display:inline-block;position:relative}.hl__mark{z-index:0;background:var(--accent);opacity:.24;transform-origin:0;will-change:transform;border-radius:4px;position:absolute;inset:-.04em -.18em;transform:scaleX(0)}.hero__role .hl b{z-index:1;color:var(--fg);font-weight:700;position:relative}.contact__h em{background:linear-gradient(100deg, var(--accent-hi) 0%, var(--accent) 30%, #dbe6ff 46%, var(--accent) 62%, var(--accent-lo) 100%);color:#0000;animation:sheen 6s var(--ease-out) infinite;background-size:220% 100%;-webkit-background-clip:text;background-clip:text;font-style:normal}@keyframes sheen{0%,to{background-position:120% 0}50%{background-position:-20% 0}}.cue{font-size:var(--fs-kicker);letter-spacing:.3em;text-transform:uppercase;color:color-mix(in srgb, var(--fg) 46%, transparent);align-items:center;gap:14px;margin-top:clamp(30px,5vh,58px);display:inline-flex}.cue__line{background:var(--accent);transform-origin:0;width:54px;height:1px}.hello{grid-template-columns:minmax(300px,1.05fr) 1.1fr;align-items:center;gap:clamp(30px,4vw,64px);display:grid}.portrait{place-self:end center;width:100%;max-width:clamp(340px,42vw,560px);position:relative}.portrait img{filter:drop-shadow(0 28px 38px #10131b47)drop-shadow(0 5px 12px #10131b1f);will-change:transform;width:100%;height:auto;max-height:82vh;margin-inline:auto;display:block}.hello__hi{font-size:clamp(1.4rem,.9rem1.6vw,2.2rem);opacity:.5;font-weight:500}.hello__name{font-size:var(--fs-huge);margin:.06em 0 .18em}.hello__role{font-family:var(--font-display);font-weight:500;font-size:var(--fs-lead);color:#4a4038}.stats{border-top:1px solid #12101324;flex-wrap:wrap;gap:clamp(20px,3.4vw,56px);margin-top:clamp(26px,4.6vh,52px);padding-top:clamp(18px,3vh,30px);display:flex}.stat dt{font-size:var(--fs-kicker);letter-spacing:.16em;text-transform:uppercase;opacity:.44;margin-bottom:.35em}.stat dd{font-family:var(--font-display);font-weight:700;font-size:clamp(1.8rem,1.1rem2.2vw,3rem);font-variant-numeric:tabular-nums;line-height:1}.about{max-width:74ch}.about__h{font-size:var(--fs-h2);color:var(--accent-lo);margin-bottom:clamp(18px,3vh,32px)}.about__body{font-size:var(--fs-lead);color:#f6ecddcc}.creed{border-top:1px solid #f6ecdd26;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.4vw,36px);margin-top:clamp(30px,5vh,58px);padding-top:clamp(20px,3vh,32px);display:grid}.creed li b{font-family:var(--font-display);margin-bottom:.3em;font-size:1.02rem;display:block}.creed li span{color:#f6ecdd85;font-size:.92rem;line-height:1.5;display:block}.skills{grid-template-columns:repeat(4,1fr);gap:clamp(18px,2.6vw,42px);display:grid}.skillset h3{letter-spacing:.02em;border-bottom:1px solid #eee9e026;margin-bottom:1em;padding-bottom:.7em;font-size:.92rem}.skillset li{color:#eee9e08f;padding:.34em 0;font-size:.94rem}.skillset li:before{content:"—";color:var(--accent);opacity:.75;margin-right:.7em}.ticker{margin-top:clamp(34px,6vh,70px);overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.ticker__row{white-space:nowrap;width:max-content;font-family:var(--font-display);font-size:var(--fs-kicker);letter-spacing:.24em;text-transform:uppercase;color:#eee9e04d;gap:1.6em;display:flex}.ticker__row span:nth-child(2n){color:var(--accent);opacity:.55}.work__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.scene--work .sec__h{margin-bottom:clamp(20px,3vh,34px)}.grid{grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.8vw,26px);display:grid}.work a{text-decoration:none;display:block}.work__thumb{aspect-ratio:16/10;background:#d8d1c4;border-radius:12px;max-height:min(26vh,220px);display:block;position:relative;overflow:hidden}.work__thumb img{object-fit:cover;width:100%;height:112%;position:absolute;top:-6%;left:0}.work__no,.work__view{z-index:1;font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;font-size:.66rem;line-height:1;position:absolute}.work__no{color:#ffffffbf;text-shadow:0 1px 6px #0000008c;top:10px;left:11px}.work__view{background:var(--accent);color:#fff;opacity:0;transition:opacity .4s var(--ease-out), transform .4s var(--ease-out);border-radius:999px;padding:.5em .9em;bottom:11px;right:11px;transform:translateY(8px)}.work a:hover .work__view,.work a:focus-visible .work__view{opacity:1;transform:none}.work__meta{justify-content:space-between;align-items:baseline;gap:10px;margin-top:.85em;display:flex}.work__meta b{font-family:var(--font-display);letter-spacing:.01em;font-size:1.02rem}.work__meta i{letter-spacing:.1em;text-transform:uppercase;color:#1210136b;text-align:right;font-size:.7rem;font-style:normal}.work__note{color:#1210138c;margin-top:.3em;font-size:.88rem;line-height:1.45;display:block}.work__all{text-align:right;margin-top:clamp(22px,3.4vh,40px)}.work__all a{font-family:var(--font-display);font-size:var(--fs-kicker);letter-spacing:.2em;text-transform:uppercase;border-bottom:1px solid #1210134d;padding-bottom:.25em;text-decoration:none;display:inline-block}.trail{position:relative}.trail__svg{width:100%;height:100%;display:block}.trail__rail{display:none}.trail__nodes{gap:16px;margin-top:22px;display:grid}.node{padding-left:26px;position:relative}html.js .trail{aspect-ratio:1000/470;width:min(100%,112vh);margin-inline:auto}html.js .trail__nodes{margin:0;display:block;position:absolute;inset:0}html.js .node{text-align:center;width:min(20ch,16.5%);padding-left:0;position:absolute}.node__pin{left:var(--dot,50%);top:calc(-1 * var(--lead,26px));background:var(--linen);border-radius:50%;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;display:none;position:absolute}html.js .node__pin{display:block}.node__ring{border:1px solid var(--accent);opacity:0;border-radius:50%;position:absolute;inset:-9px}html.js .node:after{content:"";left:var(--dot,50%);top:calc(-1 * var(--lead,26px));height:var(--lead,26px);background:linear-gradient(#ffd7a880,#ffd7a800);width:1px;margin-left:-.5px;position:absolute}.node b{font-family:var(--font-display);margin-bottom:.3em;font-size:1rem;display:block}.node span{color:#f2efe87a;font-size:.84rem;line-height:1.5;display:block}html.js .trail.is-rail{aspect-ratio:auto;width:100%;padding-left:26px}.trail.is-rail .trail__svg{display:none}.trail.is-rail .trail__rail{background:linear-gradient(180deg, #6d84ff0f, var(--accent) 22%, var(--accent) 78%, #6d84ff0f);transform-origin:top;width:1px;display:block;position:absolute;top:6px;bottom:6px;left:3px;transform:scaleY(0)}.trail.is-rail .trail__nodes{gap:clamp(12px,2.2vh,22px);display:grid;position:static}.trail.is-rail .node{text-align:left;width:auto;position:static}.trail.is-rail .node:after{display:none}.trail.is-rail .node__pin{width:7px;height:7px;margin:0;top:.45em;left:-26px}.contact{text-align:center}.contact__h{max-width:19ch;margin-inline:auto;font-size:clamp(2rem,1rem + 4.1vw,4.8rem)}.contact__h em{background:linear-gradient(96deg,var(--accent-hi),var(--accent) 46%,var(--accent-lo));color:#0000;-webkit-background-clip:text;background-clip:text;font-style:normal}.contact__sub{width:min(46ch,86vw);font-size:var(--fs-lead);color:#f4efe68f;margin:clamp(18px,3vh,30px) auto 0}.cta{background:linear-gradient(100deg,var(--accent),var(--accent-deep));color:#fff;font-family:var(--font-display);white-space:nowrap;border-radius:999px;align-items:center;gap:.9em;margin-top:clamp(26px,4.4vh,46px);padding:.85em 1.5em;font-weight:600;text-decoration:none;display:inline-flex}.cta__i{transition:transform .45s var(--ease-out)}.cta:hover .cta__i{transform:translate(4px)}.contact__foot{font-size:var(--fs-kicker);letter-spacing:.16em;text-transform:uppercase;color:#f4efe666;justify-content:center;gap:.9em;margin-top:clamp(22px,3.6vh,38px);display:flex}.contact__foot a{text-decoration:none}.contact__foot a:hover{color:var(--accent)}.contact__foot span{color:var(--accent);opacity:.55}html.record .cursor,html.record .glow{display:none!important}html:not(.motion) .hud{position:absolute}html:not(.motion) .rail,html:not(.motion) .meter,html:not(.motion) .glow,html:not(.motion) .handle{display:none}html.motion body{overflow-x:clip}html.motion .stage{height:100svh;position:sticky;top:0;overflow:hidden}html.motion .scene{height:100%;min-height:0;position:absolute;inset:0}html.motion .scene__cover{inset:auto;left:var(--cx,50%);top:var(--cy,50%);will-change:transform;border-radius:50%;width:300vmax;height:300vmax;margin:-150vmax 0 0 -150vmax;transform:scale(0)}html.motion .scene__cover.is-shutter{background:0 0;border-radius:0;width:100%;height:100%;margin:0;inset:0;transform:none}html.motion .scene__cover .col{background:var(--bg);will-change:transform;position:absolute;top:-1px;bottom:-1px;transform:scaleY(0)}html.motion .scene--base .scene__cover{will-change:auto;border-radius:0;width:100%;height:100%;margin:0;inset:0;transform:none}html.motion .scene__in{max-height:100%}@media (width<=1080px){.skills{grid-template-columns:repeat(2,1fr);row-gap:clamp(22px,4vh,40px)}.grid{grid-template-columns:repeat(2,1fr)}}@media (width<=820px){.hud__nav{gap:12px}.hud__nav a{letter-spacing:.08em;font-size:.62rem}.handle,.meter{display:none}.hello{grid-template-columns:1fr;gap:clamp(20px,4vh,36px)}.portrait{max-width:min(230px,58vw);margin-inline:auto}.stats{gap:22px}.stat dd{font-size:1.7rem}.creed{grid-template-columns:1fr;gap:14px}.creed li span{font-size:.86rem}.grid{grid-template-columns:repeat(2,1fr);gap:12px}.work__thumb{border-radius:9px;max-height:14vh}.work__view{display:none}.work__meta{margin-top:.6em;display:block}.work__meta b{font-size:.86rem}.work__meta i{text-align:left;margin-top:.2em;font-size:.6rem;display:block}.work__note{display:none}.node b{font-size:.92rem}.node span{font-size:.78rem}.contact__h{max-width:14ch}}@media (width<=560px){.scene__in{padding-top:clamp(76px,13vh,110px)}.skills{grid-template-columns:1fr 1fr}.skillset li{padding:.24em 0;font-size:.82rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.work__view{display:none}.grain:before{opacity:.04;animation:none}.cursor{display:none!important}}
