:root{--bone:#ede9e1;--bone-2:#f5f2eb;--ink:#171410;--ink-2:#211d18;--ink-soft:#6b6459;--accent:#f0330f;--line:#d9d3c7;--display:"Space Grotesk", system-ui, sans-serif;--body:"Inter", system-ui, sans-serif;--mono:"Space Mono", ui-monospace, monospace;--gutter:32px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--body);background:var(--bone);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.5;overflow-x:hidden}body.has-cursor,body.has-cursor a,body.has-cursor button,body.has-cursor .idx-row{cursor:none}.grain{z-index:9999;pointer-events:none;opacity:.035;mix-blend-mode:multiply;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='0.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.wrap{max-width:1180px;padding-left:max(var(--gutter), env(safe-area-inset-left));padding-right:max(var(--gutter), env(safe-area-inset-right));margin:0 auto}a{color:inherit}img{max-width:100%;height:auto}.cursor-dot,.cursor-ring{z-index:10000;pointer-events:none;border-radius:50%;position:fixed;top:0;left:0}.cursor-dot{background:var(--accent);width:6px;height:6px;margin:-3px 0 0 -3px}.cursor-ring{border:1.5px solid var(--ink);width:34px;height:34px;margin:-17px 0 0 -17px;transition:width .22s,height .22s,margin .22s,background .22s,border-color .22s}.cursor-ring.is-active{border-color:var(--accent);background:#f0330f1a;width:56px;height:56px;margin:-28px 0 0 -28px}@media (pointer:coarse){.cursor-dot,.cursor-ring{display:none}}.nav{z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#ede9e1b8;position:sticky;top:0}.nav-inner{justify-content:space-between;align-items:center;height:68px;display:flex}.monogram{font-family:var(--display);letter-spacing:-.02em;font-size:19px;font-weight:700;text-decoration:none}.nav-right{align-items:center;gap:28px;display:flex}.nav-right a{font-family:var(--mono);letter-spacing:.02em;font-size:13px;text-decoration:none;position:relative}.nav-right a:after{content:"";background:var(--accent);width:0;height:1.5px;transition:width .25s;position:absolute;bottom:-4px;left:0}.nav-right a:hover:after{width:100%}.nav-status{font-family:var(--mono);color:var(--ink-soft);align-items:center;gap:8px;font-size:12px;display:inline-flex}.nav-status .live{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:2.4s infinite pulse;box-shadow:0 0 #f0330f80}@keyframes pulse{0%{box-shadow:0 0 #f0330f80}70%{box-shadow:0 0 0 7px #f0330f00}to{box-shadow:0 0 #f0330f00}}.hero{padding-top:118px;padding-bottom:88px;position:relative}.hero.has-bot{grid-template-columns:1fr 1fr;align-items:center;gap:32px;padding-top:96px;display:grid}.hero-copy{min-width:0}.hero.has-bot h1{font-size:clamp(44px,7vw,96px)}.hero-bot{align-self:stretch;min-width:0;min-height:500px;position:relative;overflow:visible}.hero-bot>*{transform-origin:55%;inset:0 -30% 0 -20%;transform:scale(1.08)translate(8%);width:auto!important;height:auto!important;position:absolute!important;overflow:visible!important}.hero-bot canvas{pointer-events:none;width:100%!important;height:100%!important;display:block!important}.hero h1{font-family:var(--display);letter-spacing:-.035em;font-size:clamp(52px,10.5vw,132px);font-weight:700;line-height:.9}.line-mask{margin-bottom:-.18em;padding-bottom:.18em;display:block;overflow:hidden}.hero h1 .accent{color:var(--accent);position:relative}.hero h1 .accent:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:.085em;position:absolute;bottom:-.06em;left:0;transform:scaleX(0)}.hero.loaded h1 .accent:after{animation:.7s cubic-bezier(.6,0,.2,1) .9s forwards swipe}@keyframes swipe{to{transform:scaleX(1)}}.hero-foot{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:32px;margin-top:52px;display:flex}.hero-intro{color:var(--ink-soft);max-width:46ch;font-size:clamp(16px,1.6vw,19px);line-height:1.6}.hero-intro b{color:var(--ink);font-weight:600}.hero-cta{gap:14px;display:flex}.btn{font-family:var(--mono);letter-spacing:.02em;will-change:transform;border-radius:2px;align-items:center;gap:8px;padding:15px 26px;font-size:13px;text-decoration:none;transition:background .2s,color .2s,transform .2s;display:inline-flex}.btn-solid{background:var(--ink);color:var(--bone)}.btn-solid:hover{background:var(--accent)}.btn-ghost{color:var(--ink);border:1.5px solid var(--ink);background:0 0}.btn-ghost:hover{background:var(--ink);color:var(--bone)}.strip{background:var(--ink);color:var(--bone);white-space:nowrap;padding:22px 0;overflow:hidden}.marquee{animation:30s linear infinite slide;display:inline-flex}.marquee span{font-family:var(--display);letter-spacing:-.01em;text-transform:uppercase;align-items:center;gap:26px;padding:0 26px;font-size:clamp(22px,3vw,34px);font-weight:600;display:inline-flex}.marquee span:after{content:"â—†";color:var(--accent);font-size:.5em}@keyframes slide{to{transform:translate(-50%)}}.section{padding-top:110px;padding-bottom:110px}.section-head{align-items:baseline;gap:18px;margin-bottom:44px;display:flex}.section-head .num{font-family:var(--mono);color:var(--accent);font-size:13px}.section-head h2{font-family:var(--display);letter-spacing:-.03em;font-size:clamp(30px,4.4vw,52px);font-weight:700;line-height:1}.idx{border-top:1.5px solid var(--ink)}.idx-row{border-bottom:1.5px solid var(--line);color:var(--ink);grid-template-columns:64px 1fr auto;align-items:center;gap:24px;padding:30px 20px;text-decoration:none;transition:color .3s,padding .3s;display:grid;position:relative;overflow:hidden}.idx-row:before{content:"";background:var(--ink);z-index:0;transition:transform .38s cubic-bezier(.6,0,.2,1);position:absolute;inset:0;transform:translateY(101%)}.idx-row>*{z-index:1;position:relative}.idx-num{font-family:var(--mono);color:var(--ink-soft);font-size:13px;transition:color .3s}.idx-main{flex-wrap:wrap;align-items:baseline;gap:18px;display:flex}.idx-name{font-family:var(--display);letter-spacing:-.02em;font-size:clamp(26px,4vw,46px);font-weight:700;line-height:1}.idx-desc{color:var(--ink-soft);font-size:14px;transition:color .3s}.idx-meta{font-family:var(--mono);color:var(--ink-soft);align-items:center;gap:20px;font-size:13px;transition:color .3s;display:flex}.idx-arrow{opacity:0;transition:transform .3s,opacity .3s;display:inline-block;transform:translate(-6px)}.idx-tag-building{color:var(--accent)}@media (hover:hover) and (pointer:fine){.idx-row:hover:before{transform:translateY(0)}.idx-row:hover{color:var(--bone);padding-left:32px}.idx-row:hover .idx-num{color:var(--accent)}.idx-row:hover .idx-desc{color:#ede9e1b3}.idx-row:hover .idx-meta{color:var(--bone)}.idx-row:hover .idx-arrow{opacity:1;transform:translate(0)}}.about-grid{grid-template-columns:.8fr 1.2fr;align-items:start;gap:64px;display:grid}.about-lead p{font-family:var(--body);letter-spacing:0;color:var(--ink);font-size:clamp(15px,1.35vw,17px);font-weight:400;line-height:1.65}.about-lead p+p{margin-top:18px}.about-lead .accent{color:var(--accent)}.about-side{font-family:var(--mono);color:var(--ink-soft);font-size:13px}.about-side .row{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:14px 0;display:flex}.about-side .row:first-child{border-top:1px solid var(--line)}.about-side .k{color:var(--accent)}.resume-bar{flex-wrap:wrap;gap:14px;margin-bottom:36px;display:flex}.resume-stage{--resume-ease:cubic-bezier(.22, 1, .36, 1);width:100%;min-height:440px;transition:grid-template-columns .55s var(--resume-ease), column-gap .45s var(--resume-ease);grid-template-columns:240px 0fr;align-items:start;column-gap:0;display:grid}.resume-stage.is-open{grid-template-columns:200px minmax(0,1fr);column-gap:12px}.file-folder{cursor:pointer;text-align:left;width:100%;min-height:440px;color:inherit;z-index:2;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0;position:relative}.file-folder:focus-visible{outline:3px solid var(--accent);outline-offset:6px}.file-tab{z-index:2;writing-mode:vertical-rl;width:20px;height:28%;font-family:var(--mono);letter-spacing:.1em;color:var(--bone);background:var(--ink);border-right:2px solid var(--accent);border-radius:2px 0 0 2px;justify-content:center;align-items:center;font-size:11px;display:flex;position:absolute;top:18%;left:0;transform:rotate(180deg)}.file-face{background:linear-gradient(165deg, #2a2520 0%, var(--ink) 55%, #0f0d0b 100%);border-left:2px solid var(--accent);border-radius:2px;flex-direction:column;justify-content:flex-end;gap:10px;padding:28px 22px;transition:box-shadow .35s;display:flex;position:absolute;inset:0 0 0 16px;box-shadow:0 10px 28px #1714101f}.file-folder:hover .file-face{box-shadow:0 14px 32px #17141029}.file-name{font-family:var(--display);letter-spacing:-.03em;color:var(--bone);font-size:clamp(22px,2.4vw,30px);font-weight:700;line-height:1}.file-meta,.file-cue{font-family:var(--mono);letter-spacing:.04em;color:#ede9e18c;font-size:12px;display:block}.file-cue{color:var(--accent)}.file-panel{min-width:0;overflow:hidden}.file-panel-inner{opacity:0;pointer-events:none;width:min(100%,520px);transition:opacity .35s var(--resume-ease), transform .55s var(--resume-ease);transform:translate(16px)}.resume-stage.is-open .file-panel-inner{opacity:1;pointer-events:auto;transition-delay:80ms;transform:none}.resume-stage:not(.is-open) .file-panel-inner{transition-delay:0s}.file-sheet{border:1.5px solid var(--ink);background:#fff;width:100%;text-decoration:none;transition:border-color .3s,box-shadow .35s;display:block;overflow:hidden;box-shadow:0 8px 24px #17141014}.file-sheet:hover{border-color:var(--accent);box-shadow:0 12px 28px #1714101f}.file-sheet img{pointer-events:none;-webkit-user-select:none;user-select:none;background:#fff;width:100%;height:auto;display:block}.resume-stage.is-reduce,.resume-stage.is-reduce.is-open{transition:none}.resume-stage.is-reduce .file-panel-inner{opacity:1;pointer-events:auto;transition:none;transform:none}@media (prefers-reduced-motion:reduce){.resume-stage,.file-panel-inner,.file-face,.file-sheet{transition:none!important}.file-panel-inner{opacity:1;pointer-events:auto;transform:none}}.foot{background:var(--ink);color:var(--bone);padding:120px 0 46px}.foot h2{font-family:var(--display);letter-spacing:-.035em;font-size:clamp(44px,11vw,148px);font-weight:700;line-height:.88}.foot h2 a{color:var(--bone);border-bottom:4px solid var(--accent);text-decoration:none;transition:color .2s}.foot h2 a:hover{color:var(--accent)}.foot-links{font-family:var(--mono);letter-spacing:.02em;flex-wrap:wrap;gap:30px;margin-top:56px;font-size:13px;display:flex}.foot-links a{opacity:.7;text-decoration:none;transition:opacity .2s,color .2s}.foot-links a:hover{opacity:1;color:var(--accent)}.foot-base{font-family:var(--mono);opacity:.55;border-top:1px solid #ede9e129;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:80px;padding-top:26px;font-size:12px;display:flex}.reveal{opacity:0;transform:translateY(28px)}.reveal.in{opacity:1;transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);transform:none}@media (width>=821px) and (width<=1100px){.hero.has-bot h1{font-size:clamp(40px,5.2vw,72px)}.hero-bot{overflow:hidden}.hero-bot>*{inset:0 -12% 0 -8%;transform:scale(1.02)translate(4%)}}@media (width<=820px){:root{--gutter:24px}.grain{opacity:.02}.nav{padding-top:env(safe-area-inset-top)}.nav-inner{gap:12px;height:60px}.monogram{flex-shrink:0;font-size:16px}.nav-right{flex-wrap:nowrap;justify-content:flex-end;gap:12px;min-width:0}.nav-right a{letter-spacing:.02em;white-space:nowrap;padding:6px 0;font-size:11px}.nav-right .nav-status{display:none}.hero{padding-top:56px;padding-bottom:48px}.hero.has-bot{grid-template-columns:1fr;gap:0;padding-top:48px}.hero h1,.hero.has-bot h1{font-size:clamp(36px,10vw,56px)}.hero-bot{display:none}.hero-foot{flex-direction:column;align-items:flex-start;gap:24px;margin-top:36px}.hero-intro{max-width:none;font-size:15px}.hero-cta{flex-direction:column;gap:10px;width:100%}.hero-cta .btn{justify-content:center;width:100%;min-height:48px}.btn{will-change:auto;min-height:44px;padding:14px 20px}.strip{padding:16px 0}.marquee span{gap:18px;padding:0 18px;font-size:clamp(18px,5vw,24px)}.section{padding-top:64px;padding-bottom:64px}.section-head{gap:12px;margin-bottom:28px}.section-head h2{font-size:clamp(28px,8vw,40px)}.about-grid{grid-template-columns:1fr;gap:28px}.about-side{font-size:12px}.about-side .row{flex-direction:column;align-items:flex-start;gap:4px;padding:12px 0}.about-lead p{font-size:15px}.idx-row{grid-template-columns:36px 1fr;gap:12px;min-height:64px;padding:22px 10px}.idx-meta,.idx-desc{display:none}.idx-name{font-size:clamp(22px,7vw,32px)}.idx-arrow{display:none}.resume-bar{gap:10px;margin-bottom:24px}.resume-bar .btn{flex:auto;justify-content:center;min-width:calc(50% - 10px)}.resume-stage{min-height:0;transition:grid-template-rows .5s var(--resume-ease), row-gap .4s var(--resume-ease);grid-template-rows:auto 0fr;grid-template-columns:1fr;gap:0}.resume-stage.is-open{grid-template-rows:auto 1fr;grid-template-columns:1fr;gap:12px 0}.file-folder{min-height:156px}.file-panel-inner{width:100%;transform:translateY(12px)}.resume-stage.is-open .file-panel-inner{transform:none}.file-tab{writing-mode:horizontal-tb;border-right:0;border-bottom:2px solid var(--accent);border-radius:2px 2px 0 0;width:30%;height:28px;top:0;left:12%;transform:none}.file-face{border-left:0;border-top:2px solid var(--accent);inset:22px 0 0}.foot{padding:80px 0 calc(40px + env(safe-area-inset-bottom))}.foot h2{font-size:clamp(40px,14vw,72px);line-height:.92}.foot h2 a{border-bottom-width:3px}.foot-links{gap:16px 22px;margin-top:36px;font-size:12px}.foot-base{flex-direction:column;gap:8px;margin-top:48px}.reveal{transform:translateY(18px)}}@media (width<=420px){.nav-right{gap:10px}.nav-right a[href=\#resume]{display:none}.hero h1,.hero.has-bot h1{font-size:clamp(34px,9.5vw,48px)}}a:focus-visible,.btn:focus-visible,.file-folder:focus-visible{outline:3px solid var(--accent);outline-offset:3px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.marquee,.nav-status .live{animation:none}.reveal{opacity:1;transition:none;transform:none}.hero.loaded h1 .accent:after{animation:none;transform:scaleX(1)}body.has-cursor{cursor:auto}.cursor-dot,.cursor-ring{display:none}}
