:root{--font-heading:"Sora", "Avenir Next", "Segoe UI", sans-serif;--font-body:"Manrope", "Segoe UI", sans-serif;--color-primary:#1f4f8c;--color-accent:#0ea5a4;--color-bg-a:#f7fafc;--color-bg-b:#eef3f8;--color-surface:#fff;--color-text:#1f2937;--color-text-soft:#4b5563;--color-border:#d6deea;--shadow-soft:0 10px 30px #0f172a0f;--color-button-primary-text:#f8fbff;--color-footer-bg:#0f172a;--color-footer-text:#dbe7f5;--color-footer-heading:#f8fbff;--color-footer-statement:#c5d3e4;--color-footer-muted:#a8bdd5;--container-width:1200px;--section-y:clamp(4rem, 7vw, 6rem);--radius:18px;--nav-height:72px;--font-size-body:1.15rem;--font-size-h3:clamp(1.2rem, 2vw, 1.4rem)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--color-text);background:radial-gradient(circle at 10% 0%, #1f4f8c14, transparent 45%), radial-gradient(circle at 90% 15%, #0ea5a414, transparent 40%), var(--color-bg-a);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.6}a{color:inherit;font-size:1.05rem;text-decoration:none}img{max-width:100%;display:block}main{display:block}.container{width:min(100% - 2rem, var(--container-width));margin-inline:auto}h1,h2,h3{font-family:var(--font-heading);letter-spacing:-.02em;margin:0;line-height:1.15}h3{font-size:var(--font-size-h3)}p{font-size:var(--font-size-body);margin:0}#root{min-height:100svh}section[id]{scroll-margin-top:calc(var(--nav-height) + 1rem)}.navbar-wrap{z-index:20;border-bottom:1px solid var(--color-border);background:color-mix(in srgb, var(--color-bg-a) 86%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0}.navbar{min-height:var(--nav-height);justify-content:space-between;align-items:center;gap:1rem;display:flex;position:relative}.nav-controls{align-items:center;gap:.6rem;display:flex}.brand{color:var(--color-primary);font-family:var(--font-heading);font-size:1.05rem}.nav-links{align-items:center;gap:1.1rem;margin:0;padding:0;list-style:none;display:flex}.nav-links a{color:var(--color-text-soft);font-size:1.05rem}.nav-links a:hover,.nav-links a:focus-visible{color:var(--color-primary)}.nav-links a{border-bottom:2px solid #0000;padding:.2rem 0}.nav-links a:hover,.nav-links a:focus-visible{border-bottom-color:var(--color-accent)}.nav-links a.is-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.menu-toggle{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font:inherit;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;width:42px;min-height:42px;padding:0;display:none}.menu-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.menu-toggle-icon{flex-direction:column;justify-content:space-between;width:18px;height:14px;display:inline-flex}.menu-toggle-bar{background:var(--color-text);border-radius:999px;width:100%;height:2px;transition:transform .17s,opacity .17s,background-color .17s}.menu-toggle:hover .menu-toggle-bar,.menu-toggle:focus-visible .menu-toggle-bar{background:var(--color-primary)}.menu-toggle.is-open .menu-toggle-bar:first-child{transform:translateY(6px)rotate(45deg)}.menu-toggle.is-open .menu-toggle-bar:nth-child(2){opacity:0}.menu-toggle.is-open .menu-toggle-bar:nth-child(3){transform:translateY(-6px)rotate(-45deg)}.section{padding-block:var(--section-y)}.section-alt,#hero{background:var(--color-bg-b)}#about{background:var(--color-bg-a)}#projects{background:var(--color-bg-b)}#skills{background:var(--color-bg-a)}#contact{background:var(--color-bg-b)}#about .section-content{justify-items:center}#about .section-content h2{text-align:center}.hero{min-height:calc(100svh - var(--nav-height));align-items:center;display:grid}.hero-content{grid-template-columns:minmax(220px,320px) minmax(0,1fr);align-items:center;gap:clamp(1.4rem,4vw,3.2rem);display:grid}.hero-image-wrap{max-width:320px}.hero-image{aspect-ratio:1;border:1px solid var(--color-border);width:100%;height:auto;box-shadow:var(--shadow-soft);background:var(--color-surface);border-radius:50%}.hero-copy{gap:.9rem;max-width:62ch;display:grid}.eyebrow{color:var(--color-accent);letter-spacing:.08em;text-transform:uppercase;font-size:1.05rem;font-weight:700}h1{font-size:clamp(2.4rem,7vw,4.8rem)}.subtitle{color:var(--color-primary);font-size:1.05rem;font-weight:600}.lead,.section-content p{color:var(--color-text-soft);max-width:72ch}.hero-actions{flex-wrap:wrap;gap:.7rem;margin-top:.7rem;display:flex}.button{cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;min-height:42px;padding:.6rem 1rem;font-size:1.05rem;font-weight:600;transition:border-color .14s,background-color .14s,color .14s;display:inline-flex}.button:hover{transform:none}.button-affordance{letter-spacing:.02em;border:1px solid color-mix(in srgb, var(--color-border) 88%, transparent);background:color-mix(in srgb, var(--color-surface) 80%, transparent);border-radius:999px;justify-content:center;align-items:center;min-width:1.8rem;min-height:1.3rem;padding-inline:.35rem;font-size:.72rem;font-weight:700;display:inline-flex}.button-icon{width:.9rem;height:.9rem}.button-primary .button-affordance{color:var(--color-button-primary-text);background:#ffffff29;border-color:#ffffff73}.button-primary{background:var(--color-primary);color:var(--color-button-primary-text);box-shadow:var(--shadow-soft)}.button-primary:hover{background:color-mix(in srgb, var(--color-primary) 88%, black);box-shadow:var(--shadow-soft);transform:none}.button-primary:focus-visible{outline:3px solid color-mix(in srgb, var(--color-primary) 60%, white)}.button-secondary{border-color:var(--color-border);background:var(--color-surface);color:var(--color-text);box-shadow:0 2px 8px color-mix(in srgb, currentColor 5%, transparent)}.button-secondary:hover{border-color:var(--color-accent);background:color-mix(in srgb, var(--color-surface) 90%, var(--color-accent));box-shadow:0 2px 8px color-mix(in srgb, currentColor 5%, transparent);transform:none}.button-secondary:focus-visible{outline:3px solid color-mix(in srgb, var(--color-accent) 60%, white)}.section-content{gap:1rem;display:grid}.section-content h2{text-align:center;font-size:clamp(1.6rem,3vw,2.2rem)}.pill-list,.contact-links{flex-wrap:wrap;justify-content:center;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.pill-list{align-content:flex-start}.pill-list li{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-soft);cursor:default;border-radius:999px;justify-content:center;align-items:center;padding:.4rem .85rem;line-height:1.2;transition:color .16s,border-color .16s;display:inline-flex}.pill-list li:hover{border-color:color-mix(in srgb, var(--color-primary) 35%, var(--color-border));color:var(--color-primary)}.project-grid{grid-template-columns:repeat(2,minmax(280px,1fr));gap:1rem;width:100%;max-width:920px;margin-inline:auto;display:grid}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-soft);flex-direction:column;gap:.75rem;padding:1.2rem;transition:border-color .14s,background-color .14s;display:flex}.project-card:hover{border-color:color-mix(in srgb, var(--color-primary) 25%, var(--color-border));box-shadow:var(--shadow-soft)}.project-card h3{font-size:var(--font-size-h3)}.project-card p{color:var(--color-text-soft)}.project-card a{color:var(--color-primary);font-weight:600}.about-body{gap:1.2rem;width:100%;max-width:86ch;display:grid}#about .about-summary{width:100%;max-width:none;font-size:var(--font-size-body);white-space:pre-line;line-height:1.8}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));align-items:start;gap:2rem;width:100%;margin-top:1.5rem;display:grid}.skill-category{text-align:center;justify-items:center;gap:.6rem;display:grid}.skill-category h3{letter-spacing:.08em;text-transform:uppercase;color:var(--color-primary);margin:0;font-size:1.08rem;font-weight:700}.project-card-header{align-items:flex-start;display:flex}.project-card h3{min-height:2.6em;margin:0;line-height:1.3}.project-description{font-size:var(--font-size-body);line-height:1.7}.project-image-placeholder{aspect-ratio:16/9;border:1px solid color-mix(in srgb, var(--color-primary) 20%, var(--color-border));background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 9%, transparent), color-mix(in srgb, var(--color-accent) 10%, transparent)), var(--color-surface);border-radius:12px;width:100%;overflow:hidden}.project-image-placeholder.is-sequence{padding:.7rem .8rem}.project-image-placeholder img{object-fit:cover;width:100%;height:100%}.project-image-sequence{grid-template-columns:repeat(4,minmax(0,1fr));place-content:center;gap:.45rem;width:100%;height:100%;display:grid}.project-image-sequence-frame{aspect-ratio:1136/2208;border:1px solid color-mix(in srgb, var(--color-primary) 16%, var(--color-border));background:#fff;border-radius:12px;width:100%;overflow:hidden;box-shadow:0 12px 24px #0f172a1a}.project-image-sequence-frame img{object-fit:cover;object-position:top center;width:100%;height:100%}.project-tech{flex-wrap:wrap;gap:.5rem;margin-top:.4rem;display:flex}.tech-tag{background:color-mix(in srgb, var(--color-primary) 12%, transparent);border:1px solid color-mix(in srgb, var(--color-primary) 28%, transparent);color:var(--color-primary);cursor:default;border-radius:999px;align-items:center;padding:.3rem .7rem;font-size:.8rem;font-weight:500;transition:border-color .16s,background-color .16s,color .16s;display:inline-flex}.tech-tag:hover{background:color-mix(in srgb, var(--color-primary) 18%, transparent);border-color:color-mix(in srgb, var(--color-primary) 42%, transparent)}.project-link{color:var(--color-primary);align-items:center;gap:.4rem;margin-top:auto;font-weight:600;transition:color .14s;display:inline-flex}.project-link:hover{color:color-mix(in srgb, var(--color-primary) 85%, black)}.project-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}.project-link-arrow{transition:transform .16s;display:inline-flex}.project-link:hover .project-link-arrow,.project-link:focus-visible .project-link-arrow{transform:translate(4px)}.contact-header{text-align:center;gap:.7rem;margin-bottom:2rem;display:grid}.contact-header h2{margin-bottom:.3rem}.contact-header p{color:var(--color-text-soft);max-width:65ch;margin-inline:auto}.contact-links{margin-bottom:2rem}.site-footer{background:var(--color-footer-bg);border-top:1px solid #ffffff29;padding-block:clamp(2.2rem,5vw,3.5rem)}.site-footer-content{max-width:70ch;color:var(--color-footer-text);text-align:center;gap:.9rem;display:grid}.site-footer-content p{margin:0}.site-footer-name{font-family:var(--font-heading);color:var(--color-footer-statement);font-size:1.05rem;font-weight:700;font-size:var(--font-size-body);line-height:1.75}.site-footer-rights{font-size:var(--font-size-body);letter-spacing:.04em;text-transform:uppercase;color:var(--color-footer-muted)}@media (width<=920px){.project-grid,.skills-grid{grid-template-columns:1fr}.hero-content{grid-template-columns:1fr;justify-items:start}.hero-image-wrap{max-width:180px}.navbar{flex-wrap:wrap;min-height:auto;padding-block:.75rem}.menu-toggle{display:inline-flex}.nav-links{visibility:hidden;opacity:0;pointer-events:none;scrollbar-width:auto;border:1px solid var(--color-border);width:max-content;min-width:11rem;max-width:calc(100vw - 2rem);box-shadow:var(--shadow-soft);background:color-mix(in srgb, var(--color-surface) 92%, transparent);border-radius:14px;flex-flow:column;order:3;justify-content:flex-start;gap:0;margin-top:0;padding:.35rem 0;transition:opacity .17s,transform .17s,visibility .17s;display:flex;position:absolute;top:calc(100% + .4rem);left:auto;right:0;overflow-x:visible;transform:translateY(-8px)}.navbar.nav-open .nav-links{visibility:visible;opacity:1;pointer-events:auto;transform:translateY(0)}.nav-links li{width:100%}.nav-links li+li{border-top:1px solid color-mix(in srgb, var(--color-border) 85%, transparent)}.nav-links a{white-space:nowrap;border-bottom:0;width:100%;padding:.72rem .9rem;font-size:1.05rem;display:block}.site-footer-content{text-align:center}}@media (width<=620px){.navbar{gap:.45rem}.brand{font-size:1.05rem}.nav-controls{margin-left:auto}.menu-toggle{width:40px;min-height:40px}.hero-actions{width:100%}.button{justify-content:space-between;width:100%}}.project-page-main{background:var(--color-bg-a)}.project-back-link{color:var(--color-primary);align-items:center;gap:.4rem;font-weight:600;transition:color .14s;display:inline-flex}.project-back-link:hover{color:color-mix(in srgb, var(--color-primary) 85%, black)}.project-back-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}.project-back-link-arrow{transition:transform .16s;display:inline-flex}.project-back-link:hover .project-back-link-arrow,.project-back-link:focus-visible .project-back-link-arrow{transform:translate(-4px)}.project-hero{border-bottom:1px solid var(--color-border);background:radial-gradient(circle at 18% 8%, color-mix(in srgb, var(--color-primary) 16%, transparent), transparent 45%), radial-gradient(circle at 82% 0%, color-mix(in srgb, var(--color-accent) 18%, transparent), transparent 40%), var(--color-bg-b)}.project-hero-content{text-align:left;justify-items:start;gap:.85rem;max-width:75ch;margin-inline:auto;display:grid}.project-page-summary{color:var(--color-text-soft);font-size:var(--font-size-body);max-width:64ch;line-height:1.8}.project-overview-shell,.project-section-shell{gap:1.5rem;display:grid}.project-overview-copy,.project-section-body{text-align:left;gap:.75rem;width:100%;display:grid}.project-section-heading{text-align:left;justify-items:start;gap:.75rem;width:100%;display:grid}.project-overview-copy h2,.project-section-heading h2{font-size:clamp(1.6rem,3vw,2.2rem)}.project-overview-copy>.eyebrow,.project-overview-copy>h2{text-align:left;justify-self:start}.project-section-copy{color:var(--color-text-soft);max-width:72ch;font-size:var(--font-size-body);line-height:1.8}.project-overview-highlights{max-width:64ch;color:var(--color-text-soft);gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.project-overview-highlights li{line-height:1.65;font-size:var(--font-size-body);padding:0 0 0 1.2rem;position:relative}.project-overview-highlights li:before{content:"";background:var(--color-accent);border-radius:999px;width:.42rem;height:.42rem;position:absolute;top:.72rem;left:0}.project-overview-media{justify-content:center;width:100%;display:flex}.project-video-embed{aspect-ratio:16/9;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);width:100%;box-shadow:var(--shadow-soft);overflow:hidden}.project-video-embed.is-portrait{aspect-ratio:9/19.5;width:min(100%,20rem)}.project-video-embed iframe{border:0;width:100%;height:100%;display:block}.project-transformation-summary{white-space:pre-line}.project-facts-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem;width:100%;margin:0;display:grid}.project-transformation{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:1rem;width:100%;display:grid}.project-transformation-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-soft);margin:0;display:grid;overflow:hidden}.project-transformation-card img{background:var(--color-bg-b);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);width:100%;height:auto}.project-transformation-card figcaption{color:var(--color-text-soft);padding:.9rem 1rem 1rem;font-size:.94rem;line-height:1.6}.project-transformation-label{color:var(--color-primary);letter-spacing:.08em;text-transform:uppercase;padding:.8rem 1rem;font-size:.8rem;font-weight:700}.project-transformation-arrow{border:1px solid color-mix(in srgb, var(--color-primary) 25%, var(--color-border));background:color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));width:52px;height:52px;color:var(--color-primary);box-shadow:var(--shadow-soft);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.project-transformation-arrow svg{width:26px;height:26px}.project-fact-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-soft);gap:.35rem;padding:1rem 1.05rem;display:grid}.project-fact-card dt{color:var(--color-primary);letter-spacing:.08em;text-transform:uppercase;font-size:.78rem;font-weight:700}.project-fact-card dd{color:var(--color-text);margin:0;font-weight:600;line-height:1.5}.project-jump-nav{flex-wrap:wrap;gap:.7rem;width:100%;display:flex}.project-jump-link{border:1px solid var(--color-border);background:var(--color-surface);min-height:40px;color:var(--color-text-soft);border-radius:999px;align-items:center;padding:.55rem .95rem;font-weight:600;transition:color .14s,border-color .14s,background-color .14s;display:inline-flex}.project-jump-link:hover,.project-jump-link:focus-visible{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));color:var(--color-primary)}.project-jump-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.project-impact-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.project-impact-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);border-top:3px solid color-mix(in srgb, var(--color-primary) 65%, var(--color-border));box-shadow:var(--shadow-soft);color:var(--color-text);padding:1.2rem;font-weight:500;line-height:1.7}.project-shot{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-soft);width:100%;margin:0;display:grid;overflow:hidden}.project-shot-media{border-bottom:1px solid var(--color-border);background:radial-gradient(circle at 16% 18%, color-mix(in srgb, var(--color-primary) 10%, transparent), transparent 34%), radial-gradient(circle at 82% 20%, color-mix(in srgb, var(--color-accent) 12%, transparent), transparent 30%), linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 65%, white), color-mix(in srgb, var(--color-bg-b) 88%, white));justify-content:center;align-items:center;padding:clamp(.85rem,1.8vw,1.25rem);display:flex}.project-shot-media img{object-fit:contain;width:100%;height:auto;max-height:min(72vh,44rem)}.project-shot-media.is-portrait{background:0 0;padding:.4rem 0 0}.project-shot-media.is-portrait img{width:min(100%,19.5rem);max-height:min(66vh,37rem)}.project-shot-featured{max-width:100%}.project-shot figcaption{text-align:left;justify-items:start;gap:.32rem;padding:1rem 1.05rem;display:grid}.project-shot h3{font-size:var(--font-size-h3);margin:0}.project-shot p{font-size:var(--font-size-body);color:var(--color-text-soft);margin:0;line-height:1.6}.project-shot-selector{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem;width:100%;display:grid}.project-shot-toggle{border:1px solid var(--color-border);background:var(--color-surface);text-align:left;font:inherit;color:var(--color-text);cursor:pointer;border-radius:14px;gap:.6rem;padding:.5rem;transition:border-color .14s,background-color .14s,transform .14s;display:grid}.project-shot-toggle:hover{border-color:color-mix(in srgb, var(--color-primary) 35%, var(--color-border));background:color-mix(in srgb, var(--color-primary) 5%, var(--color-surface))}.project-shot-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.project-shot-toggle.is-active{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, var(--color-surface))}.project-shot-toggle-media{aspect-ratio:16/9;border:1px solid var(--color-border);background:linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 5%, transparent), color-mix(in srgb, var(--color-bg-b) 90%, white));border-radius:10px;justify-content:center;align-items:center;width:100%;display:flex;overflow:hidden}.project-shot-toggle img{object-fit:cover;object-position:top center;width:100%;height:100%}.project-shot-toggle.is-portrait .project-shot-toggle-media{aspect-ratio:auto;background:0 0;border:0;min-height:8rem;padding:.2rem 0}.project-shot-toggle.is-portrait img{object-fit:contain;width:auto;max-width:min(100%,5.3rem);height:auto;max-height:8rem}.project-shot-toggle span{font-size:.9rem;font-weight:600;line-height:1.4}.project-stack-note{max-width:72ch;font-size:var(--font-size-body);color:var(--color-text-soft);line-height:1.8}.not-found-content{text-align:left;gap:.9rem;max-width:52ch;margin-inline:auto;display:grid}.not-found-content p{color:var(--color-text-soft)}@media (width>=920px){.project-overview-shell.has-overview-media{grid-template-columns:minmax(280px,360px) minmax(0,1fr);align-items:start}.project-overview-shell.has-overview-media .project-jump-nav{grid-column:1/-1}.project-section-shell{grid-template-columns:minmax(180px,240px) minmax(0,1fr);align-items:start}}@media (width<=920px){.project-transformation{grid-template-columns:1fr}.project-transformation-arrow{justify-self:center;transform:rotate(90deg)}.project-facts-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.project-facts-grid{grid-template-columns:1fr}}:focus-visible{outline:3px solid color-mix(in srgb, var(--color-accent) 70%, white);outline-offset:2px}a,button,input,select,textarea{transition:background-color .12s,color .12s,border-color .12s}.animate-fade-in-up,.animate-fade-in-left,.animate-fade-in-right,.animate-fade-in,.animate-slide-in-up,.animate-scale-in,.animate-stagger>*{opacity:1!important;animation:none!important;transform:none!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
