:root{--color-bg: #0D0D0D;--color-surface: #151515;--color-border: rgba(255, 255, 255, .08);--text-primary: #E0E0E0;--text-secondary: #888888;--text-accent: #E0E0E0;--planet-about: #64B5F6;--planet-experience: #9575CD;--planet-projects: #81C784;--planet-skills: #4DD0E1;--planet-awards: #FFD54F;--font-hero: "Playfair Display", serif;--font-display: "Space Grotesk", -apple-system, BlinkMacSystemFont, sans-serif;--font-body: "Space Grotesk", -apple-system, BlinkMacSystemFont, sans-serif;--font-signature: "Playfair Display", serif;--font-handwritten: "Playfair Display", serif;--paint-white: #E0E0E0;--text-cyan: #4DD0E1;--neon-cyan: #4DD0E1;--neon-cyan-dim: rgba(77, 208, 225, .3);--neon-highlight: #64B5F6;--neon-purple: #9575CD;--void-deep: #0D0D0D;--void-light: #1E1E2E;--glow-cyan: 0 0 20px rgba(77, 208, 225, .15);--font-tech: "Space Grotesk", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "Space Grotesk", monospace;--glass-bg: rgba(15, 15, 18, .8);--glass-blur: blur(12px);--glass-shadow: 0 4px 30px rgba(0, 0, 0, .3);--ease-tech: cubic-bezier(.23, 1, .32, 1);--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 16px;--radius-full: 50%;--transition-fast: .15s ease;--transition-normal: .3s ease;--ease-smooth: cubic-bezier(.23, 1, .32, 1)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth;background-color:var(--color-bg)}body{font-family:var(--font-body);background:var(--color-bg);color:var(--text-primary);line-height:1.6;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh;display:flex;flex-direction:column}.font-hero{font-family:var(--font-hero)}.font-tech{font-family:var(--font-tech)}.font-mono{font-family:var(--font-mono)}h1,h2,h3,h4,h5,h6{font-family:var(--font-hero);font-weight:700;line-height:1.1;letter-spacing:.05em}h1{font-size:clamp(2.5rem,5vw,4.5rem)}h2{font-size:clamp(2rem,4vw,3.5rem)}h3{font-size:clamp(1.5rem,3vw,2.5rem);color:var(--text-cyan)}a{color:inherit;text-decoration:none;transition:color .2s var(--ease-tech)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-md) var(--space-xl);font-family:var(--font-tech);font-size:1.1rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;background:#00f3ff1a;border:1px solid var(--neon-cyan);color:var(--neon-cyan);border-radius:var(--radius-sm);cursor:pointer;transition:all .3s var(--ease-tech);position:relative;overflow:hidden;box-shadow:0 0 10px #00f3ff33}.btn:hover{background:var(--neon-cyan);color:var(--void-deep);box-shadow:0 0 20px var(--neon-cyan)}.card{background:#12121899;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);padding:var(--space-xl);box-shadow:0 4px 30px #0003,inset 0 1px #ffffff0d;transition:transform .3s var(--ease-tech),border-color .3s ease,box-shadow .3s ease;position:relative}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.card:hover{transform:translateY(-4px);border-color:#ffffff26;box-shadow:0 8px 40px #0000004d,inset 0 1px #ffffff14}.section{width:100%;max-width:1400px;margin:0 auto;padding:var(--space-lg) var(--space-xl) var(--space-3xl)}.section-header{text-align:center;margin-bottom:var(--space-2xl)}.section-title{font-family:var(--font-hero);font-size:clamp(2.5rem,5vw,4rem);color:var(--text-primary);margin-bottom:var(--space-md);position:relative;display:inline-block;letter-spacing:-.02em;-webkit-text-stroke:1px rgba(255,255,255,.5);text-shadow:0 0 30px var(--section-accent, rgba(100, 181, 246, .2))}.section-title:after{content:"";display:block;width:60px;height:2px;background:var(--section-accent, var(--text-secondary));margin:10px auto 0;opacity:.6;box-shadow:0 0 10px var(--section-accent, transparent)}.section-subtitle{font-family:var(--font-body);font-size:1.1rem;color:var(--text-secondary);max-width:600px;margin:0 auto;letter-spacing:.02em}.grid{display:grid;gap:var(--space-xl)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 1024px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.flex{display:flex}.flex-center{display:flex;align-items:center;justify-content:center}.flex-col{flex-direction:column}.w-full{width:100%}.h-full{height:100%}.relative{position:relative}.absolute{position:absolute}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--flat-hover-8);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--flat-faint35)}::selection{background:var(--flat-emph);color:var(--color-bg)}.page-container{min-height:100vh;width:100%}.gradient-text{background:linear-gradient(135deg,var(--neon-cyan) 0%,var(--neon-purple) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 0 5px rgba(0,243,255,.3))}:focus-visible{outline:1px solid var(--flat-faint35);outline-offset:2px;border-radius:4px}button:focus-visible,a:focus-visible{outline:1px solid var(--flat-faint35);outline-offset:2px}.home-socials a:focus-visible{outline:2px solid rgba(100,181,246,.75)}@media (max-width: 768px){:root{--space-xs: .25rem;--space-sm: .4rem;--space-md: .75rem;--space-lg: 1rem;--space-xl: 1.5rem;--space-2xl: 2rem;--space-3xl: 3rem}.section{padding:var(--space-md) var(--space-lg) var(--space-2xl)}.section-title{font-size:clamp(1.8rem,5vw,3rem)}.section-subtitle{font-size:.95rem}}@media (max-width: 480px){:root{--space-xs: .2rem;--space-sm: .35rem;--space-md: .6rem;--space-lg: .85rem;--space-xl: 1.25rem;--space-2xl: 1.75rem;--space-3xl: 2.5rem}.section{padding:var(--space-sm) var(--space-md) var(--space-xl)}.section-title{font-size:clamp(1.5rem,6vw,2.5rem)}.section-subtitle{font-size:.85rem;padding:0 var(--space-sm)}.card{padding:var(--space-lg)}}:root{--flat-ink: #F2F2F2;--flat-emph: #EAEAEA;--flat-text: #9A9A9A;--flat-faint45: rgba(255, 255, 255, .45);--flat-faint40: rgba(255, 255, 255, .4);--flat-faint35: rgba(255, 255, 255, .35);--flat-hairline-6: rgba(255, 255, 255, .06);--flat-hairline-7: rgba(255, 255, 255, .07);--flat-hairline-8: rgba(255, 255, 255, .08);--flat-hairline-10: rgba(255, 255, 255, .1);--flat-hover-2: rgba(255, 255, 255, .02);--flat-hover-5: rgba(255, 255, 255, .05);--flat-hover-6: rgba(255, 255, 255, .06);--flat-hover-8: rgba(255, 255, 255, .08);--flat-panel: rgba(16, 16, 21, .97);--flat-glass: rgba(20, 20, 26, .72);--flat-tip-bg: rgba(10, 10, 13, .96);--flat-tip-text: #EAEAEA;--flat-media-bg: #0B0B0F;--flat-panel-border: rgba(255, 255, 255, .12);--flat-divider-15: rgba(255, 255, 255, .15);--flat-nav-fade-rgb: 13, 13, 13;--flat-underline-30: rgba(255, 255, 255, .3);--flat-tip-border: rgba(255, 255, 255, .15);--flat-chip-rgb: 13, 13, 13;--flat-dot-rgb: 255, 255, 255;--flat-panel-solid: #101015;--flat-scrim: rgba(0, 0, 0, .6);--flat-scrim-solid: rgba(0, 0, 0, .8);--flat-panel-shadow: 0 30px 80px rgba(0, 0, 0, .6);--flat-pop-shadow: 0 16px 40px rgba(0, 0, 0, .35)}:root[data-theme=midnight]{--color-bg: #0A0F1E;--flat-ink: #EDF1F7;--flat-emph: #DEE5EF;--flat-text: #8C96A8;--flat-panel: rgba(13, 18, 33, .97);--flat-glass: rgba(16, 21, 38, .72);--flat-media-bg: #0A0E1A;--flat-nav-fade-rgb: 10, 15, 30;--flat-chip-rgb: 10, 15, 30;--flat-panel-solid: #0D1221}:root[data-theme=paper]{--color-bg: #F7F4EE;--flat-ink: #171511;--flat-emph: #26231D;--flat-text: #6B675F;--flat-faint45: rgba(20, 18, 14, .5);--flat-faint40: rgba(20, 18, 14, .45);--flat-faint35: rgba(20, 18, 14, .4);--flat-hairline-6: rgba(20, 18, 14, .1);--flat-hairline-7: rgba(20, 18, 14, .11);--flat-hairline-8: rgba(20, 18, 14, .12);--flat-hairline-10: rgba(20, 18, 14, .14);--flat-hover-2: rgba(20, 18, 14, .035);--flat-hover-5: rgba(20, 18, 14, .06);--flat-hover-6: rgba(20, 18, 14, .07);--flat-hover-8: rgba(20, 18, 14, .09);--flat-panel: rgba(253, 252, 249, .98);--flat-glass: rgba(250, 248, 243, .8);--flat-media-bg: #ECE8E0;--flat-panel-border: rgba(20, 18, 14, .14);--flat-divider-15: rgba(20, 18, 14, .18);--flat-nav-fade-rgb: 247, 244, 238;--flat-underline-30: rgba(20, 18, 14, .35);--flat-chip-rgb: 250, 248, 243;--flat-dot-rgb: 20, 18, 14;--flat-panel-solid: #FDFCF9;--flat-scrim: rgba(25, 22, 17, .45);--flat-scrim-solid: rgba(25, 22, 17, .7);--flat-panel-shadow: 0 30px 80px rgba(20, 18, 14, .22);--flat-pop-shadow: 0 16px 40px rgba(20, 18, 14, .16)}:root[data-theme=paper] .flat-page:before,:root[data-theme=paper] .flat-page:after{opacity:0}:root[data-theme=paper] .exp-logo--invert,:root[data-theme=paper] .home-logo--invert{filter:none}:root[data-theme=paper] .webring-logo{filter:invert(1)}:root[data-theme=paper] .exp-logo--screen,:root[data-theme=paper] .home-logo--screen{filter:invert(1);mix-blend-mode:multiply}html.theme-fade,html.theme-fade *,html.theme-fade *:before,html.theme-fade *:after{transition:background-color .25s ease,color .25s ease,border-color .25s ease,opacity .25s ease!important}.flat-page{position:relative;min-height:100vh;background:var(--color-bg);color:var(--flat-emph);font-family:var(--font-body)}.flat-page:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:radial-gradient(1px 1px at 40px 60px,var(--flat-faint40),transparent),radial-gradient(1px 1px at 190px 210px,rgba(255,255,255,.22),transparent),radial-gradient(1.5px 1.5px at 330px 90px,rgba(255,255,255,.3),transparent),radial-gradient(1px 1px at 460px 300px,rgba(255,255,255,.18),transparent),radial-gradient(1px 1px at 110px 390px,rgba(255,255,255,.25),transparent),radial-gradient(2px 2px at 400px 470px,rgba(100,181,246,.25),transparent),radial-gradient(1px 1px at 260px 520px,rgba(255,255,255,.2),transparent);background-size:520px 560px;opacity:.4}.flat-page:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:radial-gradient(1px 1px at 600px 140px,rgba(255,255,255,.28),transparent),radial-gradient(1.5px 1.5px at 90px 250px,rgba(255,255,255,.16),transparent),radial-gradient(1px 1px at 500px 620px,rgba(149,117,205,.28),transparent),radial-gradient(1px 1px at 300px 700px,rgba(255,255,255,.2),transparent);background-size:730px 780px;opacity:.4}.flat-col{position:relative;z-index:2;max-width:820px;margin:0 auto;padding:132px 48px 0}.flat-title-row{display:flex;align-items:baseline;gap:14px}.flat-title{margin:0;font-family:var(--font-hero);font-size:44px;font-weight:600;letter-spacing:-.015em;color:var(--flat-ink)}.flat-title-line{flex:1;height:1px;background:var(--flat-hairline-10)}.flat-eyebrow{font-size:12px;letter-spacing:.14em;color:var(--flat-faint40);margin-bottom:16px}.flat-iconbtn{width:32px;height:32px;border-radius:50%;border:none;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--flat-text);padding:0;transition:background .2s ease,color .2s ease}.flat-iconbtn:hover{background:var(--flat-hairline-6)}.flat-iconbtn.active{background:var(--flat-hover-8);color:var(--flat-emph)}@media (max-width: 640px){.flat-col{padding:108px 24px 0}.flat-title{font-size:34px}}@media (prefers-reduced-motion: reduce){.flat-page *,.pillnav-row *{transition-duration:.01ms!important;animation-duration:.01ms!important}}.pillnav-row{position:fixed;top:0;right:0;z-index:100;padding:28px 48px}.pillnav{display:flex;align-items:center;gap:28px}.pillnav-item{position:relative;padding:6px 2px;font-size:14px;font-weight:500;color:var(--flat-text);text-decoration:none;transition:color .2s ease,transform .16s var(--ease-smooth)}@media (hover: hover) and (pointer: fine){.pillnav-item:hover{color:var(--flat-emph)}}.pillnav-item:active{transform:scale(.97)}.pillnav-item.active{color:var(--flat-emph)}.pillnav-underline{position:absolute;left:0;right:0;bottom:0;height:2px;border-radius:2px;background:var(--flat-emph)}@media (max-width: 640px){.pillnav-row{left:0;display:flex;justify-content:flex-end;padding:16px 20px 22px;background:linear-gradient(to bottom,rgba(var(--flat-nav-fade-rgb),.96) 55%,rgba(var(--flat-nav-fade-rgb),0))}.pillnav{gap:20px}.pillnav-item{font-size:13px}}.themepicker-row{position:fixed;top:36px;left:1.5rem;z-index:101}.themepicker-trigger{display:block;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--flat-faint35);padding:0;cursor:pointer;transition:border-color .2s ease,transform .16s var(--ease-smooth),box-shadow .2s ease}@media (hover: hover) and (pointer: fine){.themepicker-trigger:hover{border-color:var(--flat-text);transform:scale(1.08)}}.themepicker-trigger:active{transform:scale(.94)}.themepicker-menu{position:absolute;top:calc(100% + 8px);left:50%;translate:-50% 0;margin:0;padding:6px;list-style:none;display:flex;flex-direction:column;gap:7px;background:var(--flat-panel);border:1px solid var(--flat-panel-border);border-radius:100px;box-shadow:var(--flat-pop-shadow);transform-origin:top center}.themepicker-item{display:block;width:14px;height:14px;border-radius:50%;border:1px solid var(--flat-faint40);padding:0;cursor:pointer;transition:transform .16s var(--ease-smooth),box-shadow .2s ease}@media (hover: hover) and (pointer: fine){.themepicker-item:hover{transform:scale(1.15)}}.themepicker-item:active{transform:scale(.9)}.themepicker-item.active{box-shadow:0 0 0 2px var(--flat-panel),0 0 0 3.5px var(--flat-text)}@media (max-width: 640px){.themepicker-row{top:22px;left:20px}.themepicker-trigger{width:17px;height:17px}}.home-col{padding-bottom:44px}.home-intro{margin:34px 0 0;font-size:17px;line-height:1.8;color:var(--flat-text);max-width:66ch}.home-intro strong{color:var(--flat-emph);font-weight:600}.home-u{text-decoration:underline;text-underline-offset:4px}.home-a{transition:color .2s ease}@media (hover: hover) and (pointer: fine){.home-a:hover,.home-a:hover strong{color:var(--flat-ink)}}.home-fact-link{text-decoration:underline;text-underline-offset:3px;transition:color .2s ease}@media (hover: hover) and (pointer: fine){.home-fact-link:hover{color:var(--flat-emph)}}.home-availability{margin:18px 0 0;font-size:17px;line-height:1.8;color:var(--flat-text)}.home-section{margin-top:36px}.home-recent{display:flex;flex-direction:column;gap:14px}.home-recent-row{display:grid;grid-template-columns:18px 1fr auto;gap:12px;font-size:15.5px;line-height:1.65;color:var(--flat-text);text-decoration:none;border-radius:6px;transition:background .2s ease}@media (hover: hover) and (pointer: fine){.home-recent-row:hover{background:var(--flat-hover-2)}}.home-recent-row:active{background:var(--flat-hover-5)}.home-recent-text strong{color:var(--flat-emph);font-weight:600}.home-dash{color:var(--flat-faint35);justify-self:center}.home-recent-logo{width:16px;height:16px;object-fit:contain;justify-self:center;align-self:start;margin-top:4px}.home-logo--invert{filter:invert(1);opacity:.92}.home-logo--screen{mix-blend-mode:screen;border-radius:3px}.home-arrow{color:var(--flat-faint45);transition:transform .2s ease}@media (hover: hover) and (pointer: fine){.home-recent-row:hover .home-arrow{transform:translate(3px)}}.home-funfacts{margin:0;font-size:15.5px;line-height:1.75;color:var(--flat-text);max-width:66ch}.home-awards{display:flex;flex-direction:column}.home-award-row{display:grid;grid-template-columns:1fr auto;gap:16px;padding:12px 2px;border-bottom:1px solid var(--flat-hairline-6);font-size:14.5px}.home-award-row:last-child{border-bottom:none}.home-award-left{color:var(--flat-emph)}.home-award-right{color:var(--flat-text);text-align:right}.home-award-link{color:inherit;text-decoration:underline;text-underline-offset:3px;transition:color .2s ease}@media (hover: hover) and (pointer: fine){.home-award-link:hover{color:var(--flat-ink)}}.home-socials{margin-top:60px;display:flex;justify-content:center;align-items:center;gap:32px}.social-icon{color:var(--flat-text);width:20px;height:20px;transition:color var(--transition-normal),transform .2s ease;position:relative;display:inline-flex;align-items:center}.social-icon svg{width:100%;height:100%}.social-icon:after{content:"";position:absolute;bottom:-4px;left:0;right:0;height:1px;background:var(--flat-emph);transform:scaleX(0);transform-origin:left;transition:transform .3s ease}@media (hover: hover) and (pointer: fine){.social-icon:hover{color:var(--flat-emph);transform:translateY(-2px)}.social-icon:hover:after{transform:scaleX(1)}}.social-icon:active{transform:translateY(-1px) scale(.94)}.email-icon{width:22px;height:22px;top:-.7px}.email-icon .email-glyph{position:absolute;top:0;right:0;bottom:0;left:0;transition:opacity .18s var(--ease-smooth),transform .18s var(--ease-smooth)}.email-glyph--check{opacity:0;transform:scale(.92)}.email-glyph--check path{stroke-dasharray:24;stroke-dashoffset:24;transition:stroke-dashoffset .26s var(--ease-smooth) .06s}.email-icon.copied .email-glyph--mail{opacity:0;transform:scale(.92)}.email-icon.copied .email-glyph--check{opacity:1;transform:scale(1)}.email-icon.copied .email-glyph--check path{stroke-dashoffset:0}.email-icon.copied .email-tooltip{opacity:1;visibility:visible;transform:translate(-50%) translateY(0) scale(1)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.email-tooltip{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%);padding:6px 12px;background:var(--flat-tip-bg);border:1px solid var(--flat-tip-border);border-radius:6px;font-family:var(--font-body);font-size:.75rem;color:var(--flat-tip-text);white-space:nowrap;opacity:0;visibility:hidden;transform:translate(-50%) translateY(3px) scale(.97);transform-origin:50% 100%;transition:opacity 125ms var(--ease-smooth),transform 125ms var(--ease-smooth),visibility 125ms;pointer-events:none;z-index:100}.email-icon:hover .email-tooltip{opacity:1;visibility:visible;transform:translate(-50%) translateY(0) scale(1)}.email-tooltip-hint{display:block;margin-top:2px;font-size:.62rem;letter-spacing:.04em;color:var(--flat-text);text-align:center}.home-social-divider{width:1px;height:16px;background:var(--flat-divider-15)}.webring-link{position:fixed;bottom:1.5rem;left:1.5rem;z-index:100;display:flex;align-items:center;text-decoration:none}.webring-logo{width:20px;height:20px;object-fit:contain;opacity:.7;transition:opacity .3s ease,transform .2s ease}.webring-link:hover .webring-logo{opacity:1;transform:translateY(-2px)}.webring-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);padding:5px 6px;background:var(--flat-tip-bg);border:1px solid var(--flat-tip-border);border-radius:6px;font-family:var(--font-body);font-size:.6rem;color:var(--flat-tip-text);text-align:center;line-height:1.3;opacity:0;visibility:hidden;transform:translate(-50%) translateY(3px) scale(.97);transform-origin:50% 100%;transition:opacity 125ms var(--ease-smooth),transform 125ms var(--ease-smooth),visibility 125ms;pointer-events:none;z-index:101}.webring-link:hover .webring-tooltip{opacity:1;visibility:visible;transform:translate(-50%) translateY(0) scale(1)}.home-updated{position:fixed;bottom:1.5rem;right:1.5rem;z-index:100;font-size:.7rem;letter-spacing:.04em;color:var(--flat-faint40)}@media (max-width: 640px){.home-col{padding-bottom:12px}.home-updated{position:static;display:block;text-align:center;padding-bottom:28px}.webring-link{position:static;display:flex;justify-content:center;padding-bottom:36px}.home-intro,.home-availability{font-size:15.5px}.home-award-row{grid-template-columns:1fr;gap:2px}.home-award-right{text-align:left}.home-socials{gap:24px;flex-wrap:wrap}}.deck-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:220;background:var(--flat-scrim);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px}.deck-panel{width:860px;max-width:100%;max-height:92vh;background:var(--flat-panel);border:1px solid var(--flat-panel-border);border-radius:16px;box-shadow:var(--flat-panel-shadow);overflow:hidden;display:flex;flex-direction:column}.deck-head{display:flex;align-items:center;gap:18px;padding:14px 18px;border-bottom:1px solid var(--flat-hover-8)}.deck-title{font-size:14px;font-weight:600;color:var(--flat-ink);margin-right:auto}.deck-open-link{white-space:nowrap;font-size:13px;color:var(--flat-emph);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--flat-underline-30);transition:text-decoration-color .2s ease}@media (hover: hover) and (pointer: fine){.deck-open-link:hover{text-decoration-color:var(--flat-emph)}}.flat-iconbtn.deck-close{background:rgba(var(--flat-chip-rgb),.7);color:var(--flat-emph)}.deck-embed{width:100%;height:min(600px,70vh);border:none;display:block;background:var(--flat-media-bg)}@media (prefers-reduced-transparency: reduce){.deck-overlay{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--flat-scrim-solid)}}.experience-page{padding-bottom:80px}.exp-list{margin-top:36px;display:flex;flex-direction:column}.exp-row-wrap{border-bottom:1px solid var(--flat-hairline-7)}.exp-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:20px;padding:20px 4px}.exp-row-name{display:flex;align-items:center;gap:12px;font-size:15.5px;color:var(--flat-text)}.exp-logo{width:20px;height:20px;object-fit:contain;flex:none}.exp-logo--invert{filter:invert(1);opacity:.92}.exp-logo--screen{mix-blend-mode:screen;border-radius:4px}.exp-logo--mono{filter:saturate(.8) brightness(1.15)}.exp-row-name strong{font-weight:600;color:var(--flat-ink)}.exp-row-date{font-size:13.5px;color:var(--flat-text);font-variant-numeric:tabular-nums}.exp-chevron{transition:transform .25s var(--ease-smooth)}.exp-panel{overflow:hidden}.exp-panel-inner{padding:0 4px 24px}.exp-summary{margin:0;font-size:15px;line-height:1.7;color:var(--flat-text);max-width:62ch}.exp-summary strong,.exp-bullet strong{color:var(--flat-emph);font-weight:600}.exp-inline-link{color:inherit;text-decoration:underline;text-underline-offset:3px;transition:color .2s ease}@media (hover: hover) and (pointer: fine){.exp-inline-link:hover{color:var(--flat-emph)}}.exp-bullets{display:flex;flex-direction:column;gap:9px;margin-top:14px;font-size:14.5px;line-height:1.6;color:var(--flat-text)}.exp-bullet{display:flex;gap:12px}.exp-bullet-dash{color:var(--flat-faint35);flex:none}.exp-meta{display:flex;align-items:center;gap:18px;margin-top:16px;flex-wrap:wrap}.exp-tech{font-size:12.5px;color:var(--flat-faint45);letter-spacing:.04em}.exp-link{font-size:13px;color:var(--flat-emph);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--flat-underline-30);transition:text-decoration-color .2s ease}.exp-link:hover{text-decoration-color:var(--flat-emph)}.exp-pdf-btn{border:none;background:transparent;padding:0;cursor:pointer;font-family:inherit}@media (max-width: 640px){.exp-row{grid-template-columns:1fr auto;grid-template-areas:"name btn" "date btn";row-gap:4px}.exp-row-name{grid-area:name}.exp-row-date{grid-area:date;font-size:12.5px}.exp-row .flat-iconbtn{grid-area:btn}}.projects-page{padding-bottom:80px}.proj-underline{text-decoration:underline;text-underline-offset:3px}.proj-list{margin-top:36px;display:flex;flex-direction:column}.proj-row{display:grid;grid-template-columns:170px 1fr auto auto;align-items:center;gap:20px;padding:19px 4px;border-bottom:1px solid var(--flat-hairline-7);cursor:pointer;transition:background .2s ease}@media (hover: hover) and (pointer: fine){.proj-row:hover{background:var(--flat-hover-2)}}.proj-row:active{background:var(--flat-hover-5)}.proj-row-name{font-size:15.5px;font-weight:600;color:var(--flat-ink)}.proj-row-oneliner{font-size:14.5px;color:var(--flat-text)}.proj-row-oneliner strong{color:var(--flat-emph);font-weight:600}.proj-row-year{font-size:13.5px;color:var(--flat-text);font-variant-numeric:tabular-nums}.proj-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:var(--flat-scrim);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px}.proj-panel{width:760px;max-width:100%;max-height:min(820px,92vh);background:var(--flat-panel);border:1px solid var(--flat-panel-border);border-radius:16px;box-shadow:var(--flat-panel-shadow);overflow:hidden;position:relative;display:flex;flex-direction:column}.proj-panel-close{position:absolute;top:16px;right:16px;width:34px;height:34px;border-radius:50%;border:none;background:rgba(var(--flat-chip-rgb),.7);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--flat-emph);z-index:2;padding:0;transition:background .2s ease,transform .16s var(--ease-smooth)}@media (hover: hover) and (pointer: fine){.proj-panel-close:hover{background:rgba(var(--flat-chip-rgb),.95)}}.proj-panel-close:active{transform:scale(.94)}.proj-media{position:relative;aspect-ratio:16/9;flex:none;overflow:hidden;border-bottom:1px solid var(--flat-hairline-10);background:var(--flat-media-bg)}.proj-media-slide{position:relative;width:100%;height:100%;overflow:hidden}.proj-media-blur{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;filter:blur(26px) saturate(1.1);transform:scale(1.12);opacity:.5;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.proj-media-img{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;display:block;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.proj-media-img--cover{object-fit:cover}.proj-media--pdf{aspect-ratio:auto;height:min(460px,52vh)}.proj-media--pdf iframe{width:100%;height:100%;border:none;display:block;background:var(--flat-media-bg)}.proj-media-empty{display:flex;align-items:center;justify-content:center;border:1px dashed var(--flat-divider-15);border-radius:10px;margin:14px;aspect-ratio:auto;min-height:200px;background:transparent}.proj-media-empty span{font-size:12.5px;color:var(--flat-faint40);letter-spacing:.04em}.flat-iconbtn.proj-media-arrow{position:absolute;top:50%;transform:translateY(-50%);background:rgba(var(--flat-chip-rgb),.55);color:var(--flat-emph);opacity:0;transition:opacity .2s ease,background .2s ease}.proj-media-arrow--left{left:12px}.proj-media-arrow--right{right:12px}.proj-media:hover .proj-media-arrow,.proj-media-arrow:focus-visible{opacity:1}.flat-iconbtn.proj-media-arrow:hover{background:rgba(var(--flat-chip-rgb),.85)}.proj-media-dots{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;gap:7px;padding:5px 8px;background:rgba(var(--flat-chip-rgb),.5);border-radius:100px}.proj-media-dot{width:6px;height:6px;border-radius:50%;border:none;padding:0;background:rgba(var(--flat-dot-rgb),.3);cursor:pointer;transition:background .2s ease,transform .2s ease}.proj-media-dot.active{background:var(--flat-emph);transform:scale(1.2)}.proj-panel-body{padding:28px 32px 30px;overflow-y:auto}.proj-panel-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.proj-panel-name{font-size:20px;font-weight:600;color:var(--flat-ink)}.proj-panel-badge{font-size:13.5px;font-weight:600;color:var(--flat-emph)}.proj-panel-year{margin-left:auto;font-size:13px;color:var(--flat-text)}.proj-panel-desc{margin:14px 0 0;font-size:15px;line-height:1.7;color:var(--flat-text);max-width:62ch}.proj-panel-meta{display:flex;align-items:center;gap:22px;margin-top:20px;padding-top:18px;border-top:1px solid var(--flat-hover-8);flex-wrap:wrap}.proj-panel-tech{font-size:12.5px;color:var(--flat-faint45);letter-spacing:.04em}.proj-panel-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--flat-emph);text-decoration:none;transition:color .2s ease,transform .2s ease}.proj-panel-link svg{flex:none;opacity:.85}.proj-panel-link-label{position:relative}.proj-panel-link-label:after{content:"";position:absolute;bottom:-3px;left:0;right:0;height:1px;background:var(--flat-ink);transform:scaleX(0);transform-origin:left;transition:transform .3s ease}@media (hover: hover) and (pointer: fine){.proj-panel-link:hover{color:var(--flat-ink);transform:translateY(-1px)}.proj-panel-link:hover .proj-panel-link-label:after{transform:scaleX(1)}}.proj-panel--nomedia .proj-panel-head{padding-right:44px}@media (pointer: coarse){.flat-iconbtn.proj-media-arrow{opacity:1;background:rgba(var(--flat-chip-rgb),.45)}}@media (max-width: 768px){.proj-row{grid-template-columns:1fr auto auto;grid-template-areas:"name year btn" "oneliner oneliner btn";row-gap:4px}.proj-row-name{grid-area:name}.proj-row-oneliner{grid-area:oneliner}.proj-row-year{grid-area:year}.proj-row .flat-iconbtn{grid-area:btn}.proj-panel-body{padding:22px 20px 24px}.flat-iconbtn.proj-media-arrow{opacity:1;background:rgba(var(--flat-chip-rgb),.45)}}.proj-deck-btn{border:none;background:transparent;padding:0;cursor:pointer;font-family:inherit}@media (prefers-reduced-transparency: reduce){.proj-overlay{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--flat-scrim-solid)}.proj-panel{background:var(--flat-panel-solid)}}.resume-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:90px 24px 28px}.resume-wrap{position:relative;z-index:2;width:min(860px,80vw)}.resume-title{font-size:20px;font-weight:600;color:var(--flat-ink);margin-right:auto}.resume-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}.resume-back{margin-left:-6px}.resume-back svg{transform:translateY(2px)}.resume-open-link{font-size:13px;color:var(--flat-emph);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--flat-underline-30);transition:text-decoration-color .2s ease;flex:none}@media (hover: hover) and (pointer: fine){.resume-open-link:hover{text-decoration-color:var(--flat-emph)}}.resume-embed-wrap{border:1px solid var(--flat-hairline-10);border-radius:12px;overflow:hidden;background:var(--flat-media-bg);height:80vh}.resume-embed{width:100%;height:100%;border:none;display:block}@media (max-width: 640px){.resume-wrap{width:100%}.resume-embed-wrap{height:74vh}}.notfound-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px}.notfound-box{position:relative;z-index:2;text-align:center;transform:translateY(-4vh)}.notfound-title{margin:0;font-family:var(--font-hero);font-size:72px;font-weight:600;letter-spacing:-.015em;line-height:1;color:var(--flat-ink)}.notfound-text{margin:16px 0 0;font-size:15.5px;color:var(--flat-text)}.notfound-link{display:inline-block;margin-top:28px;font-size:14px;color:var(--flat-emph);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--flat-underline-30);transition:color .2s ease,text-decoration-color .2s ease}@media (hover: hover) and (pointer: fine){.notfound-link:hover{color:var(--flat-ink);text-decoration-color:var(--flat-ink)}}
