@layer tokens{:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--tile-black:#05070b;--canvas:#0a0d14;--tile-3:#0e1119;--tile-1:#131822;--tile-2:#1a2030;--surface-elevated:#222a3a;--hairline:#ffffff14;--hairline-strong:#ffffff29;--ink:#f5f7fa;--body:#c6cfdb;--mute:#8e98a8;--ash:#66707f;--action:#2997ff;--action-soft:#2997ff24;--action-glow:#2997ff2e;--primary:#fff;--primary-hover:#e9edf3;--on-primary:#05070b;--success:#59d499;--danger:#ff6161;--ill-backdrop:radial-gradient(60% 55% at 50% 42%, #3a4763 0%, #2c3548 55%, #1a2030 100%);--ill-coffee:#7a4b2e;--ill-sheen:#2997ff73;--steam:#f5f7fa52;--star:#f5f7fa8c;--ill-ink:#151a24;--ill-dark:#23272d;--ill-cream:#f3eedb;--ill-wood:#9c6840;--radius-card:18px;--radius-input:8px;--radius-chip:6px;--radius-pill:999px;--gutter:20px;--container:1200px;--section-y:64px;--nav-h:48px;--ease-out:cubic-bezier(.2, .7, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .6, 1);--ease-fall:cubic-bezier(.4, 0, .6, 1);--dur-fast:.15s;--dur-base:.26s;--dur-reveal:.5s;--dur-slow:.6s;--font-sans:"Inter", "Inter Fallback", -apple-system, "SF Pro Display", "Segoe UI", Roboto, system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace}@media (min-width:768px){:root{--gutter:40px;--section-y:96px}}@media (min-width:1080px){:root{--gutter:48px;--section-y:112px}}}@layer base{@font-face{font-family:Inter;src:url(/assets/inter-latin-var-DcPqVWrJ.woff2)format("woff2-variations"),url(/assets/inter-latin-var-DcPqVWrJ.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;src:local(Arial);size-adjust:107.6%;ascent-override:90%;descent-override:22.4%;line-gap-override:0%}*,:before,:after{box-sizing:border-box}*{margin:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:72px}body{background:var(--canvas);color:var(--body);font-family:var(--font-sans);font-feature-settings:"ss03", "cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;font-size:17px;line-height:1.5;overflow-x:clip}@media (max-width:359px){body{font-size:16px}}img,svg,video{max-width:100%;display:block}img{height:auto}ul,ol{padding:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}a{color:var(--action);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}[hidden]{display:none!important}::selection{background:var(--action);color:var(--on-primary)}:focus-visible{outline:2px solid var(--action);outline-offset:3px;border-radius:4px}html{scrollbar-color:var(--surface-elevated) var(--canvas)}.container{width:min(100% - 2 * var(--gutter), var(--container));margin-inline-start:auto;margin-inline-end:auto}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip{z-index:100;border-radius:var(--radius-pill);background:var(--primary);color:var(--on-primary);transition:top var(--dur-fast);padding:10px 16px;font-weight:500;position:absolute;top:-100px;left:16px}.skip:focus{text-decoration:none;top:8px}h1,h2,h3,h4{color:var(--ink);letter-spacing:-.01em;font-weight:600}.display-xl{letter-spacing:-.03em;text-wrap:balance;font-size:clamp(44px,8vw,96px);font-weight:600;line-height:1.02}.display-lg{letter-spacing:-.02em;text-wrap:balance;font-size:clamp(34px,5vw,60px);font-weight:600;line-height:1.07}.heading-xl{letter-spacing:-.015em;font-size:30px;font-weight:600;line-height:1.15}.heading-lg{letter-spacing:-.01em;font-size:24px;font-weight:600;line-height:1.2}.heading-md{font-size:20px;font-weight:600;line-height:1.3}.lead{color:var(--body);text-wrap:pretty;font-size:21px;line-height:1.4}.body{color:var(--body);text-wrap:pretty;max-width:62ch;font-size:17px;line-height:1.55}.body-sm{color:var(--body);font-size:15px;line-height:1.5}.caption{color:var(--mute);font-size:14px;line-height:1.43}.eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--mute);font-size:12px;font-weight:500;line-height:1.3}.mono{font-family:var(--font-mono);font-feature-settings:"tnum";font-size:.92em}time,.timeline__period,.certs td.mono,.edu__year{font-feature-settings:"tnum"}.link{color:var(--ink);font-weight:500}.link:hover{color:var(--action)}.arrow{color:var(--action);transition:transform var(--dur-fast) var(--ease-out);margin-left:.35em;display:inline-block}a:hover .arrow{transform:translate(2px,-2px)}}@layer components{.tile{padding-block:var(--section-y);position:relative}.tile--black{background:var(--tile-black)}.tile--canvas{background:var(--canvas)}.tile--1{background:var(--tile-1)}.tile--2{background:var(--tile-2)}.tile--3{background:var(--tile-3)}.tile+.tile{border-top:1px solid var(--hairline)}.btn{border-radius:var(--radius-pill);white-space:nowrap;min-width:9ch;min-height:44px;transition:background var(--dur-fast), color var(--dur-fast), border-color var(--dur-fast), transform var(--dur-fast);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:15px;font-weight:500;line-height:1;display:inline-flex}.btn:hover{text-decoration:none}.btn--primary{background:var(--primary);color:var(--on-primary)}.btn--primary:hover{background:var(--primary-hover)}.btn--primary .arrow{color:var(--on-primary)}.btn--secondary{color:var(--ink);border-color:var(--hairline-strong);background:0 0}.btn--secondary:hover{background:var(--surface-elevated);border-color:#ffffff3d}.btn--sm{min-height:36px;padding:8px 14px;font-size:14px}.btn svg{fill:currentColor;flex:none}.keycap{border:1px solid var(--hairline-strong);background:var(--surface-elevated);height:24px;color:var(--body);font-family:var(--font-mono);border-radius:5px;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;line-height:1;display:inline-flex;box-shadow:inset 0 -1.5px #00000059}.badge{background:var(--surface-elevated);height:24px;color:var(--body);letter-spacing:.02em;border-radius:4px;align-items:center;padding:0 8px;font-size:12px;font-weight:500;display:inline-flex}.badge--action{background:var(--action-soft);color:var(--action)}.chips{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.chip{border:1px solid var(--hairline);border-radius:var(--radius-chip);background:var(--surface-elevated);height:32px;color:var(--body);white-space:nowrap;transition:border-color var(--dur-fast), color var(--dur-fast);align-items:center;gap:8px;padding:0 10px;font-size:14px;font-weight:500;line-height:1;display:inline-flex}.chip__icon{fill:currentColor;color:#ffffffb8;width:18px;height:18px;transition:color var(--dur-fast)}.chip__dot{background:var(--action);border-radius:50%;flex:none;width:6px;height:6px}.chip:hover{border-color:var(--hairline-strong);color:var(--ink)}.chip:hover .chip__icon{color:var(--action)}.chips--inline .chip{height:28px;padding:0 8px;font-size:13px}.chips--inline .chip__icon{width:15px;height:15px}.window{border-radius:var(--radius-card);border:1px solid var(--hairline-strong);background:var(--tile-2);isolation:isolate;position:relative;overflow:hidden}.window:before{content:"";border-radius:inherit;box-shadow:0 16px 40px var(--action-glow);pointer-events:none;z-index:-1;position:absolute;top:0;bottom:0;left:0;right:0}.window__bar{border-bottom:1px solid var(--hairline);background:#05070b59;align-items:center;gap:12px;height:40px;padding:0 14px;display:flex}.window__dots{gap:6px;display:inline-flex}.window__dots i{background:var(--hairline-strong);border-radius:50%;width:10px;height:10px}.window__title{color:var(--mute);font-size:12px}.window__status{border-top:1px solid var(--hairline);background:#05070b59;align-items:center;gap:10px;min-height:44px;padding:8px 12px;display:flex}.card{border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--tile-1);transition:border-color var(--dur-base), background var(--dur-base);flex-direction:column;display:flex;overflow:hidden}.card:hover{border-color:var(--hairline-strong)}.card__media{aspect-ratio:16/10;background:var(--surface-elevated);border-bottom:1px solid var(--hairline);position:relative;overflow:hidden}.card__media img{object-fit:cover;width:100%;height:100%;transition:transform .4s var(--ease-out)}.card:hover .card__media img{transform:scale(1.02)}.card__media--svg{background:var(--tile-2);place-items:center;display:grid}.card__media--svg svg{width:100%;height:100%}.card__media-overlay{pointer-events:none;background:#05070b33;position:absolute;top:0;bottom:0;left:0;right:0}.card__body{flex-direction:column;flex:1;gap:12px;padding:24px;display:flex}.card__body .body{font-size:16px}.card__actions{flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:8px;display:flex}.actions{gap:10px;list-style:none;display:grid}.action{border:1px solid var(--hairline);background:var(--tile-1);min-height:64px;color:var(--ink);transition:border-color var(--dur-fast), background var(--dur-fast);border-radius:12px;grid-template-columns:auto 1fr auto auto;align-items:center;gap:14px;padding:12px 16px;display:grid}.action:hover{border-color:var(--hairline-strong);background:var(--surface-elevated);text-decoration:none}.action__icon{color:var(--body);background:var(--action-soft);border-radius:8px;place-items:center;width:36px;height:36px;display:grid}.action__icon svg{fill:currentColor}.action:hover .action__icon{color:var(--action)}.action__text{gap:2px;min-width:0;display:grid}.action__label{color:var(--ink);font-weight:500}.action__value{color:var(--mute);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.action__hint{color:var(--mute);font-size:12px}.action__arrow{color:var(--action);font-size:18px}@media (max-width:479px){.action__hint{display:none}}.facts{border-top:1px solid var(--hairline);gap:0;margin-top:8px;display:grid}.facts>div{border-bottom:1px solid var(--hairline);grid-template-columns:110px 1fr;gap:12px;padding:10px 0;font-size:14px;display:grid}.facts dt{color:var(--mute)}.facts dd{color:var(--body)}.toast{z-index:80;border-radius:var(--radius-pill);background:var(--surface-elevated);color:var(--ink);border:1px solid var(--hairline-strong);padding:10px 16px;font-size:14px;font-weight:500;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0006}.social{gap:6px;list-style:none;display:flex}.social a{width:40px;height:40px;color:var(--body);border-radius:10px;place-items:center;display:grid}.social a:hover{color:var(--action);background:var(--action-soft);text-decoration:none}.social svg{fill:currentColor}.bullets{color:var(--body);gap:8px;max-width:70ch;font-size:16px;list-style:none;display:grid}.bullets li{padding-left:18px;position:relative}.bullets li:before{content:"";background:var(--action);border-radius:50%;width:6px;height:6px;position:absolute;top:.65em;left:0}}@layer sections{.scene__stars--a{background-image:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201000%201250'%20preserveAspectRatio='none'><g%20fill='%23f5f7fa'><circle%20cx='639.4'%20cy='17.2'%20r='2.2'/><circle%20cx='736.5'%20cy='465.2'%20r='2.2'/><circle%20cx='892.2'%20cy='59.8'%20r='2.2'/><circle%20cx='421.9'%20cy='20.5'%20r='2.2'/><circle%20cx='218.6'%20cy='347.4'%20r='2.2'/><circle%20cx='26.5'%20cy='136.7'%20r='2.2'/><circle%20cx='649.9'%20cy='374.6'%20r='2.2'/><circle%20cx='220.4'%20cy='405.1'%20r='2.2'/><circle%20cx='809.4'%20cy='4.5'%20r='2.2'/><circle%20cx='805.8'%20cy='480.0'%20r='2.2'/><circle%20cx='957.2'%20cy='231.4'%20r='2.2'/><circle%20cx='92.7'%20cy='66.5'%20r='2.2'/><circle%20cx='847.5'%20cy='415.1'%20r='2.2'/><circle%20cx='807.1'%20cy='501.7'%20r='2.2'/><circle%20cx='536.2'%20cy='669.0'%20r='2.2'/><circle%20cx='378.5'%20cy='379.5'%20r='2.2'/><circle%20cx='829.4'%20cy='425.2'%20r='2.2'/><circle%20cx='861.7'%20cy='396.9'%20r='2.2'/><circle%20cx='704.6'%20cy='31.5'%20r='2.2'/><circle%20cx='79.8'%20cy='160.0'%20r='2.2'/><circle%20cx='101.0'%20cy='191.1'%20r='2.2'/><circle%20cx='635.7'%20cy='250.8'%20r='2.2'/><circle%20cx='267.0'%20cy='644.0'%20r='2.2'/><circle%20cx='648.0'%20cy='418.8'%20r='2.2'/><circle%20cx='171.1'%20cy='501.3'%20r='2.2'/><circle%20cx='163.4'%20cy='260.9'%20r='2.2'/><circle%20cx='989.5'%20cy='440.0'%20r='2.2'/><circle%20cx='556.9'%20cy='470.7'%20r='2.2'/><circle%20cx='842.9'%20cy='533.5'%20r='2.2'/><circle%20cx='229.0'%20cy='22.1'%20r='2.2'/><circle%20cx='211.0'%20cy='648.3'%20r='2.2'/><circle%20cx='876.4'%20cy='216.3'%20r='2.2'/><circle%20cx='655.4'%20cy='272.0'%20r='2.2'/><circle%20cx='914.5'%20cy='315.5'%20r='2.2'/><circle%20cx='561.4'%20cy='180.6'%20r='2.2'/><circle%20cx='584.6'%20cy='617.3'%20r='2.2'/><circle%20cx='997.5'%20cy='350.3'%20r='2.2'/><circle%20cx='90.9'%20cy='32.4'%20r='2.2'/><circle%20cx='109.6'%20cy='431.4'%20r='2.2'/><circle%20cx='792.1'%20cy='290.2'%20r='2.2'/><circle%20cx='63.5'%20cy='262.4'%20r='2.2'/><circle%20cx='971.1'%20cy='591.8'%20r='2.2'/><circle%20cx='11.5'%20cy='495.5'%20r='2.2'/><circle%20cx='681.7'%20cy='369.2'%20r='2.2'/><circle%20cx='266.8'%20cy='440.7'%20r='2.2'/><circle%20cx='111.6'%20cy='298.9'%20r='2.2'/><circle%20cx='453.7'%20cy='655.7'%20r='2.2'/><circle%20cx='875.9'%20cy='181.1'%20r='2.2'/><circle%20cx='500.6'%20cy='122.8'%20r='2.2'/><circle%20cx='912.6'%20cy='598.5'%20r='2.2'/><circle%20cx='298.4'%20cy='439.3'%20r='2.2'/><circle%20cx='609.0'%20cy='105.1'%20r='2.2'/><circle%20cx='762.5'%20cy='370.8'%20r='2.2'/><circle%20cx='0.6'%20cy='222.9'%20r='2.2'/><circle%20cx='19.5'%20cy='638.8'%20r='2.2'/><circle%20cx='878.7'%20cy='571.8'%20r='2.2'/><circle%20cx='878.0'%20cy='651.0'%20r='2.2'/><circle%20cx='85.7'%20cy='334.1'%20r='2.2'/><circle%20cx='69.2'%20cy='522.9'%20r='2.2'/><circle%20cx='765.8'%20cy='88.3'%20r='2.2'/><circle%20cx='475.3'%20cy='378.0'%20r='2.2'/><circle%20cx='265.1'%20cy='599.8'%20r='2.2'/><circle%20cx='423.1'%20cy='145.6'%20r='2.2'/><circle%20cx='539.3'%20cy='501.8'%20r='2.2'/><circle%20cx='438.1'%20cy='355.8'%20r='2.2'/><circle%20cx='121.0'%20cy='154.5'%20r='2.2'/><circle%20cx='338.1'%20cy='404.5'%20r='2.2'/><circle%20cx='71.0'%20cy='433.9'%20r='2.2'/><circle%20cx='228.9'%20cy='622.5'%20r='2.2'/><circle%20cx='859.6'%20cy='48.7'%20r='2.2'/><circle%20cx='238.0'%20cy='459.9'%20r='2.2'/><circle%20cx='935.5'%20cy='392.6'%20r='2.2'/><circle%20cx='472.7'%20cy='539.4'%20r='2.2'/><circle%20cx='807.5'%20cy='130.9'%20r='2.2'/><circle%20cx='423.6'%20cy='321.1'%20r='2.2'/><circle%20cx='984.2'%20cy='67.7'%20r='2.2'/><circle%20cx='402.6'%20cy='233.3'%20r='2.2'/><circle%20cx='190.2'%20cy='308.4'%20r='2.2'/><circle%20cx='421.9'%20cy='191.5'%20r='2.2'/><circle%20cx='249.8'%20cy='634.7'%20r='2.2'/><circle%20cx='443.1'%20cy='592.2'%20r='2.2'/><circle%20cx='550.3'%20cy='34.8'%20r='2.2'/><circle%20cx='999.3'%20cy='574.8'%20r='2.2'/><circle%20cx='969.0'%20cy='636.9'%20r='2.2'/><circle%20cx='848.7'%20cy='114.3'%20r='2.2'/><circle%20cx='485.6'%20cy='147.0'%20r='2.2'/><circle%20cx='401.0'%20cy='40.3'%20r='2.2'/><circle%20cx='379.0'%20cy='677.4'%20r='2.2'/><circle%20cx='265.2'%20cy='539.0'%20r='2.2'/><circle%20cx='455.0'%20cy='290.8'%20r='2.2'/><circle%20cx='957.3'%20cy='684.4'%20r='2.2'/><circle%20cx='555.8'%20cy='493.9'%20r='2.2'/><circle%20cx='154.8'%20cy='204.0'%20r='2.2'/><circle%20cx='968.7'%20cy='398.2'%20r='2.2'/><circle%20cx='57.2'%20cy='401.6'%20r='2.2'/><circle%20cx='502.9'%20cy='586.2'%20r='2.2'/><circle%20cx='157.4'%20cy='660.5'%20r='2.2'/><circle%20cx='80.1'%20cy='127.8'%20r='2.2'/><circle%20cx='595.0'%20cy='464.2'%20r='2.2'/><circle%20cx='890.3'%20cy='169.3'%20r='2.2'/><circle%20cx='594.5'%20cy='425.8'%20r='2.2'/><circle%20cx='419.2'%20cy='401.3'%20r='2.2'/><circle%20cx='522.8'%20cy='642.6'%20r='2.2'/><circle%20cx='204.3'%20cy='492.4'%20r='2.2'/><circle%20cx='238.7'%20cy='272.1'%20r='2.2'/><circle%20cx='671.7'%20cy='206.2'%20r='2.2'/><circle%20cx='316.2'%20cy='516.9'%20r='2.2'/><circle%20cx='72.5'%20cy='315.1'%20r='2.2'/><circle%20cx='998.5'%20cy='684.8'%20r='2.2'/><circle%20cx='880.9'%20cy='604.5'%20r='2.2'/><circle%20cx='833.7'%20cy='483.7'%20r='2.2'/><circle%20cx='611.7'%20cy='678.7'%20r='2.2'/><circle%20cx='654.0'%20cy='5.4'%20r='2.2'/><circle%20cx='817.1'%20cy='205.8'%20r='2.2'/><circle%20cx='663.4'%20cy='645.5'%20r='2.2'/><circle%20cx='134.3'%20cy='79.4'%20r='2.2'/><circle%20cx='107.0'%20cy='380.3'%20r='2.2'/><circle%20cx='272.3'%20cy='415.8'%20r='2.2'/><circle%20cx='717.6'%20cy='140.0'%20r='2.2'/><circle%20cx='634.2'%20cy='181.5'%20r='2.2'/></g></svg>")}.scene__stars--b{background-image:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201000%201250'%20preserveAspectRatio='none'><g%20fill='%23f5f7fa'><circle%20cx='38.6'%20cy='478.7'%20r='3.2'/><circle%20cx='143.9'%20cy='318.0'%20r='3.2'/><circle%20cx='671.6'%20cy='545.2'%20r='3.2'/><circle%20cx='453.2'%20cy='342.6'%20r='3.2'/><circle%20cx='19.2'%20cy='297.3'%20r='3.2'/><circle%20cx='372.4'%20cy='585.9'%20r='3.2'/><circle%20cx='547.0'%20cy='519.3'%20r='3.2'/><circle%20cx='434.1'%20cy='121.1'%20r='3.2'/><circle%20cx='850.9'%20cy='563.9'%20r='3.2'/><circle%20cx='375.9'%20cy='65.8'%20r='3.2'/><circle%20cx='512.4'%20cy='341.0'%20r='3.2'/><circle%20cx='772.3'%20cy='410.6'%20r='3.2'/><circle%20cx='506.7'%20cy='395.4'%20r='3.2'/><circle%20cx='376.9'%20cy='33.6'%20r='3.2'/><circle%20cx='61.2'%20cy='647.6'%20r='3.2'/><circle%20cx='839.1'%20cy='203.6'%20r='3.2'/><circle%20cx='888.8'%20cy='359.0'%20r='3.2'/><circle%20cx='103.0'%20cy='588.3'%20r='3.2'/><circle%20cx='584.4'%20cy='641.3'%20r='3.2'/><circle%20cx='679.3'%20cy='64.7'%20r='3.2'/><circle%20cx='622.7'%20cy='541.0'%20r='3.2'/><circle%20cx='898.9'%20cy='227.8'%20r='3.2'/><circle%20cx='528.9'%20cy='482.0'%20r='3.2'/><circle%20cx='166.8'%20cy='583.2'%20r='3.2'/><circle%20cx='780.9'%20cy='34.4'%20r='3.2'/><circle%20cx='591.4'%20cy='253.0'%20r='3.2'/><circle%20cx='186.0'%20cy='415.6'%20r='3.2'/><circle%20cx='969.2'%20cy='379.5'%20r='3.2'/><circle%20cx='113.3'%20cy='340.3'%20r='3.2'/><circle%20cx='779.1'%20cy='656.7'%20r='3.2'/><circle%20cx='715.2'%20cy='28.4'%20r='3.2'/><circle%20cx='966.6'%20cy='413.8'%20r='3.2'/><circle%20cx='83.6'%20cy='87.4'%20r='3.2'/><circle%20cx='86.2'%20cy='457.1'%20r='3.2'/><circle%20cx='154.1'%20cy='555.1'%20r='3.2'/><circle%20cx='108.9'%20cy='367.9'%20r='3.2'/><circle%20cx='443.1'%20cy='26.1'%20r='3.2'/><circle%20cx='2.5'%20cy='621.2'%20r='3.2'/><circle%20cx='976.6'%20cy='85.5'%20r='3.2'/><circle%20cx='734.6'%20cy='680.1'%20r='3.2'/><circle%20cx='903.8'%20cy='608.5'%20r='3.2'/><circle%20cx='337.6'%20cy='493.1'%20r='3.2'/><circle%20cx='498.1'%20cy='644.4'%20r='3.2'/><circle%20cx='703.0'%20cy='580.0'%20r='3.2'/><circle%20cx='857.2'%20cy='265.1'%20r='3.2'/><circle%20cx='712.4'%20cy='63.9'%20r='3.2'/><circle%20cx='206.1'%20cy='643.9'%20r='3.2'/><circle%20cx='404.7'%20cy='471.0'%20r='3.2'/><circle%20cx='575.6'%20cy='179.0'%20r='3.2'/><circle%20cx='827.4'%20cy='485.5'%20r='3.2'/><circle%20cx='965.0'%20cy='460.4'%20r='3.2'/><circle%20cx='958.8'%20cy='152.6'%20r='3.2'/><circle%20cx='383.8'%20cy='680.3'%20r='3.2'/><circle%20cx='224.9'%20cy='315.1'%20r='3.2'/><circle%20cx='61.2'%20cy='18.7'%20r='3.2'/><circle%20cx='545.8'%20cy='421.6'%20r='3.2'/><circle%20cx='510.8'%20cy='628.8'%20r='3.2'/><circle%20cx='861.0'%20cy='653.9'%20r='3.2'/><circle%20cx='129.9'%20cy='525.4'%20r='3.2'/><circle%20cx='154.6'%20cy='4.2'%20r='3.2'/></g></svg>")}.nav{z-index:50;height:var(--nav-h);transition:background var(--dur-base), border-color var(--dur-base);background:0 0;border-bottom:1px solid #0000;position:sticky;top:0}.nav.is-scrolled{-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-bottom-color:var(--hairline);background:#05070bb8}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.nav.is-scrolled{background:#05070bf0}}.nav__inner{justify-content:space-between;align-items:center;gap:16px;height:100%;display:flex}.nav__brand{color:var(--ink);align-items:center;gap:10px;font-size:14px;font-weight:600;display:inline-flex}.nav__brand:hover{color:var(--action);text-decoration:none}.nav__name,.nav__links{display:none}.nav__links ul{gap:2px;list-style:none;display:flex}.nav__links a{border-radius:var(--radius-pill);color:var(--body);transition:background var(--dur-fast), color var(--dur-fast);padding:6px 12px;font-size:13px;font-weight:500;display:inline-block}.nav__links a:hover{color:var(--ink);background:#ffffff0d;text-decoration:none}.nav__links a[aria-current]{background:var(--surface-elevated);color:var(--ink)}.nav__tools{align-items:center;gap:10px;display:flex}.lang{border:1px solid var(--hairline);border-radius:var(--radius-pill);padding:2px;display:inline-flex}.lang__btn{border-radius:var(--radius-pill);letter-spacing:.04em;width:40px;height:30px;color:var(--mute);transition:background var(--dur-fast), color var(--dur-fast);font-size:12px;font-weight:600}.lang__btn[aria-pressed=true]{background:var(--surface-elevated);color:var(--ink)}.nav__cv{display:none}.nav__burger{border-radius:10px;width:40px;height:40px;position:relative}.nav__burger-bar{background:var(--ink);width:18px;height:2px;transition:transform var(--dur-base) var(--ease-out);border-radius:2px;margin-top:-1px;position:absolute;top:50%;left:11px}.nav__burger-bar:first-child{transform:translateY(-4px)}.nav__burger-bar:last-child{transform:translateY(4px)}.nav__burger[aria-expanded=true] .nav__burger-bar:first-child{transform:rotate(45deg)}.nav__burger[aria-expanded=true] .nav__burger-bar:last-child{transform:rotate(-45deg)}@media (min-width:768px){.nav__name{display:inline}.nav__links{display:block}.nav__cv{display:inline-flex}.nav__burger{display:none}@media (max-width:939px){.nav__name,.nav__cv{display:none}.nav__links a{padding-inline-start:8px;padding-inline-end:8px}}}.sheet{inset:var(--nav-h) 0 0 0;z-index:45;background:var(--tile-black);padding:24px var(--gutter) 32px;flex-direction:column;justify-content:space-between;display:flex;position:fixed;overflow:auto}.sheet__list{gap:6px;list-style:none;display:grid}.sheet__list a{letter-spacing:-.01em;color:var(--ink);border-radius:12px;padding:14px 12px;font-size:24px;font-weight:600;display:block}.sheet__list a:hover,.sheet__list a[aria-current]{background:var(--surface-elevated);text-decoration:none}.sheet__footer{padding-top:24px}html.sheet-open{overflow:hidden}html:not(.js) .nav__links{display:block}html:not(.js) .nav__links ul{flex-wrap:wrap}html:not(.js) .nav__burger{display:none}html:not(.js) :-webkit-any(.play,.dog-peek,.yard,.skills__lava,.hero__desk){display:none!important}html:not(.js) :is(.play,.dog-peek,.yard,.skills__lava,.hero__desk){display:none!important}html:not(.js) .card__media[data-lazy]{display:none}.hero{min-height:calc(100vh - var(--nav-h));min-height:calc(100svh - var(--nav-h));align-items:center;padding-block-start:56px;padding-block-end:56px;display:grid;overflow:hidden}.hero:before{content:"";pointer-events:none;background:radial-gradient(720px circle at 72% 32%, var(--action-glow), transparent 65%);position:absolute;top:0;bottom:0;left:0;right:0}.hero__grid{align-items:center;gap:28px;display:grid;position:relative}.hero__copy{gap:22px;display:grid}.hero__copy .eyebrow{color:var(--action)}.hero__tagline{max-width:34ch}.hero__actions{flex-wrap:wrap;gap:10px;display:flex}.hero__meta{gap:12px;display:grid}.hero__media{--hero-w:232px;order:-1;grid-template-columns:100%;place-items:center;row-gap:4px;display:grid;position:relative}.hero__disc{width:min(calc(var(--hero-w) * 1.04), 100%);aspect-ratio:1;background:var(--tile-1);border:1px solid var(--hairline);border-radius:50%;grid-area:1/1;position:relative}.hero__bust{width:var(--hero-w);grid-area:1/1;height:auto;position:relative}@media (min-width:768px){.hero__grid{grid-template-columns:1.1fr .9fr;gap:48px}.hero__media{--hero-w:clamp(300px, calc((100svh - 166px) / 1.5), 380px);order:0}}@media (min-width:1080px){.hero__media{--hero-w:clamp(340px, calc((100svh - 166px) / 1.5), 480px)}.hero__copy{gap:26px}}.about__grid{gap:40px;display:grid}.about__copy{align-content:start;gap:20px;display:grid}.about__media{justify-items:center;display:grid}.rig{width:100%;max-width:360px}@media (min-width:768px){.about__grid{grid-template-columns:1fr 1fr;align-items:start;gap:48px}.about__media{align-self:start;position:sticky;top:88px}}@media (min-width:1080px){.about__grid{grid-template-columns:520px 1fr;gap:96px}.rig{max-width:480px}}.timeline{gap:40px;margin-top:40px;list-style:none;display:grid;position:relative}.timeline__item{gap:12px;display:grid;position:relative}.timeline__when{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.timeline__period{color:var(--mute);font-size:14px}.timeline__what{gap:12px;display:grid}.timeline__org{color:var(--mute);font-weight:500}@media (min-width:768px){.timeline__item{grid-template-columns:200px 1fr;gap:32px}.timeline__when{align-content:start}}@media (min-width:1080px){.timeline{gap:56px}.timeline:before{content:"";background:var(--hairline-strong);width:1px;position:absolute;top:4px;bottom:4px;left:279px}.timeline__item{grid-template-columns:280px 1fr;gap:48px}.timeline__item:before{content:"";background:var(--action);width:9px;height:9px;box-shadow:0 0 0 4px var(--tile-2);transition:transform .2s var(--ease-out) .2s;border-radius:50%;position:absolute;top:8px;left:275px;transform:scale(.6)}.timeline__item.is-in:before{transform:scale(1)}}.projects__subtitle{max-width:40ch;margin-top:12px}.projects__grid{gap:24px;margin-top:40px;display:grid}.projects__grid .card:nth-child(2n of :not(.card--featured)){background:var(--tile-3)}.projects__grid .card.card--featured{background:var(--tile-black)}.projects__more{margin-top:32px}.card__kicker{color:var(--action)}.card__facts{color:var(--mute);letter-spacing:.02em;font-size:13px}.card__title--long{text-wrap:balance;font-size:clamp(24px,6.4vw,30px)}.card__actions .badge{height:auto;min-height:24px;padding-block-start:4px;padding-block-end:4px;line-height:1.3}.method{margin-top:56px}.method__list{gap:12px;margin-top:24px;list-style:none;display:grid}.method__item{border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--tile-1);grid-template-columns:52px 1fr;align-items:start;gap:14px;padding:16px;display:grid}.method__item>div{gap:4px;display:grid}.method__key{justify-content:center;width:52px;height:30px;font-size:13px}@media (min-width:768px){.method__list,.projects__grid{grid-template-columns:repeat(2,1fr)}.card--featured{background:var(--tile-black);grid-column:1/-1;grid-template-columns:1.1fr .9fr;display:grid}.projects__grid .card--featured+.card--featured{grid-template-columns:.9fr 1.1fr}.projects__grid .card--featured+.card--featured .card__media{border-right:0;border-left:1px solid var(--hairline);order:1}.projects__grid .card--featured+.card--featured+.card--featured{grid-template-columns:1.1fr .9fr}.projects__grid .card--featured+.card--featured+.card--featured .card__media{border-left:0;border-right:1px solid var(--hairline);order:0}.card--featured .card__media{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--hairline);min-height:320px}.card--featured .card__body{justify-content:center;padding:40px}}@media (min-width:1080px){.card--featured .card__media{min-height:420px}}.skills__subtitle{margin-top:12px}.skills__grid{gap:20px;margin-top:40px;display:grid}.skills__group{border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--tile-1);break-inside:avoid;align-content:start;gap:14px;padding:20px;display:grid}@media (min-width:768px){.skills__grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1080px){.skills__grid{grid-template-columns:repeat(3,1fr);gap:24px}}.education__grid{gap:48px;display:grid}.education__main{align-content:start;gap:20px;display:grid}.edu{gap:22px;margin-top:12px;list-style:none;display:grid}.edu__item{grid-template-columns:44px 1fr;align-items:start;gap:16px;display:grid}.edu__item>div{gap:6px;display:grid}.edu__year{justify-content:center;width:44px;height:30px;font-size:13px}.education__certs{border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--tile-2);align-content:start;gap:16px;padding:24px;display:grid}.certs{border-collapse:collapse;width:100%}.certs tr{border-bottom:1px solid var(--hairline);grid-template-columns:1fr auto;gap:2px 12px;padding:10px 0;display:grid}.certs tr:last-child{border-bottom:0}.certs th{text-align:left;color:var(--ink);grid-column:1/-1;font-size:15px;font-weight:500}.certs td{color:var(--mute);font-size:14px}@media (min-width:768px){.education__grid{grid-template-columns:1fr 1fr}}@media (min-width:1080px){.education__grid{grid-template-columns:7fr 5fr;gap:64px}}.press__inner{gap:24px;max-width:900px;display:grid}.press__quote{border:0;padding:0}.press__quote p{max-width:20ch;color:var(--ink)}.press__caption{max-width:56ch}.contact__grid{gap:40px;display:grid}.contact__copy{align-content:center;gap:20px;display:grid}.contact__media{justify-items:center;display:grid}.scene-window{width:100%;max-width:440px}.scene{aspect-ratio:4/5;background:radial-gradient(60% 55% at 55% 68%,#3a4763 0%,#2c3548 55%,#1a2030 100%);position:relative;overflow:hidden}.scene>*{position:absolute}.scene__stars{opacity:.55;z-index:0;background-repeat:no-repeat;background-size:100% 100%;top:0;bottom:0;left:0;right:0}.scene__cone{z-index:1;mix-blend-mode:screen;background:radial-gradient(60% 46% at 28.7% 15.2%,#2997ff38,#2997ff0f 45%,#0000 72%);top:0;bottom:0;left:0;right:0}.scene__lamp{z-index:2;width:100%;height:100%;top:0;bottom:0;left:0;right:0}.scene__body{z-index:3;width:100%;height:auto;top:20%;left:0}.scene__leg{z-index:4;transform-origin:30% 12%;width:35%;height:auto;top:56.2%;left:44.8%}.scene__hand{z-index:5;transform-origin:12% 88%;width:19.2%;height:auto;top:43.7%;left:43%}.scene__phone{z-index:6;opacity:.55;mix-blend-mode:screen;background:radial-gradient(closest-side, var(--action) 0%, #2997ff66 45%, transparent 100%);filter:blur(4px);width:8%;height:8%;top:35%;left:48.5%}@media (min-width:768px){.contact__grid{grid-template-columns:1fr 1fr;align-items:center;gap:48px}}@media (min-width:1080px){.contact__grid{grid-template-columns:560px 1fr;gap:96px}}.footer{padding-block-start:48px;padding-block-end:48px}.footer__grid{gap:24px;display:grid}.footer__brand{color:var(--mute);gap:8px;display:grid}.footer__privacy{color:var(--mute)}.footer__links,.footer__social{flex-wrap:wrap;gap:6px 18px;font-size:14px;list-style:none;display:flex}.footer__links a,.footer__social a{color:var(--body)}.footer__links a:hover,.footer__social a:hover{color:var(--action);text-decoration:none}@media (min-width:768px){.footer__grid{grid-template-columns:1.2fr 1fr 1fr;align-items:start}.footer__links,.footer__social{flex-direction:column}}}@layer rig{.rig__body{aspect-ratio:10/11;isolation:isolate;background:var(--ill-backdrop);position:relative;overflow:hidden}.rig__stage{width:100%;height:100%;display:block}.rig__stage *{pointer-events:none}.rig__fallback{object-fit:contain;width:100%;height:auto;position:absolute;top:0;bottom:0;left:0;right:0}.rig--broken .rig__stage,.rig--broken .rig__hit,.rig--broken .rig__hint,.rig--broken .rig__count{display:none!important}.rig--broken .rig__body{background-image:var(--ill-backdrop), url(/assets/fallback-DI9P01tm.webp);background-position:50%;background-repeat:no-repeat;background-size:cover,contain}.rig__hit{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;z-index:3;background:0 0;border:0;border-radius:12px;width:20%;height:25.5%;position:absolute;top:60%;left:37%}.rig__hit:focus-visible{outline:2px solid var(--action);outline-offset:4px}.rig__hint{z-index:4;color:var(--ink);background:var(--action-soft);border-color:#2997ff66;position:absolute;top:12px;left:12px}.rig__hint.is-pulsing{animation:hint-pulse .9s var(--ease-out) 2}.rig__count{z-index:4;position:absolute;top:12px;right:12px}.rig__status{min-width:0;color:var(--body);flex:1;font-size:14px;line-height:1.3}.rig__reset{flex:none}@media (max-width:359px){.rig__key{display:none}.rig__reset{width:44px;min-width:44px;padding:0}.rig__reset span{display:none}}.part{transform-box:view-box;transition:transform var(--dur-base) var(--ease-out)}#brow-l{transform:translateY(var(--brow-dy,0px)) rotate(var(--brow-l,0deg))}#brow-r{transform:translateY(var(--brow-dy,0px)) rotate(var(--brow-r,0deg))}#eyes{transform:scaleY(var(--eye-sy,1));transition:transform var(--dur-base) var(--ease-out), translate .4s var(--ease-out)}#lids{transform:scaleY(0)}#lips{transform:translateY(var(--lips-dy,0px)) scaleX(var(--lips-sx,1))}#hand{transform:translate(var(--hand-dx,0px), var(--hand-dy,0px)) rotate(var(--hand-rot,0deg))}#cup{transform:translate(0)rotate(0)}#puddle{opacity:0;transform:scale(0)}#tear,#drops circle,#steam path{opacity:0}#eyes,#cup{will-change:transform}#steam path,#drops circle,#tear{transform-box:fill-box;transform-origin:50%}.rig[data-state=warned]{--brow-l:-10deg;--lips-sx:.85;--lips-dy:2px}.rig[data-state=angry]{--brow-l:12deg;--brow-r:-12deg;--brow-dy:6px;--lips-sx:.7;--lips-dy:4px;--eye-sy:.85}.rig[data-state=spilled]{--brow-l:-22deg;--brow-r:22deg;--brow-dy:-4px;--lips-sx:.6;--lips-dy:6px;--hand-rot:-10deg;--hand-dx:-6px;--hand-dy:10px}.rig[data-state=spilled] #hand{transition:transform .6s var(--ease-out) .25s}.rig[data-state=refilling] .part{transition-duration:.4s}.rig[data-state=idle] #steam path{opacity:1;animation:3s ease-in-out infinite steam}.rig[data-state=idle] #steam path:nth-child(2){animation-delay:1.2s}.rig[data-state=angry] #drops circle{opacity:1;animation:1.1s linear infinite drip}.rig[data-state=angry] #drops circle:nth-child(2){animation-delay:.35s}.rig[data-state=angry] #drops circle:nth-child(3){animation-delay:.7s}.rig[data-state=spilled] #tear{animation:2.4s ease-in .7s 3 forwards tear}.rig.is-offscreen .rig__stage *,.rig.is-hidden .rig__stage *{animation-play-state:paused!important}@keyframes steam{0%{opacity:0;transform:translateY(0)}20%{opacity:.45}to{opacity:0;transform:translateY(-22px)}}@keyframes drip{0%{opacity:0;transform:translateY(0)}12%{opacity:1}80%{opacity:1}to{opacity:0;transform:translateY(330px)}}@keyframes tear{0%{opacity:0;transform:translateY(0)}15%{opacity:1}85%{opacity:1}to{opacity:0;transform:translateY(260px)}}@keyframes hint-pulse{0%,to{transform:scale(1)}40%{transform:scale(1.05)}}}@layer play{.play{z-index:40;pointer-events:none;width:100%;height:0;position:absolute;top:0;left:0;overflow:visible}.ink{pointer-events:none;width:100%;height:0;display:block;position:absolute;top:0;left:0;overflow:visible}.ink path{fill:none;stroke:var(--action);stroke-linecap:round;stroke-linejoin:round;opacity:.78;vector-effect:non-scaling-stroke}.marker{transform-origin:0 26px;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;cursor:grab;width:200px;height:52px;position:absolute;top:0;left:0}.marker.is-held{cursor:grabbing;z-index:41;position:fixed}.marker.is-held .marker__rim{filter:none}.marker__art{width:100%;height:100%;display:block;overflow:visible}.marker__hint{white-space:nowrap;pointer-events:none;color:var(--ink);background:var(--action-soft);border-color:#2997ff66;position:absolute;top:-32px;left:50%;translate:-50%}html.is-inking,html.is-inking *{cursor:none!important}html.is-inking{-webkit-user-select:none;user-select:none;touch-action:none}html.sheet-open .play,html.sheet-open .dog-peek{pointer-events:none!important}@media (hover:none){.marker{transform-origin:0 21px;width:160px;height:42px}}.yard{height:216px;margin:24px 0 calc(-1 * var(--section-y));pointer-events:none;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.yard__house{right:var(--gutter);width:200px;height:182px;position:absolute;bottom:0;transform:scaleX(-1)}.yard__house--back{z-index:1}.yard__house--front{z-index:3}.yard__house .house__art{width:100%;height:100%;display:block;overflow:visible}.yard__dog{z-index:2;width:120px;height:96px;position:absolute;bottom:0;left:0;transform:translate(-110%)}.yard[data-dog=hidden] .yard__dog{visibility:hidden}.yard__dog .dog__art{width:100%;height:100%;display:block;overflow:visible}.yard__bone{z-index:4;pointer-events:auto;transform-origin:50%;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;cursor:grab;background:0 0;border:0;border-radius:14px;width:96px;height:46px;margin:0;padding:4px 0;position:absolute;top:0;left:0}.yard__bone:active,.yard__bone.is-dragging{cursor:grabbing}.yard__bone:focus-visible{outline:2px solid var(--action);outline-offset:1px}.yard__bone .bone__art{pointer-events:none;width:100%;height:100%;display:block;overflow:visible}.yard__bone.is-dragging .bone__rim{filter:none}.yard[data-bone=delivering] .yard__bone,.yard[data-bone=dropped] .yard__bone,.yard[data-bone=respawn] .yard__bone{pointer-events:none}.yard[data-bone=away] .yard__bone{visibility:hidden;pointer-events:none}.yard__hint{z-index:5;white-space:nowrap;color:var(--ink);background:var(--action-soft);border-color:#2997ff66;position:absolute;top:0;left:0;translate:-50%}.yard__count{z-index:5;position:absolute;top:0;left:0;translate:-50%}.yard:not([data-bone=resting]) .yard__hint{display:none}.dog,.house,.dog__flip,.dog__bob,.dog__tail,.dog__leg,.dog__head,.dog__ear,.dog__lid,.house__shake{transform-box:view-box}.dog__flip{transform-origin:100px 80px;transition:transform .12s var(--ease-out)}.dog.is-facing-left .dog__flip{transform:scaleX(-1)}.dog__head,.dog__ear{transition:transform .18s var(--ease-out)}.dog.is-alert .dog__head{transform:rotate(-7deg)}.dog.is-alert .dog__ear--front{transform:rotate(-34deg)}.dog.is-alert .dog__ear--back{transform:rotate(38deg)}.house__eyes{opacity:0;transition:opacity .2s}.yard.is-near .house__eyes,.yard.is-peeking .house__eyes{opacity:1}.yard.is-near .house__shake{animation:.6s ease-in-out infinite alternate house-wiggle}.house__glow{transition:opacity .4s}.yard.is-dark .house__glow{opacity:0}.dog.is-walking .dog__leg--front-near,.dog.is-walking .dog__leg--back-far{animation:.36s ease-in-out infinite alternate dog-walk-a}.dog.is-walking .dog__leg--front-far,.dog.is-walking .dog__leg--back-near{animation:.36s ease-in-out infinite alternate dog-walk-b}.dog.is-walking .dog__bob{animation:.18s ease-in-out infinite alternate dog-bob}.dog.is-running .dog__leg{animation-duration:.22s}.dog.is-running .dog__bob{animation-duration:.11s}.dog.is-walking .dog__tail,.dog.is-alert .dog__tail,.yard[data-dog=in] .dog__tail{animation:.24s ease-in-out infinite alternate dog-tail}.yard[data-dog=in] .dog__tail{animation-duration:.52s}.dog.is-alert .dog__tail,.dog.is-walking .dog__tail{animation-duration:.16s}.yard[data-dog=in] .dog__lid{animation:4.2s linear infinite dog-blink}.dog__bone{opacity:0;transition:opacity .12s}.dog.has-bone .dog__bone{opacity:1}.dog.is-playing .dog__head{animation:.64s ease-in-out infinite alternate dog-chew}.dog.is-playing .dog__bob{animation:.64s ease-in-out infinite alternate dog-bob}.dog.is-playing .dog__ear--front{animation:1.3s ease-in-out infinite alternate dog-ear}.dog.is-playing .dog__tail{animation:.3s ease-in-out infinite alternate dog-tail}.yard[data-dog=home] .dog__lid{animation:3.6s linear infinite dog-blink}.yard.is-offscreen *,.yard.is-hidden *{animation-play-state:paused!important}@media (max-width:767px){.yard{height:168px}.yard__house{width:150px;height:136px}.yard__dog{width:90px;height:72px}.yard__bone{width:80px;height:40px}}.dog-peek{z-index:40;pointer-events:none;width:104px;height:93px;transition:transform .42s var(--ease-out);position:fixed;top:40vh;left:0;transform:translate(-100%)}.dog-peek[data-side=right]{left:auto;right:0;transform:translate(100%)}.dog-peek.is-visible{transform:translate(-30%)}.dog-peek[data-side=right].is-visible{transform:translate(30%)}.peek__art{width:100%;height:100%;display:block;overflow:visible}.dog-peek .dog__flip{transform-origin:200px 180px;transition:none}.dog-peek[data-side=left] .dog__flip{transform:scaleX(-1)}.dog-peek.is-visible .peek__art :-webkit-any(path,ellipse,circle,rect){pointer-events:visiblePainted;cursor:pointer}.dog-peek.is-visible .peek__art :is(path,ellipse,circle,rect){pointer-events:visiblePainted;cursor:pointer}.dog-peek.is-visible .dog__ear--l{animation:1.6s ease-in-out infinite alternate dog-ear}.dog-peek.is-visible .dog__ear--r{animation:1.9s ease-in-out .3s infinite alternate-reverse dog-ear}.dog-peek.is-visible .dog__lid{animation:4.2s linear infinite dog-blink}.dog-peek.is-booped .peek__art{animation:dog-boop .5s var(--ease-out)}@keyframes dog-walk-a{0%{transform:rotate(-22deg)}to{transform:rotate(22deg)}}@keyframes dog-walk-b{0%{transform:rotate(22deg)}to{transform:rotate(-22deg)}}@keyframes dog-bob{0%{transform:translateY(0)}to{transform:translateY(-3px)}}@keyframes dog-tail{0%{transform:rotate(-25deg)}to{transform:rotate(30deg)}}@keyframes dog-ear{0%{transform:rotate(-6deg)}to{transform:rotate(8deg)}}@keyframes dog-chew{0%{transform:rotate(4deg)}55%{transform:rotate(-7deg)translateY(1px)}to{transform:rotate(-3deg)}}@keyframes dog-blink{0%,90%,to{transform:scaleY(0)}93%,96%{transform:scaleY(1)}}@keyframes dog-boop{0%{transform:scale(1)}40%{transform:scale(1.08)rotate(-4deg)}to{transform:scale(1)}}@keyframes house-wiggle{0%{transform:translate(-1.5px)}to{transform:translate(1.5px)}}@keyframes marker-wobble{0%,to{transform:rotate(0)translateY(0)}30%{transform:rotate(-2.5deg)translateY(-2px)}65%{transform:rotate(2deg)translateY(-1px)}}@keyframes faro-pulse{0%,to{opacity:1}50%{opacity:.55}}.hero__desk{width:min(calc(var(--hero-w,250px) * 1.04), 100%);aspect-ratio:1000/440;grid-area:2/1;position:relative}.hero__desk-art{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-image:linear-gradient(#000 78%,#0000);mask-image:linear-gradient(#000 78%,#0000)}.hero__desk-art .desk__art{width:100%;height:100%;animation:desk-in .6s var(--ease-out) both;display:block}.hero__pull{z-index:2;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:14px;width:44px;height:58px;position:absolute;top:calc(60.2% - 42px);left:calc(80.8% - 22px)}.hero__pull:focus-visible{outline:2px solid var(--action);outline-offset:2px}.hero__desk-hint{z-index:3;white-space:nowrap;pointer-events:none;color:var(--ink);background:var(--action-soft);border-color:#2997ff66;position:absolute;top:calc(60.2% + 17px);right:calc(19.2% - 34px)}.hero__desk-hint:before{content:"";border:5px solid #0000;border-top:0;border-bottom:6px solid #2997ff66;position:absolute;top:-7px;right:29px}.hero__desk-hint:not([hidden]){animation:desk-hint .42s var(--ease-out) both, hint-pulse .9s var(--ease-out) .7s 2}.desk__art :is(.desk__cord,.desk__cord-pull,.desk__head,.desk__head-back,.desk__arm,.desk__fore,.desk__hand,.desk__mug,.desk__mug-shadow,.desk__line,.desk__cursor,.desk__steam path){transform-box:view-box}.desk__room,.desk__halo,.desk__glow,.desk__shade,.desk__rim,.desk__light,.desk__warm,.desk__steam,.desk__inner-on,.desk__inner-off,.desk__bulb-on,.desk__bulb-off,.desk__bulb-glow{transition:opacity .3s var(--ease-out)}.desk__room{opacity:.34}.desk__room--front{opacity:.5}.desk__shade{opacity:.62}.desk__light,.desk__warm,.desk__steam,.desk__inner-on,.desk__bulb-on,.desk__bulb-glow{opacity:0}.desk__bead{transition:fill var(--dur-fast)}.hero__desk:has(.hero__pull:-webkit-any(:hover,:focus-visible)) .desk__bead{fill:#f5f7fa}.hero__desk:has(.hero__pull:is(:hover,:focus-visible)) .desk__bead{fill:#f5f7fa}.hero__desk.is-lit .desk__room{opacity:1}.hero__desk.is-lit .desk__halo{opacity:.55}.hero__desk.is-lit .desk__glow{opacity:.3}.hero__desk.is-lit .desk__shade{opacity:0}.hero__desk.is-lit .desk__rim{opacity:.35}.hero__desk.is-lit .desk__rim--dark{opacity:0}.hero__desk.is-lit :-webkit-any(.desk__light,.desk__steam,.desk__inner-on,.desk__bulb-on,.desk__bulb-glow){opacity:1}.hero__desk.is-lit :is(.desk__light,.desk__steam,.desk__inner-on,.desk__bulb-on,.desk__bulb-glow){opacity:1}.hero__desk.is-lit .desk__warm{opacity:.7}.hero__desk.is-lit :-webkit-any(.desk__inner-off,.desk__bulb-off){opacity:0}.hero__desk.is-lit :is(.desk__inner-off,.desk__bulb-off){opacity:0}.hero__disc:after{content:"";border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .4s var(--ease-out);background:radial-gradient(75% 55% at 70% 100%,#ffbe7342,#ffbe7314 45%,#0000 75%);position:absolute;top:-1px;bottom:-1px;left:-1px;right:-1px}.hero__media:has(.hero__desk.is-lit) .hero__disc:after{opacity:1}.hero__desk:not(.is-lit) .desk__cord{animation:2.2s ease-in-out -1.1s infinite alternate desk-swing}.desk__head-back{animation:3.6s ease-in-out infinite alternate desk-head}.desk__hand--l{animation:1.3s linear infinite desk-type-l}.desk__hand--r{animation:1.1s linear infinite desk-type-r}.desk__line--1{animation:8s linear -2.6s infinite desk-code-1}.desk__line--2{animation:8s linear -2.6s infinite desk-code-2}.desk__line--3{animation:8s linear -2.6s infinite desk-code-3}.desk__line--4{animation:8s linear -2.6s infinite desk-code-4}.desk__line--5{animation:8s linear -2.6s infinite desk-code-5}.desk__line--6{animation:8s linear -2.6s infinite desk-code-6}.desk__line--7{animation:8s linear -2.6s infinite desk-code-7}.desk__line--8{animation:8s linear -2.6s infinite desk-code-8}.desk__cursor{animation:8s linear -2.6s infinite desk-cursor}.desk__cursor-bar{animation:1.1s step-end infinite desk-blink}.desk__steam path{animation:3s ease-in-out infinite desk-steam}.desk__steam path:nth-child(2){animation-delay:-1s}.desk__steam path:nth-child(3){animation-delay:-2s}.hero__desk:-webkit-any([data-pose=turn],[data-pose=reach],[data-pose=hold]) :-webkit-any(.desk__head-back,.desk__hand,.desk__line,.desk__cursor){animation-play-state:paused}.hero__desk:is([data-pose=turn],[data-pose=reach],[data-pose=hold]) :is(.desk__head-back,.desk__hand,.desk__line,.desk__cursor){animation-play-state:paused}.hero__desk:not(.is-lit) .desk__steam path{animation-play-state:paused}.hero__desk.is-offscreen *,.hero__desk.is-hidden *{animation-play-state:paused!important}.desk__head{transition:transform .4s cubic-bezier(.3,.7,.25,1);transform:translate(0)rotate(0)}.desk__head-back{transition:opacity .15s linear}.desk__head-turned{opacity:0;transition:opacity .12s linear .15s,transform .4s cubic-bezier(.3,.7,.25,1);transform:translate(-7px)}.desk__arm,.desk__mug{transform:translate(0)rotate(0)}.desk__fore{transform:rotate(0)}.desk__arm,.desk__fore,.desk__mug,.desk__mug-shadow{transition:transform .45s cubic-bezier(.45, .05, .25, 1), opacity .45s var(--ease-out)}.hero__desk:-webkit-any([data-pose=turn],[data-pose=reach],[data-pose=hold]) .desk__head{transform:translate(3px,-2px)rotate(-4deg)}.hero__desk:is([data-pose=turn],[data-pose=reach],[data-pose=hold]) .desk__head{transform:translate(3px,-2px)rotate(-4deg)}.hero__desk:-webkit-any([data-pose=turn],[data-pose=reach],[data-pose=hold]) .desk__head-back{opacity:0;transition-delay:90ms}.hero__desk:is([data-pose=turn],[data-pose=reach],[data-pose=hold]) .desk__head-back{opacity:0;transition-delay:90ms}.hero__desk:-webkit-any([data-pose=turn],[data-pose=reach],[data-pose=hold]) .desk__head-turned{opacity:1;transition-duration:.1s,.4s;transition-delay:0s;transform:translate(0)}.hero__desk:is([data-pose=turn],[data-pose=reach],[data-pose=hold]) .desk__head-turned{opacity:1;transition-duration:.1s,.4s;transition-delay:0s;transform:translate(0)}.hero__desk:-webkit-any([data-pose=reach],[data-pose=hold]) .desk__arm{transform:translate(0)rotate(-30deg)}.hero__desk:is([data-pose=reach],[data-pose=hold]) .desk__arm{transform:translate(0)rotate(-30deg)}.hero__desk:-webkit-any([data-pose=reach],[data-pose=hold]) .desk__fore{transform:rotate(65deg)}.hero__desk:is([data-pose=reach],[data-pose=hold]) .desk__fore{transform:rotate(65deg)}.hero__desk[data-pose=hold] :-webkit-any(.desk__arm,.desk__fore,.desk__mug,.desk__mug-shadow){transition-duration:.28s}.hero__desk[data-pose=hold] :is(.desk__arm,.desk__fore,.desk__mug,.desk__mug-shadow){transition-duration:.28s}.hero__desk[data-pose=hold] .desk__arm{transform:translate(0)rotate(-38deg)}.hero__desk[data-pose=hold] .desk__fore{transform:rotate(69.7deg)}.hero__desk[data-pose=hold] .desk__mug{transform:translateY(-10px)rotate(-6deg)}.hero__desk[data-pose=hold] .desk__mug-shadow{opacity:.16;transform:scale(.8)}.hero__desk.is-snap :-webkit-any(.desk__head,.desk__head-back,.desk__head-turned,.desk__arm,.desk__fore,.desk__mug,.desk__mug-shadow){transition:none!important}.hero__desk.is-snap :is(.desk__head,.desk__head-back,.desk__head-turned,.desk__arm,.desk__fore,.desk__mug,.desk__mug-shadow){transition:none!important}@keyframes desk-in{0%{opacity:0}}@keyframes desk-hint{0%{opacity:0;transform:translateY(4px)}}@keyframes desk-swing{0%{transform:rotate(-4deg)}to{transform:rotate(4deg)}}@keyframes desk-head{0%{transform:translate(0)rotate(-1.2deg)}to{transform:translate(1px)rotate(1.4deg)}}@keyframes desk-type-l{0%,14%,30%,44%,66%,80%,to{transform:translate(0)rotate(0)}7%,37%,73%{transform:translateY(2.5px)rotate(-2.5deg)}}@keyframes desk-type-r{0%,9%,23%,41%,55%,79%,93%,to{transform:translate(0)rotate(0)}16%,48%,86%{transform:translateY(2.5px)rotate(2.5deg)}}@keyframes desk-steam{0%{opacity:0;transform:translateY(6px)}35%{opacity:.45}to{opacity:0;transform:translateY(-22px)}}@keyframes desk-code-1{0%,4%{opacity:1;animation-timing-function:steps(5,end);transform:scaleX(0)}9.5%,88%{opacity:1;transform:scaleX(1)}93%,to{opacity:0;transform:scaleX(1)}}@keyframes desk-code-2{0%,11.5%{opacity:1;animation-timing-function:steps(6,end);transform:scaleX(0)}17%,88%{opacity:1;transform:scaleX(1)}93%,to{opacity:0;transform:scaleX(1)}}@keyframes desk-code-3{0%,19%{opacity:1;animation-timing-function:steps(5,end);transform:scaleX(0)}24.5%,88%{opacity:1;transform:scaleX(1)}93%,to{opacity:0;transform:scaleX(1)}}@keyframes desk-code-4{0%,26.5%{opacity:1;animation-timing-function:steps(7,end);transform:scaleX(0)}32%,88%{opacity:1;transform:scaleX(1)}93%,to{opacity:0;transform:scaleX(1)}}@keyframes desk-code-5{0%,34%{opacity:1;animation-timing-function:steps(6,end);transform:scaleX(0)}39.5%,88%{opacity:1;transform:scaleX(1)}93%,to{opacity:0;transform:scaleX(1)}}@keyframes desk-code-6{0%,41.5%{opacity:1;animation-timing-function:steps(6,end);transform:scaleX(0)}47%,88%{opacity:1;transform:scaleX(1)}93%,to{opacity:0;transform:scaleX(1)}}@keyframes desk-code-7{0%,49%{opacity:1;animation-timing-function:steps(8,end);transform:scaleX(0)}54.5%,88%{opacity:1;transform:scaleX(1)}93%,to{opacity:0;transform:scaleX(1)}}@keyframes desk-code-8{0%,56.5%{opacity:1;animation-timing-function:steps(6,end);transform:scaleX(0)}62%,88%{opacity:1;transform:scaleX(1)}93%,to{opacity:0;transform:scaleX(1)}}@keyframes desk-cursor{0%,4%{animation-timing-function:steps(5,end);transform:translate(-276px,-105px)}9.5%{animation-timing-function:step-end;transform:translate(-120px,-105px)}11.5%{animation-timing-function:steps(6,end);transform:translate(-254px,-90px)}17%{animation-timing-function:step-end;transform:translate(-22px,-90px)}19%{animation-timing-function:steps(5,end);transform:translate(-254px,-75px)}24.5%{animation-timing-function:step-end;transform:translate(-66px,-75px)}26.5%{animation-timing-function:steps(7,end);transform:translate(-232px,-60px)}32%{animation-timing-function:step-end;transform:translate(24px,-60px)}34%{animation-timing-function:steps(6,end);transform:translate(-232px,-45px)}39.5%{animation-timing-function:step-end;transform:translate(2px,-45px)}41.5%{animation-timing-function:steps(6,end);transform:translate(-210px,-30px)}47%{animation-timing-function:step-end;transform:translate(20px,-30px)}49%{animation-timing-function:steps(8,end);transform:translate(-254px,-15px)}54.5%{animation-timing-function:step-end;transform:translate(-4px,-15px)}56.5%{animation-timing-function:steps(6,end);transform:translate(-254px)}62%{animation-timing-function:step-end;transform:translate(0)}93%,to{transform:translate(-276px,-105px)}}@keyframes desk-blink{50%{opacity:0}}.skills__lava{pointer-events:none;min-height:212px;position:relative}@media (min-width:768px){.skills__lava{grid-column:span 1;min-height:248px}}@media (min-width:1080px){.skills__lava{grid-column:span 2}}.skills__lava .lava__art{z-index:1;aspect-ratio:1/2;width:auto;height:100%;animation:lava-in .9s var(--ease-out) both;margin:auto;position:absolute;top:0;bottom:0;left:0;right:0;overflow:visible}.skills__lava:not(:empty):before,.skills__lava:not(:empty):after{content:"";pointer-events:none;animation:lava-glow-in .9s var(--ease-out) both;position:absolute;left:50%;translate:-50%}.skills__lava:not(:empty):before{background:radial-gradient(closest-side at 50% 44%,#ff9e6457,#ff966030 22%,#ff966014 48%,#ff966005 74%,#0000);width:min(100%,380px);top:0;bottom:0}.skills__lava:not(:empty):after{background:radial-gradient(closest-side,#ffa86e33,#ffa86e0f 55%,#0000);width:min(100%,220px);height:22px;bottom:-6px}.lava__blob{transform-box:fill-box;transform-origin:50%;animation:lava-rise var(--dur,20s) ease-in-out var(--delay,0s) infinite alternate, lava-breathe var(--breathe,7s) ease-in-out var(--delay,0s) infinite alternate}.lava__blob--1{--x0:0px;--y0:0px;--x1:6px;--y1:-140px;--dur:23s;--delay:-4s;--breathe:6s}.lava__blob--2{--x0:4px;--y0:88px;--x1:-6px;--y1:-74px;--dur:17s;--delay:-9s;--breathe:8s}.lava__blob--3{--x0:-18px;--y0:188px;--x1:-6px;--y1:-2px;--dur:27s;--delay:-15s;--breathe:5s}.lava__blob--4{--x0:6px;--y0:110px;--x1:12px;--y1:-26px;--dur:20s;--delay:-2s;--breathe:9s}.lava__blob--5{--x0:0px;--y0:38px;--x1:8px;--y1:-146px;--dur:14s;--delay:-6s;--breathe:5.5s}.lava__blob--6{--x0:0px;--y0:0px;--x1:-22px;--y1:-110px;--dur:28s;--delay:-20s;--breathe:7.5s}.lava__pool{transform-box:fill-box;transform-origin:50% 100%;animation:11s ease-in-out -3s infinite alternate lava-pool}.skills__lava.is-offscreen *,.skills__lava.is-hidden *,.skills__lava.is-offscreen:before,.skills__lava.is-offscreen:after,.skills__lava.is-hidden:before,.skills__lava.is-hidden:after{animation-play-state:paused!important}@keyframes lava-rise{0%{translate:var(--x0) var(--y0)}to{translate:var(--x1) var(--y1)}}@keyframes lava-breathe{0%{scale:1.06 .95}to{scale:.95 1.07}}@keyframes lava-pool{0%{scale:1 .88}to{scale:1.02 1.1}}@keyframes lava-in{0%{opacity:0;translate:0 10px}}@keyframes lava-glow-in{0%{opacity:0}}.projects__grid .card[data-project]{transition:border-color var(--dur-base), background var(--dur-base), box-shadow var(--dur-base)}html.js .projects__grid .card[data-project]{cursor:pointer}html:not(.js) .card__more{display:none}.card__actions:has(.card__more){align-items:center}.card__more{margin-left:auto}.card__more .arrow{transition:transform var(--dur-fast) var(--ease-out)}.card__more:focus-visible .arrow{transform:translate(3px)}@media (hover:hover){.projects__grid .card[data-project]:hover{border-color:#2997ff4d;box-shadow:0 22px 48px -30px #2997ff80}.card[data-project]:hover .card__more{background:var(--surface-elevated);border-color:#ffffff3d}.card[data-project]:hover .card__more .arrow{transform:translate(3px)}}.pdialog{width:100%;max-width:none;height:100%;max-height:none;color:var(--body);overscroll-behavior:contain;background:0 0;border:0;margin:0;padding:0;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}.pdialog[open]{justify-content:center;align-items:flex-start;display:flex}.pdialog::backdrop{transition:opacity var(--dur-base) var(--ease-out);background:radial-gradient(60% 50% at 50% 38%,#2997ff0f,#0000 72%),radial-gradient(130% 100% at 50% 42%,#070a11e6 0%,#04060beb 58%,#010205f7 100%)}@starting-style{.pdialog[open]::backdrop{opacity:0}}.pdialog[data-state=closing]::backdrop{opacity:0;transition:opacity .2s cubic-bezier(.4,0,1,1)}html.pdialog-open{scrollbar-gutter:stable;overflow:hidden}html:has(.pdialog[open]){scrollbar-gutter:stable;overflow:hidden}html.dialog-open :-webkit-any(#main,footer,#play,#dog-peek) *{animation-play-state:paused!important}html.dialog-open :is(#main,footer,#play,#dog-peek) *{animation-play-state:paused!important}html.dialog-open :-webkit-any(#main,footer,#play,#dog-peek) :before{animation-play-state:paused!important}html.dialog-open :is(#main,footer,#play,#dog-peek) :before{animation-play-state:paused!important}html.dialog-open :-webkit-any(#main,footer,#play,#dog-peek) :after{animation-play-state:paused!important}html.dialog-open :is(#main,footer,#play,#dog-peek) :after{animation-play-state:paused!important}.pdialog__panel{width:min(100% - 2 * var(--gutter), 980px);max-height:92vh;border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--tile-1);isolation:isolate;max-height:92dvh;box-shadow:0 40px 90px -30px #000c, 0 0 70px -24px var(--action-glow);flex-direction:column;margin:4vh auto;display:flex;position:relative;overflow:hidden}.pdialog__bar{background:#05070b73;flex:none;height:52px;padding:0 8px 0 18px}.pdialog__file{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pdialog__esc{height:22px;color:var(--mute);padding:0 7px;font-size:11px}.pdialog__close{width:44px;height:44px;color:var(--body);transition:background var(--dur-fast), color var(--dur-fast);border-radius:12px;flex:none;place-items:center;display:grid}.pdialog__close:hover{background:var(--surface-elevated);color:var(--ink)}.pdialog__close:focus-visible{outline-offset:-3px;border-radius:12px}.pdialog__body{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--surface-elevated) transparent;background-color:var(--tile-1);flex:auto;min-height:0;overflow-y:auto;container:pdoc/inline-size}.pdialog__body:focus{outline:none}@media (hover:none){.pdialog__esc{display:none}}@media (max-width:767px){.pdialog::backdrop{background:#020408cc}.pdialog__panel{width:100%;height:calc(100vh - 10px);border-radius:var(--radius-card) var(--radius-card) 0 0;border-bottom:0;height:calc(100dvh - 10px);max-height:none;margin:10px 0 0}.pdialog__bar{padding-left:16px}}.display-md{letter-spacing:-.022em;text-wrap:balance;font-size:clamp(30px,4.2vw,46px);font-weight:600;line-height:1.08}.pdoc{counter-reset:pdoc;background:radial-gradient(640px 340px at 88% -40px, var(--action-glow), transparent 70%) no-repeat;gap:52px;padding:48px 56px 40px;display:grid}.pdoc .display-md{font-size:clamp(30px,5.4cqi,48px)}.pdoc__head{justify-items:start;gap:18px;display:grid}.pdoc__kicker{color:var(--action)}.pdoc__head .display-md{max-width:20ch}.pdoc__lead{max-width:58ch;font-size:19px;line-height:1.5}.pdoc__actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pdoc__head .chips{margin-top:2px}.pdoc__facts{border:1px solid var(--hairline);background:#05070b4d;border-radius:14px;grid-template-columns:repeat(4,minmax(0,1fr));display:grid;overflow:hidden}.pdoc__fact{flex-direction:column;gap:8px;padding:20px 22px 22px;display:flex}.pdoc__fact+.pdoc__fact{border-left:1px solid var(--hairline)}.pdoc__fact-value{letter-spacing:-.03em;color:var(--ink);font-feature-settings:"tnum";white-space:nowrap;order:-1;font-size:38px;font-weight:600;line-height:1}.pdoc__fact-label{color:var(--mute);text-wrap:pretty;font-size:14px;line-height:1.35}.pdoc__section{border-top:1px solid var(--hairline);grid-template-columns:188px minmax(0,1fr);gap:20px 40px;padding-top:34px;display:grid}.pdoc__section>h3{grid-column:1;align-self:start}.pdoc__section>h3:before{counter-increment:pdoc;content:counter(pdoc, decimal-leading-zero);font-family:var(--font-mono);letter-spacing:.08em;color:var(--action);margin-bottom:10px;font-size:12px;font-weight:500;display:block}.pdoc__section>:not(h3){grid-column:2;min-width:0}.pdoc__section>.pdoc__wide{grid-column:1/-1}.pdoc__content{align-content:start;gap:18px;display:grid}.pdoc__content>.bullets{gap:10px}.pdoc__figure{gap:12px;margin:0;display:grid}.pdoc__canvas{border:1px solid var(--hairline);background-color:var(--tile-3);background-image:radial-gradient(#ffffff0f 1px,#0000 1.3px);background-position:11px 11px;background-size:22px 22px;border-radius:14px;padding:22px}.pdoc__canvas--compact{padding:18px 12px}.pdoc__diagram{width:100%;height:auto;margin-inline-start:auto;margin-inline-end:auto;display:block;overflow:visible}.pdoc__diagram--tall{display:none}.pdoc__diagram--small{max-width:420px}.pdoc__figure figcaption{color:var(--mute);max-width:70ch;font-size:13px;line-height:1.45}.pdoc__steps{counter-reset:pdoc-step;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 36px;list-style:none;display:grid}.pdoc__steps li{counter-increment:pdoc-step;color:var(--body);text-wrap:pretty;padding-left:38px;font-size:15px;line-height:1.5;position:relative}.pdoc__steps li:before{content:counter(pdoc-step);background:var(--action);width:24px;height:24px;color:var(--tile-black);font:600 12px/1 var(--font-mono);border-radius:50%;place-items:center;display:grid;position:absolute;top:-1px;left:0}.pdoc__dl{border-top:1px solid var(--hairline);display:grid}.pdoc__dl>div{border-bottom:1px solid var(--hairline);grid-template-columns:124px minmax(0,1fr);gap:16px;padding:12px 0;display:grid}.pdoc__dl dt{font-family:var(--font-mono);color:var(--mute);padding-top:2px;font-size:13px}.pdoc__dl dd{color:var(--body);font-size:15px;line-height:1.5}.pdoc__quote{border-left:2px solid var(--action);color:var(--ink);text-wrap:pretty;max-width:60ch;margin:0;padding:2px 0 2px 20px;font-size:19px;line-height:1.55}.pdoc__links{gap:10px;list-style:none;display:grid}.pdoc__links .action{background:var(--tile-3);grid-template-columns:auto minmax(0,1fr) auto}.pdoc__footer{border-top:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-top:28px;display:flex}.pdoc__back-arrow{color:var(--action);transition:transform var(--dur-fast) var(--ease-out)}.pdoc__back:hover .pdoc__back-arrow{transform:translate(-3px)}.pdoc__back:focus-visible .pdoc__back-arrow{transform:translate(-3px)}@container pdoc (width<=860px){.pdoc__diagram--wide{display:none}.pdoc__diagram--tall{max-width:440px;display:block}}@container pdoc (width<=760px){.pdoc{gap:40px;padding:36px 32px 32px}.pdoc__section{grid-template-columns:minmax(0,1fr);gap:16px;padding-top:28px}.pdoc__section>:not(h3),.pdoc__section>.pdoc__wide{grid-column:1}.pdoc__facts{grid-template-columns:repeat(2,minmax(0,1fr))}.pdoc__fact:nth-child(3){border-left:0}.pdoc__fact:nth-child(n+3){border-top:1px solid var(--hairline)}}@container pdoc (width<=620px){.pdoc{gap:36px;padding:28px 20px}.pdoc__lead{font-size:17px}.pdoc__fact{padding:16px 16px 18px}.pdoc__fact-value{font-size:30px}.pdoc__fact-label{font-size:13px}.pdoc__canvas{padding:14px 10px}.pdoc__steps{grid-template-columns:minmax(0,1fr)}.pdoc__dl>div{grid-template-columns:minmax(0,1fr);gap:2px}.pdoc__quote{font-size:17px}}.dg{font-family:var(--font-mono)}.dg text{fill:var(--body);font-size:13px}.dg .dg-mid{text-anchor:middle}.dg .dg-end{text-anchor:end}.dg .dg-title{fill:var(--ink);font-size:15px;font-weight:600}.dg .dg-sub{fill:var(--mute);font-size:12px}.dg .dg-tiny{fill:var(--mute);font-size:11px}.dg .dg-on-accent{fill:var(--tile-black);font-weight:600}.dg .dg-strong{fill:var(--ink)}.dg .dg-accent{fill:var(--action)}.dg-frame{fill:var(--tile-1);stroke:var(--hairline-strong);stroke-width:1px}.dg-pane{fill:var(--tile-2)}.dg-box{fill:var(--surface-elevated);stroke:var(--hairline-strong);stroke-width:1px}.dg-box--soft{fill:var(--tile-2)}.dg-box--accent{stroke:#2997ffb3}.dg-fill-accent{fill:var(--action);stroke:none}.dg-pill{fill:var(--tile-1);stroke:var(--hairline-strong);stroke-width:1px}.dg-rule{fill:none;stroke:var(--hairline);stroke-width:1px}.dg-bar{fill:var(--mute);fill-opacity:.3}.dg-bar--faint{fill-opacity:.18}.dg-bar--strong{fill-opacity:.6}.dg-bar--ink{fill:var(--ink);fill-opacity:.45}.dg-dot{fill:var(--hairline-strong)}.dg-mark{fill:#e9ac4a}.dg-line{fill:none;stroke:#8e98a899;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.dg-line--dash{stroke-dasharray:3 5}.dg-line--faint{stroke:var(--hairline-strong);stroke-width:1px}.dg-line--accent{stroke:var(--action)}.dg-head{fill:none;stroke:#8e98a8d9;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.dg-head--accent{stroke:var(--action)}.dg-badge circle{fill:var(--action);stroke:var(--tile-3);stroke-width:3px}.dg .dg-badge text{fill:var(--tile-black);text-anchor:middle;font-size:12px;font-weight:700}@media (prefers-reduced-motion:reduce){.projects__grid .card[data-project],.card__more .arrow,.pdoc__back-arrow{transition:none}.pdialog::backdrop{transition:none}.pdialog[data-state]::backdrop{transition:none}}}@layer motion{html.shot{scroll-behavior:auto}html.shot [data-reveal]{transition:none!important}html.js [data-reveal]{opacity:0;transition:opacity var(--dur-reveal) var(--ease-out), transform var(--dur-reveal) var(--ease-out);transform:translateY(16px)}html.js [data-reveal-media]{transition-duration:var(--dur-slow);transform:translateY(24px)}html.js [data-reveal].is-in{opacity:1;transform:none}html.js .hero [data-reveal]{opacity:1;transform:translateY(12px)}html.js .hero [data-reveal-media]{transform:translateY(18px)}html.js .timeline__item[data-reveal]{transform:translateY(12px)}.scene__leg{animation:swing 2.4s var(--ease-in-out) infinite alternate}.scene__hand{animation:hand-tilt 4s var(--ease-in-out) infinite alternate}.scene__stars--a{animation:3s ease-in-out infinite alternate twinkle-a}.scene__stars--b{animation:5s ease-in-out infinite alternate twinkle-b}.scene__lamp-head{animation:9s linear infinite flicker}.scene__phone{animation:4s ease-in-out infinite alternate phone-glow}.scene.is-offscreen *,.scene.is-hidden *{animation-play-state:paused!important}@keyframes swing{0%{transform:rotate(-6deg)}to{transform:rotate(6deg)}}@keyframes hand-tilt{0%{transform:rotate(3deg)}to{transform:rotate(-3deg)}}@keyframes twinkle-a{0%{opacity:.55}to{opacity:.2}}@keyframes twinkle-b{0%{opacity:.2}to{opacity:.55}}@keyframes flicker{0%,95%,to{opacity:1}96%,98%{opacity:.85}}@keyframes phone-glow{0%{opacity:.55}to{opacity:.35}}.simpl-pulse{transform-box:fill-box;transform-origin:50%;animation:2.4s ease-in-out infinite simpl-pulse}.faro-beacon{animation:2.4s ease-in-out infinite faro-pulse}@media (hover:hover){.marker[data-state=lying]:hover .marker__art{animation:marker-wobble .6s var(--ease-out)}}.term-cursor{animation:1s step-end infinite blink}@keyframes simpl-pulse{0%,to{opacity:1}50%{opacity:.55}}@keyframes blink{50%{opacity:0}}@media (hover:none){.card:hover .card__media img{transform:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}html.js [data-reveal]{opacity:1;transition:none;transform:none}.part,#eyes{transition:none}.rig #steam path,.rig #drops circle,.rig #tear,.rig__hint{animation:none!important}.rig[data-state=angry] #drops circle{opacity:.8}.scene__leg,.scene__hand,.scene__stars,.scene__lamp-head,.scene__phone,.simpl-pulse,.term-cursor{animation:none!important}.faro-beacon,.marker__art,.dog *,.house *,.yard__bone,.dog-peek,.dog-peek *,.hero__desk,.hero__desk *,.hero__disc:after{transition:none!important;animation:none!important}.hero__desk.is-lit .desk__steam path{opacity:.35}.yard.is-near .house__shake{animation:none}.skills__lava *,.skills__lava:before,.skills__lava:after{transition:none!important;animation:none!important}.lava__blob--3{scale:1.16 .86}.lava__blob--4{scale:.92 1.14}.lava__blob--2{scale:1.04 .96}.scene__leg{transform:rotate(2deg)}.scene__stars{opacity:.4}.card:hover .card__media img{transform:none}.arrow,.btn,.chip,.action,.nav{transition:none}}}@layer print{@media print{:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{color:#111;background:#fff}.tile,.tile--black,.tile--canvas,.tile--1,.tile--2,.tile--3{padding-block-start:24px;padding-block-end:24px;background:#fff!important}h1,h2,h3,.body,.lead,.caption,.eyebrow,.chip,.action,.facts dd{color:#111!important}.nav,.sheet,.skip,.hero__disc,.hero:before,.rig,.scene-window,.toast,#to-top,.rig__hit,.projects__more,.play,.dog-peek,.yard,.skills__lava,.hero__desk{display:none!important}.about__media:after{content:"";background:url(/assets/fallback-DI9P01tm.webp) 50%/contain no-repeat;width:160px;height:160px;display:block}html.js [data-reveal]{opacity:1!important;transform:none!important}a[href^=http]:after{content:" (" attr(href) ")";color:#555;font-size:12px}.card,.timeline__item,.edu__item,.skills__group{break-inside:avoid;border-color:#ddd}.chip,.keycap,.badge{background:#f2f2f2;border-color:#ddd}}}
/*$vite$:1*/