/*
! tailwindcss v3.4.0 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.visible{visibility:visible}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.resize{resize:both}.border{border-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@font-face{font-family:__Bricolage_Grotesque_6f0f17;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Bricolage_Grotesque_6f0f17;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7.woff2) format("woff2");unicode-range:U+0100-02ba,U+02bd-02c5,U+02c7-02cc,U+02ce-02d7,U+02dd-02ff,U+0304,U+0308,U+0329,U+1d00-1dbf,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Bricolage_Grotesque_6f0f17;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Bricolage_Grotesque_6f0f17;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Bricolage_Grotesque_6f0f17;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7.woff2) format("woff2");unicode-range:U+0100-02ba,U+02bd-02c5,U+02c7-02cc,U+02ce-02d7,U+02dd-02ff,U+0304,U+0308,U+0329,U+1d00-1dbf,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Bricolage_Grotesque_6f0f17;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}.__className_6f0f17{font-family:__Bricolage_Grotesque_6f0f17;font-style:normal}.__variable_6f0f17{--font-bricolage:"__Bricolage_Grotesque_6f0f17"}@font-face{font-family:__Space_Grotesk_5dce4b;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Space_Grotesk_5dce4b;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");unicode-range:U+0100-02ba,U+02bd-02c5,U+02c7-02cc,U+02ce-02d7,U+02dd-02ff,U+0304,U+0308,U+0329,U+1d00-1dbf,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Space_Grotesk_5dce4b;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Space_Grotesk_5dce4b;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Space_Grotesk_5dce4b;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");unicode-range:U+0100-02ba,U+02bd-02c5,U+02c7-02cc,U+02ce-02d7,U+02dd-02ff,U+0304,U+0308,U+0329,U+1d00-1dbf,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Space_Grotesk_5dce4b;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Space_Grotesk_5dce4b;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Space_Grotesk_5dce4b;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");unicode-range:U+0100-02ba,U+02bd-02c5,U+02c7-02cc,U+02ce-02d7,U+02dd-02ff,U+0304,U+0308,U+0329,U+1d00-1dbf,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Space_Grotesk_5dce4b;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Space_Grotesk_Fallback_5dce4b;src:local("Arial");ascent-override:88.82%;descent-override:26.36%;line-gap-override:0.00%;size-adjust:110.78%}.__className_5dce4b{font-family:__Space_Grotesk_5dce4b,__Space_Grotesk_Fallback_5dce4b;font-style:normal}.__variable_5dce4b{--font-space-grotesk:"__Space_Grotesk_5dce4b","__Space_Grotesk_Fallback_5dce4b"}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c8a,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:U+0370-0377,U+037a-037f,U+0384-038a,U+038c,U+038e-03a1,U+03a3-03ff}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:U+0100-02ba,U+02bd-02c5,U+02c7-02cc,U+02ce-02d7,U+02dd-02ff,U+0304,U+0308,U+0329,U+1d00-1dbf,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c8a,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:U+0370-0377,U+037a-037f,U+0384-038a,U+038c,U+038e-03a1,U+03a3-03ff}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:U+0100-02ba,U+02bd-02c5,U+02c7-02cc,U+02ce-02d7,U+02dd-02ff,U+0304,U+0308,U+0329,U+1d00-1dbf,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__JetBrains_Mono_Fallback_6d24ac;src:local("Arial");ascent-override:75.04%;descent-override:22.07%;line-gap-override:0.00%;size-adjust:135.93%}.__className_6d24ac{font-family:__JetBrains_Mono_6d24ac,__JetBrains_Mono_Fallback_6d24ac;font-style:normal}.__variable_6d24ac{--font-jetbrains-mono:"__JetBrains_Mono_6d24ac","__JetBrains_Mono_Fallback_6d24ac"}:root{--font-display:var(--font-bricolage),"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;--font-body:var(--font-space-grotesk),"Space Grotesk",ui-sans-serif,system-ui,sans-serif;--font-mono:var(--font-jetbrains-mono),"JetBrains Mono",ui-monospace,"SFMono-Regular",monospace}:root[data-theme=blueprint]{--bg:#08182b;--dot:#123a5e;--line:#37c8ff;--accent:#37c8ff;--text:#cfe8ff;--dim:#5b86a8;--frame:#1c4a72;--panel:rgba(8,20,36,.82)}:root[data-theme=terminal]{--bg:#04060a;--dot:#123a1f;--line:#3dff88;--accent:#3dff88;--text:#c9f5d8;--dim:#5a7a66;--frame:#164a2c;--panel:rgba(6,14,10,.82)}:root{--muted:color-mix(in srgb,var(--text) 72%,var(--dim));--hair:color-mix(in srgb,var(--frame) 60%,transparent)}*{box-sizing:border-box}html{scroll-behavior:auto}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;transition:background .4s ease}.grid-canvas{position:fixed;inset:0;z-index:0;pointer-events:none}main{position:relative;z-index:1}.section{min-height:100vh;align-items:center;padding:90px 0}.frame,.section{position:relative;display:flex}.frame{width:var(--fw,60vw);margin-left:var(--fx,auto);margin-right:auto;flex-direction:column;padding:clamp(16px,2.4vh,36px) clamp(22px,3vw,52px)}.frame-content{width:100%}.frame:before{content:"";position:absolute;inset:0;border:1px solid transparent;transition:border-color .35s ease,box-shadow .35s ease;pointer-events:none}[data-frame-border=always] .frame:before{border-color:var(--hair)}.frame.flash:before{border-color:var(--accent);box-shadow:0 0 22px -6px var(--accent)}.frame-content .eyebrow{font-family:var(--font-mono);font-size:13px;letter-spacing:.22em;color:var(--dim);margin:0 0 clamp(18px,3vh,34px)}.eyebrow b{color:var(--accent);font-weight:500}.h-display{font-family:var(--font-display);font-weight:800;letter-spacing:-.02em;line-height:.98;color:var(--text);margin:0}p{color:var(--muted);line-height:1.55}a{color:var(--accent);text-decoration:none}.hero h1{font-size:clamp(52px,8vw,116px)}.hero .role{font-family:var(--font-mono);font-size:clamp(15px,1.6vw,22px);color:var(--dim);margin:8px 0 clamp(20px,3vh,34px)}.hero .bio{max-width:62ch;font-size:clamp(16px,1.35vw,22px);margin:0 0 clamp(22px,3.4vh,40px)}.hero .meta{display:flex;flex-wrap:wrap;gap:8px clamp(20px,3vw,44px);font-family:var(--font-mono);font-size:14px}.hero .meta b{color:var(--text);font-weight:600}.hero .meta span{color:var(--dim);margin-left:12px}.about h2{font-size:clamp(30px,4vw,56px);margin-bottom:clamp(20px,3vh,36px)}.about p{max-width:64ch;font-size:clamp(16px,1.3vw,21px)}.about p+p{margin-top:1.1em}.xp h2{font-size:clamp(30px,4vw,56px);margin-bottom:clamp(20px,3vh,36px)}.xp-timeline{display:grid;grid-template-columns:minmax(180px,.85fr) 1.3fr;gap:clamp(20px,4vw,56px);align-items:start}.tl-list{position:relative;display:flex;flex-direction:column}.tl-list:before{content:"";position:absolute;left:5px;top:14px;bottom:14px;width:1px;background:var(--hair)}.tl-node{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:0 12px;width:100%;padding:clamp(7px,1.3vh,11px) 0;background:none;border:0;text-align:left;cursor:pointer;color:var(--muted);transition:color .2s ease}.tl-dot{width:11px;height:11px;border-radius:50%;border:1px solid var(--dim);background:var(--bg);transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.tl-label{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 8px}.tl-co{font-family:var(--font-display);font-weight:600;font-size:clamp(16px,1.5vw,20px);line-height:1.15}.tl-note{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.04em;color:var(--dim)}.tl-node.active .tl-note{color:var(--muted)}.tl-when{font-family:var(--font-mono);font-size:12px;color:var(--dim);white-space:nowrap}.tl-node:focus-visible .tl-co,.tl-node:hover .tl-co{color:var(--text)}.tl-node:focus-visible{outline:1px solid var(--accent);outline-offset:3px}.tl-node.active .tl-co{color:var(--accent);font-weight:700}.tl-node.active .tl-dot{background:var(--accent);border-color:var(--accent);box-shadow:0 0 12px -1px var(--accent)}.tl-detail{min-height:12em}.tl-detail:focus-visible{outline:none}.tl-title{font-family:var(--font-display);font-weight:700;font-size:clamp(20px,2vw,30px);color:var(--text);margin:0 0 6px;line-height:1.1}.tl-dates{font-family:var(--font-mono);font-size:13px;color:var(--dim);margin:0 0 clamp(12px,2vh,18px)}.tl-blurb{margin:0;max-width:60ch;font-size:clamp(15px,1.15vw,17px)}.tl-detail-in{animation:tl-fade .28s ease}@keyframes tl-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.projects h2{font-size:clamp(30px,4vw,56px);margin-bottom:clamp(22px,3.2vh,40px)}.proj-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:clamp(16px,1.6vw,28px)}.card{border:1px solid var(--hair);padding:clamp(18px,2vw,28px);display:flex;flex-direction:column;gap:12px}.card h3{font-family:var(--font-display);font-weight:700;font-size:clamp(22px,2.2vw,30px);color:var(--text);margin:0}.card .link{font-family:var(--font-mono);font-size:13.5px;text-decoration:underline;text-underline-offset:3px}.card p{margin:0;font-size:15px}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.tag{font-family:var(--font-mono);font-size:12px;color:var(--dim);border:1px solid var(--hair);padding:3px 9px}.skills h2{font-size:clamp(30px,4vw,56px);margin-bottom:clamp(20px,3vh,34px)}.skill-group{margin-bottom:clamp(16px,2.4vh,26px)}.skill-group h4{font-family:var(--font-mono);font-size:12px;letter-spacing:.16em;color:var(--accent);margin:0 0 10px}.skill-group .tags .tag{color:var(--muted)}.contact h2{font-size:clamp(34px,5vw,68px);margin-bottom:clamp(24px,3.4vh,44px)}.contact-links{display:flex;align-items:center;gap:clamp(14px,2vw,22px)}.contact-link{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;color:var(--text);border:1px solid var(--hair);border-radius:4px;transition:color .2s ease,border-color .2s ease,background .2s ease,transform .2s ease}.contact-link:hover{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);transform:translateY(-2px)}.contact-link svg{width:22px;height:22px;display:block}.rail{position:fixed;left:22px;top:50%;transform:translateY(-50%);z-index:2;display:flex;flex-direction:column;gap:12px;pointer-events:auto}.rail button{width:9px;height:9px;border-radius:50%;border:1px solid var(--dim);background:transparent;padding:0;cursor:pointer;transition:background .25s ease,border-color .25s ease,transform .25s ease}.rail button.active{background:var(--accent);border-color:var(--accent);transform:scale(1.15)}.scroll-cta{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:3;display:flex;flex-direction:column;align-items:center;gap:7px;padding:4px;background:none;border:0;cursor:pointer;color:var(--dim);font-family:var(--font-mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;transition:opacity .4s ease,transform .4s ease,color .2s ease}.scroll-cta:hover{color:var(--accent)}.scroll-cta svg{width:16px;height:16px;animation:cta-bob 1.6s ease-in-out infinite}.scroll-cta.hidden{opacity:0;transform:translateX(-50%) translateY(8px);pointer-events:none}@keyframes cta-bob{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.to-top{position:fixed;right:22px;bottom:22px;z-index:3;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--hair);background:var(--panel);color:var(--text);cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:opacity .3s ease,transform .3s ease,color .2s ease,border-color .2s ease}.to-top:hover{color:var(--accent);border-color:var(--accent)}.to-top svg{width:18px;height:18px}.to-top.hidden{opacity:0;transform:translateY(8px);pointer-events:none}.console{position:fixed;top:18px;right:18px;z-index:10;width:268px;max-height:calc(100vh - 36px);overflow-y:auto;padding:16px;background:var(--panel);border:1px solid var(--hair);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text);font-family:var(--font-mono);font-size:11px;box-shadow:0 20px 60px -20px rgba(0,0,0,.6)}.console header{display:flex;justify-content:space-between;align-items:center;letter-spacing:.18em;color:var(--dim);margin-bottom:14px}.console header button{background:none;border:0;color:var(--dim);cursor:pointer;font-size:14px}.console .field{margin-bottom:12px}.console .field>label{display:flex;justify-content:space-between;color:var(--dim);margin-bottom:5px}.console .field>label b{color:var(--text);font-weight:500}.console input[type=range],.console select{width:100%;font:inherit}.console select{background:color-mix(in srgb,var(--bg) 70%,transparent);color:var(--text);border:1px solid var(--hair);padding:5px 6px}.console input[type=range]{accent-color:var(--accent)}.console .cols{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.console .check{display:flex;justify-content:space-between;align-items:center;color:var(--dim)}.console .check input{accent-color:var(--accent)}.console .replay{width:100%;margin-top:6px;padding:10px;background:transparent;color:var(--accent);border:1px solid var(--accent);letter-spacing:.12em;cursor:pointer;text-transform:uppercase}.console .replay:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.console .export{margin-top:10px;border-top:1px solid var(--hair);padding-top:12px}.console .export .replay{margin-top:0}.console .export-json{margin:8px 0 0;padding:8px;max-height:168px;overflow:auto;background:color-mix(in srgb,var(--bg) 70%,transparent);border:1px solid var(--hair);color:var(--muted);font:10px/1.5 var(--font-mono);white-space:pre;-webkit-user-select:all;-moz-user-select:all;user-select:all}@media (max-width:720px){.section{min-height:100dvh;padding:54px 0}.frame{padding:clamp(14px,4.5vw,26px);width:var(--fw,86vw)}.hero h1{font-size:clamp(34px,11vw,56px)}.hero .role{font-size:clamp(13px,3.6vw,17px);margin-bottom:18px}.hero .bio{font-size:clamp(14px,3.9vw,17px)}.hero .meta{gap:6px 18px}.about h2,.contact h2,.projects h2,.skills h2{font-size:clamp(26px,8.5vw,42px)}.about p{font-size:clamp(15px,4vw,18px)}.proj-grid,.xp-timeline{grid-template-columns:1fr}.xp-timeline{gap:clamp(18px,4vh,28px)}.tl-detail{min-height:15em;padding-top:clamp(16px,2.4vh,22px);border-top:1px solid var(--hair)}.rail{display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.frame.flash:before{transition:none}.scroll-cta svg,.tl-detail-in{animation:none}}