:root{color-scheme:light;accent-color:#009485;--bg:#eef7f4;--surface:#ffffff9e;--surface-2:#ffffff6b;--glass:#ffffff9e;--glass-strong:#ffffffc7;--glass-border:#ffffffbf;--glass-edge:#00948529;--glass-shadow:0 8px 32px #103c341f;--glass-blur:blur(18px)saturate(160%);--ink:#17211e;--muted:#4d5a56;--panel:#10201cb8;--panel-ink:#e9f2ef;--panel-muted:#a7beb7;--accent:#00796b;--accent-hover:#006354;--accent-text:#006e62;--accent-on-dark:#5eead4;--accent-soft:#00796b24;--method-bg:#00796b;--method-ink:#fff;--danger:#b3261e;--danger-on-dark:#ff8a80;--font-sans:"Albert Sans","Helvetica Neue",Arial,sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;--step-display:clamp(2.5rem,2rem + 3vw,4rem);--step-heading:clamp(1.75rem,1.4rem + 1.6vw,2.5rem);--step-lead:1.25rem;--step-body:1.0625rem;--step-small:.875rem;--container:1080px;--pad-x:clamp(1.25rem,4vw,2rem);--nav-h:64px;--section-y:clamp(4rem,8vw,6.5rem);--gap:clamp(1rem,2vw,1.75rem);--radius:18px;--radius-sm:12px;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--ease-out:cubic-bezier(.22,1,.36,1)}[data-theme=dark]{color-scheme:dark;accent-color:#5eead4;--bg:#07110f;--surface:#111c1994;--surface-2:#1a2a268c;--glass:#101c198c;--glass-strong:#142420b8;--glass-border:#ffffff1f;--glass-edge:#5eead42e;--glass-shadow:0 12px 40px #00000061;--ink:#e8efec;--muted:#9db3ab;--panel:#081411ad;--panel-ink:#e9f2ef;--panel-muted:#8fa5a0;--accent:#00a98c;--accent-hover:#5eead4;--accent-text:#5eead4;--accent-on-dark:#5eead4;--accent-soft:#5eead41f;--method-bg:#00a98c;--method-ink:#06231e;--danger:#ff8a80;--danger-on-dark:#ff8a80}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--bg:#07110f;--surface:#111c1994;--surface-2:#1a2a268c;--glass:#101c198c;--glass-strong:#142420b8;--glass-border:#ffffff1f;--glass-shadow:0 12px 40px #00000061;--ink:#e8efec;--muted:#9db3ab;--panel:#081411ad;--accent-text:#5eead4;--danger:#ff8a80}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 16px)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--bg);min-height:100svh;color:var(--ink);font-family:var(--font-sans);font-size:var(--step-body);-webkit-font-smoothing:antialiased;line-height:1.6}body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(38vmax 30vmax at 12% 8%,#00948547,#0000 62%),radial-gradient(34vmax 28vmax at 88% 12%,#22d3ee38,#0000 60%),radial-gradient(44vmax 36vmax at 82% 88%,#0094853d,#0000 63%),radial-gradient(36vmax 30vmax at 14% 90%,#34d39933,#0000 62%);position:fixed;inset:-12vmax}[data-theme=dark] body:before,:root:not([data-theme]) body:before{opacity:1}@media (prefers-reduced-motion:no-preference){body:before{animation:36s ease-in-out infinite alternate aurora-drift}}@keyframes aurora-drift{0%{transform:translate(-1.5vmax)scale(1)}to{transform:translate(1.5vmax,1vmax)scale(1.04)}}h1,h2,h3{letter-spacing:-.02em;text-wrap:balance;font-weight:600;line-height:1.12}p{text-wrap:pretty}ul,ol{padding:0;list-style:none}a{color:inherit}svg,canvas{max-width:100%;display:block}img{display:none!important}button,input,textarea,select{font:inherit;color:inherit}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent-text);outline-offset:3px}[hidden]{display:none!important}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:100%;max-width:var(--container);padding-inline:var(--pad-x);margin-inline:auto}.skip-link{z-index:200;background:var(--ink);color:var(--bg);font-size:var(--step-small);padding:12px 16px;position:fixed;top:12px;left:12px;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}[data-reveal]{opacity:0;transform:translateY(20px)}[data-reveal].is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:no-preference){[data-reveal].is-visible{transition:opacity .6s var(--ease-out),transform .6s var(--ease-out);transition-delay:var(--reveal-delay,0s)}}@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none}}.req{margin-bottom:var(--space-4)}.req code{background:var(--method-bg);color:var(--method-ink);font-family:var(--font-mono);letter-spacing:.02em;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:700;display:inline-block}.fig-caption{margin-top:var(--space-3);font-size:var(--step-small);color:var(--muted)}.tracer,.work-row,.stack__group,.fact,.experience__row,.services__row,.contact__form,.work-sheet__spec,.work__empty,.about__text,.contact__intro{background:var(--glass);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);border-radius:var(--radius)}@supports not (backdrop-filter:blur(1px)){.tracer,.work-row,.stack__group,.contact__form,.work-sheet__spec{background:var(--glass-strong)}}.nav{z-index:100;height:var(--nav-h);background:var(--glass);border-bottom:1px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);position:fixed;inset:0 0 auto}.nav.is-scrolled{background:var(--glass-strong);box-shadow:var(--glass-shadow)}.nav__inner{height:100%;max-width:var(--container);padding-inline:var(--pad-x);align-items:center;gap:16px;margin-inline:auto;display:flex}.nav__brand{white-space:nowrap;font-weight:600;text-decoration:none}.nav__links{align-items:center;gap:var(--space-5);margin-left:auto;display:flex}.nav__menu-cta{display:none}.theme-toggle{border:1px solid var(--glass-border);background:var(--surface-2);width:44px;height:44px;color:var(--muted);cursor:pointer;transition:color .2s var(--ease-out),background .2s var(--ease-out),transform .2s var(--ease-out);border-radius:12px;justify-content:center;align-items:center;padding:0;display:none}.js .theme-toggle{display:inline-flex}.theme-toggle:hover{color:var(--ink);transform:translateY(-1px)}.theme-toggle__icon{width:20px;height:20px}.theme-toggle__icon--sun{display:none}[data-theme=dark] .theme-toggle__icon--sun{display:block}[data-theme=dark] .theme-toggle__icon--moon{display:none}.nav__link{min-height:44px;font-size:var(--step-small);color:var(--muted);transition:color .2s var(--ease-out),background .2s var(--ease-out);border-radius:8px;align-items:center;padding-inline:6px;text-decoration:none;display:inline-flex}.nav__link:hover,.nav__link.is-active{color:var(--ink);background:var(--accent-soft);text-decoration:none}.nav__cta{background:var(--accent);height:40px;color:var(--method-ink);font-size:var(--step-small);white-space:nowrap;transition:background .2s var(--ease-out),transform .2s var(--ease-out);border-radius:12px;align-items:center;padding:0 16px;font-weight:600;text-decoration:none;display:inline-flex}.nav__cta:hover{background:var(--accent-hover);transform:translateY(-1px)}.nav__burger{border:1px solid var(--glass-border);background:var(--surface-2);cursor:pointer;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:44px;height:44px;padding:0;display:none}.nav__burger span{background:var(--ink);width:22px;height:2px;display:block}.nav.is-open{background:var(--glass-strong)}.nav.is-open .nav__brand,.nav.is-open .nav__link{color:var(--ink)}.nav.is-open .nav__burger span{background:var(--ink)}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:48px;padding:0 var(--space-5);background:var(--ink);color:var(--bg);font-size:var(--step-body);cursor:pointer;transition:transform .2s var(--ease-out),background .2s var(--ease-out),box-shadow .2s var(--ease-out);border:1px solid #0000;border-radius:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn--primary{background:var(--accent);color:var(--method-ink)}.btn--primary:hover{background:var(--accent-hover)}.btn--block{justify-content:space-between;width:100%;padding-inline:18px}.hero{padding-top:calc(var(--nav-h) + clamp(2rem,5vh,3.5rem));padding-bottom:clamp(2.5rem,6vh,4rem)}.hero__title{max-width:16ch;font-size:var(--step-display);letter-spacing:-.03em}.hero__role{margin-top:var(--space-4);font-size:var(--step-lead)}.hero__lead{max-width:56ch;margin-top:var(--space-4)}.hero__actions{align-items:center;gap:var(--space-4)var(--space-5);margin-top:var(--space-6);flex-wrap:wrap;display:flex}.hero__link{min-height:44px;color:var(--accent-text);align-items:center;gap:8px;font-weight:600;display:inline-flex}.hero__meta{margin-top:var(--space-5);font-size:var(--step-small);color:var(--muted)}.tracer{margin-top:var(--space-6);background:var(--panel);color:var(--panel-ink);border-color:var(--glass-border);overflow:hidden}.tracer__bar{padding:var(--space-3)var(--space-4);border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.tracer__title{font-size:var(--step-small);font-weight:600}.tracer__runtime{font-size:var(--step-small);color:var(--panel-muted);white-space:nowrap}.tracer__tabs{flex-wrap:wrap;gap:8px;padding:12px 12px 4px;display:flex}.tracer__tab{min-height:40px;color:var(--panel-muted);font-size:var(--step-small);cursor:pointer;-webkit-backdrop-filter:blur(10px);transition:background .2s var(--ease-out),color .2s var(--ease-out),transform .2s var(--ease-out);background:#ffffff0f;border:1px solid #ffffff1f;border-radius:10px;padding:8px 12px}.tracer__tab code{font-family:var(--font-mono);font-size:13px}.tracer__tab:hover{color:var(--panel-ink);transform:translateY(-1px)}.tracer__tab.is-active{background:var(--accent);border-color:var(--accent);color:var(--method-ink)}.tracer__panels{padding:0 var(--space-4)}.tracer__path{margin:var(--space-3)0 var(--space-2);font-size:var(--step-small);color:var(--accent-on-dark)}.tracer__code{padding:var(--space-4);border-radius:var(--radius-sm);background:#00000061;border:1px solid #ffffff1a;margin:0;overflow-x:auto}.tracer__code code{font-family:var(--font-mono);font-size:13px;line-height:1.6}.tracer__note{padding:var(--space-3)var(--space-4);color:var(--panel-muted);font-size:13px}.tracer .fig-caption{padding:0 var(--space-4)var(--space-4);color:var(--panel-muted)}.section{padding:var(--section-y)0}.section-head{margin-bottom:var(--space-6)}.section-head__title{font-size:var(--step-heading)}.section-head__note{max-width:56ch;margin-top:var(--space-2);color:var(--muted)}.work__grid{gap:var(--gap);grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:start;display:grid}.work__loading{font-size:var(--step-small);color:var(--accent-text);margin-bottom:12px}.htmx-indicator{opacity:0;visibility:hidden}.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{opacity:1;visibility:visible}.work__filters{padding-bottom:var(--space-3);flex-wrap:wrap;gap:8px;display:flex}.work__filter{border:1px solid var(--glass-border);background:var(--surface-2);min-height:40px;-webkit-backdrop-filter:var(--glass-blur);font-size:var(--step-small);color:var(--muted);transition:color .2s var(--ease-out),background .2s var(--ease-out),transform .2s var(--ease-out);border-radius:999px;align-items:center;padding:0 14px;text-decoration:none;display:inline-flex}.work__filter:hover{color:var(--ink);transform:translateY(-1px)}.work__filter.is-active{background:var(--accent);border-color:var(--accent);color:var(--method-ink)}.work__count{margin-bottom:var(--space-3);font-size:var(--step-small);color:var(--muted)}.work-list{gap:12px;display:grid}.work-row{transition:transform .2s var(--ease-out),background .2s var(--ease-out);gap:8px;padding:20px;text-decoration:none;display:grid}.work-row__top{align-items:center;gap:10px;display:flex}.work-row__method{background:var(--method-bg);color:var(--method-ink);font-family:var(--font-mono);border-radius:6px;padding:3px 8px;font-size:12px;font-weight:700;display:inline-block}.work-row__tech{color:var(--muted);margin-right:auto;font-size:13px}.work-row__arrow{color:var(--muted)}.work-row__title{font-size:var(--step-lead)}.work-row__desc{max-width:64ch;color:var(--muted)}.work-row:hover{background:var(--glass-strong);transform:translateY(-2px)}.work-row:hover .work-row__arrow{color:var(--accent-text)}.work__empty{padding:24px}.work__empty h3{margin-bottom:8px}.work__empty a{min-height:44px;color:var(--accent-text);align-items:center;font-weight:600;display:inline-flex}.work__note{max-width:60ch;margin-top:var(--space-5);font-size:var(--step-small);color:var(--muted)}.work__note a{color:var(--accent-text)}.work-sheet{top:calc(var(--nav-h) + 16px);margin:0;position:sticky}.work-sheet__rows{gap:12px;display:grid}.work-sheet__row{padding:4px}.work-sheet__row.is-active .work-sheet__label{color:var(--accent-text)}.work-sheet__label{color:var(--muted);margin:8px 12px;font-size:13px;font-weight:600}.work-sheet__spec{border-radius:var(--radius-sm);padding:18px}.work-sheet__op{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.work-sheet__op code{font-family:var(--font-mono);overflow-wrap:anywhere;font-size:13px}.work-sheet__method{background:var(--method-bg);color:var(--method-ink);font-family:var(--font-mono);border-radius:6px;padding:3px 8px;font-size:12px;font-weight:700;display:inline-block}.work-sheet__meta{gap:10px;margin-top:14px;display:grid}.work-sheet__meta>div{grid-template-columns:72px minmax(0,1fr);align-items:baseline;gap:12px;display:grid}.work-sheet__meta dt{color:var(--muted);font-size:13px}.work-sheet__meta dd{font-size:var(--step-small)}.work-sheet__status{background:var(--accent-soft);color:var(--accent-text);border-radius:999px;padding:2px 8px;font-weight:700;display:inline-block}.work-sheet__caption{justify-content:space-between;gap:var(--space-4);margin-top:var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--glass-border);background:var(--surface-2);-webkit-backdrop-filter:var(--glass-blur);font-size:var(--step-small);color:var(--muted);padding:14px 16px;display:flex}.work-sheet__caption a{color:var(--accent-text);white-space:nowrap}.work-sheet__empty{font-size:var(--step-small);color:var(--muted);margin-top:16px}.about__grid{gap:var(--gap);grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:start;display:grid}.about__facts{gap:12px;display:grid}.fact{padding:16px}.fact dt{font-size:var(--step-small);color:var(--muted)}.fact dd{margin-top:var(--space-1);overflow-wrap:anywhere}.fact a{color:var(--accent-text)}.about__text{gap:var(--space-4);max-width:64ch;padding:clamp(1.25rem,3vw,2rem);display:grid}.stack__grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.stack__group{transition:transform .2s var(--ease-out);padding:20px}.stack__group:hover{transform:translateY(-2px)}.stack__group h3{margin-bottom:var(--space-3);font-size:var(--step-lead)}.stack__group ul{gap:8px;display:grid}.stack__group li{border:1px solid var(--glass-border);background:var(--surface-2);width:fit-content;max-width:100%;font-size:var(--step-small);color:var(--ink);border-radius:999px;align-items:center;padding:4px 10px;display:inline-flex}.stack__note{max-width:64ch;margin-top:var(--space-6);font-size:var(--step-small);color:var(--muted)}.experience__list{gap:12px;display:grid}.experience__row{gap:var(--space-5);grid-template-columns:minmax(120px,1fr) minmax(0,3fr);padding:20px;display:grid}.experience__period{color:var(--muted);font-size:13px}.experience__period:before{content:"● ";color:var(--accent)}.experience__role{font-size:var(--step-lead)}.experience__org{margin-top:var(--space-1);color:var(--muted)}.experience__desc{max-width:64ch;margin-top:var(--space-3)}.experience__tags{margin-top:var(--space-3);color:var(--muted);flex-wrap:wrap;gap:8px;font-size:13px;display:flex}.experience__tags li{border:1px solid var(--glass-border);background:var(--surface-2);border-radius:999px;padding:2px 10px}.services__list{gap:12px;display:grid}.services__row{gap:var(--space-5);grid-template-columns:minmax(0,2fr) minmax(0,3fr);padding:20px;display:grid}.services__title{font-size:var(--step-lead)}.services__desc{max-width:60ch;color:var(--muted)}.contact__grid{gap:var(--gap);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);align-items:start;display:grid}.contact__intro{padding:clamp(1.25rem,3vw,2rem)}.contact__title{font-size:var(--step-heading)}.contact__lead{margin-top:var(--space-4);font-size:var(--step-lead)}.contact__email{max-width:100%;margin-top:var(--space-5);overflow-wrap:anywhere;color:var(--accent-text);font-weight:600;display:inline-block}.contact__links{gap:var(--space-2)var(--space-4);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.contact__links a{border:1px solid var(--glass-border);background:var(--surface-2);min-height:44px;transition:transform .2s var(--ease-out),background .2s var(--ease-out);border-radius:10px;align-items:center;padding:0 12px;text-decoration:none;display:inline-flex}.contact__links a:hover{background:var(--glass-strong);transform:translateY(-1px)}.contact__meta{margin-top:var(--space-5);font-size:var(--step-small);color:var(--muted)}.contact__form{gap:var(--space-4);padding:clamp(1.25rem,3vw,2rem);display:grid}.contact__form-title{font-size:var(--step-lead);font-weight:600}.contact__row{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.contact__field{gap:var(--space-2);display:grid}.contact__field label{font-size:var(--step-small);font-weight:600}.contact__field input,.contact__field textarea{width:100%;min-height:48px;padding:var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--glass-border);background:var(--surface-2);color:var(--ink);font-size:var(--step-body);-webkit-backdrop-filter:blur(8px)}.contact__field textarea{resize:vertical;min-height:140px}.contact__hint{font-size:var(--step-small);color:var(--muted)}.field-error{font-size:var(--step-small);color:var(--danger)}.contact__status{min-height:1.2em;font-size:var(--step-small);color:var(--muted)}.contact__status.is-success{color:var(--accent-text)}.contact__status.is-error{color:var(--danger)}.contact__form-note{font-size:var(--step-small);color:var(--muted)}.foot{background:var(--panel);color:var(--panel-ink);border-top:1px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);padding:clamp(3rem,7vw,5rem) 0 2rem}.foot__brand{font-size:var(--step-heading);font-weight:600;text-decoration:none}.foot__name{margin-top:var(--space-3);color:var(--panel-muted)}.foot__tag{max-width:40ch;margin-top:var(--space-4)}.foot__nav{gap:var(--space-2)var(--space-5);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.foot__nav a,.foot__social a,.foot__top{font-size:var(--step-small);color:var(--panel-muted)}.foot__nav a:hover,.foot__social a:hover,.foot__top:hover{color:var(--panel-ink)}.foot__social{margin-top:var(--space-4);flex-wrap:wrap;gap:8px 24px;display:flex}.foot__social a{align-items:center;min-height:44px;display:inline-flex}.foot__close{gap:var(--space-2)var(--space-5);margin-top:var(--space-6);flex-wrap:wrap;justify-content:space-between;align-items:baseline;display:flex}.foot__legal,.foot__build,.foot__credits{font-size:var(--step-small);color:var(--panel-muted)}.foot__credits{max-width:90ch;margin-top:var(--space-4)}.foot__top{align-items:center;min-height:44px;display:inline-flex}@media (width<=900px){.nav__links{inset:var(--nav-h)0 0;padding:8px var(--pad-x)48px;background:var(--glass-strong);-webkit-backdrop-filter:var(--glass-blur);opacity:0;visibility:hidden;flex-direction:column;align-items:stretch;gap:0;margin:0;position:fixed;overflow-y:auto}.nav.is-open .nav__links{opacity:1;visibility:visible}.nav__link{min-height:64px;color:var(--ink);font-size:1.5rem}.theme-toggle{margin-left:auto}.nav__burger{display:flex}.stack__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.work__grid{grid-template-columns:minmax(0,1fr)}.work-sheet{position:static}.contact__grid,.about__grid{grid-template-columns:minmax(0,1fr)}}@media (width<=760px){.section-head{margin-bottom:var(--space-5)}.experience__row,.services__row{gap:var(--space-2);grid-template-columns:minmax(0,1fr)}.contact__row{grid-template-columns:minmax(0,1fr)}.work-sheet__caption{gap:var(--space-2);flex-direction:column}}@media (width<=560px){.nav__cta{display:none}.nav__menu-cta{display:block}.stack__grid{grid-template-columns:minmax(0,1fr)}.hero__actions .btn{width:100%}.tracer__bar{gap:var(--space-1);flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}body:before{animation:none}}