:root{--bg: #0e1117;--bg-alt: #161a22;--ink: #e8eae5;--ink-dim: rgba(232,234,229,.78);--ink-faint: rgba(232,234,229,.54);--line: rgba(232,234,229,.14);--card: #161a22;--accent: #4ea872;--accent-ink: #0e1117;--display: "Inter Tight","Helvetica Neue",system-ui,sans-serif;--body: "Inter Tight","Helvetica Neue",system-ui,sans-serif;--mono: "JetBrains Mono",ui-monospace,monospace;--radius: 2px;--caps: none;--container-w: 1280px;--container-x: 64px;--clr-green: #4ea872;--clr-blue: #5b8df5;--clr-orange: #f0844c;--clr-purple: #c77dda}*{box-sizing:border-box}html,body{margin:0;padding:0;overflow-x:hidden}body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;display:block}button{font:inherit;color:inherit;background:transparent;border:0;cursor:pointer}a{color:inherit;text-decoration:none}p{margin:0}h1,h2,h3,h4{margin:0;font-weight:500}ul{list-style:none;margin:0;padding:0}.app{min-height:100vh;display:flex;flex-direction:column}.container{width:100%;max-width:var(--container-w);margin:0 auto;padding-left:var(--container-x);padding-right:var(--container-x)}.sec{padding:96px 0 24px;scroll-margin-top:96px}.sec-head{display:grid;grid-template-columns:64px auto 1fr auto;align-items:baseline;gap:24px;padding-bottom:48px}.sec-num{font-family:var(--mono);font-size:12px;color:var(--ink-faint);letter-spacing:.06em}.sec-title{font-family:var(--display);font-size:64px;font-weight:600;line-height:1;letter-spacing:-.035em;text-transform:var(--caps)}.sec-title-sm{font-size:36px}.sec-head-sm{padding-bottom:24px}.sec-rule{height:1px;background:var(--line);align-self:center}.sec-count{font-family:var(--mono);font-size:12px;color:var(--ink-dim)}.nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(20px) saturate(140%);-webkit-backdrop-filter:blur(20px) saturate(140%)}.nav-inner{width:100%;max-width:var(--container-w);margin:0 auto;padding:14px var(--container-x);display:flex;align-items:center;gap:16px}.nav-mark{display:inline-flex;align-items:center;gap:10px;padding:0}.mark-logo{width:28px;height:28px;display:block;object-fit:contain;flex-shrink:0}[data-variant=brutalist] .mark-logo{filter:none}.mark-glyph{font-family:var(--display);font-size:18px;font-weight:700;line-height:1;letter-spacing:-.04em}.mark-dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}.mark-name{font-family:var(--mono);font-size:11px;color:var(--ink-dim);letter-spacing:.04em;text-transform:var(--caps)}.nav-links{display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:999px;background:color-mix(in oklab,var(--bg) 70%,transparent);margin:0 auto}.nav-link{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;font-family:var(--mono);font-size:11px;color:var(--ink-dim);letter-spacing:.04em;text-transform:var(--caps);transition:color .18s ease,background .18s ease}.nav-link:hover{color:var(--ink)}.nav-link.is-active{background:var(--ink);color:var(--bg)}.nav-num{opacity:.5}.nav-link.is-active .nav-num{opacity:.85}.nav-actions{display:flex;align-items:center;gap:12px;margin-left:auto}.theme-toggle-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--line);border-radius:50%;color:var(--ink);background:transparent;cursor:pointer;transition:background .18s ease,border-color .18s ease,transform .25s ease}.theme-toggle-btn:hover{background:var(--bg-alt);transform:rotate(15deg) scale(1.05)}.theme-toggle-btn svg{width:14px;height:14px;stroke:currentColor}.nav-cta{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:11px;color:var(--ink);letter-spacing:.04em;text-transform:var(--caps);transition:background .18s ease,border-color .18s ease}.nav-cta:hover{background:var(--bg-alt)}.dot-pulse{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 color-mix(in oklab,var(--accent) 60%,transparent);animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 color-mix(in oklab,var(--accent) 50%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in oklab,var(--accent) 0%,transparent)}}.hero{position:relative;width:100%;max-width:var(--container-w);margin:0 auto;padding:96px var(--container-x) 96px;display:grid;grid-template-columns:1fr 320px;grid-template-rows:auto 1fr auto;gap:56px 56px;min-height:calc(100vh - 60px)}.hero-meta{grid-column:1 / -1;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;padding-bottom:48px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:11px;color:var(--ink-dim);letter-spacing:.04em;text-transform:var(--caps)}.meta-row{display:flex;justify-content:space-between;gap:12px}.meta-row .meta-k{color:var(--ink-faint)}.meta-row .meta-v{color:var(--ink);display:inline-flex;align-items:center;gap:8px}.hero-body{grid-column:1;align-self:end;max-width:880px}.eyebrow{display:inline-flex;align-items:center;gap:14px;font-family:var(--mono);font-size:12px;color:var(--ink-dim);letter-spacing:.08em;text-transform:var(--caps);margin-bottom:28px}.eyebrow-line{display:inline-block;width:48px;height:1px;background:var(--ink-faint)}.hero-title{font-family:var(--display);font-size:clamp(56px,9vw,140px);font-weight:600;line-height:.94;letter-spacing:-.045em;text-transform:var(--caps);margin:0}.hero-title em{font-style:normal;color:var(--accent);font-weight:600}.t-line{display:block}.caret{display:inline-block;width:.55ch;height:1em;background:var(--accent);margin-left:.08em;vertical-align:-.12em;animation:blink 1s steps(2,end) infinite}@keyframes blink{50%{opacity:0}}.hero-sub{margin-top:36px;max-width:56ch;font-size:20px;line-height:1.5;color:var(--ink-dim)}.hero-cta{display:flex;gap:12px;margin-top:40px;flex-wrap:nowrap;align-items:center}.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 22px;border-radius:999px;font-family:var(--body);font-size:14px;font-weight:500;letter-spacing:.01em;border:1px solid transparent;transition:transform .2s ease,background .2s ease,color .2s ease,border-color .2s ease}.btn-arrow{display:inline-block;transition:transform .2s ease}.btn:hover .btn-arrow{transform:translate(2px,-2px)}.btn-primary{background:var(--ink);color:var(--bg)}.btn-primary:hover{background:var(--accent);color:var(--accent-ink)}.btn-ghost{border-color:var(--line);color:var(--ink)}.btn-ghost:hover{background:var(--bg-alt)}.btn-sm{padding:8px 14px;font-size:12px}.btn-lg{padding:18px 28px;font-size:15px}.hero-socials{margin-top:56px;display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line)}.soc{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:6px 12px;padding:20px 8px 18px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);position:relative;transition:background .2s ease}.soc:last-child{border-right:0}.soc:hover{background:var(--bg-alt)}.soc-k{grid-column:1;grid-row:1;font-family:var(--mono);font-size:11px;color:var(--ink-faint);text-transform:var(--caps);letter-spacing:.04em}.soc-v{grid-column:1 / -1;grid-row:2;font-size:15px;color:var(--ink);font-weight:500}.soc-arrow{grid-column:2;grid-row:1;font-size:14px;color:var(--ink-dim);transition:transform .2s ease}.soc:hover .soc-arrow{transform:translate(2px,-2px);color:var(--accent)}.soc-lg{padding:24px 16px}.soc-lg .soc-v{font-size:17px}.hero-side{grid-column:2;grid-row:2;align-self:end}.side-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);padding:18px 18px 14px;font-family:var(--mono);font-size:12px}.card-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid var(--line);text-transform:var(--caps);color:var(--ink-faint);letter-spacing:.06em;font-size:10.5px}.card-list{display:flex;flex-direction:column;gap:8px;padding:14px 0}.card-list li{display:flex;align-items:baseline;gap:12px;justify-content:space-between;color:var(--ink-dim);font-size:11.5px;text-transform:var(--caps);letter-spacing:.04em}.card-list b{font-weight:500;color:var(--ink);text-transform:none;letter-spacing:0;font-family:var(--body);font-size:13px}.card-foot{display:block;width:100%;padding:12px 0 0;border-top:1px solid var(--line);text-align:left;font-family:var(--mono);font-size:11.5px;color:var(--ink);letter-spacing:.04em;text-transform:var(--caps)}.card-foot:hover{color:var(--accent)}.hero-scroll{grid-column:1 / -1;grid-row:3;display:inline-flex;align-items:center;gap:14px;font-family:var(--mono);font-size:11px;color:var(--ink-faint);letter-spacing:.08em;text-transform:var(--caps)}.scroll-bar{width:24px;height:1px;background:var(--ink-faint);position:relative;overflow:hidden}.scroll-bar:after{content:"";position:absolute;inset:0;background:var(--accent);animation:trail 2.4s ease-in-out infinite}@keyframes trail{0%{transform:translate(-100%)}to{transform:translate(100%)}}.sec-about .about-grid{display:grid;grid-template-columns:1.05fr 1.2fr;gap:64px;align-items:start}.about-portrait{display:flex;flex-direction:column;gap:28px}.portrait{position:relative;width:100%;aspect-ratio:4 / 5;background:var(--bg-alt);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.portrait-mask{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background-image:repeating-linear-gradient(135deg,transparent 0,transparent 14px,color-mix(in oklab,var(--ink) 6%,transparent) 14px,color-mix(in oklab,var(--ink) 6%,transparent) 15px)}.portrait-label{font-family:var(--mono);font-size:11px;color:var(--ink-dim);letter-spacing:.12em}.portrait-hint{font-family:var(--mono);font-size:10.5px;color:var(--ink-faint);letter-spacing:.04em}.portrait-tag{position:absolute;right:14px;bottom:14px;display:flex;flex-direction:column;gap:2px;font-family:var(--mono);font-size:10.5px;color:var(--ink-dim);text-align:right;letter-spacing:.08em;text-transform:var(--caps)}.portrait-tag span:first-child{font-family:var(--display);font-size:18px;font-weight:600;letter-spacing:-.02em;color:var(--ink);line-height:1}.bio-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.bio-stats li{padding:18px 4px 16px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:4px}.bio-stats li:last-child{border-right:0}.bio-stats b{font-family:var(--display);font-size:32px;font-weight:600;letter-spacing:-.03em;line-height:1;color:var(--ink)}.bio-stats b span{font-family:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;color:inherit;text-transform:none}.bio-stats li>span{font-family:var(--mono);font-size:11px;color:var(--ink-faint);letter-spacing:.04em;text-transform:var(--caps)}.about-text{display:flex;flex-direction:column;gap:24px}.prose{font-size:18px;line-height:1.55;color:var(--ink);text-wrap:pretty}.prose+.prose{color:var(--ink-dim)}.kv-list{margin-top:12px;border-top:1px solid var(--line)}.kv-list li{display:grid;grid-template-columns:140px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid var(--line);align-items:baseline}.kv-list span{font-family:var(--mono);font-size:11px;color:var(--ink-faint);letter-spacing:.04em;text-transform:var(--caps)}.kv-list b{font-weight:500;font-size:15px;color:var(--ink)}.skills-wrap{display:grid;grid-template-columns:1fr 1fr;gap:48px 64px}.skills-group{display:flex;flex-direction:column;gap:12px}.grp-head{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:12px;border-bottom:1px solid var(--line)}.grp-tag{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink);text-transform:var(--caps)}.grp-count{font-family:var(--mono);font-size:11px;color:var(--ink-faint)}.skill-list{display:flex;flex-direction:column}.skill-row{display:grid;grid-template-columns:28px 1fr 36px 1fr 32px;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--line);font-size:14px}.skill-idx{font-family:var(--mono);font-size:11px;color:var(--ink-faint)}.skill-name{font-size:17px;color:var(--ink);font-weight:500;letter-spacing:-.01em}.skill-years{font-family:var(--mono);font-size:11px;color:var(--ink-dim);text-align:right}.skill-bar{position:relative;height:3px;background:color-mix(in oklab,var(--ink) 10%,transparent);overflow:hidden}.skill-fill{position:absolute;inset:0;width:var(--w, 0%);background:var(--ink);transform-origin:left;transform:scaleX(0);transition:transform 1.2s cubic-bezier(.2,.7,.1,1),background .2s ease}.skill-row.is-in .skill-fill{transform:scaleX(1)}.skill-pct{font-family:var(--mono);font-size:11px;color:var(--ink-dim);text-align:right}.skill-row:hover .skill-fill{background:var(--accent)}.exp-list{border-top:1px solid var(--line)}.exp-row{display:grid;grid-template-columns:200px 1fr 1fr;gap:32px;padding:22px 0;border-bottom:1px solid var(--line);align-items:baseline}.exp-when{font-family:var(--mono);font-size:12px;color:var(--ink-faint);text-transform:var(--caps);letter-spacing:.04em}.exp-what{font-size:22px;color:var(--ink);letter-spacing:-.02em;font-family:var(--display);font-weight:600}.exp-where{font-size:15px;color:var(--ink-dim)}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:40px}.chip{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:11.5px;color:var(--ink-dim);letter-spacing:.04em;text-transform:var(--caps);transition:all .18s ease}.chip:hover{color:var(--ink);border-color:var(--ink-faint)}.chip.is-on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.chip-x{opacity:.6}.work-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px 32px}.proj{transition:opacity .25s ease}.proj[data-dim="1"]{opacity:.42}.proj-btn{display:block;width:100%;text-align:left;padding:0;cursor:pointer}.proj-thumb{position:relative;width:100%;aspect-ratio:4 / 3;background:oklch(.3 .06 var(--hue, 30));overflow:hidden;border-radius:var(--radius);border:1px solid var(--line);transition:transform .4s cubic-bezier(.2,.7,.1,1)}.proj-btn:hover .proj-thumb{transform:translateY(-4px)}.thumb-grid{position:absolute;inset:0;background-image:linear-gradient(to right,color-mix(in oklab,var(--ink) 12%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in oklab,var(--ink) 12%,transparent) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse at 50% 60%,#000 30%,transparent 75%)}.thumb-label{position:absolute;top:18px;left:18px;right:18px;display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:color-mix(in oklab,var(--ink) 70%,transparent);letter-spacing:.08em}.thumb-mark{position:absolute;left:18px;bottom:16px;font-family:var(--display);font-size:56px;font-weight:600;line-height:1;letter-spacing:-.05em;color:color-mix(in oklab,var(--ink) 75%,transparent)}.thumb-overlay{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:flex-end;padding:18px;opacity:0;transition:opacity .25s ease}.proj-btn:hover .thumb-overlay{opacity:1}.thumb-cta{background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:999px;font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:var(--caps)}.proj-meta{padding:20px 4px 0;display:flex;flex-direction:column;gap:14px}.proj-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.proj-title{display:inline-flex;align-items:baseline;gap:14px;font-family:var(--display);font-size:28px;font-weight:600;letter-spacing:-.03em;text-transform:var(--caps)}.proj-idx{font-family:var(--mono);font-size:12px;color:var(--ink-faint);letter-spacing:.04em}.proj-year{font-family:var(--mono);font-size:12px;color:var(--ink-faint)}.proj-blurb{font-size:15px;color:var(--ink-dim);line-height:1.55;max-width:56ch}.proj-tags{display:flex;flex-wrap:wrap;gap:6px}.proj-tags li{font-family:var(--mono);font-size:11px;color:var(--ink-dim);padding:4px 10px;border:1px solid var(--line);border-radius:999px;letter-spacing:.04em;text-transform:var(--caps)}.modal-veil{position:fixed;inset:0;z-index:100;background:color-mix(in oklab,var(--ink) 60%,transparent);display:flex;align-items:flex-start;justify-content:center;padding:5vh 5vw;overflow-y:auto;animation:veil .25s ease both}@keyframes veil{0%{opacity:0}to{opacity:1}}.modal{width:100%;max-width:1040px;background:var(--card);border-radius:calc(var(--radius) * 2);border:1px solid var(--line);box-shadow:0 30px 80px -20px #00000059;animation:modal .4s cubic-bezier(.2,.7,.1,1) both;overflow:hidden}@keyframes modal{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.modal-head{display:flex;justify-content:space-between;align-items:flex-end;padding:28px 32px 24px;border-bottom:1px solid var(--line);gap:24px}.modal-head-l{display:flex;flex-direction:column;gap:8px}.modal-tag{font-family:var(--mono);font-size:11px;color:var(--ink-faint);text-transform:var(--caps);letter-spacing:.06em}.modal-title{font-family:var(--display);font-size:44px;font-weight:600;letter-spacing:-.035em;line-height:1;text-transform:var(--caps)}.modal-x{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:11px;color:var(--ink-dim);letter-spacing:.04em;text-transform:var(--caps);transition:background .18s ease}.modal-x:hover{background:var(--bg-alt);color:var(--ink)}.kbd{font-family:var(--mono);font-size:10px;padding:2px 6px;border:1px solid var(--line);border-radius:4px;background:var(--bg)}.modal-hero{position:relative;aspect-ratio:16 / 9;margin:24px 32px 0;background:oklch(.3 .06 var(--hue, 30));border-radius:var(--radius);border:1px solid var(--line);overflow:hidden}.modal-mark{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:88px;font-weight:600;letter-spacing:-.05em;color:color-mix(in oklab,var(--ink) 28%,transparent);text-transform:var(--caps)}.modal-hero-tag{position:absolute;left:18px;bottom:14px;font-family:var(--mono);font-size:10.5px;color:color-mix(in oklab,var(--ink) 50%,transparent);letter-spacing:.12em}.modal-body{display:grid;grid-template-columns:1.5fr 1fr;gap:48px;padding:32px}.m-h{font-family:var(--mono);font-size:11px;color:var(--ink-faint);text-transform:var(--caps);letter-spacing:.06em;margin-bottom:8px}.modal-col-main{display:flex;flex-direction:column;gap:18px}.modal-col-main .prose{font-size:16px}.modal-col-side{display:flex;flex-direction:column;gap:18px}.modal-col-side .kv-list{border-top:0}.modal-col-side .kv-list li{grid-template-columns:70px 1fr;padding:10px 0}.modal-col-side .kv-list li:first-child{border-top:1px solid var(--line)}.stack-list{display:flex;flex-wrap:wrap;gap:6px}.stack-list li{font-family:var(--mono);font-size:11px;padding:4px 10px;border:1px solid var(--line);border-radius:4px;color:var(--ink)}.modal-links{display:flex;gap:8px;margin-top:8px}.contact-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:64px;align-items:start}.contact-pitch{display:flex;flex-direction:column;gap:16px}.contact-lead{font-family:var(--mono);font-size:12px;color:var(--ink-faint);letter-spacing:.04em;text-transform:var(--caps)}.contact-title{font-family:var(--display);font-size:64px;font-weight:600;line-height:1;letter-spacing:-.04em;text-transform:var(--caps)}.contact-actions{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:auto auto;gap:12px 0}.email-card{grid-column:1 / -1;grid-row:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}.email-label{font-family:var(--mono);font-size:10px;color:var(--ink-faint);letter-spacing:.06em;text-transform:var(--caps);white-space:nowrap}.email-val{display:flex;align-items:center;gap:10px;padding:0;text-align:left;font-size:13px;color:var(--ink);font-family:var(--mono);letter-spacing:.01em;flex:1;min-width:0}.email-val span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.email-val:hover{color:var(--accent)}.email-state{font-family:var(--mono);font-size:10px;color:var(--ink-faint);letter-spacing:.04em;text-transform:var(--caps);transition:color .2s ease;white-space:nowrap;flex-shrink:0;width:42px;text-align:right}.email-state.is-on{color:var(--accent)}.socials-grid{grid-column:1 / 3;grid-row:2;display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--line);border-right:none;border-radius:var(--radius) 0 0 var(--radius);overflow:hidden}.socials-grid .soc{border-radius:0}.socials-grid .soc-lg{padding:16px}.socials-grid .soc-lg .soc-v{font-size:14px}.contact-actions .btn-primary{grid-column:3;grid-row:2;display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:6px 8px;padding:16px;border:1px solid var(--line);border-radius:0 var(--radius) var(--radius) 0;background:transparent;color:var(--ink);font-size:14px;font-family:var(--body);font-weight:500;letter-spacing:0;transition:background .2s ease}.contact-actions .btn-primary:before{content:"Email";grid-column:1;grid-row:1;font-family:var(--mono);font-size:10px;color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase}.contact-actions .btn-primary .btn-arrow{grid-column:2;grid-row:1;font-size:12px;color:var(--ink-dim);transition:transform .2s ease,color .2s ease}.contact-actions .btn-primary span:first-child{grid-column:1 / -1;grid-row:2;font-size:14px;font-weight:500}.contact-actions .btn-primary:hover{background:var(--bg-alt)}.contact-actions .btn-primary:hover .btn-arrow{transform:translate(2px,-2px);color:var(--accent)}.foot{margin-top:64px;padding:32px var(--container-x);display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--line);font-family:var(--mono);font-size:11px;color:var(--ink-dim);letter-spacing:.04em;text-transform:var(--caps)}.foot-l{display:flex;align-items:center;gap:14px}.foot-logo{width:22px;height:22px;display:block;object-fit:contain}.foot-mark{font-family:var(--display);font-size:18px;font-weight:600;letter-spacing:-.03em;color:var(--ink)}.foot-top{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--line);border-radius:999px;text-transform:var(--caps);letter-spacing:.04em}.foot-top:hover{background:var(--bg-alt)}.foot-r{display:flex;gap:16px;align-items:center}[data-variant=terminal]{--bg: #0c0f0e;--bg-alt: #11161a;--ink: #e6f4ec;--ink-dim: rgba(230,244,236,.78);--ink-faint: rgba(230,244,236,.56);--line: rgba(230,244,236,.14);--card: #11161a;--accent: #5bf2a4;--accent-ink: #0c0f0e;--display: "JetBrains Mono", ui-monospace, monospace;--body: "JetBrains Mono", ui-monospace, monospace;--mono: "JetBrains Mono", ui-monospace, monospace;--radius: 2px;--caps: lowercase}[data-variant=terminal] body{font-feature-settings:"ss01" 1,"ss02" 1}[data-variant=terminal] .hero-title{font-size:clamp(40px,6.5vw,96px);letter-spacing:-.02em;line-height:1}[data-variant=terminal] .hero-title em{font-style:normal;color:var(--accent)}[data-variant=terminal] .sec-title{font-size:44px;letter-spacing:-.02em}[data-variant=terminal] .sec-title-sm{font-size:28px}[data-variant=terminal] .modal-title{font-size:32px;letter-spacing:-.02em}[data-variant=terminal] .contact-title{font-size:44px;letter-spacing:-.02em}[data-variant=terminal] .proj-title{font-size:22px;letter-spacing:-.01em}[data-variant=terminal] .exp-what{font-family:var(--mono);font-size:17px}[data-variant=terminal] .nav-link.is-active,[data-variant=terminal] .btn-primary{background:var(--accent);color:var(--accent-ink)}[data-variant=terminal] .btn-primary:hover{background:var(--ink);color:var(--bg)}[data-variant=terminal] .btn,[data-variant=terminal] .chip{border-radius:2px}[data-variant=terminal] .chip.is-on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}[data-variant=terminal] .thumb-mark{font-family:var(--mono);font-size:36px;letter-spacing:-.02em}[data-variant=terminal] .modal-mark{font-family:var(--mono);font-size:48px}[data-variant=terminal] .portrait-tag span:first-child{font-family:var(--mono);font-size:16px}[data-variant=terminal] .bio-stats b{font-family:var(--mono);font-size:24px}[data-variant=terminal] .nav-links{border-radius:2px}[data-variant=terminal] .nav-link{border-radius:0}[data-variant=terminal] .nav-cta{border-radius:2px}[data-variant=terminal] .foot-mark{font-family:var(--mono);font-size:18px}[data-variant=terminal] .proj-thumb{background:oklch(.2 .04 var(--hue, 30))}[data-variant=terminal] .modal-hero{background:oklch(.2 .05 var(--hue, 30))}[data-variant=terminal] .thumb-grid{background-image:linear-gradient(to right,rgba(230,244,236,.06) 1px,transparent 1px),linear-gradient(to bottom,rgba(230,244,236,.06) 1px,transparent 1px)}[data-variant=brutalist]{--bg: #f3f3f1;--bg-alt: #0a0a0a;--ink: #0a0a0a;--ink-dim: rgba(10,10,10,.72);--ink-faint: rgba(10,10,10,.46);--line: rgba(10,10,10,.92);--card: #ffffff;--accent: #ff4d1f;--accent-ink: #0a0a0a;--display: "Archivo", "Helvetica Neue", system-ui, sans-serif;--body: "Archivo", "Helvetica Neue", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;--radius: 0px;--caps: uppercase}[data-variant=brutalist] .hero-title{font-weight:900;font-style:italic;letter-spacing:-.06em;line-height:.88;font-size:clamp(72px,11vw,180px)}[data-variant=brutalist] .hero-title em{font-style:italic;font-weight:900;color:var(--accent)}[data-variant=brutalist] .sec-title{font-weight:900;font-style:italic;letter-spacing:-.04em;font-size:72px}[data-variant=brutalist] .sec-title-sm{font-size:36px}[data-variant=brutalist] .modal-title{font-weight:900;letter-spacing:-.03em}[data-variant=brutalist] .contact-title{font-weight:900;font-style:italic;letter-spacing:-.04em;font-size:88px}[data-variant=brutalist] .proj-title{font-weight:900;letter-spacing:-.03em;font-size:28px}[data-variant=brutalist] .exp-what{font-weight:700;font-family:var(--body);font-style:italic}[data-variant=brutalist] .bio-stats b{font-weight:900;font-family:var(--body);font-size:44px;line-height:.9}[data-variant=brutalist] .nav{background:var(--ink);color:var(--bg)}[data-variant=brutalist] .nav .mark-glyph{color:var(--bg)}[data-variant=brutalist] .nav .mark-name{color:color-mix(in oklab,var(--bg) 80%,transparent)}[data-variant=brutalist] .nav-links{border-color:color-mix(in oklab,var(--bg) 30%,transparent);background:transparent}[data-variant=brutalist] .nav-link{color:color-mix(in oklab,var(--bg) 80%,transparent)}[data-variant=brutalist] .nav-link:hover{color:var(--bg)}[data-variant=brutalist] .nav-link.is-active{background:var(--accent);color:var(--ink)}[data-variant=brutalist] .nav-cta{border-color:color-mix(in oklab,var(--bg) 30%,transparent);color:var(--bg)}[data-variant=brutalist] .nav-cta:hover{background:var(--accent);color:var(--ink);border-color:var(--accent)}[data-variant=brutalist] .btn{border-radius:0;font-weight:700}[data-variant=brutalist] .chip{border-radius:0;font-weight:600}[data-variant=brutalist] .filter-bar{border-bottom:2px solid var(--line);padding-bottom:20px}[data-variant=brutalist] .work-grid{gap:64px 0}[data-variant=brutalist] .proj{border-top:2px solid var(--line);padding-top:24px;padding-right:32px}[data-variant=brutalist] .proj:nth-child(odd){border-right:2px solid var(--line)}[data-variant=brutalist] .proj-thumb{border:2px solid var(--line);border-radius:0}[data-variant=brutalist] .thumb-mark{font-weight:900}[data-variant=brutalist] .modal,[data-variant=brutalist] .modal-hero{border:2px solid var(--line);border-radius:0}[data-variant=brutalist] .modal-mark{font-weight:900;font-style:italic}[data-variant=brutalist] .portrait{border:2px solid var(--line)}[data-variant=brutalist] .portrait-tag span:first-child{font-weight:900;font-style:italic;font-size:28px}[data-variant=brutalist] .side-card,[data-variant=brutalist] .email-card,[data-variant=brutalist] .socials-grid{border:2px solid var(--line)}[data-variant=brutalist] .nav{border-bottom:2px solid var(--line)}[data-variant=brutalist] .foot,[data-variant=brutalist] .kv-list{border-top:2px solid var(--line)}[data-variant=brutalist] .kv-list li{border-bottom:2px solid var(--line)}[data-variant=brutalist] .bio-stats{border-top:2px solid var(--line);border-bottom:2px solid var(--line)}[data-variant=brutalist] .bio-stats li{border-right:2px solid var(--line)}[data-variant=brutalist] .skill-row,[data-variant=brutalist] .exp-row{border-bottom:2px solid var(--line)}[data-variant=brutalist] .exp-list{border-top:2px solid var(--line)}[data-variant=brutalist] .grp-head{border-bottom:2px solid var(--line)}[data-variant=brutalist] .proj-thumb{background:var(--accent)}[data-variant=brutalist] .thumb-mark{color:var(--ink)}[data-variant=brutalist] .thumb-grid{mask-image:none;opacity:.25}[data-variant=brutalist] .modal-hero{background:var(--accent)}[data-variant=brutalist] .modal-mark{color:var(--ink)}[data-variant=brutalist] .stack-list li,[data-variant=brutalist] .proj-tags li,[data-variant=brutalist] .foot-top{border-radius:0;font-weight:600}[data-theme=light]{--bg: #f7f4ee;--bg-alt: #efebe2;--ink: #1a202c;--ink-dim: rgba(26, 32, 44, .76);--ink-faint: rgba(26, 32, 44, .5);--line: rgba(26, 32, 44, .12);--card: #ffffff;--accent: #2d7a4d;--accent-ink: #ffffff}[data-theme=light] .proj-thumb,[data-theme=light] .modal-hero{background:oklch(.92 .03 var(--hue, 30))}[data-theme=light] .thumb-grid{background-image:linear-gradient(to right,rgba(26,32,44,.08) 1px,transparent 1px),linear-gradient(to bottom,rgba(26,32,44,.08) 1px,transparent 1px)}[data-theme=light] .nav{backdrop-filter:blur(20px) saturate(140%) contrast(90%);-webkit-backdrop-filter:blur(20px) saturate(140%) contrast(90%)}[data-theme=light] .portrait-img{filter:contrast(96%) brightness(102%) saturate(96%)}.scroll-progress{position:fixed;top:0;left:0;right:0;z-index:60;height:2px;pointer-events:none;background:transparent}.scroll-progress-fill{display:block;width:100%;height:100%;background:var(--accent);transform-origin:left;transform:scaleX(0);transition:transform 80ms linear;will-change:transform}.clip-rev{display:inline-block}.clip-rev-line{display:block;overflow:hidden;line-height:inherit;padding-bottom:.22em;margin-bottom:-.2em}.clip-rev-inner{display:block;will-change:transform}.marquee{position:relative;overflow:hidden;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:96px 0 0;mask-image:linear-gradient(to right,transparent 0,#000 8%,#000 92%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0,#000 8%,#000 92%,transparent 100%)}.marquee-track{display:inline-flex;white-space:nowrap;gap:48px;padding-left:48px;animation:marquee 30s linear infinite;will-change:transform}.marquee-item{display:inline-flex;align-items:center;gap:16px;font-family:var(--display);font-size:36px;font-weight:600;letter-spacing:-.025em;color:var(--ink);text-transform:var(--caps)}.marquee-glyph{display:inline-block;width:14px;height:14px;background:var(--accent);border-radius:50%;font-size:0;flex-shrink:0}@keyframes marquee{0%{transform:translateZ(0)}to{transform:translate3d(-33.333%,0,0)}}.proj-thumb{transform-style:preserve-3d;transform:perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));transition:transform .4s cubic-bezier(.2,.7,.1,1)}.proj-thumb:hover{transition:transform .15s ease-out}.proj-thumb .thumb-mark,.proj-thumb .thumb-label{transform:translateZ(28px)}.proj-thumb .thumb-grid{transform:translateZ(8px)}.sec-head{position:relative}.sec-rule{height:1px;background:var(--line);align-self:center;position:relative;overflow:hidden}.sec-rule:after{content:"";position:absolute;inset:0;background:var(--ink);transform-origin:left;transform:scaleX(0);transition:transform 1.4s cubic-bezier(.2,.7,.1,1) .15s}.sec-head.is-in .sec-rule:after{transform:scaleX(1)}.sec-num{transition:color .8s ease}.sec-head.is-in .sec-num{color:var(--ink)}.hero-title .clip-rev-line{padding-bottom:.18em;margin-bottom:-.13em}.btn-primary:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 color-mix(in oklab,var(--accent) 55%,transparent);pointer-events:none;animation:btnPulse 2.6s ease-in-out infinite}.btn-primary{position:relative;overflow:visible}@keyframes btnPulse{0%,to{box-shadow:0 0 color-mix(in oklab,var(--accent) 0%,transparent)}50%{box-shadow:0 0 0 10px color-mix(in oklab,var(--accent) 0%,transparent)}}.side-card{animation:floaty 8s ease-in-out infinite}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.chip{position:relative}[data-variant=terminal] .marquee-item{font-family:var(--mono);font-size:24px}[data-variant=terminal] .marquee-glyph{border-radius:0;width:10px;height:10px}[data-variant=terminal] .sec-rule:after{background:var(--accent)}[data-variant=brutalist] .marquee{border-top:2px solid var(--line);border-bottom:2px solid var(--line);background:var(--ink);color:var(--bg)}[data-variant=brutalist] .marquee-item{font-style:italic;font-weight:900;color:var(--bg);font-size:56px}[data-variant=brutalist] .marquee-glyph{background:var(--accent);border-radius:0}[data-variant=brutalist] .scroll-progress{height:4px}[data-variant=brutalist] .sec-rule{background:var(--line)}[data-variant=brutalist] .sec-rule:after{background:var(--accent)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.marquee-track{animation:none}}.intro{position:fixed;inset:0;z-index:200;background:#0e1117;display:block;overflow:hidden;opacity:1;transition:opacity .8s cubic-bezier(.2,.7,.1,1);pointer-events:auto}.intro.is-fading{opacity:0;pointer-events:none}.intro-video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#0e1117;display:block}@media(max-width:768px){.intro-video{object-fit:cover}}.intro-skip{position:absolute;right:24px;bottom:24px;display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid rgba(236,236,234,.18);border-radius:999px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;color:#ececeac7;letter-spacing:.06em;text-transform:uppercase;background:#0e11178c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease;opacity:0;animation:introSkipIn .6s ease 1.2s forwards}.intro-skip:hover{background:#ececea1f;color:#ececea;border-color:#ececea52}.intro-kbd{font-family:JetBrains Mono,monospace;font-size:10px;padding:2px 6px;border:1px solid rgba(236,236,234,.18);border-radius:4px;background:#ececea14}@keyframes introSkipIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.intro-skip{animation:none;opacity:1}}@media(max-width:1100px){:root{--container-x: 40px}.hero{grid-template-columns:1fr;gap:40px;min-height:0;padding-top:72px;padding-bottom:80px}.hero-body,.hero-side,.hero-scroll{grid-column:1;grid-row:auto}.sec-about .about-grid{grid-template-columns:1fr;gap:40px}.skills-wrap,.contact-grid{grid-template-columns:1fr;gap:32px}.work-grid{grid-template-columns:1fr}.modal-body{grid-template-columns:1fr;gap:24px}.nav-inner{gap:12px}.nav-links{overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;padding:3px;scrollbar-width:none;-ms-overflow-style:none;max-width:100%;flex-shrink:1}.nav-links::-webkit-scrollbar{display:none}.nav-link{padding:6px 10px;font-size:10.5px;flex-shrink:0}.nav-link .nav-num{display:none}.sec-head{grid-template-columns:40px auto 1fr auto;gap:16px}.sec-title{font-size:44px}.hero-meta{grid-template-columns:1fr;gap:12px}.hero-socials{grid-template-columns:1fr}.soc{border-right:0}.exp-row{grid-template-columns:1fr;gap:4px}}.proj-thumb{position:relative;overflow:hidden}.thumb-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55;transition:opacity .6s ease,transform .9s cubic-bezier(.2,.7,.1,1);z-index:1}.proj-btn:hover .thumb-image{opacity:.9;transform:scale(1.04)}.proj-thumb .thumb-label,.proj-thumb .thumb-mark,.proj-thumb .thumb-overlay{position:relative;z-index:2}.modal-hero{position:relative;overflow:hidden}.modal-hero-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}.hero{padding:28px var(--container-x) 24px;gap:14px 48px;min-height:calc(100vh - 60px);height:calc(100vh - 60px);grid-template-rows:auto 1fr auto}.hero-meta{padding-bottom:14px;gap:14px;font-size:clamp(10px,1vh,11px)}.eyebrow{margin-bottom:clamp(10px,1.6vh,22px);font-size:clamp(10px,1.1vh,12px)}.hero-title{font-size:clamp(32px,min(6.4vw,11.5vh),88px);line-height:.9;letter-spacing:-.04em}.hero-sub{margin-top:clamp(10px,1.8vh,22px);font-size:clamp(14px,min(1.3vw,1.9vh),18px);line-height:1.45}.hero-cta{margin-top:clamp(12px,2vh,22px)}.hero-socials{margin-top:clamp(16px,2.4vh,32px)}.hero-socials .soc{padding:clamp(8px,1.2vh,14px) 8px}.soc-v{font-size:clamp(12px,1.6vh,15px)}.hero-scroll{font-size:clamp(10px,1vh,11px)}.hero-side{grid-row:2;align-self:end}.side-card{padding:14px 14px 10px}.card-list{padding:10px 0;gap:6px}.card-list b{font-size:12px}@media(max-width:1100px){.hero{height:auto;min-height:calc(100vh - 60px);padding:24px var(--container-x) 32px;gap:16px;grid-template-columns:1fr}.hero-body,.hero-side,.hero-scroll{grid-column:1}.hero-side{display:none}.hero-title{font-size:clamp(34px,min(8.4vw,10vh),72px)}}@media(max-width:720px){:root{--container-x: 20px}.hero{padding-top:20px;padding-bottom:28px}.hero-title{font-size:clamp(30px,min(10vw,9vh),56px);letter-spacing:-.035em}.hero-sub{font-size:14.5px}.btn{padding:11px 16px;font-size:13px}.btn-lg{padding:14px 20px;font-size:14px}.nav-mark .mark-name{display:none}.nav-cta{padding:8px 14px;font-size:12px}.hero-socials{grid-template-columns:1fr 1fr}.hero-socials .soc:nth-child(3){grid-column:1 / -1;border-right:0}}@media(max-width:480px){.hero-title{font-size:clamp(28px,min(11vw,8.5vh),44px)}.hero-meta{font-size:10px}.hero-socials{grid-template-columns:1fr}.hero-socials .soc{border-right:0}.soc-v{font-size:13px}.sec-title{font-size:32px}.contact-actions{grid-template-columns:1fr;grid-template-rows:auto auto auto}.contact-actions .email-card{grid-column:1;grid-row:1}.socials-grid{grid-column:1;grid-row:2;border-right:1px solid var(--line);border-radius:var(--radius);grid-template-columns:1fr 1fr}.contact-actions .btn-primary{grid-column:1;grid-row:3;border-radius:var(--radius);border:1px solid var(--line);width:100%}.email-val{font-size:11px}.email-label{font-size:9px}}@media(min-height:1000px)and (min-width:1100px){.hero{height:860px;min-height:0}}@media(max-height:720px)and (min-width:1100px){.hero{padding-top:20px;padding-bottom:18px;gap:10px 48px}.hero-meta{padding-bottom:10px}.eyebrow{margin-bottom:10px}.hero-socials{margin-top:14px}.hero-cta{margin-top:12px}}.cursor-dot,.cursor-outline{position:fixed;top:0;left:0;transform:translate(-50%,-50%);border-radius:50%;z-index:9999;pointer-events:none;will-change:transform}.cursor-dot{width:8px;height:8px;background:var(--ink)}.cursor-outline{width:40px;height:40px;border:1px solid color-mix(in oklab,var(--ink) 50%,transparent);background:transparent;transition:width .2s ease,height .2s ease,background-color .2s ease,border-color .2s ease}.cursor-outline.is-hover{background:color-mix(in oklab,var(--ink) 10%,transparent);border-color:var(--accent)}@media(pointer:coarse){.cursor-dot,.cursor-outline{display:none}}.portrait{background:var(--bg-alt)}.portrait-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:75% 35%;display:block}.portrait-tag{z-index:2}.filter-bar--grouped{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-bottom:40px;padding-bottom:18px;border-bottom:1px solid var(--line)}.filter-bar--grouped .chip-all{font-weight:500}.filter-group{display:inline-flex;align-items:center;gap:10px;padding-left:18px;position:relative}.filter-group:before{content:"";position:absolute;left:0;top:50%;width:1px;height:16px;background:var(--line);transform:translateY(-50%)}.filter-group-label{font-family:var(--mono);font-size:10.5px;color:var(--ink-faint);letter-spacing:.12em;text-transform:uppercase;flex-shrink:0}.filter-group-chips{display:inline-flex;flex-wrap:wrap;gap:6px}.filter-bar--grouped .chip{padding:6px 12px;font-size:11px}@media(max-width:720px){.filter-bar--grouped{flex-direction:column;align-items:stretch;gap:14px}.filter-group{display:flex;flex-direction:column;align-items:stretch;padding-left:0;gap:8px}.filter-group:before{display:none}.filter-group-label{padding-top:0}.filter-group-chips{width:100%;flex-wrap:wrap}.filter-bar--grouped .chip-all{align-self:flex-start}}.ssr-nav{display:flex;align-items:center;justify-content:space-between;max-width:var(--container-w);margin:0 auto;padding:16px var(--container-x);border-bottom:1px solid var(--line)}.ssr-nav nav{display:flex;gap:18px;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-dim)}.ssr-nav nav a:hover{color:var(--ink)}.ssr-brand{font-family:var(--display);font-weight:600}.ssr-section{max-width:var(--container-w);margin:0 auto;padding:56px var(--container-x);border-bottom:1px solid var(--line)}.ssr-section h1{font-family:var(--display);font-size:clamp(36px,6vw,64px);font-weight:600;line-height:1;letter-spacing:-.035em;margin:16px 0}.ssr-section h2{font-family:var(--display);font-size:40px;font-weight:600;letter-spacing:-.02em;margin:0 0 20px}.ssr-section h3{font-family:var(--display);font-size:22px;font-weight:600;margin:24px 0 6px}.ssr-section h3 small{font-family:var(--mono);font-size:12px;color:var(--ink-faint);font-weight:400}.ssr-section p{color:var(--ink-dim);margin:8px 0;max-width:64ch}.ssr-section a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.ssr-eyebrow{font-family:var(--mono);font-size:12px;color:var(--ink-faint);letter-spacing:.08em;text-transform:uppercase}.ssr-lead{font-size:18px;color:var(--ink);max-width:60ch}.ssr-socials{display:flex;flex-direction:column;gap:6px;padding:16px 0;font-family:var(--mono);font-size:13px}.ssr-kv{display:grid;grid-template-columns:auto 1fr;gap:6px 24px;font-family:var(--mono);font-size:13px;max-width:60ch}.ssr-kv dt{color:var(--ink-faint)}.ssr-skills{display:flex;flex-wrap:wrap;gap:8px;font-family:var(--mono);font-size:12px}.ssr-skills li{padding:6px 10px;border:1px solid var(--line);border-radius:999px;color:var(--ink-dim)}footer{padding:40px var(--container-x);color:var(--ink-faint);font-family:var(--mono);font-size:12px;text-align:center}[data-perf=lite] .nav{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--bg)!important}[data-perf=lite] .cursor-dot,[data-perf=lite] .cursor-outline{display:none}[data-perf=lite] .dot-pulse{animation:none!important;box-shadow:none!important}[data-perf=lite] .scroll-bar:after{animation:none!important}[data-perf=lite] [style*="opacity: 0"],[data-perf=lite] [style*="opacity:0"]{opacity:1!important}[data-perf=lite] .clip-rev-inner,[data-perf=lite] .proj-btn:hover .proj-thumb,[data-perf=lite] .proj-btn:hover .thumb-image{transform:none!important}[data-perf=lite] body{cursor:auto!important}[data-perf=lite]{scroll-behavior:auto!important}.nav-hamburger{display:none;position:relative;width:44px;height:40px;border:1.5px solid color-mix(in oklab,var(--ink) 40%,transparent);border-radius:999px;align-items:center;justify-content:center;background:color-mix(in oklab,var(--ink) 6%,transparent);cursor:pointer;z-index:210;flex-shrink:0;transition:background .18s ease,border-color .18s ease}.nav-hamburger:hover{background:color-mix(in oklab,var(--ink) 12%,transparent);border-color:color-mix(in oklab,var(--ink) 60%,transparent)}.nav-hamburger span{position:absolute;left:50%;transform:translate(-50%);width:18px;height:2px;background:var(--ink);border-radius:2px;transition:transform .22s ease,opacity .18s ease,top .22s ease}.nav-hamburger span:nth-child(1){top:13px}.nav-hamburger span:nth-child(2){top:19px}.nav-hamburger span:nth-child(3){top:25px}.nav-hamburger.is-open span:nth-child(1){top:19px;transform:translate(-50%) rotate(45deg)}.nav-hamburger.is-open span:nth-child(2){opacity:0}.nav-hamburger.is-open span:nth-child(3){top:19px;transform:translate(-50%) rotate(-45deg)}.nav-drawer{position:fixed;inset:60px 0 0;z-index:200;background:#0e1117;background-color:var(--bg, #0e1117);border-top:1px solid var(--line);padding:24px var(--container-x) 32px;display:flex;flex-direction:column;gap:24px;transform:translateY(-12px);opacity:0;pointer-events:none;transition:transform .25s cubic-bezier(.2,.7,.1,1),opacity .2s ease;overflow-y:auto}.nav-drawer.is-open{transform:translateY(0);opacity:1;pointer-events:auto}.nav-drawer[hidden]{display:none}.nav-drawer-list{display:flex;flex-direction:column;gap:2px}.nav-drawer-link{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;width:100%;padding:18px 4px;border-bottom:1px solid var(--line);text-align:left;color:var(--ink)}.nav-drawer-num{font-family:var(--mono);font-size:12px;color:var(--ink-faint);letter-spacing:.06em}.nav-drawer-lbl{font-family:var(--display);font-size:28px;font-weight:600;letter-spacing:-.02em}.nav-drawer-arrow{font-size:18px;color:var(--ink-faint);transition:transform .18s ease,color .18s ease}.nav-drawer-link.is-active .nav-drawer-lbl{color:var(--accent)}.nav-drawer-link.is-active .nav-drawer-arrow{color:var(--accent);transform:translate(4px)}.nav-drawer-link:hover .nav-drawer-arrow{transform:translate(4px);color:var(--ink)}.nav-drawer-foot{display:inline-flex;align-items:center;gap:10px;padding:12px 18px;border:1px solid var(--line);border-radius:999px;align-self:flex-start;font-family:var(--mono);font-size:11px;color:var(--ink-dim);letter-spacing:.04em;text-transform:uppercase}@media(max-width:720px){.nav-inner{gap:10px}.nav-links{display:none;margin:0}.nav-cta{padding:7px 12px;font-size:11px}.nav-hamburger{display:inline-flex}}@media(min-width:721px){.nav-drawer{display:none!important}}@media(max-width:720px){.foot{flex-direction:column;align-items:center;text-align:center;gap:20px;padding:28px var(--container-x);margin-top:40px}.foot-l,.foot-r{justify-content:center;flex-wrap:wrap}.foot-r{flex-direction:column;gap:6px}.foot-top{font-size:11px;padding:9px 16px}}[data-variant=editorial] .hero:before{content:"";position:absolute;top:-120px;left:-200px;width:700px;height:700px;background:radial-gradient(ellipse at center,color-mix(in oklab,var(--clr-green) 18%,transparent) 0%,color-mix(in oklab,var(--clr-blue) 8%,transparent) 45%,transparent 70%);pointer-events:none;z-index:0;filter:blur(40px)}[data-variant=editorial] .hero>*{position:relative;z-index:1}[data-variant=editorial] .hero-title em{background:linear-gradient(110deg,var(--clr-green) 0%,var(--clr-blue) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}[data-variant=editorial] .caret{background:var(--clr-green);-webkit-background-clip:unset;background-clip:unset;-webkit-text-fill-color:unset}[data-variant=editorial] .scroll-progress-fill{background:linear-gradient(to right,var(--clr-green),var(--clr-blue))}.sec-about .sec-num{color:var(--clr-blue)!important}[data-variant=editorial] .sec-about .sec-rule:after{background:var(--clr-blue)}[data-variant=editorial] .sec-about .bio-stats b{color:var(--clr-blue)}[data-variant=editorial] .sec-about .bio-stats li:nth-child(2) b{color:var(--clr-green)}[data-variant=editorial] .sec-about .bio-stats li:nth-child(3) b{color:var(--clr-orange)}.sec-skills .sec-num{color:var(--clr-orange)!important}[data-variant=editorial] .sec-skills .sec-rule:after{background:var(--clr-orange)}[data-variant=editorial] .skills-group:nth-child(1) .skill-fill{background:var(--clr-blue)}[data-variant=editorial] .skills-group:nth-child(2) .skill-fill{background:var(--clr-orange)}[data-variant=editorial] .skills-group:nth-child(3) .skill-fill{background:var(--clr-purple)}[data-variant=editorial] .skills-group:nth-child(4) .skill-fill{background:var(--clr-green)}[data-variant=editorial] .skill-row:hover .skill-fill{filter:brightness(1.2)}[data-variant=editorial] .skills-group:nth-child(1) .grp-tag{color:var(--clr-blue)}[data-variant=editorial] .skills-group:nth-child(2) .grp-tag{color:var(--clr-orange)}[data-variant=editorial] .skills-group:nth-child(3) .grp-tag{color:var(--clr-purple)}[data-variant=editorial] .skills-group:nth-child(4) .grp-tag{color:var(--clr-green)}.sec-exp .sec-num{color:var(--clr-purple)!important}[data-variant=editorial] .sec-exp .sec-rule:after{background:var(--clr-purple)}[data-variant=editorial] .exp-what{color:var(--ink)}[data-variant=editorial] .exp-row:hover .exp-what{color:var(--clr-purple);transition:color .2s ease}.sec-work .sec-num{color:var(--clr-orange)!important}[data-variant=editorial] .sec-work .sec-rule:after{background:var(--clr-orange)}[data-variant=editorial] .proj:nth-child(4n+1) .proj-tags li{border-color:color-mix(in oklab,var(--clr-blue) 55%,transparent);color:var(--clr-blue)}[data-variant=editorial] .proj:nth-child(4n+2) .proj-tags li{border-color:color-mix(in oklab,var(--clr-orange) 55%,transparent);color:var(--clr-orange)}[data-variant=editorial] .proj:nth-child(4n+3) .proj-tags li{border-color:color-mix(in oklab,var(--clr-purple) 55%,transparent);color:var(--clr-purple)}[data-variant=editorial] .proj:nth-child(4n+4) .proj-tags li{border-color:color-mix(in oklab,var(--clr-green) 55%,transparent);color:var(--clr-green)}[data-variant=editorial] .chip.is-on{background:var(--clr-blue);border-color:var(--clr-blue);color:#0e1117}.sec-contact .sec-num{color:var(--clr-green)!important}[data-variant=editorial] .sec-contact .sec-rule:after{background:var(--clr-green)}[data-variant=editorial] .contact-title em{color:var(--clr-green)}[data-variant=editorial] .marquee-glyph:nth-child(4n+1){background:var(--clr-green)}[data-variant=editorial] .marquee-glyph:nth-child(4n+2){background:var(--clr-blue)}[data-variant=editorial] .marquee-glyph:nth-child(4n+3){background:var(--clr-orange)}[data-variant=editorial] .marquee-glyph:nth-child(4n+4){background:var(--clr-purple)}[data-variant=editorial] .nav-link.is-active,[data-variant=editorial] .btn-primary{background:var(--clr-green);color:#0e1117}[data-variant=editorial] .btn-primary:hover{background:var(--clr-blue);color:#0e1117}[data-variant=editorial] .soc:nth-child(1):hover .soc-arrow{color:var(--clr-blue)}[data-variant=editorial] .soc:nth-child(2):hover .soc-arrow{color:var(--clr-orange)}[data-variant=editorial] .soc:nth-child(3):hover .soc-arrow{color:var(--clr-purple)}[data-variant=editorial] .email-val:hover{color:var(--clr-blue)}[data-variant=editorial] .email-state.is-on{color:var(--clr-green)}[data-theme=light][data-variant=editorial] .hero:before{background:radial-gradient(ellipse at center,color-mix(in oklab,var(--clr-green) 12%,transparent) 0%,color-mix(in oklab,var(--clr-blue) 6%,transparent) 45%,transparent 70%)}[data-theme=light][data-variant=editorial] .hero-title em{background:linear-gradient(110deg,var(--clr-green) 0%,var(--clr-blue) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}[data-theme=light] .sec-about .bio-stats b{color:var(--clr-blue)}[data-theme=light] .sec-about .bio-stats li:nth-child(2) b{color:#2d7a4d}[data-theme=light] .sec-about .bio-stats li:nth-child(3) b{color:#c06030}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-new(root){clip-path:circle(0px at var(--ripple-x, 50%) var(--ripple-y, 50%));animation:theme-ripple .5s cubic-bezier(.4,0,.2,1) forwards}::view-transition-old(root){z-index:0}::view-transition-new(root){z-index:1}@keyframes theme-ripple{0%{clip-path:circle(0px at var(--ripple-x, 50%) var(--ripple-y, 50%))}to{clip-path:circle(var(--ripple-r, 100vmax) at var(--ripple-x, 50%) var(--ripple-y, 50%))}}@media(prefers-reduced-motion:reduce){::view-transition-new(root){animation:none;clip-path:none}}[data-theme=dark] body:after{content:"";position:fixed;inset:-100%;width:300%;height:300%;z-index:9000;pointer-events:none;opacity:.038;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:200px 200px;animation:grain 8s steps(10) infinite;will-change:transform}@keyframes grain{0%{transform:translate(0)}10%{transform:translate(-5%,-5%)}20%{transform:translate(-10%,5%)}30%{transform:translate(5%,-10%)}40%{transform:translate(-5%,15%)}50%{transform:translate(-10%,5%)}60%{transform:translate(15%)}70%{transform:translateY(10%)}80%{transform:translate(-15%)}90%{transform:translate(10%,5%)}}@media(prefers-reduced-motion:reduce){[data-theme=dark] body:after{animation:none}}.cursor-spotlight{position:fixed;inset:0;pointer-events:none;z-index:2;background:radial-gradient(circle 520px at var(--cx, -9999px) var(--cy, -9999px),rgba(255,255,255,.055) 0%,transparent 70%);transition:opacity .5s ease;opacity:0}[data-theme=dark] .cursor-spotlight{opacity:1}
