@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-400-normal.C38fXH4l.woff2)format("woff2"),url(/_astro/inter-latin-400-normal.CyCys3Eg.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-500-normal.Cerq10X2.woff2)format("woff2"),url(/_astro/inter-latin-500-normal.BL9OpVg8.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-600-normal.LgqL8muc.woff2)format("woff2"),url(/_astro/inter-latin-600-normal.CiBQ2DWP.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/inter-latin-700-normal.Yt3aPRUw.woff2)format("woff2"),url(/_astro/inter-latin-700-normal.BLAVimhd.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff)format("woff")}:root{color-scheme:light;--color-personal:#2d9cdb;--color-professional:#23a26d;--color-background:#e0675a;--color-values:#d9a521;--accent:#2d9cdb;--bg:#f4f7f9;--bg-soft:#e9eff4;--surface:#fff;--text:#15202b;--text-muted:#53616f;--line:#15202b24;--line-strong:#15202b3d;--ink:#15202b;--on-ink:#fff;--shadow:#15202b2e;--font-display:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", menlo, monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.25rem;--text-xl:1.5rem;--text-2xl:1.875rem;--text-3xl:2.375rem;--text-4xl:3rem;--text-5xl:3.75rem;--gutter:clamp(1.25rem, 5vw, 2.5rem);--max-width:72rem;--nav-height:4rem;--radius:12px;--bp-tabs:48rem;--space-section:clamp(2.5rem, 6vw, 4.5rem);--space-tight:clamp(1.25rem, 2.5vw, 2rem);--ease-out:cubic-bezier(.22, 1, .36, 1);--dur-fast:.16s;--dur-med:.32s}[data-theme=dark]{color-scheme:dark;--bg:#0b1219;--bg-soft:#121c26;--surface:#111c26;--text:#e8eef4;--text-muted:#93a4b4;--line:#e8eef424;--line-strong:#e8eef447;--ink:#1a2632;--on-ink:#fff;--shadow:#00000080}*,:before,:after{box-sizing:border-box}*{margin:0}html{text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + 1rem)}body{font-family:var(--font-body);font-size:var(--text-base);color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;transition:background-color var(--dur-med) var(--ease-out), color var(--dur-med) var(--ease-out);line-height:1.7}img,svg,object{max-width:100%;display:block}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.skip-link{top:-100%;left:var(--gutter);z-index:100;background:var(--ink);color:var(--on-ink);font-family:var(--font-mono);font-size:var(--text-sm);transition:top var(--dur-fast) var(--ease-out);border-radius:0 0 8px 8px;padding:.6rem 1rem;position:absolute}.skip-link:focus{color:var(--on-ink);top:0}.wrap{width:100%;max-width:var(--max-width);padding-inline:var(--gutter);margin-inline:auto}.section{padding-block:var(--space-section)}#about{padding-top:var(--space-tight)}.site-nav{z-index:50;height:var(--nav-height);background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0}.site-nav__inner{justify-content:space-between;align-items:center;gap:1rem;height:100%;display:flex}.brand{font-family:var(--font-mono);font-weight:600;font-size:var(--text-base);letter-spacing:-.02em;color:var(--text);align-items:baseline;gap:.4rem;display:inline-flex}.brand__cursor{background:var(--accent);width:.55em;height:1.1em;animation:1.1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.nav-links{align-items:center;gap:1.75rem;padding:0;list-style:none;display:flex}.nav-links a{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);transition:color var(--dur-fast) var(--ease-out);padding-block:.35rem;text-decoration:none}.nav-links a:hover,.nav-links a:focus-visible{color:var(--text)}.nav-links a[aria-current=page]{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent)}.nav-toggle{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text);padding:.4rem .6rem;display:none}.hero{padding-block:clamp(2rem, 5vh, 3.5rem) var(--space-tight);position:relative;overflow:hidden}.hero__grid{grid-template-columns:minmax(0,1.35fr) minmax(15rem,.65fr);align-items:center;gap:clamp(2.5rem,6vw,5rem);display:grid}.hero__content{justify-items:start;gap:1.5rem;display:grid}.hero__dna{justify-self:center;width:100%;max-width:22rem}.hero__dna .dna__canvas{height:clamp(22rem,52vh,30rem)}.hero__title{font-family:var(--font-display);font-weight:700;font-size:clamp(var(--text-3xl), 6.5vw, var(--text-5xl));letter-spacing:-.03em;max-width:18ch;color:var(--text);line-height:1.05}.hero__title .accent{color:var(--accent)}.hero__intro{max-width:52ch;font-size:var(--text-lg);color:var(--text-muted);line-height:1.6}.btn{font-family:var(--font-mono);font-size:var(--text-sm);transition:transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-radius:999px;align-items:center;gap:.5rem;padding:.8rem 1.4rem;font-weight:500;text-decoration:none;display:inline-flex}.btn--primary{background:var(--ink);color:var(--on-ink)}.btn--primary:hover,.btn--primary:focus-visible{background:var(--accent);color:var(--on-ink);transform:translateY(-2px)}.btn--ghost{color:var(--text);border:1px solid var(--line-strong)}.btn--ghost:hover,.btn--ghost:focus-visible{border-color:var(--text);transform:translateY(-2px)}.hero__portrait{gap:.9rem;max-width:19rem;margin:.25rem 0 0;display:grid}.hero__portrait img{aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius);border:1px solid var(--line);width:100%;height:auto;box-shadow:0 24px 48px -24px var(--shadow);background:var(--bg-soft)}.hero__portrait figcaption{flex-direction:column;gap:.1rem;padding-inline:.25rem;display:flex}.hero__portrait-name{font-family:var(--font-mono);font-weight:600;font-size:var(--text-sm);letter-spacing:.03em;color:var(--text)}.dna{width:100%;margin-top:0}.dna__canvas-wrap{margin-top:.25rem}.dna__canvas{width:100%;height:clamp(16rem,42vw,26rem);display:block}.dna__chips{flex-wrap:wrap;justify-content:center;gap:.5rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.dna__chip{border:1px solid var(--line);background:var(--surface);transition:border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);border-radius:999px;align-items:center;gap:.5rem;padding:.4rem .75rem .4rem .45rem;text-decoration:none;display:inline-flex}.dna__chip:hover,.dna__chip:focus-visible{border-color:var(--base-color);transform:translateY(-1px)}.dna__chip-letter{background:var(--base-color);color:#fff;width:1.35rem;height:1.35rem;font-family:var(--font-mono);font-weight:600;font-size:var(--text-xs);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.dna__chip-label{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text)}.nav-actions{align-items:center;gap:1rem;display:flex}.theme-toggle{width:2.25rem;height:2.25rem;color:var(--text);transition:background-color var(--dur-fast) var(--ease-out);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.theme-toggle:hover,.theme-toggle:focus-visible{background:var(--bg-soft)}.theme-toggle__icon{display:none}[data-theme=light] .theme-toggle__icon--sun,[data-theme=dark] .theme-toggle__icon--moon{display:block}.section-title{font-family:var(--font-display);font-weight:700;font-size:clamp(var(--text-2xl), 4vw, var(--text-4xl));letter-spacing:-.02em;color:var(--text);margin-top:.5rem;margin-bottom:1rem;line-height:1.1}.about__lead{font-size:var(--text-xl);max-width:56ch;color:var(--text);margin-bottom:clamp(2.5rem,6vw,4rem);line-height:1.55}.strands{gap:clamp(2rem,5vw,3rem);display:grid}.strand{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);transition:box-shadow var(--dur-med) var(--ease-out);overflow:hidden}.strand:hover{box-shadow:0 12px 32px -16px var(--shadow)}.strand__head{border-bottom:1px solid var(--line);align-items:center;gap:.9rem;padding:1.1rem 1.25rem;display:flex}.strand__badge{background:var(--strand-color);color:#fff;width:1.75rem;height:1.75rem;font-family:var(--font-mono);font-weight:600;font-size:var(--text-xs);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.strand__name{font-family:var(--font-mono);font-weight:600;font-size:var(--text-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--text)}.strand__intro{max-width:72ch;color:var(--text);font-size:var(--text-lg);padding:1.25rem 1.5rem .5rem;line-height:1.55}.tabs__list{flex-wrap:wrap;gap:.25rem;padding:.75rem 1.25rem 0;list-style:none;display:flex}.tabs__tab{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);transition:color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);background:0 0;border:1px solid #0000;border-radius:999px;padding:.5rem .9rem}.tabs__tab:hover{color:var(--text)}.tabs__tab[aria-selected=true]{color:var(--text);border-color:var(--strand-color);background:color-mix(in srgb, var(--strand-color) 10%, transparent)}.tabs__panel{padding:1rem 1.5rem 1.5rem}.tabs__section+.tabs__section{margin-top:1.25rem}.tabs__section-title{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.35rem;font-weight:500}.tabs__section p+p{margin-top:.85rem}.tabs__list--accordion{flex-direction:column;gap:.5rem;padding:1rem 1.25rem}.tabs__list--accordion .tabs__tab{border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--text);text-align:left;background:var(--surface);justify-content:space-between;align-items:center;gap:.5rem;display:flex}.tabs__list--accordion .tabs__tab[aria-expanded=true]{border-color:var(--strand-color);color:var(--text);background:color-mix(in srgb, var(--strand-color) 8%, transparent)}.tabs__tab-marker{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);display:none}.tabs__list--accordion .tabs__tab-marker{display:inline}.tabs__list--accordion .tabs__tab[aria-expanded=true] .tabs__tab-marker{color:var(--strand-color)}.tabs__panel--hidden{display:none}.about__close{max-width:58ch;margin-top:clamp(2.5rem,6vw,4rem)}.about__close-title{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);letter-spacing:-.02em;color:var(--text);margin-bottom:.6rem;line-height:1.1}.about__close-sign{font-size:var(--text-lg);color:var(--text);line-height:1.6}.about__close-sign strong{font-weight:600}.resume{background:var(--ink);color:var(--on-ink)}.resume__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:2rem;display:flex}.resume__actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.resume .btn--ghost{color:var(--on-ink);border-color:#ffffff59}.resume .btn--ghost:hover,.resume .btn--ghost:focus-visible{border-color:var(--on-ink)}.resume__title{font-family:var(--font-display);font-weight:700;font-size:clamp(var(--text-2xl), 4vw, var(--text-4xl));letter-spacing:-.02em;color:var(--on-ink)}.resume__frame{border-radius:var(--radius);background:#fff;border:1px solid #ffffff1f;overflow:hidden}.resume__frame object{background:#fff;width:100%;height:min(78vh,900px);display:block}.contact__lead{color:var(--text-muted);max-width:48ch;margin-bottom:clamp(2rem,5vw,3rem)}.contact__grid{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1rem;display:grid}.contact-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);transition:border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);align-items:center;gap:.9rem;padding:1.1rem 1.25rem;text-decoration:none;display:flex}.contact-card:hover,.contact-card:focus-visible{border-color:var(--line-strong);transform:translateY(-2px)}.contact-card__icon{width:1.35rem;height:1.35rem;fill:var(--text);flex-shrink:0}.contact-card__label{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text)}.contact-card__meta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);margin-left:auto}.site-footer{border-top:1px solid var(--line);padding-block:var(--space-tight);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted)}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;display:flex}.js .reveal{opacity:0;transition:opacity .6s var(--ease-out), transform .6s var(--ease-out);transform:translateY(18px)}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.reveal,.js .reveal{opacity:1;transform:none}.brand__cursor{opacity:0;animation:none}}@media (width<=720px){.hero__grid{grid-template-columns:1fr;gap:2.5rem}.hero__dna{order:2;max-width:min(22rem,82vw)}.hero__portrait{justify-self:center;max-width:min(19rem,72vw)}.nav-links{top:var(--nav-height);background:var(--bg);border-bottom:1px solid var(--line);padding:.5rem var(--gutter) 1rem;flex-direction:column;align-items:stretch;gap:0;display:none;position:absolute;left:0;right:0}.nav-links.is-open{display:flex}.nav-links a{border-bottom:1px solid var(--line);padding:.75rem 0}.nav-toggle{align-items:center;gap:.4rem;display:inline-flex}}
