.portfolio-home{color:var(--body-ink)}.portfolio-home .container{width:min(1180px,calc(100% - 80px));max-width:none}.portfolio-home h1,.portfolio-home h2,.portfolio-home h3{color:var(--fg);font-weight:400}.folio-intro{padding-block:32px 40px}.folio-intro h1{font-size:clamp(3rem,8.3vw,7.5rem);letter-spacing:-.045em;line-height:1.15;margin:0 0 32px}.folio-intro-grid{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:clamp(40px,7vw,104px)}.folio-role{font-size:clamp(1.4rem,2.3vw,2rem);line-height:1.4;color:var(--fg);margin:0 0 24px}.folio-summary{color:var(--body-ink);max-width:42ch;font-size:19px;line-height:1.7}.folio-actions{display:flex;align-items:center;flex-wrap:wrap;gap:24px;margin-top:30px}.folio-primary{background:var(--accent);color:var(--bg);border:0;border-radius:14px;min-height:48px;padding:13px 22px;gap:10px;font-weight:400;box-shadow:none}:root:not([data-theme=dark]) .folio-primary{color:var(--surface)}.folio-primary:hover{background:var(--accent);filter:brightness(.94);color:var(--bg)}:root:not([data-theme=dark]) .folio-primary:hover{color:var(--surface)}.folio-text-link{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:var(--fg);font-size:17px;text-decoration:none}.folio-text-link svg,.folio-writing-link svg{flex-shrink:0;transition:transform .18s ease}.folio-text-link:hover{color:var(--accent)}.folio-details{display:flex;flex-wrap:wrap;gap:32px;margin-top:40px;font-size:15px}.folio-details dt{color:var(--muted);margin-bottom:6px}.folio-details dd{margin:0;color:var(--fg)}.folio-photo{min-width:0}.folio-photo figure{margin:0}.folio-photo-frame{position:relative;aspect-ratio:1.3;overflow:hidden;border-radius:24px;background:var(--soft)}.folio-photo-frame img{object-fit:cover;object-position:center 42%;transition:transform .5s ease}@media (hover:hover) and (pointer:fine){.folio-photo-frame:hover img{transform:scale(1.025)}}.folio-photo figcaption{margin-top:12px;font-size:15px;color:var(--muted)}.folio-photo .sketch-reveal-badge{bottom:-40px;top:auto;left:10px;right:auto;background:var(--bg);box-shadow:none;border:0}.folio-section{padding-block:64px}.folio-section-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:14px 32px;margin-bottom:30px}.folio-section h2{font-size:clamp(1.8rem,3.4vw,2.6rem);line-height:1.3;margin:0;letter-spacing:-.025em}.folio-work-row{display:grid;grid-template-columns:1fr 2fr;gap:60px;padding:32px;background:var(--soft);border-radius:22px}.folio-work-meta p{color:var(--muted);font-size:16px}.folio-work-meta h3{font-size:28px;margin-block:12px}.folio-work-role{font-size:22px;color:var(--fg);margin-bottom:14px}.folio-work-row p{line-height:1.65}.folio-work-row .experience-project-list{margin-top:20px}.folio-about{display:grid;grid-template-columns:1fr 1.3fr;gap:clamp(40px,7vw,96px);align-items:center}.folio-about-photo{position:relative;aspect-ratio:1;border-radius:22px;overflow:hidden}.folio-about-photo img{object-fit:cover}.folio-about-copy h2{margin-bottom:24px}.folio-about-copy p{font-size:18px;line-height:1.7;margin:0 0 18px}.portfolio-home .stack-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}.portfolio-home .stack-tile{border:0;background:var(--soft);box-shadow:none;height:108px;border-radius:16px}.portfolio-home .stack-name{color:var(--fg);font-size:15px}.folio-writing>div{background:var(--soft);padding:clamp(28px,4vw,52px);border-radius:24px}.folio-writing p{font-size:19px;max-width:52ch;margin-bottom:30px;line-height:1.65}.folio-writing-link{display:inline-flex;gap:24px;align-items:center;font-size:clamp(1.5rem,3vw,2.25rem);min-height:48px;color:var(--accent)}.folio-learning-list{display:grid;gap:10px}.folio-learning-row{width:100%;border:0;font:inherit;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px;background:var(--soft);border-radius:16px;transition:background .18s ease}.folio-learning-row>span:first-child{font-size:20px;color:var(--fg)}.folio-learning-row>span:last-child{display:flex;gap:14px;align-items:center;color:var(--muted)}.folio-learning-row:hover{background:var(--pale-blue)}.folio-contact{padding-block:60px 100px}.folio-contact h2{font-size:clamp(2.5rem,5vw,4rem);margin-bottom:18px}.folio-contact p{font-size:19px;margin-bottom:28px}.portfolio-home :is(a,button,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:5px}.portfolio-header:before{content:"";position:absolute;inset:0 0 -14px;z-index:-1;pointer-events:none;background:color-mix(in srgb,var(--bg) 80%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);-webkit-mask-image:linear-gradient(180deg,#000 65%,transparent);mask-image:linear-gradient(180deg,#000 65%,transparent);opacity:0;transition:opacity .22s ease}.portfolio-header.scrolled:before{opacity:1}.portfolio-nav-shell{padding:4px 8px;gap:8px;box-shadow:0 6px 24px color-mix(in srgb,var(--fg) 5%,transparent)}.portfolio-nav-brand{font-size:22px;margin:0 2px 0 6px}.portfolio-nav-pages>a,.portfolio-nav-tools button,.portfolio-nav-tools>a{min-height:40px}.portfolio-more-menu a{min-height:44px}@media (max-width:1024px){.portfolio-home .container{width:calc(100% - 48px)}.folio-intro-grid{gap:32px}.folio-work-row{gap:28px}.portfolio-home .stack-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width:760px){.portfolio-home .container{width:calc(100% - 40px)}.folio-intro{padding-top:62px;padding-bottom:20px}.folio-intro h1{font-size:clamp(2.4rem,10.2vw,4.5rem);line-height:1.25;letter-spacing:-.035em;margin-bottom:28px}.folio-intro-grid{grid-template-columns:1fr;gap:32px}.folio-role{font-size:23px;margin-bottom:16px}.folio-summary{font-size:17px;max-width:none}.folio-actions{gap:12px 24px;margin-top:22px}.folio-details{margin-top:28px;gap:30px}.folio-photo-frame{aspect-ratio:1.25;border-radius:20px}.folio-photo .mobile-sketch-note{margin-top:14px}.folio-section{padding-block:36px}.folio-section-heading{margin-bottom:22px}.folio-work-row{grid-template-columns:1fr;padding:24px;gap:18px}.folio-work-meta h3{margin-block:8px}.folio-about{grid-template-columns:1fr;gap:28px}.folio-about-photo{aspect-ratio:1.35}.folio-about-copy p{font-size:17px}.portfolio-home .stack-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.portfolio-home .stack-tile{height:auto;min-height:140px;padding:14px 8px}.portfolio-home .stack-name{font-size:14px}.folio-learning-row{flex-direction:column;align-items:flex-start;padding:20px;gap:8px}.folio-learning-row>span:first-child{font-size:18px}.folio-contact p,.folio-writing p{font-size:17px}.folio-contact{padding-bottom:60px}.portfolio-nav-shell{width:min(380px,100%);border-radius:999px;flex-wrap:nowrap;gap:6px;padding:5px}.portfolio-nav-pages,.portfolio-nav-tools{flex:1 1 0;width:auto;min-width:0;justify-content:space-between;gap:0}.portfolio-nav-tools{border-left:1px solid var(--line);padding-left:6px}.portfolio-nav-pages>a,.portfolio-nav-tools :is(.language-toggle,.theme-toggle-btn),.portfolio-nav-tools>a{flex:1 1 0;min-width:0;width:auto;height:44px;min-height:44px;padding:0}.portfolio-more{flex:1 1 0;min-width:0}.portfolio-nav-tools .portfolio-more-trigger{min-width:0;width:100%;height:44px;min-height:44px}.portfolio-header{padding:max(10px,env(safe-area-inset-top)) 16px 10px}}@media (max-width:360px){.portfolio-header{padding-inline:12px}.portfolio-nav-shell{padding:4px}}@media (prefers-reduced-motion:reduce){html:not([data-motion=full]) .portfolio-home *,html:not([data-motion=full]) .portfolio-home :after,html:not([data-motion=full]) .portfolio-home :before{animation:none!important;transition:none!important}}@media (prefers-reduced-transparency:reduce){.portfolio-header:before{background:var(--bg)}.portfolio-header:before,.portfolio-nav-shell{backdrop-filter:none;-webkit-backdrop-filter:none}.portfolio-nav-shell{background:var(--surface)}}.folio-work-projects{display:flex;flex-wrap:wrap;gap:10px 24px;list-style:none;padding:0;margin:24px 0 0;color:var(--fg);font-size:17px}@media (max-width:760px){.site-main{padding-top:0}.folio-intro{padding-top:36px}}.site-main>.container,.site-main>section.container{width:min(1180px,calc(100% - 80px));max-width:none}.site-main .page-hero{padding-top:40px}.site-main .page-hero h1{font-weight:400;line-height:1.25;letter-spacing:-.025em}.site-main .page-hero p{color:var(--body-ink);font-size:18px;line-height:1.7}.site-main .page-hero-line{display:none}.site-main .page-hero .eyebrow{font-size:15px;text-transform:none;letter-spacing:0}.site-main :is(.contact-form,.certificate-card,.resume-banner-card,.cv-paper,.experience-preview-card){border-radius:var(--radius-panel);background:var(--soft);border-color:transparent;box-shadow:none}.site-main .certificate-card{text-align:left;padding:28px}.site-main .certificate-card h3{font-size:23px;line-height:1.4}.site-main .certificate-card .cert-seal{color:var(--accent);background:transparent}.site-main .contact-form :is(input,textarea){min-height:48px;border-radius:var(--radius-control);background:var(--surface);color:var(--fg);font-size:17px}.site-main .contact-form label{font-size:16px;color:var(--fg)}.site-main .empty-state{box-shadow:none;background:var(--soft);border:0;border-radius:var(--radius-panel)}@media (max-width:1024px){.site-main>.container,.site-main>section.container{width:calc(100% - 48px)}}@media (max-width:760px){.site-main>.container,.site-main>section.container{width:calc(100% - 40px)}.site-main .page-hero{padding-top:36px}.site-main .page-hero h1{font-size:clamp(2rem,8vw,3rem)}.site-main .page-hero-top{display:flex;flex-direction:column;align-items:flex-start;gap:22px}.site-main .page-hero-sketch{position:static;align-items:flex-start}.site-main .page-hero-sketch svg{display:none}.site-main .page-hero p{font-size:17px}}.folio-hero .hero{display:grid;grid-template-columns:1.1fr 1fr;align-items:start;gap:56px;padding-block:48px;min-height:0}.folio-hero .hero-copy{padding-top:20px}.folio-hero .hero-eyebrow{background:none;border:0;padding:0;letter-spacing:0;text-transform:none;font-size:16px;color:var(--muted)}.folio-hero .hero-copy h1{font-size:clamp(42px,4.5vw,68px);line-height:1.25;margin-block:24px;letter-spacing:-.035em}.folio-hero .hero-copy>div>p{font-size:18px;color:var(--body-ink);line-height:1.7;max-width:46ch}.folio-hero .hero-visual{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:24px;min-height:0;padding-top:0}.folio-hero .hero-api-note{position:static;grid-column:1/-1;transform:none;margin-left:24px;color:var(--accent)}.folio-hero .hero-api-note .scribble{color:var(--accent)}.folio-hero .hero-api-note svg{display:none}.folio-hero .hero-portrait-wrap{grid-column:1/-1;position:relative;width:100%;height:auto;aspect-ratio:1.2;margin:0}.folio-hero .hero-portrait-object{width:100%;height:100%;inset:0;border-radius:24px}.folio-hero .hero-glass-float{pointer-events:none}.folio-hero :is(.floating-quote-wrap,.floating-terminal-wrap){position:relative;inset:auto;width:auto;transform:none}.folio-hero :is(.floating-quote,.floating-terminal){position:relative;inset:auto;width:100%;height:auto;min-height:0;padding:20px;background:var(--soft);color:var(--fg);border:0;box-shadow:none;backdrop-filter:none;transform:none}.folio-hero .floating-quote p{font-size:21px;color:var(--accent)}.folio-hero .quote-mark{display:none}.folio-hero .quote-footer{margin-top:16px}.folio-hero .terminal-cmd,.folio-hero .terminal-list{color:var(--body-ink);font-size:13px}.folio-hero .terminal-title{color:var(--muted)}.folio-hero .hero-actions-row{flex-wrap:wrap}.folio-hero .hero-note{position:relative;inset:auto;margin-top:20px}@media (max-width:1024px){.folio-hero .hero{gap:32px}.folio-hero .hero-visual{grid-template-columns:1fr}.folio-hero .hero-copy h1{font-size:46px}}@media (max-width:760px){.folio-hero .hero{grid-template-columns:1fr;gap:32px;padding-block:32px}.folio-hero .hero-copy{padding:0}.folio-hero .hero-copy h1{font-size:clamp(34px,8vw,48px)}.folio-hero .hero-copy h1 br{display:none}.folio-hero .hero-copy h1 .mobile-sketch-note{margin:8px 0 12px;font-size:19px;letter-spacing:0}.folio-hero .hero-copy>div>p{font-size:17px}.folio-hero .hero-visual{display:grid;grid-template-columns:1fr;gap:20px}.folio-hero .hero-api-note{margin:0}.folio-hero .hero-portrait-wrap{max-width:none;aspect-ratio:1.15}.folio-hero .hero-glass-float{display:none}.folio-hero .hero-note{margin:12px 0 0;transform:none}.folio-hero .hero-note .scribble br{display:none}.folio-hero .hero-note .scribble{font-size:20px}.folio-hero .hero-note-arrow{display:none}}.folio-hero .folio-signature{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 12px;text-transform:none;margin:0;font-size:18px}.folio-signature .folio-handle{color:var(--fg);font-size:24px;letter-spacing:-.02em}.folio-handle .sketch-floating-callout{bottom:calc(100% + 12px);top:auto;right:0;white-space:nowrap}@media (max-width:760px){.folio-signature .folio-handle{display:inline-block;font-size:24px}.folio-signature .mobile-sketch-note{font-size:19px;margin-block:6px 0}}.folio-post-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:20px;margin:28px 0 32px}.folio-post{display:flex;flex-direction:column;height:100%;padding:24px;border-radius:var(--radius-panel);background:var(--surface);color:var(--body-ink);transition:transform .18s ease}.folio-post-list>.sketch-reveal-container{min-width:0}.folio-post-list article{height:100%}.folio-post h3{font-size:24px;line-height:1.4;margin:0 0 14px;overflow-wrap:anywhere}.folio-post .folio-post-date{color:var(--muted);font-size:14px;line-height:1.5;margin:0 0 18px}.folio-post .folio-post-excerpt{font-size:17px;line-height:1.6;margin:0 0 24px}.folio-post-action{display:flex;align-items:center;gap:10px;color:var(--accent);margin-top:auto;min-height:32px}@media (hover:hover) and (pointer:fine){.folio-post:hover{transform:translateY(-3px)}}.portfolio-home [id]{scroll-margin-top:104px}@media (min-width:761px) and (hover:hover) and (pointer:fine){.folio-hero .hero-copy h1{margin-top:76px}.folio-hero .hero-backend .sketch-floating-callout.pos-top-right{right:-64px;max-width:280px}.folio-hero .hero-backend .sketch-floating-callout .scribble{font-size:20px;white-space:normal}}.certificate-dialog{margin:0;border:0;width:100%;height:100%;max-width:none;max-height:none;color:var(--fg)}.certificate-dialog::backdrop{background:transparent}.not-found-page{position:relative;min-height:72vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(140px,.38fr);align-items:center;gap:32px;padding-top:120px;padding-bottom:72px}.not-found-number{margin:20px 0 14px;color:color-mix(in srgb,var(--accent) 22%,var(--fg));font:700 clamp(96px,17vw,188px)/.78 var(--font-display);letter-spacing:-.105em}.not-found-number span{color:var(--accent)}.not-found-copy h1{max-width:18ch;margin:0;font-size:clamp(32px,4.8vw,54px);letter-spacing:-.05em}.not-found-description{max-width:46ch;margin:14px 0 24px;color:var(--muted);font-size:15.5px;line-height:1.7}.not-found-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.not-found-note{align-self:center;justify-self:center;display:grid;justify-items:center;color:var(--accent);transform:rotate(-5deg)}.not-found-note .scribble{color:var(--accent);font-size:clamp(20px,2.5vw,28px);white-space:nowrap}.not-found-arrow{width:68px;height:48px;margin:10px 0 0 28px}@media (max-width:640px){.not-found-page{min-height:76svh;grid-template-columns:minmax(0,1fr);align-content:center;gap:26px;padding-top:108px;padding-bottom:56px}.not-found-number{margin-top:14px;font-size:clamp(96px,32vw,144px)}.not-found-copy h1{max-width:16ch;font-size:clamp(30px,8.5vw,42px)}.not-found-description{font-size:14.5px}.not-found-note{justify-self:end;margin-right:18px}}@media (hover:none),(max-width:760px),(pointer:coarse){.mobile-sketch-note{display:flex;align-items:flex-start;gap:8px}.mobile-sketch-note>span{min-width:0}.mobile-sketch-arrow{display:block;flex:0 0 32px;width:32px;height:26px;margin-top:2px}.stack-tile .mobile-sketch-note{flex-direction:column;align-items:center;gap:4px}.stack-tile .mobile-sketch-arrow{flex:none;width:26px;height:20px}.folio-hero .hero-api-note{display:flex;align-items:center;gap:12px}.folio-hero .hero-api-note svg{display:block;width:36px;height:32px;margin:0}.folio-hero .hero-note{display:flex;align-items:center;gap:10px}.folio-hero .hero-note-arrow{position:static;flex:0 0 36px;margin:0;transform:none}.folio-hero .hero-note-arrow,.site-main .page-hero-sketch svg{display:block;width:36px;height:32px}.floating-quote-wrap>.mobile-sketch-note,.floating-terminal-wrap>.mobile-sketch-note,.stack-tile .mobile-sketch-note{display:none}}.folio-post-excerpt{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}@media (hover:none),(max-width:760px),(pointer:coarse){.folio-hero .hero-fullstack>.mobile-sketch-note,.folio-hero .hero-note{display:none}}@media (max-width:760px){.folio-hero .hero-copy h1{margin-block:18px;line-height:1.18}.folio-hero .hero-copy h1 .mobile-sketch-note{margin:6px 0 8px}.folio-hero .hero-actions-row{margin-top:24px}.folio-hero .hero-api-note{justify-self:end;gap:8px;margin:0 12px -12px 0}.folio-hero .hero-api-note .scribble{font-size:19px;line-height:1.4}.folio-hero .hero-api-note svg{width:30px;height:28px;flex:none}}