:root{--color-bg:#fff;--color-bg-subtle:#f6f7f8;--color-surface:#fff;--color-border:#e2e4e8;--color-text:#16181d;--color-text-muted:#565c66;--color-accent:#2563eb;--color-accent-contrast:#fff;--color-focus:#2563eb;--color-link:#0d9488;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--max-width:72rem;--radius:10px;--shadow-sm:0 1px 2px #1012160f;--shadow-md:0 4px 16px #10121614}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-bg:#101215;--color-bg-subtle:#16181c;--color-surface:#191b20;--color-border:#2b2e34;--color-text:#eef0f3;--color-text-muted:#a3a9b3;--color-accent:#5b8def;--color-accent-contrast:#0b0d10;--color-focus:#5b8def;--color-link:#2dd4bf;--shadow-sm:0 1px 2px #00000059;--shadow-md:0 4px 20px #00000073}}:root[data-theme=dark]{--color-bg:#101215;--color-bg-subtle:#16181c;--color-surface:#191b20;--color-border:#2b2e34;--color-text:#eef0f3;--color-text-muted:#a3a9b3;--color-accent:#5b8def;--color-accent-contrast:#0b0d10;--color-focus:#5b8def;--color-link:#2dd4bf;--shadow-sm:0 1px 2px #00000059;--shadow-md:0 4px 20px #00000073}*,:before,:after{box-sizing:border-box}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){html{--lightningcss-light: ;--lightningcss-dark:initial}}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}img{max-width:100%;display:block}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{font-weight:650;line-height:1.2}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.container{max-width:var(--max-width);margin-inline:auto;padding-inline:1.25rem}.page{flex-direction:column;min-height:100vh;display:flex}.page__main{flex:1}.print-only{display:none}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{background:var(--color-accent);color:var(--color-accent-contrast);border-radius:var(--radius);z-index:100;padding:.6rem 1rem;transition:top .15s;position:absolute;top:-3rem;left:1rem}.skip-link:focus{top:1rem}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.badge{color:var(--brand,var(--color-text-muted));background:color-mix(in srgb, var(--brand,var(--color-border)) 16%, var(--color-surface));border:1px solid color-mix(in srgb, var(--brand,var(--color-border)) 38%, transparent);white-space:nowrap;border-radius:999px;align-items:center;gap:.35rem;padding:.32rem .65rem;font-size:.72rem;font-weight:600;line-height:1;display:inline-flex}.brand-btn{color:var(--brand,var(--color-text));background:color-mix(in srgb, var(--brand,var(--color-border)) 10%, transparent);border:1.5px solid color-mix(in srgb, var(--brand,var(--color-border)) 45%, transparent);cursor:pointer;border-radius:999px;align-items:center;gap:.45rem;padding:.5rem 1rem;font-family:inherit;font-size:.85rem;font-weight:600;text-decoration:none;transition:background .18s,color .18s,border-color .18s,transform .12s;display:inline-flex}.brand-btn:hover,.brand-btn:focus-visible{background:var(--brand,var(--color-accent));color:#0b0d10;border-color:var(--brand,var(--color-accent));text-decoration:none}.brand-btn:active{transform:translateY(1px)}.brand-btn svg{flex-shrink:0}.brand-btn--sm{padding:.4rem .85rem;font-size:.8rem}.status-pill{letter-spacing:.04em;white-space:nowrap;border-radius:999px;align-items:center;gap:.3rem;padding:.2rem .55rem;font-size:.68rem;font-weight:700;display:inline-flex}.status-pill--live{color:#4ade80;background:#4ade801a;border:1px solid #4ade8066}.status-pill--internal{color:#a3a9b3;background:#a3a9b314;border:1px solid #a3a9b34d}.status-pill--progress{color:#fbbf24;background:#fbbf241a;border:1px solid #fbbf2459}.status-pill--live:before{content:"";background:currentColor;border-radius:50%;width:5px;height:5px}@media print{header.site-header,footer.site-footer,.theme-toggle,.no-print{display:none!important}body{color:#000;background:#fff}a{color:#000;text-decoration:none}.print-only{display:block!important}.resume-page{max-width:none;margin:0;padding:0}.resume-page *{color:#000!important;background:0 0!important}.resume-page .timeline{border-left-color:#999!important}.resume-page .timeline__item:before{background:#000!important}.resume-page .badge{border:1px solid #999!important}.resume-page .resume-section--page-break{break-before:page;page-break-before:always}.resume-page .resume-skills{display:block}.resume-page .resume-skills__group{margin-bottom:.75rem}.resume-page .resume-skills__group h3{margin-bottom:0;font-size:12px}.resume-page .resume-skills__list{white-space:normal;display:inline}.resume-page .resume-skills__list li{line-height:.5rem;display:inline;white-space:normal!important;background:0 0!important;border:none!important;border-radius:0!important;margin:0!important;padding:0!important;font-weight:400!important}.resume-page .resume-skills__list li:not(:last-child):after{content:" •" " ";font-size:1.15em;font-weight:800}.resume-page .resume-header__contact,.resume-page .resume-section>p,.resume-page .timeline__heading span,.resume-page .timeline__item ul,.resume-page .timeline__detail,.resume-page .resume-skills__list,.resume-page .resume-skills__list li,.resume-page .resume-projects__item p,.resume-page .resume-list{font-size:12px!important}.resume-page .timeline__heading h3{margin-bottom:0!important;font-size:12px!important;line-height:.5rem!important}.resume-page .resume-projects h3{font-size:12px!important}.resume-page .timeline .timeline__item ul,.resume-page .resume-skills .resume-skills__list{margin:0 0 0}.resume-page .resume-header__text{justify-content:space-between;align-items:flex-end;gap:1.5rem;width:100%;display:flex}.resume-page .resume-header__meta-block{text-align:right}.resume-page .resume-header__contact{flex-direction:column;justify-content:flex-end;align-items:flex-end;gap:.35rem}@page{margin:1.5cm}}.site-header{border-bottom:1px solid var(--color-border);background:var(--color-bg);z-index:20;position:sticky;top:0}.site-header__inner{align-items:center;gap:1.5rem;padding-block:.9rem;display:flex}.site-header__brand{color:var(--color-text);white-space:nowrap;font-weight:700;text-decoration:none}.site-header__nav{flex-wrap:wrap;gap:1.1rem;margin-inline-end:auto;display:flex}.site-header__link{color:var(--color-text-muted);border-bottom:2px solid #0000;padding-block:.25rem;font-size:.95rem;text-decoration:none}.site-header__link:hover{color:var(--color-text);text-decoration:none}.site-header__link.is-active{color:var(--color-text);border-bottom-color:var(--color-accent)}@media (width<=640px){.site-header__inner{flex-wrap:wrap;row-gap:.6rem}.site-header__nav{order:3;gap:.9rem;width:100%}}.social-links{flex-wrap:wrap;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.site-footer{border-top:1px solid var(--color-border);background:var(--color-bg-subtle);margin-top:4rem;padding-block:2rem}.site-footer__inner{flex-direction:column;gap:1rem;display:flex}.site-footer__contact{flex-wrap:wrap;align-items:center;gap:1.3rem;display:flex}.site-footer__contact>a{color:var(--color-text);font-weight:600}.site-footer__meta{color:var(--color-text-muted);flex-wrap:wrap;gap:1rem;font-size:.85rem;display:flex}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;transition:border-color .18s,transform .18s;display:flex;overflow:hidden}.project-card:hover{border-color:color-mix(in srgb, var(--color-accent) 45%, var(--color-border))}.project-card__banner{aspect-ratio:16/8;background:var(--color-bg-subtle);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.project-card__banner--cover img{object-fit:cover;width:100%;height:100%}.project-card__banner--contain img{object-fit:contain;width:60%;height:60%}.project-card__banner .status-pill{background-color:var(--color-bg);position:absolute;top:.6rem;right:.6rem}.project-card__body{flex-direction:column;flex:1;gap:.6rem;padding:1.25rem;display:flex}.project-card__body h3{margin:0;font-size:1.1rem}.project-card__body p{color:var(--color-text-muted);margin:0;font-size:.92rem}.project-card__tech{flex-wrap:wrap;gap:.4rem;margin:.1rem 0 0;padding:0;list-style:none;display:flex}.project-card__links{flex-wrap:wrap;gap:.5rem;margin-top:auto;padding-top:.5rem;display:flex}.hero{flex-wrap:wrap;align-items:center;gap:2rem;padding-block:3rem 2rem;display:flex}.hero__photo{object-fit:cover;width:220px;height:220px;box-shadow:var(--shadow-md);border-radius:50%;flex-shrink:0}.hero h1{margin:0 0 .35rem;font-size:clamp(1.8rem,4vw,2.6rem)}.hero__title{color:var(--color-text-muted);margin:0 0 1rem;font-size:1.05rem}.hero__intro{max-width:42rem;color:var(--color-text-muted);margin:0 0 1.4rem}.hero__actions{flex-wrap:wrap;gap:.75rem;margin-bottom:1.4rem;display:flex}.hero__actions .brand-btn{--brand:var(--color-accent)}.button{border-radius:var(--radius);border:1px solid var(--color-border);color:var(--color-text);padding:.6rem 1.15rem;font-size:.95rem;font-weight:600;display:inline-block}.button:hover{border-color:var(--color-accent);text-decoration:none}.button--primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast)}.section{border-top:1px solid var(--color-border);padding-block:2rem}.section__heading{justify-content:space-between;align-items:baseline;margin-bottom:1.25rem;display:flex}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem;display:grid}.skills-grid__group h3{margin:0 0 .35rem;font-size:.95rem}.skills-grid__group p{color:var(--color-text-muted);margin:0;font-size:.9rem}.experience-summary{margin-bottom:.6rem;font-size:1.02rem}.section h2{align-items:center;gap:.5rem;margin:0 0 1.25rem;font-size:1.3rem;display:flex}.section__heading h2{margin-bottom:0}.section__lede{color:var(--color-text-muted);max-width:42rem}.section__more{white-space:nowrap;font-size:.9rem;font-weight:600}.section--cta{text-align:center;padding-block:3rem}.section--cta h2{justify-content:center}.section--cta .section__lede{margin-inline:auto;margin-bottom:1.4rem}.section--cta .brand-btn{--brand:var(--color-accent)}.about-page{padding-block:3rem 4rem}.about-page__header{max-width:44rem;margin-bottom:2rem}.about-page__title{color:var(--color-text-muted);margin-top:-.3rem}.about-page__lede{color:var(--color-text-muted);margin-top:1rem;font-size:1.08rem}.about-page__lede strong{color:var(--color-text)}.about-page__stats{border-block:1px solid var(--color-border);flex-wrap:wrap;gap:2.5rem;margin-bottom:2.5rem;padding:1.5rem 0;display:flex}.about-page__stat{flex-direction:column;gap:.15rem;display:flex}.about-page__stat-value{color:var(--color-accent);font-size:1.6rem;font-weight:700}.about-page__stat-label{color:var(--color-text-muted);font-size:.82rem}.about-page__grid{grid-template-columns:repeat(2,1fr);gap:1.5rem;display:grid}.about-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem}.about-card h2{color:var(--color-accent);align-items:center;gap:.5rem;margin:0 0 .9rem;font-size:1.05rem;display:flex}.about-card p{color:var(--color-text-muted);margin:0 0 .9rem}.about-card p:last-child{margin-bottom:0}.about-page__facts{flex-direction:column;gap:.6rem;margin:0;padding:0;font-size:.9rem;list-style:none;display:flex}.about-page__facts li{border-bottom:1px solid var(--color-border);color:var(--color-text);justify-content:space-between;gap:1rem;padding-bottom:.6rem;display:flex}.about-page__facts li:last-child{border-bottom:none;padding-bottom:0}.about-page__facts span{color:var(--color-text-muted)}@media (width<=720px){.about-page__grid{grid-template-columns:1fr}}.resume-page{max-width:46rem;padding-block:2.5rem 4rem}.resume-header{border-bottom:2px solid var(--color-border);justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.75rem;display:flex}.resume-header__main{justify-content:space-between;align-items:flex-start;gap:1.25rem;width:100%;display:flex}.resume-header__qr{flex-shrink:0;width:90px;height:90px}.resume-header h1{margin:0 0 .25rem;font-size:1.9rem}.resume-header__title{color:var(--color-accent);margin:0;font-weight:600}.resume-header__subtitle{color:var(--color-accent);margin:0 0 .6rem;font-weight:600}.resume-header__contact{color:var(--color-text-muted);flex-wrap:wrap;gap:1rem;margin-bottom:.6rem;font-size:.88rem;display:flex}.resume-header__contact span{align-items:center;gap:.35rem;display:inline-flex}.resume-header__social{flex-wrap:wrap;gap:.8rem;font-size:.85rem;display:flex}.resume-section{margin-bottom:1.5rem}.resume-section h2{text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);margin-bottom:.5rem;font-size:.85rem}.resume-section>p{color:var(--color-text-muted)}.timeline{border-left:2px solid var(--color-border);margin:0;padding:0;list-style:none}.timeline__item{padding:0 0 1.25rem 1.25rem;position:relative}.timeline__item:before{content:"";background:var(--color-accent);border-radius:50%;width:8px;height:8px;position:absolute;top:.3rem;left:-5px}.timeline__item:last-child{padding-bottom:0}.timeline__heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.timeline__heading h3{margin:0;font-size:1rem}.timeline__heading span{color:var(--color-text-muted);white-space:nowrap;font-size:.82rem}.timeline__item ul{color:var(--color-text-muted);margin:.5rem 0 0;padding-left:1.1rem;font-size:.92rem}.timeline__item ul li{margin-bottom:.25rem}.timeline__detail{color:var(--color-text-muted);margin:.2rem 0 0;font-size:.88rem}.resume-skills{grid-template-columns:repeat(2,1fr);gap:1.25rem;display:grid}.resume-skills__group h3{margin:0 0 .5rem;font-size:.85rem}.resume-skills__list{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.resume-projects{flex-direction:column;gap:1rem;display:flex}.resume-projects__item h3{margin:0 0 .25rem;font-size:.98rem}.resume-projects__item p{color:var(--color-text-muted);margin:0;font-size:.9rem}.resume-list{color:var(--color-text-muted);margin:0;padding-left:1.2rem;font-size:.92rem}.resume-list li{margin-bottom:.35rem}@media (width<=640px){.resume-skills{grid-template-columns:1fr}}.projects-page{padding-block:2.5rem 4rem}.projects-page__intro{color:var(--color-text-muted);max-width:40rem;margin-bottom:2rem}.project-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem;display:grid}.project-grid--wide{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.contact-page{grid-template-columns:1fr 1fr;align-items:start;gap:3rem;padding-block:3rem 4rem;display:grid}.contact-page__intro h1{margin-bottom:.9rem}.contact-page__intro p{color:var(--color-text-muted);max-width:30rem}.contact-page__methods{flex-direction:column;align-items:flex-start;gap:1rem;display:flex}.contact-page__methods h2{margin:0;font-size:1rem}.contact-page__elsewhere-heading{margin-top:1rem}@media (width<=720px){.contact-page{grid-template-columns:1fr;gap:2rem}}.privacy-page{max-width:42rem;padding-block:2.5rem 3rem}.privacy-page__updated{color:var(--color-text-muted);margin-top:-.5rem;font-size:.9rem}.privacy-page h2{margin-top:1.8rem;font-size:1.05rem}.privacy-page p{color:var(--color-text-muted)}
