:root,[data-theme=light]{--text-xs: clamp(.75rem, .7rem + .25vw, .8125rem);--text-sm: clamp(.875rem, .8rem + .2vw, .9375rem);--text-base: clamp(1rem, .96rem + .2vw, 1.0625rem);--text-lg: clamp(1.125rem, 1rem + .5vw, 1.375rem);--text-xl: clamp(1.5rem, 1.2rem + 1.2vw, 2.125rem);--text-2xl: clamp(2rem, 1.3rem + 2.4vw, 3.25rem);--text-3xl: clamp(2.75rem, 1.4rem + 4.6vw, 5.25rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--space-32: 8rem;--color-bg: #fbfaf7;--color-surface: #ffffff;--color-surface-2: #f4f2ec;--color-divider: #e5e1d8;--color-border: #d8d3c8;--color-text: #14202e;--color-text-muted: #5b6672;--color-text-faint: #93999f;--color-text-inverse: #f7f6f2;--color-accent: #b1502b;--color-accent-hover: #8f3d1f;--color-accent-soft: #f0e2d9;--color-ink: #101a26;--color-ink-2: #17232f;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-full: 9999px;--transition-interactive: .2s cubic-bezier(.16, 1, .3, 1);--shadow-sm: 0 1px 2px rgba(20, 32, 46, .05);--shadow-md: 0 6px 24px rgba(20, 32, 46, .07);--shadow-lg: 0 18px 48px rgba(20, 32, 46, .1);--content-narrow: 720px;--content-default: 1080px;--content-wide: 1280px;--font-display: "Zodiak", "Iowan Old Style", Georgia, serif;--font-body: "General Sans", "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", ui-monospace, monospace}[data-theme=dark]{--color-bg: #0e1620;--color-surface: #14202e;--color-surface-2: #1a2836;--color-divider: #263644;--color-border: #2c3d4d;--color-text: #e7e9ec;--color-text-muted: #99a4b0;--color-text-faint: #64707c;--color-text-inverse: #0e1620;--color-accent: #d9764f;--color-accent-hover: #e5906e;--color-accent-soft: #26313a;--color-ink: #0a121b;--color-ink-2: #0f1a25;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 6px 24px rgba(0, 0, 0, .4);--shadow-lg: 0 18px 48px rgba(0, 0, 0, .5)}@media (prefers-color-scheme: dark){:root:not([data-theme]){--color-bg: #0e1620;--color-surface: #14202e;--color-surface-2: #1a2836;--color-divider: #263644;--color-border: #2c3d4d;--color-text: #e7e9ec;--color-text-muted: #99a4b0;--color-text-faint: #64707c;--color-text-inverse: #0e1620;--color-accent: #d9764f;--color-accent-hover: #e5906e;--color-accent-soft: #26313a;--color-ink: #0a121b;--color-ink-2: #0f1a25}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:none;text-size-adjust:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;scroll-behavior:smooth;scroll-padding-top:5rem}body{min-height:100dvh;line-height:1.6;font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text);background-color:var(--color-bg);transition:background-color var(--transition-interactive),color var(--transition-interactive)}img,svg,video,canvas{display:block;max-width:100%;height:auto}ul[role=list]{list-style:none}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}h1,h2,h3,h4{text-wrap:balance;line-height:1.08;font-weight:500;letter-spacing:-.015em}p{text-wrap:pretty;max-width:68ch}a{color:inherit;text-decoration:none}::selection{background:var(--color-accent-soft);color:var(--color-text)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:var(--radius-sm)}a,button,[role=button]{transition:color var(--transition-interactive),background var(--transition-interactive),border-color var(--transition-interactive),opacity var(--transition-interactive),transform var(--transition-interactive)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.skip-link{position:absolute;left:var(--space-4);top:-100px;z-index:100;padding:var(--space-3) var(--space-4);background:var(--color-text);color:var(--color-text-inverse);border-radius:var(--radius-md);font-size:var(--text-sm)}.skip-link:focus{top:var(--space-4)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.shell{width:100%;max-width:var(--content-wide);margin-inline:auto;padding-inline:clamp(var(--space-4),5vw,var(--space-24))}.section{padding-block:clamp(var(--space-16),9vw,var(--space-32));border-top:1px solid var(--color-divider)}.section--tight{padding-block:clamp(var(--space-12),6vw,var(--space-20))}.eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--color-accent);margin-bottom:var(--space-4);display:flex;align-items:center;gap:var(--space-3)}.eyebrow:before{content:"";width:1.75rem;height:1px;background:var(--color-accent);display:inline-block}.section-title{font-family:var(--font-display);font-size:var(--text-xl);max-width:20ch}.section-head{margin-bottom:clamp(var(--space-8),5vw,var(--space-16));max-width:var(--content-narrow)}.section-head p{margin-top:var(--space-4);color:var(--color-text-muted);font-size:var(--text-base)}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--color-bg) 85%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid transparent;transition:border-color var(--transition-interactive)}.site-header[data-scrolled=true]{border-bottom-color:var(--color-divider)}.site-header .shell{display:flex;align-items:center;justify-content:space-between;height:4.25rem}.brand{display:flex;align-items:center;gap:var(--space-3);font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.02em}.brand .logo{width:1.75rem;height:1.75rem;color:var(--color-accent);flex-shrink:0}.nav{display:flex;align-items:center;gap:var(--space-6)}.nav a{font-size:var(--text-sm);color:var(--color-text-muted);position:relative}.nav a:hover{color:var(--color-text)}.nav-desktop{display:none}@media (min-width: 820px){.nav-desktop{display:flex;align-items:center;gap:var(--space-6)}}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;border-radius:var(--radius-full);color:var(--color-text-muted);border:1px solid var(--color-border)}.theme-toggle:hover{color:var(--color-text);border-color:var(--color-text-muted)}.hero{position:relative;padding-block:clamp(var(--space-20),13vw,var(--space-32));overflow:hidden}.hero .shell{position:relative;z-index:1}.hero-grid{display:grid;gap:clamp(var(--space-8),4vw,var(--space-16))}@media (min-width: 900px){.hero-grid{grid-template-columns:1.55fr 1fr;align-items:end}}.hero-locale{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--space-6)}.hero h1{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:500;line-height:.98}.hero h1 em{font-style:italic;color:var(--color-accent)}.hero-lede{margin-top:var(--space-8);font-size:var(--text-lg);color:var(--color-text-muted);max-width:42ch}.hero-lede strong{color:var(--color-text);font-weight:500}.hero-actions{margin-top:var(--space-10);display:flex;flex-wrap:wrap;gap:var(--space-4)}.hero-side{display:flex;flex-direction:column;gap:var(--space-6)}.hero-motif{width:100%;color:var(--color-border)}.hero-facts{border-top:1px solid var(--color-divider);padding-top:var(--space-6);display:grid;gap:var(--space-5)}.hero-fact{display:grid;gap:var(--space-1)}.hero-fact dt{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-faint)}.hero-fact dd{font-size:var(--text-sm);color:var(--color-text)}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:.7rem 1.25rem;font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-md);border:1px solid transparent}.btn-primary{background:var(--color-text);color:var(--color-text-inverse)}.btn-primary:hover{background:var(--color-accent)}.btn-ghost{border-color:var(--color-border);color:var(--color-text)}.btn-ghost:hover{border-color:var(--color-text-muted)}.btn svg{width:1rem;height:1rem}.work-list{display:grid;gap:var(--space-6)}@media (min-width: 720px){.work-list{grid-template-columns:repeat(2,1fr)}}.project-card{display:flex;flex-direction:column;gap:var(--space-4);padding:clamp(var(--space-6),3vw,var(--space-8));background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-interactive),transform var(--transition-interactive),border-color var(--transition-interactive)}.project-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);border-color:var(--color-text-faint)}.project-card--wide{grid-column:1 / -1}.project-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.project-name{font-family:var(--font-display);font-size:var(--text-lg)}.project-tagline{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-faint);margin-top:var(--space-1)}.status-pill{flex-shrink:0;display:inline-flex;align-items:center;gap:var(--space-2);padding:.3rem .65rem;font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);background:var(--color-surface-2);border-radius:var(--radius-full);white-space:nowrap}.status-pill .dot{width:.45rem;height:.45rem;border-radius:var(--radius-full);background:var(--color-text-faint)}.status-pill[data-tone=active] .dot{background:var(--color-accent)}.status-pill[data-tone=live] .dot{background:#2f9e6f}.project-role{font-size:var(--text-sm);color:var(--color-accent);font-weight:500}.project-desc{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.65}.project-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.project-tag{font-size:var(--text-xs);color:var(--color-text-faint);padding:.2rem .55rem;border:1px solid var(--color-divider);border-radius:var(--radius-sm)}.project-foot{margin-top:auto;padding-top:var(--space-4);border-top:1px solid var(--color-divider);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.project-link{font-size:var(--text-sm);font-weight:500;color:var(--color-text);display:inline-flex;align-items:center;gap:var(--space-2)}.project-link:hover{color:var(--color-accent)}.project-link svg{width:.9rem;height:.9rem}.project-link--muted{color:var(--color-text-faint);font-weight:400}.activity{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.activity .commits{font-weight:500;color:var(--color-text);font-variant-numeric:tabular-nums}.activity--pending{color:var(--color-text-faint)}.activity svg{width:.85rem;height:.85rem;opacity:.7}.activity-note{margin-top:var(--space-8);font-size:var(--text-xs);color:var(--color-text-faint);max-width:74ch;line-height:1.6;border-left:none;padding-left:0}.disclosure{margin-top:var(--space-6)}.disclosure summary{cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);list-style:none;display:inline-flex;align-items:center;gap:var(--space-2)}.disclosure summary::-webkit-details-marker{display:none}.disclosure summary:hover{color:var(--color-text)}.disclosure summary .chev{transition:transform var(--transition-interactive)}.disclosure[open] summary .chev{transform:rotate(90deg)}.disclosure .additional{margin-top:var(--space-6)}.two-col{display:grid;gap:clamp(var(--space-10),6vw,var(--space-20))}@media (min-width: 900px){.two-col{grid-template-columns:1.4fr 1fr}}.col-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-faint);margin-bottom:var(--space-8);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-divider)}.timeline{display:grid;gap:var(--space-8)}.tl-item{display:grid;gap:var(--space-2)}.tl-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.tl-org{font-family:var(--font-display);font-size:var(--text-lg)}.tl-period{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-faint);white-space:nowrap}.tl-role{font-size:var(--text-sm);font-weight:500;color:var(--color-accent)}.tl-detail{font-size:var(--text-sm);color:var(--color-text-muted)}.edu-item{display:grid;gap:var(--space-1);padding-block:var(--space-5);border-bottom:1px solid var(--color-divider)}.edu-item:first-of-type{padding-top:0}.edu-cred{font-size:var(--text-base);font-weight:500}.edu-org{font-size:var(--text-sm);color:var(--color-accent)}.edu-detail{font-size:var(--text-xs);color:var(--color-text-faint)}.accomplishments-grid{display:grid;gap:var(--space-6)}@media (min-width: 720px){.accomplishments-grid{grid-template-columns:repeat(2,1fr)}}.accomplishment-card{display:flex;flex-direction:column;gap:var(--space-3);padding:clamp(var(--space-6),3vw,var(--space-8));background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.accomplishment-top{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap}.accomplishment-stat{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--color-accent);line-height:1}.accomplishment-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-faint)}.accomplishment-title{font-family:var(--font-display);font-size:var(--text-lg)}.accomplishment-body{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.65}.accomplishment-link{margin-top:var(--space-1)}.thesis-grid{display:grid;gap:var(--space-8)}@media (min-width: 720px){.thesis-grid{grid-template-columns:repeat(2,1fr);gap:clamp(var(--space-8),5vw,var(--space-16)) clamp(var(--space-10),6vw,var(--space-20))}}.thesis-item{display:grid;gap:var(--space-3)}.thesis-num{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-accent);letter-spacing:.1em}.thesis-title{font-family:var(--font-display);font-size:var(--text-lg)}.thesis-body{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.65}.about{background:var(--color-ink);color:var(--color-text-inverse);border-top:1px solid var(--color-ink-2)}[data-theme=dark] .about{color:var(--color-text)}.about .eyebrow{color:var(--color-accent)}.about-grid{display:grid;gap:clamp(var(--space-8),5vw,var(--space-16))}@media (min-width: 860px){.about-grid{grid-template-columns:.9fr 1.4fr}}.about h2{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--color-text-inverse)}[data-theme=dark] .about h2{color:var(--color-text)}.about-body{display:grid;gap:var(--space-5)}.about-body p{font-size:var(--text-base);color:#f7f6f2b8;line-height:1.7;max-width:62ch}[data-theme=dark] .about-body p{color:var(--color-text-muted)}.about-body strong{color:var(--color-text-inverse);font-weight:500}[data-theme=dark] .about-body strong{color:var(--color-text)}.site-footer{background:var(--color-ink-2);color:var(--color-text-inverse);padding-block:clamp(var(--space-16),8vw,var(--space-24))}[data-theme=dark] .site-footer{color:var(--color-text);border-top:1px solid var(--color-divider)}.footer-grid{display:grid;gap:var(--space-10)}@media (min-width: 720px){.footer-grid{grid-template-columns:1.4fr 1fr;align-items:start}}.footer-cta{font-family:var(--font-display);font-size:var(--text-xl);max-width:16ch;color:var(--color-text-inverse)}[data-theme=dark] .footer-cta{color:var(--color-text)}.footer-links{display:grid;gap:var(--space-3)}.footer-links a,.footer-links span{font-size:var(--text-sm);color:#f7f6f2a8;display:inline-flex;align-items:center;gap:var(--space-3)}[data-theme=dark] .footer-links a,[data-theme=dark] .footer-links span{color:var(--color-text-muted)}.footer-links a:hover{color:var(--color-accent)}.footer-links svg{width:1rem;height:1rem;flex-shrink:0}.footer-meta{margin-top:clamp(var(--space-12),6vw,var(--space-16));padding-top:var(--space-6);border-top:1px solid rgba(247,246,242,.14);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;font-size:var(--text-xs);color:#f7f6f280}[data-theme=dark] .footer-meta{border-top-color:var(--color-divider);color:var(--color-text-faint)}.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none}}
