:root{--font-body:"Manrope", "Avenir Next", system-ui, sans-serif;--font-display:"Manrope", "Avenir Next", system-ui, sans-serif;--c-bg:#f5f9fc;--c-surface:#fff;--c-surface-2:#edf5f8;--c-border:#0f2a3d17;--c-border-hard:#0f2a3d29;--c-text:#102033;--c-text-muted:#607083;--c-accent:#14b8a6;--c-accent-deep:#0f766e;--c-accent-lite:#14b8a61f;--c-accent-glow:#14b8a63d;--c-white:#fff;--radius-sm:6px;--radius:10px;--radius-lg:16px;--shadow-sm:0 2px 8px #0f2a3d14;--shadow-md:0 12px 32px #0f2a3d1a;--shadow-lg:0 24px 64px #0f2a3d24;--transition:.2s ease}*,:before,:after{box-sizing:border-box}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}p,ul,ol{margin-top:0;margin-bottom:1rem}b,strong{font-weight:bolder}img,svg{vertical-align:middle}button{font-family:inherit;font-size:inherit;line-height:inherit}html,body{font-size:16px;font-family:var(--font-body);scroll-behavior:smooth;background:var(--c-bg);color:var(--c-text)}body{margin:0;line-height:1.5}@media (width>=768px){html,body{font-size:17px}}a{text-decoration:none}section{scroll-margin-top:72px}.container{width:100%;margin-left:auto;margin-right:auto;padding-left:.75rem;padding-right:.75rem}@media (width>=576px){.container{max-width:540px}}@media (width>=768px){.container{max-width:720px}}@media (width>=992px){.container{max-width:960px}}@media (width>=1200px){.container{max-width:1140px}}@media (width>=1400px){.container{max-width:1320px}}.about-grid{grid-template-columns:1fr;align-items:center;gap:1.5rem;display:grid}@media (width>=992px){.about-grid{grid-template-columns:7fr 5fr}}.skills-grid{grid-template-columns:1fr;gap:1.5rem;display:grid}@media (width>=768px){.skills-grid{grid-template-columns:repeat(2,1fr)}}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.flex-column{flex-direction:column}.flex-wrap{flex-wrap:wrap}.align-items-center{align-items:center}.justify-content-center{justify-content:center}.gap-2{gap:.5rem}.gap-3{gap:1rem}.gap-4{gap:1.5rem}.min-vh-100{min-height:100vh}.h-100{height:100%}.position-relative{position:relative}.m-0{margin:0}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:1rem}.mb-4{margin-bottom:1.5rem}.mb-5{margin-bottom:3rem}.mt-4{margin-top:1.5rem}.mt-5{margin-top:3rem}.py-3{padding-top:1rem;padding-bottom:1rem}.text-center{text-align:center}.lead{font-size:1.25rem;font-weight:300}.h5{font-size:1.25rem}.cn-brand{color:var(--c-text);font-family:var(--font-display);transition:color var(--transition), transform var(--transition);z-index:1000;align-items:center;gap:.55rem;padding:.55rem .8rem;font-size:.92rem;font-weight:800;line-height:1;text-decoration:none;display:inline-flex;position:fixed;top:clamp(.85rem,2vw,1.4rem);left:clamp(1rem,2.5vw,2rem)}.cn-brand:hover,.cn-brand:focus-visible{color:var(--c-text);transform:translateY(-1px)}.cn-brand:focus-visible{outline:2px solid var(--c-accent);outline-offset:4px;border-radius:var(--radius-sm)}.cn-brand-dot{background:var(--c-accent);border-radius:999px;flex-shrink:0;width:7px;height:7px;animation:2.6s ease-in-out infinite cnBrandPulse}@keyframes cnBrandPulse{0%,to{box-shadow:0 0 #14b8a66b}50%{box-shadow:0 0 0 6px #14b8a600}}@media (prefers-reduced-motion:reduce){.cn-brand-dot{animation:none}}.cn-constellation{pointer-events:none;z-index:1000;position:fixed;top:clamp(.85rem,2vw,1.4rem);left:50%;transform:translate(-50%)}.cn-dots{-webkit-backdrop-filter:blur(18px)saturate(180%);pointer-events:auto;background:#ffffffb3;border:1px solid #0f2a3d14;border-radius:999px;align-items:center;gap:.2rem;margin:0;padding:.45rem .65rem;list-style:none;display:inline-flex;box-shadow:0 6px 18px #0f2a3d14}.cn-dot-slot{--cn-distance:99;transition:transform .85s cubic-bezier(.32,1,.4,1);display:inline-flex}.cn-dot-slot[style*="--cn-distance: 1"]{transform:scale(1.018)}.cn-dot-slot[style*="--cn-distance: 2"]{transform:scale(1.006)}.cn-dot{color:var(--c-text-muted);cursor:pointer;transition:background var(--transition), color var(--transition), gap .32s cubic-bezier(.22, 1, .36, 1), padding .32s cubic-bezier(.22, 1, .36, 1);border-radius:999px;align-items:center;gap:.4rem;padding:.45rem .65rem;text-decoration:none;display:inline-flex;position:relative}.cn-dot:hover{color:var(--c-text)}.cn-dot:focus-visible{outline:2px solid color-mix(in oklch, var(--c-accent) 60%, transparent);outline-offset:2px}.cn-dot-mark{background:#60708380;border-radius:999px;flex-shrink:0;width:8px;height:8px;transition:background .22s ease-out,transform .32s cubic-bezier(.22,1,.36,1),box-shadow .22s ease-out}.cn-dot:hover .cn-dot-mark{background:var(--c-text)}.cn-dot.is-active .cn-dot-mark{background:var(--c-accent);box-shadow:0 0 0 4px #14b8a629}.cn-dot-label{color:var(--c-text);font-family:var(--font-display);letter-spacing:.04em;opacity:0;text-transform:uppercase;white-space:nowrap;max-width:0;font-size:.78rem;font-weight:800;line-height:1;transition:max-width .32s cubic-bezier(.22,1,.36,1),opacity .22s ease-out;overflow:hidden}.cn-dot.is-active .cn-dot-label,.cn-dot.is-hovered .cn-dot-label,.cn-dot:hover .cn-dot-label,.cn-dot:focus-visible .cn-dot-label{opacity:1;max-width:8rem;margin-left:.05rem}.cn-dot.is-active .cn-dot-label{color:var(--c-accent-deep)}.cn-resume{background:var(--c-text);color:var(--c-white);font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;transition:background var(--transition), color var(--transition), transform var(--transition), box-shadow var(--transition);z-index:1000;border-radius:999px;align-items:center;gap:.45rem;padding:.5rem .95rem;font-size:.78rem;font-weight:800;text-decoration:none;display:inline-flex;position:fixed;top:clamp(.85rem,2vw,1.4rem);right:clamp(1rem,2.5vw,2rem);box-shadow:0 6px 18px #0f2a3d2e}.cn-resume:hover,.cn-resume:focus-visible{background:var(--c-accent-deep);color:var(--c-white);transform:translateY(-1px);box-shadow:0 10px 24px #14b8a652}.cn-resume.is-active{background:var(--c-accent-deep)}.cn-resume:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.cn-resume-arrow{align-items:center;transition:transform .22s cubic-bezier(.22,1,.36,1);display:inline-flex}.cn-resume:hover .cn-resume-arrow{transform:translate(1.5px,-1.5px)}@media (prefers-reduced-motion:reduce){.cn-dot-slot,.cn-dot,.cn-dot-mark,.cn-dot-label,.cn-resume,.cn-resume-arrow{transition:none}}@media (width<=575.98px){.cn-brand{padding:.4rem .6rem;font-size:.78rem}.cn-dots{gap:0;padding:.35rem .4rem}.cn-dot{gap:0;padding:.4rem .45rem}.cn-dot-mark{width:7px;height:7px}.cn-dot.is-active .cn-dot-label,.cn-dot.is-hovered .cn-dot-label,.cn-dot:hover .cn-dot-label,.cn-dot:focus-visible .cn-dot-label{max-width:5rem;margin-left:.35rem}.cn-resume{padding:.4rem .65rem;font-size:.7rem}.cn-resume-text{display:none}}.hero-section{isolation:isolate;background:linear-gradient(155deg,#edf9f7 0%,#f0f7ff 45%,#f5f9fc 100%);min-height:100vh;position:relative;overflow:hidden}.hero-glow{pointer-events:none;z-index:0;position:absolute;inset:0}.hero-blob{filter:blur(80px);opacity:.48;pointer-events:none;z-index:0;border-radius:50%;position:absolute}.hero-blob-a{background:radial-gradient(circle,#14b8a675,#0000 68%);width:540px;height:540px;animation:20s ease-in-out infinite alternate blobDrift;top:-130px;right:-90px}.hero-blob-b{background:radial-gradient(circle,#2563eb42,#0000 68%);width:420px;height:420px;animation:28s ease-in-out infinite alternate-reverse blobDrift;bottom:-70px;left:-110px}@keyframes blobDrift{0%{transform:translate(0)scale(1)}33%{transform:translate(28px,-18px)scale(1.06)}66%{transform:translate(-16px,26px)scale(.97)}to{transform:translate(12px,-8px)scale(1.02)}}@keyframes caretBlink{0%,46%{opacity:1}47%,to{opacity:.18}}@media (prefers-reduced-motion:reduce){.hero-blob,.hero-chip,.typewriter-cursor{animation:none}.site-navbar{transition:none}}.hero-content{z-index:1;max-width:900px;padding-top:5.5rem;position:relative}.hero-kicker{background:var(--c-accent-lite);color:var(--c-accent-deep);letter-spacing:.1em;text-transform:uppercase;border:1px solid #14b8a647;border-radius:999px;margin-bottom:1.25rem;padding:.38rem .9rem;font-size:.72rem;font-weight:800;display:inline-block}.hero-title{color:var(--c-text);font-family:var(--font-display);letter-spacing:-.025em;margin-bottom:1rem;padding-bottom:.1em;font-size:clamp(3.5rem,9vw,7rem);font-weight:900;line-height:.95}.typewriter{min-height:1.8em;color:var(--c-accent-deep);font-size:clamp(1rem,1.7vw,1.22rem);font-weight:700;line-height:1.35;display:inline-block}.typewriter-cursor{color:var(--c-accent-deep);margin-left:.1rem;font-weight:800;animation:.85s step-end infinite caretBlink}.hero-subtitle{color:var(--c-text-muted);max-width:680px;margin-left:auto;margin-right:auto;font-size:clamp(.95rem,1.6vw,1.15rem);font-weight:500;line-height:1.7}.hero-stack{flex-wrap:wrap;justify-content:center;gap:.6rem;display:flex}.hero-chip{animation:3.8s ease-in-out infinite chipFloat;animation-delay:var(--chip-delay,0s);color:var(--c-text);letter-spacing:.01em;transition:background var(--transition), border-color var(--transition), box-shadow var(--transition), transform var(--transition);background:#ffffffc7;border:1px solid #0f2a3d1c;border-radius:999px;align-items:center;gap:.42rem;padding:.46rem .9rem;font-size:.8rem;font-weight:700;display:inline-flex}.hero-chip:hover{border-color:var(--c-accent);background:#fff;animation:none;transform:translateY(-4px);box-shadow:0 6px 20px #14b8a62e}.hero-chip-icon{opacity:.78;font-size:.95rem}@keyframes chipFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.hero-social-link{height:44px;transition:color var(--transition), transform var(--transition);justify-content:center;align-items:center;width:44px;font-size:1.25rem;display:inline-flex;color:var(--c-text-muted)!important}.hero-social-link:hover{transform:translateY(-2px);color:var(--c-accent)!important}.hero-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.hero-primary-btn{letter-spacing:.02em;min-height:46px;box-shadow:0 0 0 0 var(--c-accent-glow);background:var(--c-accent-deep)!important;border-radius:var(--radius-sm)!important;color:var(--c-white)!important;transition:opacity var(--transition), transform var(--transition)!important;border:none!important;padding:.62rem 1.4rem!important;font-size:.88rem!important;font-weight:800!important}.hero-primary-btn:hover{opacity:.9!important;box-shadow:0 8px 24px var(--c-accent-glow)!important;transform:translateY(-2px)!important}.hero-secondary-btn{min-height:46px;border:1px solid var(--c-border-hard)!important;border-radius:var(--radius-sm)!important;color:var(--c-text)!important;transition:border-color var(--transition), background var(--transition), transform var(--transition)!important;background:#ffffff80!important;padding:.62rem 1.4rem!important;font-size:.88rem!important;font-weight:700!important}.hero-secondary-btn:hover{border-color:var(--c-accent)!important;background:var(--c-accent-lite)!important;color:var(--c-accent-deep)!important;transform:translateY(-2px)!important}@media (width<=767.98px){.hero-content{padding-top:4.5rem}.typewriter{min-height:3.3em;padding-left:.5rem;padding-right:.5rem}.hero-socials{padding-left:0!important;padding-right:0!important}}.section-panel{padding:6rem 0}.section-panel-white{border-top:1px solid var(--c-border);background:#fff}.section-panel-muted{border-top:1px solid var(--c-border);background:#eef5f8}.section-intro{max-width:720px;margin-left:auto;margin-right:auto}.section-eyebrow{background:var(--c-accent-lite);color:var(--c-accent-deep);letter-spacing:.1em;text-transform:uppercase;border:1px solid #14b8a647;border-radius:999px;padding:.32rem .8rem;font-size:.68rem;font-weight:800;display:inline-block}.section-intro h2{color:var(--c-text);font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(2rem,4vw,3rem);font-weight:900;line-height:1.05}.section-intro p.text-muted{color:var(--c-text-muted)!important}@media (width<=767.98px){.section-panel{padding:4rem 0}}.about-card{background:var(--c-surface);border:1px solid var(--c-border-hard);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:clamp(1.5rem,3.5vw,2.75rem)}.about-card p{color:var(--c-text-muted);line-height:1.78}.about-card .lead{color:var(--c-text);font-family:var(--font-display);letter-spacing:0;font-size:clamp(1.05rem,2vw,1.28rem);font-weight:700}.about-facts{gap:.85rem;display:grid}.about-fact{background:var(--c-surface-2);border:1px solid var(--c-border-hard);border-radius:var(--radius);transition:border-color var(--transition);align-items:center;gap:.9rem;padding:1rem 1.1rem;display:flex}.about-fact:hover{border-color:var(--c-accent)}.about-fact-icon{background:var(--c-accent);border-radius:var(--radius-sm);color:var(--c-white);flex:none;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.about-fact small,.about-fact strong{display:block}.about-fact small{color:var(--c-text-muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.1rem;font-size:.7rem;font-weight:800}.about-fact strong{color:var(--c-text);font-size:.93rem;line-height:1.35}.skill-card{background:var(--c-surface);border:1px solid var(--c-border-hard);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:border-color var(--transition), box-shadow var(--transition), transform var(--transition);padding:1.6rem}.skill-card:hover{border-color:var(--c-accent);box-shadow:0 0 0 1px var(--c-accent), var(--shadow-md);transform:translateY(-3px)}.skill-icon-row{min-height:36px}.skillsicons{color:var(--c-accent);transition:transform var(--transition), color var(--transition);font-size:1.9rem}.skillsicons:hover{color:var(--c-accent-deep);transform:translateY(-2px)}.skill-card h3{color:var(--c-text);font-weight:800}.skill-card p{color:var(--c-text-muted);line-height:1.65}.contact-section{border-top:1px solid var(--c-border);background:linear-gradient(#f8fcff 0%,#eef5f8 100%);padding:5.5rem 0 4.75rem;position:relative;overflow:hidden}.contact-avail-badge{background:var(--c-accent-lite);color:var(--c-accent-deep);letter-spacing:.08em;text-transform:uppercase;border:1px solid #14b8a647;border-radius:999px;padding:.36rem .9rem;font-size:.72rem;font-weight:800}.contact-pulse{background:var(--c-accent);border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:2.2s ease-in-out infinite contactPulse;display:inline-block}@keyframes contactPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.72)}}.contact-heading{color:var(--c-text);font-family:var(--font-display);letter-spacing:-.02em;margin-bottom:1rem;font-size:clamp(2.25rem,5vw,3.75rem);font-weight:900;line-height:1}.contact-sub{color:var(--c-text-muted);max-width:560px;margin:0 auto;font-size:1rem;line-height:1.72}.contact-cards{grid-template-columns:repeat(3,1fr);gap:1.1rem;max-width:840px;margin:0 auto;display:grid}.contact-channel-card{border:1px solid var(--c-border-hard);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);color:var(--c-text);transition:background var(--transition), border-color var(--transition), box-shadow var(--transition), transform var(--transition);background:linear-gradient(145deg,#fffffffa,#ffffffc2);flex-direction:column;gap:.3rem;padding:2rem 1.75rem;text-decoration:none;display:flex}.contact-channel-card:hover{box-shadow:0 0 0 1px #14b8a624, var(--shadow-md);color:var(--c-text);background:#fff;border-color:#14b8a675;transform:translateY(-4px)}.contact-channel-icon{border-radius:var(--radius);color:var(--c-accent-deep);background:#14b8a61f;border:1px solid #14b8a62e;justify-content:center;align-items:center;width:46px;height:46px;margin-bottom:.75rem;font-size:1.35rem;display:inline-flex}.contact-channel-label{color:var(--c-text-muted);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.68rem;font-weight:800}.contact-channel-handle{color:var(--c-text);word-break:break-all;margin:.1rem 0 0;font-size:.88rem;font-weight:600}.contact-channel-cta{color:var(--c-accent-deep);letter-spacing:.01em;margin-top:.75rem;font-size:.78rem;font-weight:700}.contact-location{color:var(--c-text-muted);font-size:.83rem}@media (width<=767.98px){.contact-section{padding:4rem 0}.contact-cards{grid-template-columns:1fr;max-width:360px}}footer{background:var(--c-surface)!important;border-top:1px solid var(--c-border)!important}footer p,footer span{color:var(--c-text-muted)!important}footer a{transition:color var(--transition);color:var(--c-text-muted)!important}footer a:hover{color:var(--c-accent-deep)!important}.footer-icons{color:var(--c-text-muted);transition:color var(--transition), transform var(--transition);font-size:1.1rem}.footer-icons:hover{color:var(--c-accent);transform:translateY(-2px)}.hover-opacity:hover{opacity:.72;transition:opacity var(--transition)}.text-muted{color:var(--c-text-muted)!important}.display-5{letter-spacing:0}.projects-section{border-top:1px solid var(--c-border);color:var(--c-text);background:linear-gradient(#f8fcff 0%,#eef5f8 50%,#f5f9fc 100%);padding:clamp(4rem,8vw,7rem) 0;position:relative}.cs-intro{max-width:62ch;margin:0 0 clamp(2rem,4vw,2.75rem)}.cs-name{color:var(--c-text);font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 .85rem;font-size:clamp(2.5rem,6vw,4.5rem);font-weight:900;line-height:1}.cs-tagline{color:var(--project-accent);max-width:40ch;margin:0 0 1.25rem;font-size:clamp(1.1rem,1.8vw,1.4rem);font-weight:700;line-height:1.4}.cs-description{color:var(--c-text-muted);max-width:60ch;margin:0;font-size:1.04rem;line-height:1.7}.cs-meta{border-top:1px solid var(--c-border);border-bottom:1px solid var(--c-border);flex-direction:column;gap:1.25rem;margin:0 0 clamp(2.5rem,5vw,3.75rem);padding:1.5rem 0;display:flex}.cs-meta-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem clamp(1.5rem,3vw,2.5rem);display:flex}.cs-meta-stack{grid-template-columns:1fr;align-items:baseline;gap:.3rem 1.5rem;display:grid}@media (width>=768px){.cs-meta-stack{grid-template-columns:auto 1fr;gap:0 1.75rem}}.cs-meta-stack-label{color:var(--c-text-muted);letter-spacing:.16em;text-transform:uppercase;font-size:.72rem;font-weight:800}.cs-meta-stack-value{color:var(--c-text);font-size:.95rem;line-height:1.55}.cs-meta-list{flex-wrap:wrap;align-items:flex-start;gap:1rem clamp(1.75rem,3.5vw,3.5rem);margin:0;display:flex}.cs-meta-item{flex-direction:column;gap:.3rem;margin:0;display:flex}.cs-meta-item dt{color:var(--c-text-muted);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:.7rem;font-weight:800}.cs-meta-item dd{color:var(--c-text);margin:0;font-size:.98rem;font-weight:700}.cs-meta-status{color:var(--project-accent);align-items:center;gap:.45rem;display:inline-flex}.cs-status-dot{background:var(--project-accent);border-radius:999px;flex-shrink:0;width:8px;height:8px;animation:2.4s ease-in-out infinite csStatusPulse;display:inline-block}@keyframes csStatusPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.78)}}@media (prefers-reduced-motion:reduce){.cs-status-dot{animation:none}}.cs-actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.cs-action{border-radius:var(--radius);letter-spacing:0;transition:background var(--transition), border-color var(--transition), color var(--transition), transform var(--transition);align-items:center;gap:.5rem;padding:.65rem 1.15rem;font-size:.92rem;font-weight:700;display:inline-flex}.cs-action-primary{background:var(--project-accent)!important;border:1px solid var(--project-accent)!important;color:var(--c-white)!important}.cs-action-primary:hover{transform:translateY(-1px);background:color-mix(in oklch, var(--project-accent) 82%, black)!important;border-color:color-mix(in oklch, var(--project-accent) 82%, black)!important;color:var(--c-white)!important}.cs-action-secondary{background:var(--c-white)!important;border:1px solid var(--c-border-hard)!important;color:var(--c-text)!important}.cs-action-secondary:hover{transform:translateY(-1px);background:var(--c-white)!important;border-color:var(--c-text)!important;color:var(--c-text)!important}.cs-showcase{grid-template-columns:1fr;gap:clamp(2rem,4vw,3.25rem);margin:0 0 clamp(3rem,6vw,4.5rem);display:grid}@media (width>=992px){.cs-showcase{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:start;gap:clamp(2.5rem,4.5vw,4rem)}}.cs-stage{flex-direction:column;align-self:start;gap:.95rem;display:flex}@media (width>=992px){.cs-stage{position:sticky;top:92px}}@media (width<=991.98px){.cs-stage{display:none}}.cs-stage-frame{aspect-ratio:1.86;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);isolation:isolate;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff8c,0 1px 3px #0f2a3d0a,0 18px 50px #0f2a3d1f}.cs-stage-frame:before{background:radial-gradient(circle at 88% -10%, color-mix(in oklch, var(--project-accent) 18%, transparent), transparent 55%), radial-gradient(circle at -10% 110%, color-mix(in oklch, var(--project-accent) 10%, transparent), transparent 60%);content:"";opacity:.6;pointer-events:none;z-index:2;position:absolute;inset:0}.cs-stage-label{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#d6f5ee;font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:.12em;text-transform:uppercase;z-index:3;background:#0a1628c7;border:1px solid #ffffff14;border-radius:999px;padding:.3rem .7rem;font-size:.7rem;font-weight:800;position:absolute;bottom:.85rem;left:.85rem}.cs-stage-img{object-fit:cover;object-position:center top;opacity:0;z-index:1;width:100%;height:100%;transition:opacity .5s,transform .7s;position:absolute;top:0;left:0;transform:scale(1.012)}.cs-stage-img.is-active{opacity:1;transform:scale(1)}@media (prefers-reduced-motion:reduce){.cs-stage-img,.cs-stage-img.is-active{transition:opacity .15s linear;transform:none}}.cs-stage-pips{flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.cs-stage-pip{border:1px solid var(--c-border);color:var(--c-text-muted);cursor:pointer;font-family:var(--font-display);transition:background var(--transition), border-color var(--transition), color var(--transition), transform var(--transition);background:#ffffffb3;border-radius:999px;padding:.42rem .95rem;font-size:.82rem;font-weight:700}.cs-stage-pip:hover{border-color:var(--c-text);color:var(--c-text);transform:translateY(-1px)}.cs-stage-pip:focus-visible{outline:2px solid var(--project-accent);outline-offset:2px}.cs-stage-pip.is-active{background:color-mix(in oklch, var(--project-accent) 14%, transparent);border-color:color-mix(in oklch, var(--project-accent) 32%, transparent);color:var(--project-accent)}.cs-stage-pip.is-active:hover{color:var(--project-accent)}.cs-scenes{flex-direction:column;display:flex}.cs-scene{opacity:1;flex-direction:column;justify-content:center;padding:.75rem 0;transition:opacity .45s;display:flex}@media (width>=992px){.cs-scene{opacity:.32;min-height:68vh;padding:3rem 0}.cs-scene.is-active{opacity:1}}.cs-scene-label{color:var(--project-accent);font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;margin:0 0 .85rem;font-size:.76rem;font-weight:800}.cs-scene-title{color:var(--c-text);font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 1rem;font-size:clamp(1.55rem,2.7vw,2.1rem);font-weight:900;line-height:1.15}.cs-scene-body{color:var(--c-text-muted);max-width:52ch;margin:0;font-size:1rem;line-height:1.72}.cs-scene-fig{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin:0 0 1.1rem;overflow:hidden}.cs-scene-fig img{width:100%;height:auto;display:block}@media (width>=992px){.cs-scene-fig{display:none}}.cs-areas{border-top:1px solid var(--c-border);margin:0;padding-top:clamp(1.75rem,3vw,2.25rem)}.cs-areas-lede{color:var(--c-text);font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 1.5rem;font-size:clamp(1.15rem,2vw,1.45rem);font-weight:800;line-height:1.3}.cs-areas-list{grid-template-columns:1fr 1fr;gap:.5rem clamp(2rem,5vw,4rem);margin:0;padding:0;list-style:none;display:grid}@media (width>=768px){.cs-areas-list{grid-template-columns:repeat(4,1fr)}}.cs-areas-list li{color:var(--c-text);padding:.42rem 0;font-size:1rem;font-weight:600}.cs--primary{margin:0}.cs-divider{background:var(--c-border);border:0;height:1px;margin:clamp(3rem,6vw,5rem) 0}.cs--secondary .cs-name{font-size:clamp(2rem,4.4vw,3.25rem)}.cs--secondary .cs-tagline{font-size:clamp(1rem,1.6vw,1.2rem)}.cs--secondary .cs-description{font-size:1rem}.cs--secondary .cs-intro{max-width:60ch}.cs-meta-status--quiet{color:var(--c-text)}.cs-notes{grid-template-columns:1fr;gap:clamp(1.5rem,3vw,2.25rem);margin:0 0 clamp(2.5rem,5vw,3.5rem);display:grid}@media (width>=768px){.cs-notes{grid-template-columns:repeat(3,minmax(0,1fr))}}.cs-note{border-top:2px solid var(--project-accent);padding-top:1.1rem}.cs-note-title{color:var(--c-text);font-family:var(--font-display);letter-spacing:-.005em;margin:0 0 .55rem;font-size:clamp(1.05rem,1.6vw,1.2rem);font-weight:800;line-height:1.25}.cs-note-body{color:var(--c-text-muted);margin:0;font-size:.96rem;line-height:1.7}@media (width<=575.98px){.cs-meta{flex-direction:column;align-items:flex-start;gap:1.5rem}.cs-actions .cs-action{justify-content:center;width:100%}.cs-areas-list{grid-template-columns:1fr}}.resume-overlay{--resume-accent:#1f3a60;-webkit-backdrop-filter:blur(8px)saturate(140%);z-index:1050;background:#0f203394;justify-content:center;align-items:stretch;padding:clamp(.75rem,3vw,2.5rem);animation:.18s ease-out resumeOverlayFade;display:flex;position:fixed;inset:0;overflow-y:auto}@keyframes resumeOverlayFade{0%{opacity:0}to{opacity:1}}.resume-overlay-dialog{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);flex-direction:column;width:100%;max-width:920px;margin:auto;animation:.22s cubic-bezier(.16,.84,.32,1) resumeOverlayRise;display:flex;overflow:hidden;box-shadow:0 32px 80px #0f2a3d52}@keyframes resumeOverlayRise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.resume-overlay,.resume-overlay-dialog{animation:none}}.resume-overlay-bar{border-bottom:1px solid var(--c-border);background:linear-gradient(#fff 0%,#f8fafd 100%);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem .75rem 1.25rem;display:flex}.resume-overlay-bar-title{flex-direction:column;gap:.1rem;min-width:0;line-height:1.2;display:flex}.resume-overlay-bar-label{color:var(--c-text-muted);letter-spacing:.16em;text-transform:uppercase;font-size:.68rem;font-weight:800}.resume-overlay-bar-meta{color:var(--c-text);font-size:.88rem;font-weight:700}.resume-overlay-close{border:1px solid var(--c-border-hard);border-radius:var(--radius-sm);color:var(--c-text);cursor:pointer;height:36px;transition:background var(--transition), border-color var(--transition), color var(--transition);background:0 0;justify-content:center;align-items:center;width:36px;font-size:1.35rem;line-height:1;display:inline-flex}.resume-overlay-close:hover{background:var(--c-surface-2);border-color:var(--c-text)}.resume-overlay-close:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.resume-overlay-scroll{background:var(--c-surface);max-height:calc(100vh - 6rem);overflow-y:auto}.resume-doc{color:var(--c-text);font-family:var(--font-body);max-width:780px;margin:0 auto;padding:clamp(1.75rem,4vw,2.75rem) clamp(1.25rem,4vw,2.5rem) clamp(2rem,5vw,3rem);font-size:.95rem;line-height:1.55}.resume-doc a{color:var(--resume-accent);text-decoration:none}.resume-doc a:hover{text-decoration:underline}.resume-head{margin-bottom:1.25rem}.resume-name{color:var(--c-text);font-family:var(--font-display);letter-spacing:.01em;text-transform:uppercase;margin:0 0 .4rem;font-size:clamp(2rem,4.5vw,2.8rem);font-weight:900;line-height:1.05}.resume-contact{color:var(--c-text-muted);overflow-wrap:anywhere;word-break:break-word;margin:0;font-size:.86rem;line-height:1.7}.resume-contact-sep{color:var(--c-text-muted);opacity:.55;margin:0 .5rem}.resume-section{margin-top:1.25rem}.resume-section-title{border-bottom:1px solid var(--resume-accent);color:var(--c-text);font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .6rem;padding-bottom:.2rem;font-size:1.05rem;font-weight:700}.resume-entry{margin-bottom:.85rem}.resume-entry:last-child{margin-bottom:0}.resume-entry-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.4rem 1rem;display:flex}.resume-entry-row-sub{margin-top:.05rem}.resume-entry-primary{color:var(--c-text);font-size:.98rem;font-weight:700}.resume-entry-secondary{color:var(--c-text);font-size:.92rem;font-style:italic;font-weight:500}.resume-entry-aside{color:var(--c-text);white-space:nowrap;font-size:.9rem;font-weight:500}.resume-entry-aside-sub{color:var(--c-text);white-space:nowrap;font-size:.88rem;font-style:italic;font-weight:500}.resume-bullets{color:var(--c-text);margin:.4rem 0 0;padding-left:1.15rem;font-size:.93rem;line-height:1.55;list-style:outside}.resume-bullets li{margin-bottom:.3rem}.resume-bullets li:last-child{margin-bottom:0}.resume-bullets strong{color:var(--c-text);font-weight:700}.resume-skills{color:var(--c-text);margin:0;padding:0;font-size:.93rem;line-height:1.6;list-style:none}.resume-skills li{margin-bottom:.25rem}.resume-skills strong{font-weight:700}@media (width<=575.98px){.resume-overlay{padding:0}.resume-overlay-dialog{border-radius:0;max-width:100%;height:100%}.resume-overlay-scroll{flex:1;max-height:none}.resume-overlay-bar{padding:.6rem .75rem .6rem 1rem}.resume-overlay-bar-meta{display:none}.resume-entry-row{flex-direction:column;gap:.1rem}.resume-entry-aside,.resume-entry-aside-sub{white-space:normal}.resume-contact-sep{margin:0 .35rem}}
