.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}.hamburger-icon[data-astro-cid-dmqpwcec]{width:24px;height:24px;display:block;stroke-width:2.5px}.close-icon[data-astro-cid-dmqpwcec]{width:24px;height:24px;display:block}.scrollbar[data-astro-cid-rxxruuty]{position:fixed;top:50%;right:10px;transform:translateY(-50%);width:8px;height:18vh;z-index:1000;border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--theme-ink, #1e1e14) 14%,transparent);pointer-events:none;opacity:0;transition:opacity var(--duration-medium) var(--ease-default),width var(--duration-fast) var(--ease-default)}.scrollbar[data-astro-cid-rxxruuty].is-visible{opacity:1}[data-scheme=dark] .scrollbar[data-astro-cid-rxxruuty]{background:color-mix(in srgb,var(--theme-ink, #e9e8ec) 24%,transparent)}.scrollbar[data-astro-cid-rxxruuty]:has(.scrollbar__thumb:hover),.scrollbar[data-astro-cid-rxxruuty]:has(.scrollbar__thumb.is-dragging){width:12px}.scrollbar__thumb[data-astro-cid-rxxruuty]{position:absolute;left:0;top:0;width:100%;min-height:26px;border-radius:var(--radius-pill, 999px);background:linear-gradient(var(--color-primary) 0%,var(--color-primary-dark) 100%);transform:translateY(var(--sb-y, 0px));pointer-events:auto;cursor:grab;transition:background-color var(--duration-fast) var(--ease-default)}.scrollbar__thumb[data-astro-cid-rxxruuty]:hover,.scrollbar__thumb[data-astro-cid-rxxruuty].is-dragging{background:var(--color-primary-dark);cursor:grabbing}.scroll-rail[data-astro-cid-rxxruuty],[data-theme=design] .scrollbar[data-astro-cid-rxxruuty]{display:none}[data-theme=design] .scroll-rail[data-astro-cid-rxxruuty]{display:block;position:fixed;top:50%;right:16px;transform:translateY(-50%);z-index:1000;padding:10px 9px;border-radius:var(--theme-radius, 5px);background:var(--theme-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--theme-border);box-shadow:0 14px 34px -18px #1e180e80}.scroll-rail__inner[data-astro-cid-rxxruuty]{position:relative;height:16vh;width:22px}.scroll-rail__line[data-astro-cid-rxxruuty]{position:absolute;right:0;top:0;width:2px;height:100%;border-radius:2px;background:var(--theme-border)}.scroll-rail__fill[data-astro-cid-rxxruuty]{position:absolute;right:0;top:0;width:2px;height:0;background:var(--theme-accent-deep)}.scroll-rail__tick{position:absolute;left:0;right:8px;transform:translateY(-50%);display:flex;align-items:center;justify-content:flex-end;padding:0;background:none;border:none;cursor:pointer;color:var(--theme-ink-muted);font-family:var(--theme-font-body);font-weight:600}.scroll-rail__tick .n{text-align:right;font-size:12px;letter-spacing:.04em;transition:color var(--duration-medium, .3s) var(--ease-default)}.scroll-rail__tick[aria-current=true] .n{color:var(--theme-accent-deep)}.scroll-rail__tick:hover .n{color:var(--theme-ink)}@media(prefers-reduced-motion:reduce){.scrollbar[data-astro-cid-rxxruuty]{transition:none}}@media(max-width:768px){[data-theme=design] .scroll-rail[data-astro-cid-rxxruuty]{display:none}}.st-toggles[data-astro-cid-eikyqsng]{position:fixed;right:16px;bottom:16px;z-index:1200;display:flex;flex-direction:column;gap:10px}.st-toggle[data-astro-cid-eikyqsng]{position:relative;isolation:isolate;overflow:hidden;box-sizing:border-box;display:grid;place-items:center;width:42px;height:42px;padding:0;cursor:pointer;color:var(--theme-ink);background:var(--theme-surface);border:var(--border-width-medium) solid var(--theme-border);border-radius:var(--theme-radius);transition:color var(--duration-medium) var(--theme-motion-ease),background-color var(--duration-medium) var(--theme-motion-ease),border-color var(--duration-medium) var(--theme-motion-ease),transform var(--duration-fast) var(--theme-motion-ease)}.st-toggle[data-astro-cid-eikyqsng]:hover{color:var(--theme-accent);border-color:var(--theme-accent);transform:scale(1.05)}.st-toggle[data-astro-cid-eikyqsng]:focus-visible{outline:2px solid var(--theme-accent);outline-offset:2px}.st-icon[data-astro-cid-eikyqsng]{display:block}.st-icon--off[data-astro-cid-eikyqsng],.st-icon--sun[data-astro-cid-eikyqsng],#toggle-theme[data-astro-cid-eikyqsng][aria-pressed=true] .st-icon--moon[data-astro-cid-eikyqsng]{display:none}#toggle-theme[data-astro-cid-eikyqsng][aria-pressed=true] .st-icon--sun[data-astro-cid-eikyqsng]{display:block}#toggle-motion[data-astro-cid-eikyqsng][aria-pressed=true]{color:var(--color-white);background:var(--theme-accent);border-color:var(--theme-accent)}#toggle-motion[data-astro-cid-eikyqsng][aria-pressed=true] .st-icon--on[data-astro-cid-eikyqsng]{display:none}#toggle-motion[data-astro-cid-eikyqsng][aria-pressed=true] .st-icon--off[data-astro-cid-eikyqsng]{display:block}[data-theme=design] .st-toggle[data-astro-cid-eikyqsng]{border-width:1px;background:var(--theme-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 26px -16px #1e180e73}[data-theme=design] .st-toggle[data-astro-cid-eikyqsng]:hover{transform:none}[data-theme=engineering] .st-toggle[data-astro-cid-eikyqsng]{color:var(--theme-bg);background:var(--theme-ink);border:none;border-radius:0;box-shadow:0 6px 18px -8px #1e1e148c}[data-theme=engineering] .st-toggle[data-astro-cid-eikyqsng]:hover{color:var(--theme-ink);background:var(--theme-bg);transform:none}[data-theme=engineering] #toggle-motion[data-astro-cid-eikyqsng][aria-pressed=true]{color:var(--theme-accent-contrast);background:var(--theme-accent)}@media(max-width:768px){#toggle-motion[data-astro-cid-eikyqsng]{display:none}}:root{--color-text-light: #555666;--color-text-error: #dc3545;--color-text-error-dark: #721c24;--color-black: #1e1e14;--color-primary: #F5A045;--color-primary-dark: #e8913d;--color-white: #ffffff;--color-error-bg: #f87680;--color-error-border: #f5c6cb;--color-success-validation: rgb(69, 201, 80);--dark-bg: #17161b;--dark-surface: #201f26;--dark-surface-2: #2a2932;--dark-border: #34333d;--dark-ink: #e9e8ec;--dark-ink-muted: #9a99a4;--dark-glass: rgba(32, 31, 38, .72);--color-primary-muted: var(--color-primary-dark);--color-shadow-light: rgba(0, 0, 0, .1);--color-shadow-dark: rgba(0, 0, 0, .5);--color-overlay-dark: rgba(0, 0, 0, .15);--color-black-transparent: rgba(30, 30, 20, .5);--color-primary-transparent: rgba(245, 160, 69, .5);--color-error-transparent: rgba(220, 53, 69, .5);--color-success-transparent: rgba(134, 245, 143, .5);--shadow-focus-primary: 0 0 0 3px var(--color-primary-transparent);--shadow-card: 0 4px 12px rgba(0, 0, 0, .05);--shadow-card-hover: 0 10px 20px var(--color-shadow-light);--font-primary: "interstate-mono", monospace;--font-secondary: "Nunito", sans-serif;--gap-small: .5rem;--gap-medium: 1rem;--gap-large: 1.25rem;--gap-xl: 2rem;--duration-fast: .25s;--duration-medium: .3s;--duration-smooth: .35s;--duration-slow: .5s;--duration-xslow: 1s;--ease-default: ease;--ease-in-out: ease-in-out;--ease-out: ease-out;--ease-bouncy: cubic-bezier(.4, 1.1, .6, 1);--ease-smooth: cubic-bezier(.4, 1, .6, 1);--ease-aggressive: cubic-bezier(.4, 2, .6, 1);--ease-logo-hover: cubic-bezier(.075, .82, .165, 1);--wave-delay-base: .25s;--radius-small: 4px;--radius-medium: 8px;--radius-pill: 999px;--border-width-medium: 2px;--border-width-thick: 3px;--z-base: 1;--z-content: 2;--z-interactive: 10;--z-footer: 100;--z-nav: 1000;--z-overlay: 1250;--z-sidebar: 1300;--transform-scale-hover: scale(1.1);--transform-scale-hover-small: scale(1.05);--transform-translate-up-small: translateY(-3px)}:root,[data-theme=sketchbook]{--theme-bg: var(--color-white);--theme-surface: var(--color-white);--theme-border: var(--color-black);--theme-glass: rgba(247, 244, 238, .72);--theme-ink: var(--color-black);--theme-ink-muted: var(--color-text-light);--theme-accent: var(--color-primary);--theme-accent-contrast: var(--color-black);--theme-grid: none;--theme-grid-size: 24px;--theme-font-display: var(--font-secondary);--theme-font-body: var(--font-primary);--theme-radius: var(--radius-medium);--theme-motion-ease: var(--ease-smooth);--idiom-accent: var(--color-primary);--idiom-rule: var(--color-black)}:root[data-scheme=dark],[data-theme=sketchbook][data-scheme=dark]{--theme-bg: var(--dark-bg);--theme-surface: var(--dark-surface);--theme-border: var(--dark-border);--theme-glass: var(--dark-glass);--theme-ink: var(--dark-ink);--theme-ink-muted: var(--dark-ink-muted);--theme-accent: var(--color-primary-muted);--theme-accent-contrast: var(--color-black);--idiom-accent: var(--color-primary-muted);--idiom-rule: rgba(233, 232, 236, .16)}[data-theme=engineering]{--theme-bg: #ffffff;--theme-surface: #ffffff;--theme-border: #1e1e14;--theme-ink: #1e1e14;--theme-ink-muted: #6b6b63;--theme-accent: var(--color-primary);--theme-accent-contrast: var(--color-black);--theme-grid: radial-gradient( circle, rgba(30, 30, 20, .1) 1.6px, transparent 2.1px );--theme-grid-size: 22px;--theme-font-display: "Syne", sans-serif;--theme-font-body: "Roboto", sans-serif;--theme-radius: 0px;--theme-motion-ease: var(--ease-aggressive);--idiom-accent: var(--color-primary);--idiom-rule: rgba(30, 30, 20, .55);--eng-intro-after: 1.8s;--eng-intro-step: .12s;--eng-edge-shift: 0px;--eng-wm-x: -20px;--eng-cta-x: -.08rem;--eng-cta-y: clamp(-7.75rem, 2vw, -3.25rem)}[data-theme=engineering][data-scheme=dark]{--theme-bg: #1a1813;--theme-surface: #23201a;--theme-border: #3a352c;--theme-ink: #ffffff;--theme-ink-muted: #9c968a;--theme-accent: var(--color-primary-muted);--theme-accent-contrast: #1a1813;--theme-glass: rgba(35, 32, 26, .72);--theme-grid: radial-gradient( circle, rgba(236, 231, 221, .08) 1.6px, transparent 2.1px );--idiom-accent: var(--color-primary-muted);--idiom-rule: rgba(236, 231, 221, .5)}@media(max-width:700px){[data-theme=engineering]{--eng-wm-x: 0px;--eng-cta-y: -1.25rem;--eng-cta-x: 0rem}}@media(max-width:400px){[data-theme=engineering]{--eng-cta-y: -.5rem}}[data-theme=design]{--theme-bg: #f3efe6;--theme-surface: #ffffff;--theme-border: rgba(20, 18, 12, .14);--theme-ink: #16233a;--theme-ink-muted: #6c7183;--theme-accent: #f5a045;--theme-accent-deep: #b5611b;--theme-accent-contrast: #16233a;--theme-grid: none;--theme-font-display: "Dela Gothic One", sans-serif;--theme-font-body: "Archivo", system-ui, sans-serif;--theme-radius: 5px;--theme-motion-ease: var(--ease-smooth);--idiom-accent: #f5a045;--idiom-rule: rgba(20, 18, 12, .14);--dp-edge: 74px}[data-theme=design][data-scheme=dark]{--theme-bg: #0f1826;--theme-surface: #16233a;--theme-border: rgba(233, 226, 210, .16);--theme-ink: #e9e2d2;--theme-ink-muted: #9aa0ad;--theme-accent: #f5a045;--theme-accent-deep: #f0a24e;--theme-accent-contrast: #0f1826;--theme-glass: rgba(22, 35, 58, .72);--idiom-accent: #f5a045;--idiom-rule: rgba(233, 226, 210, .16)}[data-theme=design] ::selection{background:var(--theme-accent);color:var(--theme-accent-contrast)}@media(max-width:768px){[data-theme=design]{--dp-edge: 16px}}[data-theme=software]{--theme-bg: #f4f6f9;--theme-surface: #ffffff;--theme-border: #d6dae2;--theme-ink: #1c2029;--theme-ink-muted: #626b7d;--theme-accent: #1f9d6b;--theme-accent-contrast: #ffffff;--theme-glass: rgba(246, 247, 249, .72);--theme-grid: none;--theme-font-display: var(--font-primary);--theme-radius: var(--radius-small);--theme-motion-ease: var(--ease-smooth);--idiom-accent: #1f9d6b;--idiom-rule: #d6dae2}[data-theme=software][data-scheme=dark]{--theme-bg: #16181f;--theme-surface: #1e212b;--theme-border: #2c3140;--theme-ink: #d6dbe6;--theme-ink-muted: #7a8294;--theme-accent: #5ad6a0;--theme-accent-contrast: #0c0e13;--theme-glass: rgba(30, 33, 43, .72);--idiom-accent: #5ad6a0;--idiom-rule: #2c3140}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip}body{width:100%;margin:0;padding:0;overflow-x:clip;background-color:var(--theme-bg);background-image:var(--theme-grid);background-size:var(--theme-grid-size) var(--theme-grid-size);min-height:100dvh;font-family:var(--font-primary);font-size:1rem;color:var(--theme-ink);transition:background-color var(--duration-slow) var(--ease-in-out),color var(--duration-slow) var(--ease-in-out)}body.no-scroll{overflow:hidden;height:100vh;min-height:100dvh}body.fade-out{opacity:0;transition:opacity var(--duration-slow) var(--ease-in-out)}.container{max-width:900px;margin:0 auto;padding:var(--gap-xl)}html{scrollbar-width:none}body{-ms-overflow-style:none}::-webkit-scrollbar{width:0;height:0;display:none}[data-scheme=dark] .asset-recolor{filter:brightness(0) invert(1)}h1,h2,h3,h4,h5,h6{font-family:var(--font-secondary);color:var(--theme-ink)}p{font-family:var(--font-primary);font-weight:lighter}a{color:inherit;text-decoration:none}.footer-title,.section-title,.project-info h3,.gallery-info h4,.container h1{font-family:var(--font-secondary)}body>nav{background:transparent;padding:clamp(.5rem,2vh,1rem) 0;position:sticky;top:0;z-index:var(--z-nav);height:clamp(60px,10vh,80px);display:flex;align-items:center}body>nav ul{display:flex;align-items:center;justify-content:center;list-style:none;margin:0;padding:0;width:100%;gap:var(--gap-medium)}.logo{position:absolute;left:clamp(.5rem,1vw,2vw)}.logo-img{height:clamp(38px,9vw,48px);width:auto;display:block;transition:transform var(--duration-medium) var(--ease-logo-hover),filter var(--duration-medium) var(--ease-default);filter:drop-shadow(0 0 5px rgba(255,255,255,.85)) drop-shadow(0 0 2px rgba(255,255,255,1))}.logo-img:hover{transform:var(--transform-scale-hover)}[data-scheme=dark] .logo-img{filter:brightness(0) invert(1) drop-shadow(0 0 5px rgba(0,0,0,.55)) drop-shadow(0 0 2px rgba(0,0,0,.85))}.nav-link{border:var(--border-width-medium) solid var(--theme-border);background-color:var(--theme-surface);border-radius:var(--radius-pill);padding:0;position:relative;overflow:hidden;transition:background-color var(--duration-medium),border-color var(--duration-medium),transform var(--duration-medium)}.nav-link:hover{transform:var(--transform-scale-hover-small)}.nav-link a{display:flex;align-items:center;justify-content:center;padding:.3em 1.2em;width:100%;height:100%;font-weight:500;font-family:var(--font-secondary);color:var(--theme-ink);position:relative;z-index:var(--z-content);transition:color var(--duration-medium)}.nav-link:before{content:"";position:absolute;inset:0;background:var(--theme-accent);border-radius:var(--radius-pill);z-index:var(--z-base);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-smooth) var(--ease-smooth)}.nav-link:hover:before{transform:scaleX(1)}.nav-link:hover a{color:var(--theme-accent-contrast)}.nav-dropdown{position:relative}.nav-dropdown-trigger{appearance:none;-webkit-appearance:none;font:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.45em;min-width:8.25rem;padding:.3em .9em;border:var(--border-width-medium) solid var(--theme-border);background-color:var(--theme-surface);border-radius:var(--radius-pill);color:var(--theme-ink);font-family:var(--font-secondary);font-weight:500;transition:background-color var(--duration-medium),transform var(--duration-medium)}.nav-dropdown-trigger:hover,.nav-dropdown.open .nav-dropdown-trigger{background-color:var(--theme-accent);transform:var(--transform-scale-hover-small)}.nav-dropdown.open .nav-dropdown-trigger{transform:none}.nav-caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;transition:transform var(--duration-medium) var(--ease-default)}.nav-dropdown.open .nav-caret{transform:rotate(180deg)}.nav-dropdown-menu{position:absolute;top:100%;left:0;width:100%;margin:0;padding:.5rem 0 0;list-style:none;display:flex;flex-direction:column;gap:.4rem;filter:drop-shadow(0 6px 14px var(--color-shadow-light));z-index:var(--z-nav);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--duration-fast) var(--ease-smooth),visibility var(--duration-medium)}.nav-dropdown.open .nav-dropdown-menu{opacity:1;visibility:visible;pointer-events:auto}.nav-dropdown-menu li{width:100%;position:relative;overflow:hidden;border:var(--border-width-medium) solid var(--theme-border);background-color:var(--theme-surface);border-radius:var(--radius-pill);transition:border-color var(--duration-medium);opacity:0;transform:translateY(-8px)}.nav-dropdown.open .nav-dropdown-menu li{animation:navPillDrop var(--duration-medium) var(--ease-smooth) both}.nav-dropdown.open .nav-dropdown-menu li:nth-child(1){animation-delay:.04s}.nav-dropdown.open .nav-dropdown-menu li:nth-child(2){animation-delay:.1s}.nav-dropdown.open .nav-dropdown-menu li:nth-child(3){animation-delay:.16s}.nav-dropdown.open .nav-dropdown-menu li:nth-child(4){animation-delay:.22s}@keyframes navPillDrop{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.nav-dropdown-menu li{opacity:1;transform:none}.nav-dropdown.open .nav-dropdown-menu li{animation:none}}[data-sim-reduced] .nav-dropdown-menu li{opacity:1;transform:none}[data-sim-reduced] .nav-dropdown.open .nav-dropdown-menu li{animation:none}.nav-dropdown-menu li:before{content:"";position:absolute;inset:0;background:var(--theme-accent);border-radius:var(--radius-pill);z-index:var(--z-base);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-smooth) var(--ease-smooth)}.nav-dropdown-menu li:hover:before,.nav-dropdown-menu li:has(a:focus-visible):before,.nav-dropdown-menu li:has(a[aria-current=page]):before{transform:scaleX(1)}.nav-dropdown-menu a{display:flex;align-items:center;justify-content:center;padding:.3em .9em;border-radius:var(--radius-pill);font-family:var(--font-secondary);font-weight:500;color:var(--theme-ink);text-decoration:none;white-space:nowrap;position:relative;z-index:var(--z-content);transition:color var(--duration-medium)}.nav-dropdown-menu li:hover a,.nav-dropdown-menu a:focus-visible,.nav-dropdown-menu a[aria-current=page]{color:var(--theme-accent-contrast);outline:none}[data-theme=engineering] body>nav{align-items:flex-start;height:auto;padding:0}@keyframes navDrop{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@media(prefers-reduced-motion:no-preference){[data-theme=engineering] body>nav{animation:navDrop .5s var(--ease-smooth) .05s backwards}}[data-theme=engineering] body>nav>ul{gap:0;align-items:flex-start}[data-theme=engineering] .nav-link{width:9rem;height:auto;border:none;border-radius:0;background-color:var(--theme-ink);overflow:hidden}[data-theme=engineering] .nav-link:before{border-radius:0}[data-theme=engineering] .nav-link:hover{transform:none}[data-theme=engineering] .nav-link a{padding:.85rem 1.25rem;line-height:1;font-family:Roboto,sans-serif;font-weight:200;font-size:14px;text-transform:uppercase;color:var(--theme-bg)}[data-theme=engineering] .nav-link:hover a,[data-theme=engineering] .nav-link a[aria-current=page]{color:var(--theme-accent-contrast);font-weight:500}[data-theme=engineering] .nav-link:has(a[aria-current=page]):before{transform:scaleX(1)}[data-theme=engineering] .logo{top:0;height:calc(18px + 1.7rem);left:calc(clamp(1rem,3vw,2rem) - 2.2rem + var(--eng-edge-shift, 0px));display:flex;align-items:center}.logo-text{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;transform-origin:left;transition:transform var(--duration-medium) var(--ease-logo-hover);background:var(--theme-ink);paint-order:stroke fill;padding:.3em 1.2em}.logo-text:hover{transform:var(--transform-scale-hover-small)}.logo-chip{width:14px;height:14px;background:var(--color-primary);margin-top:-1px}.logo-name{font-family:Roboto,sans-serif;font-weight:200;font-size:14px;line-height:1;letter-spacing:normal;text-transform:uppercase;color:var(--theme-bg);white-space:nowrap}.logo-chip{width:clamp(11px,3vw,14px);height:clamp(11px,3vw,14px)}[data-theme=engineering] .menu-button{top:0;transform:none;height:calc(18px + 1.7rem)}@media(max-width:768px){[data-theme=engineering] .logo{left:clamp(.5rem,1vw,2vw)}}[data-theme=software] .logo{top:50%;transform:translateY(-50%);left:clamp(.75rem,2vw,1.5rem);display:flex;align-items:center}[data-theme=software] .logo-name{font-family:var(--theme-font-display);font-weight:500;font-size:13px;letter-spacing:.01em}[data-theme=design] body>nav{height:auto;padding:16px 0;align-items:flex-start}[data-theme=design] body>nav>ul{gap:10px}[data-theme=design] .nav-link{border:1px solid var(--theme-border);background:var(--theme-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--theme-radius, 5px);box-shadow:0 10px 26px -16px #1e180e73;overflow:hidden;transition:border-color var(--duration-medium) var(--ease-smooth)}[data-theme=design] .nav-link:hover,[data-theme=design] .nav-link:has(a[aria-current=page]){transform:none;border-color:var(--theme-accent)}[data-theme=design] .nav-link:before{display:block;background:var(--theme-accent);border-radius:inherit;transform:translateY(100%);transform-origin:bottom;transition:transform var(--duration-smooth) var(--ease-smooth)}[data-theme=design] .nav-link:hover:before,[data-theme=design] .nav-link:has(a[aria-current=page]):before{transform:translateY(0)}[data-theme=design] .nav-link a{padding:9px 16px;min-width:92px;font-family:var(--theme-font-body);font-weight:600;font-size:13px;letter-spacing:.07em;text-transform:uppercase;color:var(--theme-ink);transition:color var(--duration-medium) var(--ease-smooth)}[data-theme=design] .nav-link:hover a,[data-theme=design] .nav-link a[aria-current=page]{color:var(--theme-ink)}[data-theme=design] .logo{left:var(--dp-edge);top:50%;transform:translateY(-50%)}[data-theme=design] .logo-text{gap:9px;padding:8px 14px;background:var(--theme-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--theme-border);border-radius:var(--theme-radius, 5px);box-shadow:0 10px 26px -16px #1e180e73;overflow:hidden;isolation:isolate;transition:none}[data-theme=design] .logo-text:hover{transform:none}[data-theme=design] .logo-chip{width:11px;height:11px;margin-top:0;border-radius:1px;background:var(--theme-accent)}[data-theme=design] .logo-name{font-family:var(--theme-font-display);font-weight:400;font-size:15px;letter-spacing:.02em;text-transform:uppercase;color:var(--theme-ink);transition:color .35s var(--ease-smooth)}[data-theme=design] .logo-text:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--theme-accent);transform:scaleY(0);transform-origin:bottom;transition:transform .55s var(--ease-smooth)}[data-theme=design] .logo-text:hover .logo-name{color:var(--theme-ink)}[data-theme=design] .logo-text:hover .logo-chip{background:var(--theme-ink)}[data-theme=design] .logo-text:hover:before{transform:scaleY(1)}@media(max-width:768px){[data-theme=design] body>nav{padding:0;min-height:74px}[data-theme=design] .logo{top:16px;transform:none}[data-theme=design] .menu-button{right:var(--dp-edge);top:16px;transform:none;width:42px;height:42px}[data-theme=design] .menu-button button{padding:0}}.menu-button{display:none;position:absolute;right:1rem;top:50%;transform:translateY(-50%);height:clamp(48px,9vw,64px);width:clamp(48px,9vw,64px)}.menu-button a,.menu-button button{appearance:none;-webkit-appearance:none;background:none;border:none;margin:0;font:inherit;color:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:.75rem;border-radius:var(--radius-pill);transition:background-color var(--duration-medium) var(--ease-default);height:100%;width:100%}.menu-button a:hover,.menu-button button:hover{background-color:var(--color-primary)}[data-theme=engineering] .menu-button button:hover{background-color:transparent}.sidebar{position:fixed;top:0;right:0;height:100dvh;width:250px;z-index:var(--z-sidebar);background-color:var(--theme-surface);box-shadow:-10px 0 10px var(--color-shadow-light);display:flex;flex-direction:column;padding:6rem 1rem 2rem;gap:var(--gap-medium);transform:translate(100%);transition:transform var(--duration-medium) var(--ease-default),visibility var(--duration-medium);visibility:hidden;justify-content:flex-start}.sidebar.active{visibility:visible;display:flex;transform:translate(0)}.sidebar-overlay{position:fixed;inset:0;background-color:var(--color-overlay-dark);z-index:var(--z-overlay);opacity:0;transition:opacity var(--duration-medium) var(--ease-default);pointer-events:none}.sidebar-overlay.active{opacity:1;pointer-events:auto}.sidebar>li:first-child{position:absolute;top:calc((clamp(60px,10vh,80px) - clamp(38px,9vw,48px))/2);right:1rem;height:clamp(48px,9vw,64px);width:clamp(48px,9vw,64px);list-style:none;margin:0;padding:0}.sidebar>li:first-child a,.sidebar>li:first-child button{appearance:none;-webkit-appearance:none;background:none;border:none;margin:0;font:inherit;color:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:.75rem;border-radius:var(--radius-pill);transition:background-color var(--duration-medium) var(--ease-default);text-decoration:none}.sidebar>li:first-child a:hover,.sidebar>li:first-child button:hover{background-color:var(--theme-accent)}.sidebar>li:not(:first-child):not(.sidebar-group){width:100%;list-style:none;border:var(--border-width-medium) solid var(--theme-border);background-color:var(--theme-surface);border-radius:var(--radius-pill);padding:.3em 1.2em;position:relative;overflow:hidden;transition:border-color var(--duration-medium);min-height:48px;flex-shrink:0}.sidebar>li:not(:first-child):not(.sidebar-group):before{content:"";position:absolute;inset:0;background:var(--theme-accent);border-radius:var(--radius-pill);z-index:var(--z-base);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-smooth) var(--ease-smooth)}.sidebar>li:not(.sidebar-group):hover:before{transform:scaleX(1)}.sidebar-group{width:100%;border:none;background:transparent;overflow:visible;padding:0;display:flex;flex-direction:column;gap:var(--gap-small);position:relative}.sidebar-group:before{display:none}.sidebar-group.open:before{content:"";display:block;position:absolute;top:0;bottom:0;left:calc(50% + .7rem);transform:translate(-50%);width:7px;background:var(--theme-ink);pointer-events:none;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='14'%3E%3Cpath d='M3.5 0 C1.5 3.5 5.5 3.5 3.5 7 C1.5 10.5 5.5 10.5 3.5 14' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E") center / 7px 14px repeat-y;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='14'%3E%3Cpath d='M3.5 0 C1.5 3.5 5.5 3.5 3.5 7 C1.5 10.5 5.5 10.5 3.5 14' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E") center / 7px 14px repeat-y;clip-path:inset(0 0 calc((1 - var(--rail-progress, 0)) * 100%) 0)}.sidebar-group-trigger{appearance:none;-webkit-appearance:none;position:relative;width:100%;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:.3em 1.2em;border:var(--border-width-medium) solid var(--theme-border);background:var(--theme-surface);border-radius:var(--radius-pill);color:var(--theme-ink);font-family:var(--font-primary);font-weight:300;font-size:1rem;transition:background-color var(--duration-medium) var(--ease-default)}.sidebar-group-trigger:hover,.sidebar-group.open .sidebar-group-trigger{background-color:var(--theme-accent)}.sidebar-group-trigger .nav-caret{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid currentColor;transition:transform var(--duration-medium) var(--ease-default)}.sidebar-group.open .nav-caret{transform:rotate(180deg)}.sidebar-submenu{list-style:none;margin:0;padding-left:1.4rem;display:flex;flex-direction:column;gap:var(--gap-small);max-height:0;overflow:hidden;transition:max-height var(--duration-fast) var(--ease-smooth)}.sidebar-group.open .sidebar-submenu{max-height:320px}.sidebar-submenu li{width:100%;flex-shrink:0;list-style:none;position:relative;overflow:hidden;border:var(--border-width-medium) solid var(--theme-border);background:var(--theme-surface);border-radius:var(--radius-pill);min-height:44px;display:flex;align-items:center;opacity:0;transform:translateY(8px);transition:opacity var(--duration-medium) var(--ease-smooth),transform var(--duration-medium) var(--ease-smooth)}.sidebar-submenu li.revealed{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.sidebar-group.open:before{clip-path:none}.sidebar-submenu li{opacity:1;transform:none}}.sidebar-submenu li:before{content:"";position:absolute;inset:0;background:var(--theme-accent);border-radius:var(--radius-pill);z-index:var(--z-base);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-smooth) var(--ease-smooth)}.sidebar-submenu li:hover:before,.sidebar-submenu li:has(a[aria-current=page]):before{transform:scaleX(1)}.sidebar-submenu li a{width:100%;padding:.4rem 1.1rem .4rem 1.5rem;border-radius:var(--radius-pill);position:relative;z-index:var(--z-content)}.sidebar-submenu li a[aria-current=page]{color:var(--theme-accent-contrast)}.sidebar a{width:100%;padding:.5rem 0;text-decoration:none;color:var(--theme-ink);font-family:var(--font-primary);font-weight:300;position:relative;z-index:var(--z-content);transition:color var(--duration-medium);min-height:24px;display:flex;align-items:center;font-size:1rem}.sidebar li:hover a{color:var(--theme-accent-contrast)}[data-theme=engineering] .sidebar{background-color:var(--theme-ink);padding:5rem 0 2rem;gap:0;box-shadow:-10px 0 30px #00000080}[data-theme=engineering] .sidebar>li:not(:first-child):not(.sidebar-group){border:none;border-radius:0;background-color:transparent;padding:0;min-height:0}[data-theme=engineering] .sidebar>li:not(:first-child):not(.sidebar-group):before{border-radius:0}[data-theme=engineering] .sidebar a{font-family:Roboto,sans-serif;font-weight:300;font-size:15px;letter-spacing:.04em;text-transform:uppercase;color:var(--theme-bg);padding:1rem 1.5rem;min-height:52px}[data-theme=engineering] .sidebar>li:hover a,[data-theme=engineering] .sidebar a[aria-current=page]{color:var(--theme-accent-contrast);font-weight:500}[data-theme=engineering] .sidebar>li:has(a[aria-current=page]):before{transform:scaleX(1)}[data-theme=engineering] .sidebar>li:first-child{top:0;height:calc(18px + 1.7rem);width:clamp(48px,9vw,64px)}[data-theme=engineering] .sidebar>li:first-child button{color:var(--theme-bg);border-radius:0}[data-theme=engineering] .sidebar>li:first-child button:hover{background-color:var(--theme-accent);color:var(--theme-accent-contrast)}[data-theme=design] .sidebar>li:first-child{top:16px;right:var(--dp-edge);width:42px;height:42px}[data-theme=design] .sidebar>li:first-child button{padding:0;color:var(--theme-ink)}[data-theme=design] .sidebar .close-icon{width:22px;height:22px}[data-theme=design] .sidebar{background:var(--theme-bg);box-shadow:-12px 0 34px -14px #1e180e66}[data-theme=design] .sidebar>li:not(:first-child):not(.sidebar-group){border:1px solid var(--theme-border);background:var(--theme-ink);border-radius:var(--theme-radius);box-shadow:0 10px 26px -16px #1e180e73;padding:0;overflow:hidden;transition:border-color var(--duration-medium) var(--ease-smooth)}[data-theme=design] .sidebar>li:not(:first-child):not(.sidebar-group):hover,[data-theme=design] .sidebar>li:has(a[aria-current=page]){border-color:var(--theme-accent)}[data-theme=design] .sidebar>li:not(:first-child):not(.sidebar-group):before{border-radius:inherit;background:var(--theme-accent);transform:translateY(100%);transform-origin:bottom;transition:transform var(--duration-smooth) var(--ease-smooth)}[data-theme=design] .sidebar>li:not(:first-child):not(.sidebar-group):hover:before,[data-theme=design] .sidebar>li:has(a[aria-current=page]):before{transform:translateY(0)}[data-theme=design] .sidebar a{font-family:var(--theme-font-body);font-weight:600;font-size:13px;letter-spacing:.07em;text-transform:uppercase;color:var(--theme-bg);padding:.75rem 1.1rem}[data-theme=design] .sidebar li:hover a,[data-theme=design] .sidebar a[aria-current=page]{color:var(--theme-accent-contrast)}.temp-section{min-height:200dvh;padding:var(--gap-xl) 0;background:var(--theme-bg);text-align:center}.temp-section-small{min-height:100dvh;padding:var(--gap-xl) 0;background:var(--theme-bg);text-align:center}.contact-footer{position:sticky;z-index:var(--z-base);display:flex;flex-direction:column;justify-content:space-between;align-items:center;height:90dvh;padding-top:4rem;background-color:var(--color-primary);border-radius:50% 50% 0 0/10% 10% 0 0;filter:drop-shadow(0 12px 30px var(--color-shadow-dark));overflow:hidden;z-index:var(--z-footer)}.footer-content-wrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;flex-grow:1;width:100%;max-width:800px;padding:var(--gap-xl) 1rem;position:relative;z-index:var(--z-content);text-align:center}.footer-title{font-weight:800;font-size:clamp(2.5rem,8vw,4rem);margin-bottom:1rem;color:var(--color-black)}.footer-subtitle{font-size:clamp(1rem,2.5vw,1.25rem);color:var(--color-black);max-width:550px;line-height:1.6;margin:0 auto 1.5rem}.footer-cta-button{display:inline-block;font-weight:600;color:var(--color-white);background-color:var(--color-black);padding:.8em 2.5em;border-radius:var(--radius-pill);transition:transform var(--duration-fast) var(--ease-bouncy),background-color var(--duration-fast) var(--ease-default)}.footer-cta-button:hover{background-color:var(--color-white);color:var(--color-black);transform:var(--transform-scale-hover-small)}.footer-links{display:flex;align-items:center;justify-content:center;gap:var(--gap-large);margin-top:2.5rem;flex-wrap:wrap}.footer-link{font-weight:500;color:var(--color-black);position:relative}.footer-link:after{content:"";position:absolute;width:100%;height:2px;bottom:-4px;left:0;background-color:var(--color-black);transform:scaleX(0);transform-origin:bottom right;transition:transform var(--duration-fast) var(--ease-out)}.footer-link:hover:after{transform:scaleX(1);transform-origin:bottom left}.link-separator{color:var(--color-black-transparent);user-select:none}.footer-bottom-bar{width:100%;padding:1.5rem var(--gap-xl);background-color:var(--color-shadow-light);position:relative;z-index:var(--z-content)}.footer-bottom-bar p{margin:0;font-size:.875rem}[data-theme=engineering] .contact-footer{border-radius:0;filter:none;font-family:var(--theme-font-body);height:auto;min-height:0;padding-top:2.5rem}[data-theme=engineering] .footer-title{font-family:var(--theme-font-display);font-size:clamp(1.75rem,5vw,3rem);margin-bottom:.75rem}[data-theme=engineering] .footer-content-wrapper{padding:1.5rem 1rem}[data-theme=engineering] .footer-cta-button{position:relative;isolation:isolate;overflow:hidden;border-radius:0;font-family:var(--theme-font-body);transition:color var(--duration-fast) var(--theme-motion-ease)}[data-theme=engineering] .footer-cta-button:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--color-white);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-smooth) var(--theme-motion-ease)}[data-theme=engineering] .footer-cta-button:hover{background:var(--color-black);color:var(--color-black);transform:none}[data-theme=engineering] .footer-cta-button:hover:before{transform:scaleX(1)}[data-theme=engineering] .footer-bottom-bar{font-family:var(--theme-font-body)}[data-theme=design] .contact-footer{border-radius:0;filter:none;font-family:Archivo,system-ui,sans-serif;height:auto;min-height:0;padding-top:2.5rem}[data-theme=design] .footer-title{font-family:Dela Gothic One,sans-serif;font-weight:400;text-transform:uppercase;font-size:clamp(1.6rem,4.5vw,2.75rem);margin-bottom:.75rem}[data-theme=design] .footer-content-wrapper{padding:1.5rem 1rem}[data-theme=design] .footer-cta-button{position:relative;isolation:isolate;overflow:hidden;border-radius:4px;font-family:Archivo,sans-serif;transition:color var(--duration-fast) var(--ease-smooth)}[data-theme=design] .footer-cta-button:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--color-white);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-smooth) var(--ease-smooth)}[data-theme=design] .footer-cta-button:hover{background:#16233a;color:#16233a;transform:none}[data-theme=design] .footer-cta-button:hover:before{transform:scaleX(1)}[data-theme=design] .footer-link,[data-theme=design] .footer-bottom-bar{font-family:Archivo,sans-serif}[data-theme=design] .footer-title,[data-theme=design] .footer-subtitle,[data-theme=design] .footer-link{color:#16233a}[data-theme=design] .footer-link:after{background-color:#16233a}[data-theme=design] .link-separator{color:#16233a80}[data-theme=design] .footer-cta-button{background-color:#16233a;color:var(--color-white)}.landing{margin:0;position:relative;min-height:100dvh;width:100%;max-width:100vw;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--gap-xl)}.job-role-container{position:fixed;z-index:var(--z-interactive);top:calc(45vh - 3.5rem);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--gap-small);white-space:nowrap}.typewriter-animation{font-family:var(--font-primary);font-size:clamp(1rem,1.1rem + 3vw,4rem);font-weight:300;letter-spacing:.106em;color:var(--theme-ink);display:inline-block;white-space:nowrap;overflow:hidden;border-right:4px solid var(--theme-ink);animation:blinkingCursor .65s steps(50) infinite normal;width:auto;opacity:1;will-change:opacity,transform;transition:left var(--duration-xslow) var(--ease-bouncy),transform var(--duration-xslow) var(--ease-bouncy),opacity var(--duration-slow) var(--ease-out)}@keyframes blinkingCursor{0%{border-right-color:var(--theme-ink)}to{border-right-color:transparent}}#scroll-title{position:absolute;width:100%;top:calc(45vh - 7rem);left:0;transform:none;color:var(--theme-ink);font-weight:800;font-family:var(--font-secondary);font-size:clamp(2rem,1rem + 8vw,8rem);text-align:center;white-space:nowrap;overflow:hidden;line-height:1.1;padding:.5em 1rem;opacity:0;transition:transform var(--duration-medium) var(--ease-aggressive),opacity var(--duration-medium);will-change:transform,opacity}.bottom-gif{user-select:none;position:fixed;bottom:0;left:0%;transform:translate(-50%) translateY(100px);display:flex;justify-content:center;align-items:flex-end;pointer-events:none;z-index:var(--z-interactive);opacity:0;will-change:transform,opacity;width:100vw;overflow:hidden;height:auto}.bottom-gif img{user-select:none;mix-blend-mode:multiply;background:transparent;width:auto;height:clamp(250px,40vh,550px);display:block;margin:0 auto}[data-scheme=dark] .bottom-gif img{filter:invert(1);mix-blend-mode:screen}.scroll-down-text{position:fixed;top:66vh;right:2vw;display:flex;align-items:center;font-size:clamp(.7rem,3vw,1rem);font-family:var(--font-primary);font-weight:300;color:var(--theme-ink-muted);z-index:var(--z-interactive);background:transparent;padding:clamp(.25rem,1vw,.5rem) clamp(.5rem,2vw,1rem);border-radius:var(--radius-medium);pointer-events:none;gap:clamp(.1rem,.5vw,.25rem);opacity:0;will-change:opacity}.arrow-icon{display:flex;align-items:center;margin-right:clamp(.1rem,.5vw,.25rem)}.arrow-icon svg{width:clamp(16px,4vw,24px);height:clamp(16px,4vw,24px)}.category-select{position:fixed;top:calc(51vh + 1rem);left:0;right:0;margin:0 auto;width:fit-content;max-width:min(92vw,700px);display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;font-size:clamp(.75rem,1vw + .4rem,1rem);font-weight:500;font-family:var(--font-primary);border:var(--border-width-thick) dashed var(--theme-border);border-radius:var(--radius-medium);padding:.75rem 1rem;z-index:var(--z-interactive);cursor:grab;pointer-events:auto;will-change:opacity;opacity:0}.category-select.visible{opacity:1}.category-select.scrolled{animation:wave 3s ease-in-out infinite;opacity:1;will-change:opacity;justify-content:center;top:calc(51vh + 1rem);left:0;right:0;margin:0 auto;transition:opacity 1s var(--ease-smooth)}.category-select span[draggable=true]{display:inline-block;padding:.5em;margin:.2em;user-select:none;color:var(--theme-ink);animation:wave 2s ease-in-out infinite;transition:all .2s var(--ease-default)}.category-select span[draggable=true]:hover{border:var(--border-width-medium) solid var(--theme-ink);border-radius:var(--radius-pill);animation:wave 2s ease-in-out infinite,shake .3s ease-in-out infinite;padding:.52em 1.2em}.category-select .bracket{color:var(--theme-accent);font-weight:800;display:inline;padding:.2em .1em;margin:0;animation:none;border:none;transition:none}#category-drop-zone{opacity:0;border-bottom:4px solid var(--color-primary);background:transparent;min-width:200px;min-height:60px;display:none;align-items:center;justify-content:flex-start;transition:all var(--duration-medium) var(--ease-smooth),opacity 1s var(--ease-in-out)}#category-drop-zone.scrolled{display:inline-flex;opacity:1;transition:all var(--duration-medium) var(--ease-smooth),opacity 1s var(--ease-in-out)}#category-drop-zone.drag-over{background:var(--color-primary-transparent);border-color:var(--color-primary);transform:translate(-50%) var(--transform-scale-hover-small)}.placeholder-text{color:var(--theme-ink);font-style:italic;font-size:clamp(1rem,1.1rem + 3vw,4rem);font-weight:300;text-align:left;opacity:.5}#category-drop-zone span[draggable=true]{font-family:var(--font-primary);font-size:clamp(1rem,1.1rem + 3vw,4rem);text-align:left;font-weight:300;cursor:grab;color:var(--theme-ink);padding:.5rem 1rem;border-radius:var(--radius-medium)}.page-header{text-align:center;padding:4rem var(--gap-xl)}.page-header h1{font-size:clamp(2.5rem,8vw,5rem);font-weight:600;color:var(--color-black);margin-bottom:.5rem}.page-header .subtitle{font-size:clamp(1rem,2.5vw,1.25rem);color:var(--color-black);max-width:600px;margin:0 auto}.project-section{cursor:pointer;padding:3rem 4rem;border-top:var(--border-width-medium) solid var(--color-black);display:flex;align-items:center;justify-content:center;position:relative;list-style:none;user-select:none}.project-section::-webkit-details-marker{display:none}.project-section::marker{content:none}.project-section:after{content:"";position:absolute;right:4rem;top:50%;transform:translateY(-50%);width:1.75rem;height:1.75rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231e1e14' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;background-position:center;transition:transform var(--duration-fast) var(--ease-in-out)}details.is-open>.project-section:after{transform:translateY(-50%) rotate(180deg)}.section-title{font-family:var(--font-secondary);font-size:clamp(2rem,6vw,3rem);color:var(--color-black);margin-bottom:0;text-align:center;position:relative}.project-section-content{overflow:hidden;transition:height .45s var(--ease-in-out)}.project-section-content>.container{padding-top:2.5rem;padding-bottom:3rem}.project-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--gap-xl);list-style:none;padding:0;margin:0}.project-card{position:relative;isolation:isolate;max-width:450px;margin:0 auto;min-height:420px;width:100%;list-style:none;background-color:var(--color-white);border:var(--border-width-thick) solid var(--color-black);border-radius:var(--radius-medium);overflow:hidden;box-shadow:var(--shadow-card);opacity:0;transform:translateY(28px);transition:box-shadow var(--duration-medium) var(--ease-default),border-color var(--duration-medium) var(--ease-default)}.project-card.card-visible{opacity:1;transform:translateY(0)}.project-card:hover{transform:var(--transform-scale-hover-small);box-shadow:var(--shadow-card-hover);border-color:var(--color-primary);transition:transform var(--duration-fast) var(--ease-bouncy),box-shadow var(--duration-medium) var(--ease-default),border-color var(--duration-medium) var(--ease-default)}.project-card:focus-within{outline:2px solid var(--color-primary);outline-offset:3px}.project-card-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;transition:transform var(--duration-smooth) var(--ease-bouncy),filter var(--duration-smooth) var(--ease-out);z-index:0}.project-card:hover .project-card-bg{transform:scale(1.12);filter:saturate(1.15) contrast(1.05)}.project-card-content{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:1.5rem;z-index:1;background:linear-gradient(to top,#000000eb,#000000b8 10%,#0000004d 30%,#0000 60%);color:var(--color-white);transition:background var(--duration-medium) var(--ease-default)}.project-card:hover .project-card-content{background:linear-gradient(to top,#000000f5,#000000d1 45%,#00000073 80%,#0000000d)}.project-card[data-card-tone=light] .project-card-content{background:linear-gradient(to top,#fffffff0,#ffffffc7 35%,#ffffff59 65%,#fff0);color:var(--color-black)}.project-card[data-card-tone=light]:hover .project-card-content{background:linear-gradient(to top,#fffffff7,#ffffffdb 45%,#ffffff80 80%,#ffffff1a)}.project-card-title{font-family:var(--font-secondary);font-size:clamp(1.25rem,2vw + .5rem,1.65rem);font-weight:800;margin:0 0 .5rem;line-height:1.2;color:inherit}.project-card-link{color:inherit;text-decoration:none}.project-card-link:after{content:"";position:absolute;inset:0;z-index:2}.project-card-desc{font-family:var(--font-primary);font-size:.95rem;line-height:1.5;margin:0;color:inherit}#photography-page .container{max-width:100%;padding-left:min(5rem,5vh);padding-right:min(5rem,5vh)}.gallery-section{margin-bottom:var(--gap-xl)}.gallery-grid{display:grid;grid-template-columns:1fr;gap:var(--gap-xl)}.gallery-item{position:relative;overflow:hidden;border-radius:var(--radius-medium);box-shadow:var(--shadow-card);opacity:0;transform:translateY(28px);transition:box-shadow var(--duration-medium) var(--ease-default)}.gallery-item.item-visible{opacity:1;transform:translateY(0)}.gallery-item:hover{transform:var(--transform-scale-hover-small);box-shadow:var(--shadow-card-hover);transition:transform var(--duration-fast) var(--ease-bouncy),box-shadow var(--duration-medium) var(--ease-default)}.gallery-item img{width:100%;height:auto;display:block}.gallery-overlay{position:absolute;inset:0;background:var(--color-shadow-light);opacity:0;transition:opacity var(--duration-medium) var(--ease-default)}.gallery-item:hover .gallery-overlay{opacity:1}.gallery-info{position:absolute;bottom:0;left:0;right:0;padding:1rem;color:var(--color-white)}.gallery-info h4{margin:0;font-size:1.25rem;color:var(--color-white)}.gallery-info p{margin:0;font-size:.875rem}.portrait-grid .gallery-item img{height:100%;object-fit:cover}.gallery-placeholder{background-color:var(--color-shadow-light);border-radius:var(--radius-medium);box-shadow:var(--shadow-card);border:var(--border-width-thick) dashed var(--color-black)}.wrap{max-width:1600px;margin-inline:auto;display:flex;flex-direction:column;gap:clamp(.35rem,1vw,.7rem);--card-shadow: 0 14px 38px -10px rgba(30, 30, 20, .4)}.feature-crop{overflow:hidden;line-height:0;box-shadow:0 14px 38px -10px #1e1e1400}.feat__media,.acc__media{position:absolute;inset:0;overflow:hidden}.feat__media img,.feat__media video,.acc__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;transform-origin:center;transform:scale(var(--cover-hover, 1));transition:transform var(--duration-smooth) var(--ease-smooth)}.feat:hover .feat__media img,.feat:hover .feat__media video,.acc__panel.is-active .acc__media img,.acc__panel:focus-within .acc__media img{--cover-hover: 1.04}.feat__media img,.feat__media video{object-position:center top}.feat:hover:has(.cta--repo:hover) .feat__media img,.feat:hover:has(.cta--repo:hover) .feat__media video{--cover-hover: 1}.ph{display:grid;place-items:center;width:100%;height:100%;font-family:var(--theme-font-display);font-weight:800;font-size:clamp(3rem,9vw,7rem);color:#1e1e142e;background:#f0f0ec}.ph--sm{font-size:clamp(2rem,6vw,3.4rem)}.actions{display:flex;flex-wrap:wrap;gap:.55rem;align-items:center}.cta{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;gap:.4rem;padding:.55rem .95rem;font-family:var(--theme-font-body);font-weight:600;font-size:.9rem;letter-spacing:.02em;text-decoration:none;border:0;cursor:pointer;transition:color var(--duration-fast) var(--theme-motion-ease),box-shadow var(--duration-fast) var(--theme-motion-ease),background var(--duration-fast) var(--theme-motion-ease)}.cta svg{width:1.02rem;height:1.02rem}.viewchip{position:absolute;top:0;left:0;z-index:3;display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .9rem;background:var(--theme-accent);color:var(--theme-accent-contrast);font-family:var(--theme-font-body);font-weight:700;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;pointer-events:none;will-change:transform;opacity:0;scale:.9;box-shadow:0 6px 20px #1e1e1447;transition:opacity var(--duration-medium) var(--ease-smooth),scale var(--duration-medium) var(--ease-smooth)}.viewchip svg{width:1rem;height:1rem}.card.is-chip .viewchip{opacity:1;scale:1}.card.is-chip.is-chip-off .viewchip{opacity:0;scale:.9}.feat__eyebrow{font-family:var(--font-primary);font-size:.7rem;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:var(--theme-accent);margin:0 0 .15rem}.tags{display:flex;flex-wrap:wrap;align-items:center;row-gap:.15rem;list-style:none;margin:.15rem 0 .45rem;padding:0}.tags li{font-family:var(--font-primary);font-size:.68rem;font-weight:400;letter-spacing:.07em;text-transform:uppercase;color:#ffffffc7}.tags li:not(:first-child):before{content:"·";margin:0 .5rem;color:#fff6}.tags--dark li{color:var(--theme-ink)}.tags--dark li:not(:first-child):before{color:#1e1e1459}.crossdisc{margin:.05rem 0 .15rem;pointer-events:auto;font-family:var(--theme-font-body);font-size:.78rem;line-height:1.4;letter-spacing:.01em;color:#ffffff85}.crossdisc__link{color:#fff;font-weight:600;text-decoration:none;box-shadow:inset 0 -1px #ffffff80;transition:color var(--duration-fast) var(--ease-smooth),box-shadow var(--duration-fast) var(--ease-smooth)}.crossdisc__link:hover,.crossdisc__link:focus-visible{color:var(--theme-accent);box-shadow:inset 0 -1px 0 var(--theme-accent);outline:none}.cta--repo{color:var(--theme-bg);background:var(--theme-ink);font-weight:700;padding:.62rem 1.1rem}.cta--repo:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--theme-accent);clip-path:inset(0 100% 0 0);transition:clip-path var(--duration-slow) var(--ease-smooth)}.cta--repo:hover,.cta--repo:focus-visible{color:var(--theme-accent-contrast);outline:none}.cta--repo:hover:before,.cta--repo:focus-visible:before{clip-path:inset(0 0 0 0)}[data-theme=engineering] .cta--repo{color:#1e1e14;background:#fff}.feat{position:relative;isolation:isolate;overflow:hidden;height:calc(min(100vw - 2rem,1600px) * 27 / 64 + 20vh);background:#f0f0ec;cursor:pointer}.feat:focus-visible,.card:focus-visible{outline:2px solid var(--theme-accent);outline-offset:3px}.feat__badge{position:absolute;top:0;right:0;z-index:2;padding:.45rem .9rem;background:var(--theme-accent);color:var(--theme-accent-contrast);font-family:var(--theme-font-body);font-weight:700;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;line-height:1;pointer-events:none;box-shadow:0 4px 14px -4px #1e1e1473}.feat__info{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;justify-content:flex-end;gap:.4rem;padding:clamp(.85rem,2.2vw,1.35rem);color:#fff;background:linear-gradient(to top,#1e1e14e6,#1e1e1473 34%,#1e1e1400 72%);opacity:0;transition:opacity var(--duration-medium) var(--theme-motion-ease);pointer-events:none}.feat:hover .feat__info,.feat:focus-within .feat__info{opacity:1}.feat__info .actions,.feat__info .crossdisc{pointer-events:auto}.feat__name{font-family:var(--theme-font-display);font-weight:800;font-size:clamp(1.7rem,3.4vw,2.8rem);line-height:1.03;margin:0;color:var(--theme-accent)}.feat__blurb{font-size:.98rem;line-height:1.5;margin:0 0 .35rem;max-width:52ch}.acc{list-style:none;margin:0;padding:0;display:flex;gap:4px;height:clamp(360px,52vh,620px)}.acc__panel{position:relative;isolation:isolate;overflow:hidden;flex:1 1 0;min-width:0;cursor:pointer;background:#f0f0ec;box-shadow:var(--card-shadow);transition:flex-grow var(--duration-smooth) var(--ease-smooth)}.acc__panel:first-child{flex-grow:11}.acc.is-interacting .acc__panel:first-child,.acc:focus-within .acc__panel:first-child{flex-grow:1}.acc.is-interacting .acc__panel.is-active,.acc:focus-within .acc__panel:focus-within{flex-grow:13}.acc__media:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,#1e1e14e6,#1e1e1480 55%,#1e1e1400);opacity:1;transition:opacity var(--duration-medium) var(--ease-smooth);pointer-events:none}.acc__panel:first-child .acc__media:after{opacity:0}.acc.is-interacting .acc__media:after,.acc:focus-within .acc__media:after{opacity:1}.acc__panel.is-active .acc__media:after,.acc__panel:focus-within .acc__media:after{opacity:0}.acc__panel.is-active:has(.cta--repo:hover) .acc__media:after{opacity:1}.acc__spine{position:absolute;left:clamp(.5rem,1.2vw,1rem);bottom:6%;z-index:2;writing-mode:vertical-rl;font-family:var(--theme-font-display);font-weight:800;font-size:clamp(1.5rem,3.6vh,2.4rem);letter-spacing:.03em;text-transform:uppercase;color:var(--theme-accent);white-space:nowrap;pointer-events:none;opacity:1;transition:opacity var(--duration-medium) var(--ease-smooth)}.acc__panel:first-child .acc__spine{opacity:0}.acc.is-interacting .acc__spine,.acc:focus-within .acc__spine{opacity:1}.acc__panel.is-active .acc__spine,.acc__panel:focus-within .acc__spine{opacity:0}.acc__info{justify-content:flex-end}.acc__panel:first-child .acc__info{opacity:1}.acc.is-interacting .acc__info,.acc:focus-within .acc__info{opacity:0}.acc__panel.is-active .acc__info,.acc__panel:focus-within .acc__info{opacity:1}.acc__name{font-family:var(--theme-font-display);font-weight:800;font-size:clamp(1.3rem,2vw,1.9rem);margin:0;color:var(--theme-accent)}.acc__panel--soon{cursor:default}.caseov{position:fixed;inset:0;z-index:2000;background:#1e1e1400;visibility:hidden;pointer-events:none;transition:background var(--duration-medium) var(--ease-smooth)}.caseov.is-open{visibility:visible;pointer-events:auto;background:#1e1e148c}.caseov__frame{position:absolute;inset:0;display:grid;grid-template-columns:1.1fr 1fr;background:var(--theme-bg);will-change:transform}.caseov__media{position:relative;overflow:hidden;background:#f0f0ec}.caseov__panel{padding:clamp(1.5rem,5vw,4rem);display:flex;flex-direction:column;justify-content:center;gap:1rem;opacity:0;transition:opacity var(--duration-medium) var(--ease-smooth)}.caseov.is-open .caseov__panel{opacity:1;transition-delay:.12s}.caseov__panel .eyebrow{font-family:var(--font-primary);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--theme-ink-muted);margin:0}.caseov__panel h2{font-family:var(--theme-font-display);font-weight:800;font-size:clamp(2rem,4vw,3.4rem);margin:0}.caseov__lede{font-size:1rem;line-height:1.6;color:var(--theme-ink-muted);max-width:48ch;margin:0}.caseov__lede code{font-family:var(--font-primary);font-size:.9em}.caseov__stub{display:grid;place-items:center;height:150px;margin:.4rem 0;background:repeating-linear-gradient(45deg,#1e1e140a 0 12px,#1e1e1414 12px 24px);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--theme-ink-muted)}.caseov__spec{display:flex;flex-direction:column;gap:.4rem}.caseov__spec[hidden]{display:none}.caseov__spec-label{font-family:var(--font-primary);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--theme-ink-muted)}.caseov__back{align-self:flex-start;color:var(--theme-ink);background:transparent;box-shadow:inset 0 0 0 1.5px #1e1e1459}.caseov__back:hover{background:var(--theme-ink);color:var(--theme-bg);box-shadow:inset 0 0 0 1.5px var(--theme-ink)}@media(max-width:820px){.feat{height:auto;aspect-ratio:64 / 27}.acc{flex-direction:column;height:auto}.acc__panel,.acc__panel:first-child,.acc.is-interacting .acc__panel:first-child,.acc.is-interacting .acc__panel.is-active{flex:0 0 auto;height:clamp(200px,40vh,300px)}.acc__spine{display:none}.acc__info,.acc__panel:first-child .acc__info{opacity:1}.acc__media:after,.acc__panel:first-child .acc__media:after{opacity:1}.feat__info{opacity:1}.caseov__frame{grid-template-columns:1fr;grid-template-rows:40vh 1fr}}@media(hover:none){.viewchip{display:none}}@media(prefers-reduced-motion:reduce){.acc__panel,.acc__info,.acc__spine,.acc__media:after,.viewchip,.feat__info,.feat__media img,.feat__media video,.acc__media img,.cta,.caseov,.caseov__panel{transition:none}}html[data-sim-reduced] .acc__panel,html[data-sim-reduced] .acc__info,html[data-sim-reduced] .acc__spine,html[data-sim-reduced] .acc__media:after,html[data-sim-reduced] .viewchip,html[data-sim-reduced] .feat__info,html[data-sim-reduced] .feat__media img,html[data-sim-reduced] .feat__media video,html[data-sim-reduced] .acc__media img,html[data-sim-reduced] .cta,html[data-sim-reduced] .caseov,html[data-sim-reduced] .caseov__panel{transition:none}.modal-overlay{position:fixed;inset:0;background-color:var(--color-overlay-dark);z-index:var(--z-nav);display:none;align-items:center;justify-content:center;opacity:0;transition:opacity var(--duration-medium) var(--ease-in-out)}.modal-overlay.active{display:flex;opacity:1}.modal-content{background-color:var(--color-white);padding:2rem;border-radius:var(--radius-medium);box-shadow:var(--shadow-card-hover);position:relative;width:90vw;height:85vh;max-width:1200px;display:flex;flex-direction:column}.modal-close{position:absolute;top:.1rem;right:.5rem;font-size:2rem;font-weight:700;color:var(--color-text-light);background:none;border:none;cursor:pointer;transition:color var(--duration-fast)}.modal-close:hover{color:var(--color-black)}#model-canvas-container{flex-grow:1;width:100%;height:100%;overflow:hidden}#model-canvas-container canvas{width:100%!important;height:100%!important}.modal-instructions{text-align:center;color:var(--color-text-light);margin-top:1rem;font-style:italic}.container h1{font-size:clamp(2rem,6vw,3rem);font-weight:600;color:var(--color-black);text-align:center;margin-bottom:1rem}.form-messages{margin-bottom:var(--gap-xl);padding:1rem;border-radius:var(--radius-medium);display:none;animation:slideIn var(--duration-medium) var(--ease-out)}.form-messages.success{background-color:var(--color-primary);color:var(--color-white);display:block}.form-messages.error{background-color:var(--color-error-bg);color:var(--color-text-error-dark);display:block}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.form-group{margin-bottom:1.5rem;position:relative}.form-group.message-group{flex:1;display:flex;flex-direction:column}form label{display:block;font-family:var(--font-secondary);font-weight:600;margin-bottom:.5rem;color:var(--color-black)}.required{color:var(--color-text-error);font-weight:700;margin-left:.25rem}.optional{color:var(--color-text-light);font-weight:400;font-style:italic;font-size:.9em;margin-left:.25rem}form input[type=text],form input[type=email],form input[type=tel],form textarea{width:100%;max-width:none;padding:.75rem;border:var(--border-width-medium) solid var(--color-black);border-radius:var(--radius-medium);font-family:var(--font-secondary);font-size:1rem;transition:border-color var(--duration-medium) var(--ease-default),box-shadow var(--duration-medium) var(--ease-default);background-color:var(--color-white)}form input:focus,form textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus-primary)}form input.error-field,form textarea.error-field{border-color:var(--color-text-error);box-shadow:0 0 0 3px var(--color-error-transparent)}form input.success-field,form textarea.success-field{border-color:var(--color-success-validation);box-shadow:0 0 0 3px var(--color-success-transparent)}form textarea{resize:none;overflow-y:auto;min-height:calc(30vh - 100px);max-height:calc(40vh - 100px);height:calc(35vh - 100px);line-height:1.5}.message-footer{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem}.field-hint{font-size:.875rem;color:var(--color-text-light);margin-top:.25rem}.character-counter{font-size:.875rem;color:var(--color-text-light);font-weight:500}.character-counter.warning{color:var(--color-primary)}.character-counter.valid{color:var(--color-success-validation)}.error-message{color:var(--color-text-error);font-size:.875rem;margin-top:.5rem;display:block;min-height:1.2em;line-height:1.2;animation:errorSlide var(--duration-medium) var(--ease-out)}.error-message:empty{display:none}@keyframes errorSlide{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.submit-button{width:100%;padding:1rem var(--gap-xl);background:linear-gradient(135deg,var(--color-black) 0%,var(--color-black) 100%);color:var(--color-white);border:none;border-radius:var(--radius-medium);font-family:var(--font-primary);font-size:1rem;font-weight:500;cursor:pointer;transition:all var(--duration-medium) var(--ease-aggressive);position:relative;overflow:hidden;margin-top:1rem;display:flex;align-items:center;justify-content:center;gap:.5rem}.submit-button:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);transform:var(--transform-scale-hover-small);box-shadow:var(--shadow-card-hover)}.submit-button:active:not(:disabled){transform:translateY(0)}.submit-button:disabled{background:var(--color-text-light);cursor:not-allowed;transform:none;box-shadow:none}.button-spinner{width:20px;height:20px;border:2px solid transparent;border-top:2px solid var(--color-white);border-radius:50%;animation:spin 1s linear infinite;display:none}.submit-button.loading .button-spinner{display:block}.submit-button.loading .button-text{margin-right:.5rem}[data-scheme=dark] .container h1,[data-scheme=dark] form label{color:var(--color-primary)}[data-scheme=dark] form input[type=text],[data-scheme=dark] form input[type=email],[data-scheme=dark] form input[type=tel],[data-scheme=dark] form textarea{background-color:var(--dark-surface);border-color:var(--dark-border);color:var(--dark-ink)}[data-scheme=dark] .submit-button:not(:disabled){background:var(--dark-surface-2);border:var(--border-width-medium) solid var(--dark-border);color:var(--dark-ink)}[data-scheme=dark] .submit-button:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);border-color:transparent;color:var(--color-white)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.about-page-main.container{max-width:1200px;padding-left:1rem;padding-right:1rem;padding-bottom:30vh}.about-stage{position:relative;display:grid;grid-template-columns:minmax(220px,320px) 1fr;gap:clamp(1.5rem,5vw,4rem);align-items:center;min-height:min(92vh,800px);padding:clamp(2rem,6vh,4rem) 0 9.5rem;cursor:default;touch-action:none;user-select:none;-webkit-user-select:none}.about-stage.tool-shown{cursor:none}.about-image-stack{width:100%;max-width:320px;justify-self:center}.headshot{position:relative;aspect-ratio:1 / 1;width:100%;border:var(--border-width-thick) solid var(--theme-border, var(--color-black));border-radius:50%;overflow:hidden;transition:border-color var(--duration-medium) var(--ease-default),border-width var(--duration-medium) var(--ease-default)}.about-stage:has(.about-toolbar:hover) .headshot{border-width:5px;border-color:var(--color-primary)}.about-layer{position:absolute;inset:0}.about-layer-real{opacity:0}.about-stage.is-ready .about-layer-real{opacity:1}.about-layer img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none}.doodle-image{object-position:calc(50% + 15px) center}.real-photo{object-position:center 5%}.masked{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-mode:alpha;mask-mode:alpha}.about-text-stack{position:relative;min-height:300px;display:grid;grid-template-columns:minmax(0,600px);justify-items:start}.text-block{grid-area:1 / 1;width:100%;max-width:600px;padding-right:2rem;opacity:0;pointer-events:none;transition:opacity var(--duration-fast) ease}.text-block.is-active{opacity:1;pointer-events:auto}.text-block h1{text-align:left;font-size:clamp(1.8rem,5vw,3rem);font-weight:600;color:var(--theme-ink, var(--color-black));margin-bottom:1rem;font-family:var(--font-secondary)}.block-text{font-size:clamp(1rem,2.5vw,1.2rem);line-height:1.6;color:var(--theme-ink-muted, var(--color-text-light));margin-bottom:0;font-family:var(--font-primary);letter-spacing:.01em}.resume-btn{display:inline-flex;align-items:center;gap:.4em;font-weight:600;font-family:var(--font-primary);font-size:inherit;line-height:1.1;text-align:center;color:var(--theme-ink, var(--color-black));background-color:transparent;border:var(--border-width-medium) solid var(--theme-border, var(--color-black));padding:.75em 1.25em;border-radius:var(--radius-pill);transition:transform var(--duration-medium) var(--ease-aggressive),background-color var(--duration-medium) var(--ease-default);cursor:pointer}.resume-btn:hover,.resume-menu.is-open .resume-btn{background-color:var(--color-primary);color:var(--color-black);transform:scale(1.05)}.resume-menu{position:relative;display:inline-block;margin-top:var(--gap-large);flex:0 0 auto}.resume-menu__chevron{transition:transform var(--duration-medium) var(--ease-default)}.resume-menu.is-open .resume-menu__chevron{transform:rotate(180deg)}.resume-menu__list{position:absolute;top:100%;left:0;width:100%;margin:0;padding:.5rem 0 0;list-style:none;display:flex;flex-direction:column;gap:.4rem;filter:drop-shadow(0 10px 18px rgba(0,0,0,.18));opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--duration-medium) var(--ease-smooth),visibility var(--duration-medium) var(--ease-smooth);z-index:7}.resume-menu.is-open .resume-menu__list{opacity:1;visibility:visible;pointer-events:auto}.resume-menu__list li{position:relative;overflow:hidden;border:var(--border-width-medium) solid var(--theme-border, var(--color-black));background-color:var(--theme-surface, var(--color-white));border-radius:var(--radius-pill);transition:border-color var(--duration-medium);opacity:0}.resume-menu.is-open .resume-menu__list li{animation:navPillDrop var(--duration-medium) var(--ease-smooth) both}.resume-menu.is-open .resume-menu__list li:nth-child(1){animation-delay:.04s}.resume-menu.is-open .resume-menu__list li:nth-child(2){animation-delay:.1s}.resume-menu.is-open .resume-menu__list li:nth-child(3){animation-delay:.16s}.resume-menu__list li:before{content:"";position:absolute;inset:0;background:var(--theme-accent);border-radius:var(--radius-pill);z-index:var(--z-base);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-smooth) var(--ease-smooth)}.resume-menu__list li:hover:before,.resume-menu__list li:has(a:focus-visible):before{transform:scaleX(1)}.resume-menu__item{position:relative;z-index:1;display:flex;align-items:baseline;justify-content:center;gap:.6em;padding:.3em .9em;border-radius:var(--radius-pill);font-family:var(--font-secondary);font-weight:500;color:var(--theme-ink, var(--color-black));text-decoration:none;white-space:nowrap;transition:color var(--duration-medium)}.resume-menu__list li:hover .resume-menu__item,.resume-menu__item:focus-visible{color:var(--theme-accent-contrast, var(--color-black));outline:none}.resume-menu__meta{font-weight:400;font-size:.8em;opacity:.7}@media(prefers-reduced-motion:reduce){.resume-menu__list li{opacity:1}.resume-menu.is-open .resume-menu__list li{animation:none}.resume-menu__chevron,.resume-menu__list{transition:opacity var(--duration-medium) var(--ease-default)}}[data-sim-reduced] .resume-menu__list li{opacity:1}[data-sim-reduced] .resume-menu.is-open .resume-menu__list li{animation:none}.about-hint{position:absolute;left:50%;transform:translate(-50%);bottom:7.75rem;display:flex;flex-direction:row;align-items:center;gap:1.5rem;color:var(--theme-ink, var(--color-black));font-family:var(--font-primary);font-size:.8rem;z-index:6;opacity:0;transition:opacity .25s ease;pointer-events:none}.about-hint.show{animation:about-hint-punch .34s var(--ease-aggressive) both}@keyframes about-hint-punch{0%{opacity:0;transform:translate(-50%) scale(.72)}60%{opacity:.9;transform:translate(-50%) scale(1.08)}to{opacity:.9;transform:translate(-50%) scale(1)}}.about-hint__row{display:flex;align-items:center;gap:.5rem}.about-hint__key{flex-shrink:0;font-weight:600;color:var(--color-primary-dark)}.brush-ring{position:fixed;left:0;top:0;z-index:35;pointer-events:none;border-radius:50%;transform-origin:center;transform:translate(-50%,-50%) scale(0);opacity:0;border:3px solid rgba(255,255,255,.95);box-shadow:0 0 0 2px #14140cb3;transition:transform .5s ease-out,opacity .5s ease-out}.brush-ring.is-shown{transform:translate(-50%,-50%) scale(1);opacity:1;transition:transform .2s ease-out,opacity .16s ease-out}#about-tool-layer{position:fixed;inset:0;z-index:40;pointer-events:none}.about-css-tool{position:fixed;z-index:40;pointer-events:none;font-size:30px;transform:translate(-6px,-26px) rotate(8deg);filter:drop-shadow(2px 3px 2px rgba(0,0,0,.25));display:none}.about-toolbar{position:absolute;left:50%;bottom:1.25rem;transform:translate(-50%);display:flex;align-items:center;gap:4px;padding:5px 7px;border:var(--border-width-medium) solid var(--theme-border, var(--color-black));border-radius:14px;cursor:default;z-index:50}.tool-btn,.state-toggle{appearance:none;border:none;background:transparent;color:var(--theme-ink, var(--color-black));width:38px;height:38px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:9px;cursor:pointer;transition:transform var(--duration-fast) var(--ease-aggressive),color var(--duration-fast) var(--ease-default),background-color var(--duration-fast) var(--ease-default)}.tool-btn .glyph,.state-toggle .glyph{display:block;line-height:1;color:currentColor}.tool-btn:hover,.state-toggle:hover{transform:scale(1.18)}.tool-btn:active,.state-toggle:active{transform:scale(1.06)}.tool-btn.is-active{background:var(--color-primary);color:var(--color-white);border-radius:50%}.tool-btn:focus-visible,.state-toggle:focus-visible{outline:3px solid var(--color-primary-dark);outline-offset:2px}.tool-btn:disabled{opacity:.28;pointer-events:none;background:transparent;color:var(--theme-ink, var(--color-black));border-radius:9px;transform:none}.state-toggle .glyph{transition:transform var(--duration-medium) var(--ease-default)}.state-toggle.is-real .glyph{transform:rotate(180deg)}.about-toolbar [data-tooltip]{position:relative}.about-toolbar [data-tooltip]:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 10px);transform:translate(-50%) translateY(3px);background:var(--theme-ink, var(--color-black));color:var(--theme-surface, var(--color-white));font-family:var(--font-primary);font-size:.7rem;font-weight:600;letter-spacing:.01em;white-space:nowrap;padding:3px 8px;border-radius:6px;opacity:0;pointer-events:none;transition:opacity .1s ease,transform .1s ease}.about-toolbar [data-tooltip]:hover:after,.about-toolbar [data-tooltip]:focus-visible:after{opacity:.95;transform:translate(-50%) translateY(0)}.about-toolbar .brush-size{display:flex;flex-direction:row;align-items:center;gap:8px;padding:0 4px;font-family:var(--font-primary);font-size:.8rem;font-weight:600;color:var(--theme-ink, var(--color-black))}.about-toolbar #about-size-pct{min-width:3.5ch;text-align:left}.about-toolbar input[type=range]{--about-slider-h: 8px;--about-slider-fill: var(--color-primary-dark);--about-slider-empty: color-mix( in srgb, var(--theme-ink, var(--color-black)) 20%, transparent );-webkit-appearance:none;appearance:none;width:84px;height:var(--about-slider-h);background:transparent;cursor:pointer}.about-toolbar input[type=range]::-webkit-slider-runnable-track{height:var(--about-slider-h);border:none;border-radius:var(--radius-pill);background:var(--about-slider-empty);overflow:hidden}.about-toolbar input[type=range]::-moz-range-track{height:var(--about-slider-h);border:none;border-radius:var(--radius-pill);background:var(--about-slider-empty)}.about-toolbar input[type=range]::-moz-range-progress{height:var(--about-slider-h);border-radius:var(--radius-pill);background:var(--about-slider-fill)}.about-toolbar input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:var(--about-slider-h);height:var(--about-slider-h);margin-top:0;border-radius:50%;border:none;background:var(--about-slider-fill);box-shadow:-405px 0 0 400px var(--about-slider-fill)}.about-toolbar input[type=range]::-moz-range-thumb{width:var(--about-slider-h);height:var(--about-slider-h);border-radius:50%;border:none;background:var(--about-slider-fill)}.about-reduced-fallback{cursor:auto}.about-reduced-fallback .about-tool-draw,.about-reduced-fallback .brush-ring,.about-reduced-fallback #about-tool-layer,.about-reduced-fallback .about-css-tool,.about-reduced-fallback .about-hint{display:none!important}@media(prefers-reduced-motion:reduce),(max-width:768px){.about-stage{cursor:auto;touch-action:auto}.about-tool-draw,.brush-ring,#about-tool-layer,.about-css-tool,.about-hint{display:none!important}.about-layer-real{opacity:1;-webkit-mask-image:none;mask-image:none}}html[data-sim-reduced="1"] .about-tool-draw,html[data-sim-reduced="1"] .brush-ring,html[data-sim-reduced="1"] #about-tool-layer,html[data-sim-reduced="1"] .about-css-tool,html[data-sim-reduced="1"] .about-hint{display:none!important}html[data-sim-reduced="1"] .about-stage{cursor:auto;touch-action:auto}@media(max-width:768px){.about-stage{grid-template-columns:1fr;min-height:auto;padding:3rem 0;gap:2.5rem}.about-image-stack{width:28vh;height:28vh;margin:0 auto}.about-text-stack{position:static;width:100%;max-width:500px;margin:0 auto;min-height:0;text-align:center;grid-template-columns:minmax(0,1fr);justify-items:center}.text-block{position:static;padding-right:0}#about-cap-sketch{display:none}#about-cap-real{opacity:1;pointer-events:auto}.about-toolbar{position:static;transform:none;margin:0 auto;width:fit-content}}@media(max-width:480px){.about-image-stack{width:25vh;height:25vh}.text-block h1{font-size:1.8rem}.block-text{font-size:.9rem}}.timeline-section{max-width:1200px;margin:0 auto;padding:5rem 2rem 4rem}.timeline-heading{font-family:var(--font-secondary);font-size:clamp(2rem,5vw,3rem);font-weight:800;text-align:left;margin-bottom:2.5rem;color:var(--color-black)}.timeline{position:relative;padding-left:56px}.timeline-svg{position:absolute;left:0;top:0;width:56px;overflow:visible;pointer-events:none}.timeline-path{fill:none;stroke:var(--color-black);stroke-width:4;stroke-linecap:round}.timeline-item{position:relative;padding-bottom:2rem;opacity:0;transform:translateY(20px);transition:opacity .45s var(--ease-out),transform .45s var(--ease-out)}.timeline-item.reveal{opacity:1;transform:translateY(0)}.timeline-dot{position:absolute;left:-34px;top:1rem;width:12px;height:12px;background:var(--color-black);border:2px solid var(--color-black);border-radius:50%;z-index:var(--z-content);opacity:0;transform:scale(0);transition:opacity .2s ease,transform .4s var(--ease-bouncy)}.timeline-dot.dot-visible{opacity:1;transform:scale(1)}.timeline-content{padding:0 0 0 .5rem}.timeline-date{font-family:var(--font-primary);font-size:.75rem;color:var(--color-primary);font-weight:700;letter-spacing:.1em;text-transform:uppercase;display:block;margin-bottom:.35rem}.timeline-title{font-family:var(--font-secondary);font-size:clamp(1.1rem,2.5vw,1.5rem);font-weight:800;color:var(--color-black);margin-bottom:.15rem;line-height:1.2}.timeline-company{font-family:var(--font-primary);font-size:.85rem;color:var(--color-text-light);margin-bottom:.6rem;font-style:italic}.timeline-desc{font-family:var(--font-primary);font-size:.88rem;color:var(--color-text-light);line-height:1.7;margin:0;max-width:680px}@media(max-width:480px){.timeline-section{padding-left:1rem;padding-right:1rem}}[data-scheme=dark] .timeline-heading,[data-scheme=dark] .timeline-title{color:var(--dark-ink)}[data-scheme=dark] .timeline-path{stroke:var(--dark-ink)}[data-scheme=dark] .timeline-dot{background:var(--dark-ink);border-color:var(--dark-ink)}[data-scheme=dark] .timeline-company,[data-scheme=dark] .timeline-desc{color:var(--dark-ink-muted)}@media(prefers-reduced-motion:reduce){.timeline-dot{opacity:1;transform:scale(1);transition:none}.timeline-item{opacity:1;transform:none;transition:none}}.cursor-effects{opacity:0;transform:scale(0);transition:opacity var(--duration-medium) var(--ease-default),transform var(--duration-medium) var(--ease-default);position:absolute;z-index:var(--z-base);width:9vh;height:9vh;border-radius:50%;background-color:var(--color-white);pointer-events:none}.card-cursor{position:fixed;top:0;left:0;z-index:9999;pointer-events:none;padding:.55em 1.4em;background:var(--color-primary);color:var(--color-black);border-radius:var(--radius-pill);border:var(--border-width-medium) solid var(--color-black);font-family:var(--font-secondary);font-weight:700;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;box-shadow:0 6px 16px #00000040;opacity:0;transform:translate(-50%,-50%) scale(.6);transition:opacity var(--duration-fast) var(--ease-default),transform var(--duration-smooth) var(--ease-bouncy)}.card-cursor.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}@media(hover:none){.card-cursor{display:none}}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}body:not(:has(.landing)) main,body:not(:has(.landing)) .page-header{animation:pageFadeIn .45s var(--ease-out) both}html[data-theme=design] body:not(:has(.landing)) main{animation:none}@keyframes cardSlideIn{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes wave{0%,to{transform:translateY(0)}50%{transform:translateY(-.33rem)}}@keyframes shake{0%{transform:rotate(3deg)}50%{transform:rotate(-3deg)}to{transform:rotate(3deg)}}@keyframes slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slide-out-left{0%{transform:translate(0);opacity:1}to{transform:translate(-30%);opacity:0}}@keyframes slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slide-out-right{0%{transform:translate(0);opacity:1}to{transform:translate(30%);opacity:0}}html[data-slide=forward]::view-transition-old(root){animation:slide-out-left var(--duration-smooth) var(--ease-smooth) both}html[data-slide=forward]::view-transition-new(root){animation:slide-in-right var(--duration-smooth) var(--ease-smooth) both}html[data-slide=backward]::view-transition-old(root){animation:slide-out-right var(--duration-smooth) var(--ease-smooth) both}html[data-slide=backward]::view-transition-new(root){animation:slide-in-left var(--duration-smooth) var(--ease-smooth) both}.wave-text span{display:inline-block;font-size:1.5rem;animation:wave 2s ease-in-out infinite}html[data-sim-reduced] .wave-text span{animation:none}.wave-text span:nth-child(2){animation-delay:0s}.wave-text span:nth-child(3){animation-delay:.07s}.wave-text span:nth-child(4){animation-delay:.14s}.wave-text span:nth-child(5){animation-delay:.21s}.wave-text span:nth-child(6){animation-delay:.28s}.wave-text span:nth-child(8){animation-delay:.35s}.wave-text span:nth-child(9){animation-delay:.42s}.wave-text span:nth-child(10){animation-delay:.49s}.wave-text span:nth-child(11){animation-delay:.56s}.wave-text span:nth-child(12){animation-delay:.63s}.category-select span:nth-child(1){animation-delay:0s,0s}.category-select span:nth-child(2){animation-delay:calc(var(--wave-delay-base) * 1),0s}.category-select span:nth-child(3){animation-delay:calc(var(--wave-delay-base) * 2),0s}.category-select span:nth-child(4){animation-delay:calc(var(--wave-delay-base) * 3),0s}*:focus{outline:none}a:focus-visible,button:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px;border-radius:var(--radius-small)}.nav-link:focus-visible,.nav-link:focus-visible a{outline:2px solid var(--color-primary);outline-offset:3px;border-radius:var(--radius-pill)}.draggable-item:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;border-radius:var(--radius-pill);cursor:pointer}.footer-cta-button:focus-visible,.resume-btn:focus-visible{outline:2px solid var(--theme-ink);outline-offset:3px}.project-card-link:focus-visible{outline:none}form input:focus-visible,form textarea:focus-visible{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus-primary)}@media(hover:none)and (pointer:coarse){.category-select{cursor:pointer}.category-select:after{content:"tap to select";display:block;width:100%;text-align:center;font-size:.7rem;color:var(--color-text-light);letter-spacing:.08em;margin-top:.25rem;opacity:.7}.category-select span[draggable=true]:hover{animation:wave 2s ease-in-out infinite;border:var(--border-width-medium) solid var(--color-black);border-radius:var(--radius-pill);padding:.52em 1.2em}}@media(min-width:769px){.hideOnMobile{display:list-item!important}}@media(max-width:768px){.menu-button{display:flex!important}.hideOnMobile{display:none!important}.contact-footer{padding-top:var(--gap-xl);min-height:auto}.footer-links{flex-direction:column}.link-separator{display:none}.container{padding:1rem}form textarea{min-height:calc(25vh - 80px);max-height:calc(35vh - 80px);height:calc(30vh - 80px)}.field-hint{font-size:.8rem;flex:1;margin-right:.5rem}.character-counter{font-size:.8rem;flex-shrink:0;white-space:nowrap}.about-container{flex-direction:column}.scroll-down-text{position:fixed;top:calc(50vh + 4rem);left:50%;right:auto;transform:translate(-50%);text-align:center;width:auto;justify-content:center}}@media(max-width:400px){.sidebar{width:100%}}@media(max-width:480px){.bottom-gif img{height:clamp(200px,27vh,350px)}.scroll-down-text{top:60vh;font-size:clamp(.6rem,2.5vw,.8rem);padding:clamp(.2rem,.8vw,.4rem) clamp(.4rem,1.5vw,.8rem);gap:clamp(.05rem,.3vw,.15rem);right:clamp(.5rem,1vw,2vw)}}@media(max-width:460px){.job-role-container{flex-direction:column;align-items:center;gap:var(--gap-small)}#category-drop-zone{margin-left:0;justify-content:center;min-height:50px}}@media(min-width:600px){.gallery-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:900px){.gallery-grid{grid-template-columns:repeat(3,1fr)}}@media(prefers-contrast:high){form input,form textarea{border-width:var(--border-width-thick)}.error-message{font-weight:700}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.project-card,.gallery-item{opacity:1;transform:none}.text-block{transition:none}.timeline-item{opacity:1;transform:none;transition:none}.timeline-item .timeline-dot{animation:none}html[data-slide]::view-transition-old(root),html[data-slide]::view-transition-new(root){animation:none!important}}.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}[data-astro-cid-5hce7sga]{-webkit-tap-highlight-color:transparent}.nav-curtain[data-astro-cid-5hce7sga]{position:fixed;inset:0;z-index:3000;display:grid;place-items:center;background:var(--curtain-bg, transparent);color:var(--curtain-ink, currentColor);opacity:0;pointer-events:none}.nav-curtain[data-astro-cid-5hce7sga].is-covering{opacity:1}.nav-curtain[data-astro-cid-5hce7sga].is-covering.is-lifting{transition:opacity .4s var(--ease-smooth, ease);opacity:0}.nav-curtain__label[data-astro-cid-5hce7sga]{font-family:Syne,sans-serif;font-weight:800;font-size:clamp(3rem,12vw,12rem);letter-spacing:-.02em;line-height:normal}@media(prefers-reduced-motion:reduce){.nav-curtain[data-astro-cid-5hce7sga].is-covering.is-lifting{transition:none}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
