.skill-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:6px;font-size:var(--font-size-sm);font-weight:500;transition:transform .1s var(--easing-default),background .1s var(--easing-default),border-color .1s var(--easing-default)}.skill-badge--default{background:var(--color-background-section);color:var(--color-text-primary);border:1px solid var(--color-border-subtle)}.skill-badge--default:hover{background:var(--color-background-card);border-color:var(--color-border-default);transform:translateY(-1px)}.skill-badge--outlined{background:transparent;color:var(--color-text-primary);border:2px solid var(--color-border-default)}.skill-badge--outlined:hover{border-color:var(--color-primary);transform:translateY(-1px)}.skill-badge--filled{background:var(--color-primary);color:var(--color-background-page);border:1px solid transparent}.skill-badge--filled:hover{background:var(--color-primary-hover, var(--color-primary));transform:translateY(-1px)}.skill-badge__icon{display:inline-flex;align-items:center;font-size:1.125rem;line-height:1}.skill-badge__name{line-height:1}.skill-badge__proficiency{display:inline-flex;align-items:center;font-size:.75rem;letter-spacing:.05em;opacity:.8;margin-left:.25rem}.skill-dots-container{display:inline-flex;align-items:center;gap:.25rem}.skill-dot{width:.5rem;height:.5rem;border-radius:50%;display:inline-block;transition:transform .1s var(--easing-default)}.skill-dot--full{border:none}.skill-dot--empty{background:transparent;border:1.5px solid}.skill-dot--half{border:1.5px solid}.skill-badge:hover .skill-dot{transform:scale(1.1)}.skill-badge--beginner{--proficiency-color: var(--color-text-muted)}.skill-badge--intermediate{--proficiency-color: var(--color-secondary, var(--color-text-secondary))}.skill-badge--advanced{--proficiency-color: var(--color-primary)}.skill-badge--expert{--proficiency-color: var(--color-accent, var(--color-primary))}.skill-badge--beginner .skill-badge__proficiency,.skill-badge--intermediate .skill-badge__proficiency,.skill-badge--advanced .skill-badge__proficiency,.skill-badge--expert .skill-badge__proficiency{color:var(--proficiency-color)}@media(prefers-reduced-motion:reduce){.skill-badge{transition-duration:.01ms}.skill-badge--default:hover,.skill-badge--outlined:hover,.skill-badge--filled:hover{transform:none}}.project-card{display:flex;flex-direction:column;background:var(--color-background-card);border:1px solid var(--color-border-default);border-radius:8px;overflow:hidden;transition:transform .2s var(--easing-smooth),box-shadow .2s var(--easing-smooth);height:100%}.project-card:hover,.project-card:focus-within{transform:translateY(-4px) scale(1.02);box-shadow:0 8px 24px #00000026}.project-card__image-container{width:100%;height:280px;overflow:hidden;background:linear-gradient(135deg,var(--color-background-section) 0%,var(--color-background-page) 100%);position:relative;display:flex;align-items:center;justify-content:center}.project-card__image-container:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.1) 100%);pointer-events:none;opacity:0;transition:opacity .2s var(--easing-smooth)}.project-card:hover .project-card__image-container:after,.project-card:focus-within .project-card__image-container:after{opacity:1}.project-card__placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;color:var(--color-text-muted);gap:1rem}.project-card__placeholder-icon{width:64px;height:64px;opacity:.3}.project-card__placeholder-text{font-size:var(--font-size-lg);font-weight:600;opacity:.5;text-align:center;padding:0 1rem}.project-card__image{width:100%;height:100%;object-fit:cover;transition:transform .2s var(--easing-smooth)}.project-card:hover .project-card__image,.project-card:focus-within .project-card__image{transform:scale(1.05)}.project-card__content{display:flex;flex-direction:column;padding:1.5rem;flex:1}.project-card__title{font-size:var(--font-size-xl);font-weight:600;margin:0 0 .75rem;color:var(--color-text-primary)}.project-card__description{font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--color-text-secondary);margin:0 0 1rem}.project-card__highlights{list-style:disc;padding-left:1.25rem;margin:0 0 1rem;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.project-card__highlights li{margin-bottom:.25rem}.project-card__metadata{margin-top:auto}.project-card__technologies{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.project-card__tech-tag{display:inline-block;padding:.25rem .75rem;background:var(--color-background-section);color:var(--color-text-primary);border:1px solid var(--color-border-subtle);border-radius:4px;font-size:var(--font-size-sm);font-weight:500}.project-card__links{display:flex;gap:1rem}.project-card__link{display:inline-flex;align-items:center;padding:.5rem 1rem;background:var(--color-interactive-default);color:var(--color-text-primary);text-decoration:none;border-radius:4px;font-size:var(--font-size-sm);font-weight:500;transition:background .1s var(--easing-default),transform .1s var(--easing-default)}.project-card__link:hover{background:var(--color-interactive-hover);transform:translateY(-1px)}.project-card__link:active{transform:translateY(0) scale(.98)}.project-card__link:focus{outline:2px solid var(--color-primary);outline-offset:2px}.project-card__link--github{background:transparent;border:1px solid var(--color-border-default)}.project-card__link--github:hover{background:var(--color-background-section);border-color:var(--color-border-emphasis)}@media(prefers-reduced-motion:reduce){.project-card,.project-card__image,.project-card__link{transition-duration:.01ms}.project-card:hover,.project-card:focus-within{transform:none}}@media(min-width:768px){.project-card__image-container{height:300px}}@media(min-width:1024px){.project-card__image-container{height:320px}}.blog-card{display:flex;flex-direction:column;height:100%}.blog-card__link{display:flex;flex-direction:column;height:100%;background:var(--color-background-card);border:1px solid var(--color-border-default);border-radius:8px;padding:1.5rem;text-decoration:none;color:inherit;transition:transform .2s var(--easing-smooth),box-shadow .2s var(--easing-smooth),border-color .2s var(--easing-smooth)}.blog-card__link:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001a;border-color:var(--color-border-emphasis)}.blog-card__link:focus{outline:2px solid var(--color-primary);outline-offset:2px;transform:translateY(-2px);box-shadow:0 4px 16px #0000001a}.blog-card__link:active{transform:translateY(0) scale(.99)}.blog-card__content{display:flex;flex-direction:column;height:100%}.blog-card__header{margin-bottom:1rem}.blog-card__title{font-size:var(--font-size-xl);font-weight:600;margin:0 0 .5rem;color:var(--color-text-primary);line-height:var(--line-height-tight)}.blog-card__meta{display:flex;align-items:center;gap:.5rem;font-size:var(--font-size-sm);color:var(--color-text-muted)}.blog-card__date{font-weight:500}.blog-card__separator{color:var(--color-text-muted)}.blog-card__read-time{font-weight:400}.blog-card__preview{font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--color-text-secondary);margin:0 0 1rem;flex:1}.blog-card__read-more{display:inline-flex;align-items:center;font-size:var(--font-size-sm);font-weight:600;color:var(--color-primary);margin-top:auto;transition:transform .1s var(--easing-default)}.blog-card__link:hover .blog-card__read-more{transform:translate(4px)}@media(prefers-reduced-motion:reduce){.blog-card__link,.blog-card__read-more{transition-duration:.01ms}.blog-card__link:hover,.blog-card__link:focus{transform:none}.blog-card__link:hover .blog-card__read-more{transform:none}}:root{--bg-page: var(--color-bg-page);--bg-card: var(--color-bg-card);--text-main: var(--color-text-primary);--text-muted: var(--color-text-muted);--accent-blue: var(--color-primary);--accent-sky: var(--color-accent);--accent-indigo: var(--color-secondary);--border-subtle: var(--color-border-subtle);--bg-section: var(--color-bg-section)}.container{width:100%;max-width:1200px;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}@media(min-width:768px){.container{padding-left:2rem;padding-right:2rem}}.section-spacing{padding-top:clamp(40px,8vw,80px);padding-bottom:clamp(40px,8vw,80px)}.projects-grid{display:grid;gap:2rem;grid-template-columns:1fr}@media(min-width:768px){.projects-grid{grid-template-columns:repeat(2,1fr);gap:2.5rem}}@media(min-width:1024px){.projects-grid{grid-template-columns:repeat(3,1fr);gap:3rem}}.blog-grid{display:grid;gap:1.5rem;grid-template-columns:1fr}@media(min-width:768px){.blog-grid{grid-template-columns:repeat(2,1fr);gap:2rem}}.App{min-height:100vh;background:var(--bg-page);color:var(--text-main);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.hero{position:relative;min-height:80vh;display:flex;align-items:center;justify-content:center;padding:var(--space-8);background:var(--color-bg-page);overflow:hidden}.hero-content{position:relative;z-index:1;text-align:center;display:flex;flex-direction:column;gap:var(--space-6);padding:var(--space-12) var(--space-10);border-radius:1rem;background:var(--color-bg-card);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow-hero);max-width:800px;width:100%}.hero-background{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(/images/header-bg.png);background-size:cover;background-position:center;background-repeat:no-repeat;z-index:0;overflow:hidden}.hero-gradient-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--gradient-hero);z-index:1}.hero-profile{display:flex;justify-content:center;margin-bottom:var(--space-2)}.hero-profile img{width:160px;height:160px;border-radius:50%;object-fit:cover;background:var(--color-bg-card);border:3px solid var(--color-primary);box-shadow:var(--shadow-primary);transition:transform var(--duration-normal) var(--ease-smooth)}.hero-profile img:hover{transform:scale(1.05)}.hero-name{font-size:var(--text-4xl);font-weight:var(--font-bold);letter-spacing:.02em;color:var(--color-text-primary);line-height:var(--leading-tight);margin:0}.hero-name-divider{width:180px;height:3px;margin:0 auto;background:var(--gradient-divider);border-radius:2px}.hero-tagline-wrapper{display:flex;flex-direction:column;gap:var(--space-2)}.hero-tagline{font-size:var(--text-lg);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin:0}.hero-subtitle{font-size:var(--text-base);color:var(--color-text-muted);margin:0}.hero-socials{display:flex;justify-content:center;gap:var(--space-4);margin-top:var(--space-4)}.hero-social-link{padding:var(--space-3) var(--space-6);background:var(--color-interactive-default);color:var(--color-text-inverse);text-decoration:none;border-radius:.5rem;font-weight:var(--font-medium);font-size:var(--text-base);transition:all var(--duration-normal) var(--ease-smooth);box-shadow:var(--shadow-primary-sm)}.hero-social-link:hover{background:var(--color-interactive-hover);transform:translateY(-2px);box-shadow:var(--shadow-primary-md)}.hero-social-link:active{transform:translateY(0)}.hero-social-link:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}.hero-scroll-indicator{margin-top:var(--space-8);display:flex;flex-direction:column;align-items:center;gap:var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);cursor:pointer}.hero-scroll-text{font-weight:var(--font-medium);letter-spacing:.1em;text-transform:uppercase}.hero-scroll-arrow{font-size:var(--text-xl);animation:scroll-bounce 2s ease-in-out infinite}@keyframes scroll-bounce{0%,to{transform:translateY(0);opacity:.7}50%{transform:translateY(8px);opacity:1}}@media(max-width:768px){.hero{min-height:100vh;padding:var(--space-4)}.hero-content{padding:var(--space-8) var(--space-6);gap:var(--space-4)}.hero-profile img{width:120px;height:120px}.hero-name{font-size:var(--text-3xl)}.hero-tagline{font-size:var(--text-base)}.hero-subtitle{font-size:var(--text-sm)}.hero-socials{flex-direction:column;gap:var(--space-3)}.hero-social-link{width:100%;text-align:center}.hero-name-divider{width:140px}}.about{min-height:60vh;padding:var(--spacing-section-mobile);background:var(--bg-section);display:flex;justify-content:center}.about-container{max-width:var(--container-max-width);width:100%;padding:0 var(--container-padding)}.about-title{font-size:var(--font-size-4xl);margin-bottom:3rem;text-align:center}.about-content{display:grid;grid-template-columns:1fr;gap:2rem;margin-bottom:4rem}.about-profile{display:flex;justify-content:center;align-items:center}.about-profile-image{width:200px;height:200px;border-radius:50%;object-fit:cover;border:4px solid var(--color-primary);transition:transform var(--duration-normal) var(--easing-smooth),box-shadow var(--duration-normal) var(--easing-smooth)}.about-profile-image:hover{transform:scale(1.05);box-shadow:0 8px 24px #00000026}.about-biography{display:flex;flex-direction:column;gap:1.5rem}.about-text{font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--text-secondary);margin:0}.about-resume-button{display:inline-flex;align-items:center;gap:.5rem;padding:.875rem 1.75rem;background:var(--color-primary);color:var(--text-primary);text-decoration:none;border-radius:8px;font-weight:600;font-size:var(--font-size-base);transition:transform var(--duration-fast) var(--easing-default),background var(--duration-fast) var(--easing-default),box-shadow var(--duration-fast) var(--easing-default);align-self:flex-start;margin-top:1rem}.about-resume-button:hover{transform:translateY(-2px);background:var(--color-primary-hover);box-shadow:0 4px 12px #00000026}.about-resume-button:active{transform:translateY(0)}.about-resume-icon{font-size:1.25rem;line-height:1}.about-skills{margin-top:2rem}.about-skills-title{font-size:var(--font-size-2xl);margin-bottom:1.5rem;text-align:center}.about-skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;max-width:800px;margin:0 auto}@media(min-width:768px){.about{padding:var(--spacing-section-desktop)}.about-content{grid-template-columns:250px 1fr;gap:3rem;align-items:start}.about-profile-image{width:250px;height:250px}.about-title{font-size:var(--font-size-4xl)}.about-skills-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}.projects{background:var(--color-bg-section)}.projects-title{font-size:1.8rem;margin-bottom:2rem}.blog{padding:4rem 2rem 5rem;background:var(--bg-section);display:flex;justify-content:center}.blog-wip{background:var(--color-bg-card);border:1px solid var(--color-border-subtle);border-radius:12px;padding:2.5rem 2rem;text-align:center;max-width:600px;margin:0 auto 2rem}.blog-wip-title{font-size:var(--font-size-2xl);font-weight:600;color:var(--color-text-primary);margin:0 0 1rem}.blog-wip-text{font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--color-text-secondary);margin:0}.blog-loading{text-align:center;padding:3rem 1rem;color:var(--color-text-muted);font-size:var(--font-size-base)}.blog-inner{max-width:720px;width:100%}.blog-title{font-size:var(--font-size-4xl);font-weight:700;color:var(--color-text-primary);margin:0 0 2.5rem;text-align:center}.blog-list{display:flex;flex-direction:column;gap:1.5rem}.blog-post{padding:1.25rem 1.5rem;border-radius:.9rem;background:var(--color-bg-card);border:1px solid var(--color-border-subtle);box-shadow:var(--shadow-base);opacity:0;transform:translateY(20px);transition:opacity .6s ease-out,transform .2s ease,box-shadow .22s ease,border-color .2s ease,background .2s ease}.delay-1{transition-delay:.1s}.delay-2{transition-delay:.25s}.delay-3{transition-delay:.4s}.blog-post:hover{background:var(--color-accent-light);border-color:var(--color-accent);box-shadow:0 0 8px var(--color-accent);transform:translateY(-2px)}.blog-post-header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.4rem}.blog-post-title{font-size:1.05rem;font-weight:500}.blog-post-date{font-size:.8rem;opacity:.7}.blog-post-preview{font-size:.92rem;line-height:1.6;opacity:.9}.blog-footer{margin-top:2rem;display:flex;justify-content:center}.blog-all-button{padding:.6rem 1.5rem;border-radius:999px;border:1px solid var(--color-border-default);background:transparent;color:var(--text-main);font-size:.9rem;cursor:pointer}.blog-all-button:hover{background:var(--color-bg-card-hover)}.blog-post-disabled{cursor:default;opacity:.6;pointer-events:none}.blog-back-button{background:none;border:none;padding:0;margin-bottom:2rem;font-size:1rem;color:var(--text-main);cursor:pointer}.blog-back-button:hover{text-decoration:underline}.blog-view-all{display:flex;justify-content:center;margin-top:2.5rem}.blog-view-all-button{display:inline-block;padding:.75rem 1.75rem;border-radius:999px;font-size:.95rem;font-weight:500;text-decoration:none;color:var(--text-primary);border:1px solid var(--color-border-subtle);background:var(--color-bg-card);transition:background .2s ease,transform .2s ease,border-color .2s ease}.blog-view-all-button:hover{background:var(--color-bg-card-hover);border-color:var(--color-border-emphasis);transform:translateY(-1px)}.footer{padding:4rem 2rem 2.5rem;background-image:var(--gradient-footer),url(/images/footer-bg.png);background-size:cover;background-position:center bottom;background-repeat:no-repeat;position:relative;color:var(--color-text-inverse);overflow:hidden;opacity:0;transform:translateY(40px);transition:opacity .8s ease-out,transform .8s ease-out}.footer *{text-shadow:var(--shadow-text)}.footer-inner{background:var(--bg-card);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:.75rem;padding:1.5rem}.footer-visible{opacity:1;transform:translateY(0)}.footer-content{max-width:520px}.footer-title{font-size:1.8rem;margin-bottom:1rem}.footer-text{font-size:.95rem;line-height:1.6;opacity:.9;margin-bottom:1.75rem}.footer-contact{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem 2rem;margin-bottom:2rem}.footer-contact-group{display:flex;flex-direction:column;gap:.2rem}.footer-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;opacity:.7}.footer-link{font-size:.9rem;opacity:.95;transition:opacity .15s ease,color .15s ease}.footer-link:hover{opacity:1;color:var(--color-accent);text-decoration:underline}.footer-social{margin-top:2rem}.footer-social-links{display:flex;gap:1rem;align-items:center}.footer-social-link{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:#ffffff1a;color:var(--color-text-inverse);transition:transform .2s ease,background-color .2s ease,color .2s ease}.footer-social-link:hover{transform:scale(1.1);background:var(--color-accent);color:var(--color-text-primary)}.footer-social-link:focus-visible{transform:scale(1.1);background:var(--color-accent);color:var(--color-text-primary);outline:2px solid var(--color-accent);outline-offset:2px}.footer-social-icon{width:20px;height:20px}.footer-bottom{margin-top:2rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}.footer-bottom-text{font-size:.85rem;opacity:.7}.footer-updated{font-size:.8rem;opacity:.6}@media(max-width:768px){.footer-bottom{flex-direction:column;align-items:flex-start;gap:.25rem}}.navbar{position:sticky;top:0;z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:var(--color-bg-card);border-bottom:1px solid var(--color-border-subtle);transition:all .2s ease}.navbar-inner{max-width:960px;margin:0 auto;padding:.75rem 1.5rem;display:flex;align-items:center;justify-content:space-between}.navbar-logo{font-size:1rem;font-weight:600;color:var(--text-main);text-decoration:none;letter-spacing:.04em;transition:color .2s ease,transform .1s ease;display:inline-block}.navbar-logo:hover{color:var(--accent-sky);transform:translateY(-1px)}.navbar-logo:focus{outline:2px solid var(--accent-sky);outline-offset:4px;border-radius:2px}.navbar-logo:active{transform:translateY(0)}.navbar-links{display:flex;gap:1.5rem}.navbar-links a{color:var(--color-text-secondary);text-decoration:none;font-size:.9rem;position:relative;transition:color .1s ease,transform .1s ease;display:inline-block;padding:.25rem 0}.navbar-links a:hover{color:var(--accent-sky);transform:translateY(-1px)}.navbar-links a:focus{outline:2px solid var(--accent-sky);outline-offset:4px;border-radius:2px;color:var(--accent-sky)}.navbar-links a:active{transform:translateY(0)}.navbar-links a:after{content:"";position:absolute;left:50%;bottom:-2px;width:0%;height:2px;background:var(--accent-sky);border-radius:1px;opacity:0;transform:translate(-50%);transition:all .2s cubic-bezier(.22,1,.36,1)}.navbar-links a:hover:after{width:60%;opacity:.5}.navbar-links a:focus:after{width:60%;opacity:.5}.navbar-links a.active{color:var(--accent-sky);font-weight:600}.navbar-links a.active:after{width:100%;opacity:1}@media(max-width:640px){.navbar-inner{padding:.5rem 1rem}.navbar-links{gap:1rem}.navbar-links a{font-size:.85rem}}@media(prefers-reduced-motion:reduce){.navbar,.navbar-logo,.navbar-links a,.navbar-links a:after{transition-duration:.01ms}.navbar-logo:hover,.navbar-links a:hover,.navbar-links a:active,.navbar-logo:active{transform:none}}.about-title,.projects-title,.blog-title{margin-top:0}section{scroll-margin-top:90px}@media(max-width:640px){section{scroll-margin-top:70px}}.star-trail-canvas{position:fixed;inset:0;pointer-events:none;z-index:0}.section-elevation{width:100%;height:26px;position:relative;z-index:1;box-shadow:var(--gradient-footer-inset)}.hero,.about,.projects,.blog{background:var(--color-bg-section);position:relative;z-index:2}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes heroFadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.scroll-reveal{opacity:0;transform:translateY(20px);transition:opacity var(--duration-slower, .6s) var(--ease-out, ease-out),transform var(--duration-slower, .6s) var(--ease-out, ease-out)}.scroll-reveal.is-visible{opacity:1;transform:translateY(0)}.scroll-reveal-fade{opacity:0;transition:opacity var(--duration-slower, .6s) var(--ease-out, ease-out)}.scroll-reveal-fade.is-visible{opacity:1}.scroll-reveal-slide-up{opacity:0;transform:translateY(32px);transition:opacity var(--duration-slower, .6s) var(--ease-out, ease-out),transform var(--duration-slower, .6s) var(--ease-out, ease-out)}.scroll-reveal-slide-up.is-visible{opacity:1;transform:translateY(0)}.scroll-reveal-scale{opacity:0;transform:scale(.95);transition:opacity var(--duration-slower, .6s) var(--ease-out, ease-out),transform var(--duration-slower, .6s) var(--ease-out, ease-out)}.scroll-reveal-scale.is-visible{opacity:1;transform:scale(1)}.stagger-delay-1{transition-delay:0ms}.stagger-delay-2{transition-delay:var(--stagger-delay, .1s)}.stagger-delay-3{transition-delay:calc(var(--stagger-delay, .1s) * 2)}.stagger-delay-4{transition-delay:calc(var(--stagger-delay, .1s) * 3)}.stagger-delay-5{transition-delay:calc(var(--stagger-delay, .1s) * 4)}.stagger-delay-6{transition-delay:calc(var(--stagger-delay, .1s) * 5)}.hover-transition,.hover-lift{transition:transform var(--duration-normal, .2s) var(--ease-smooth, ease),box-shadow var(--duration-normal, .2s) var(--ease-smooth, ease)}.hover-lift:hover,.hover-lift:focus-visible{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.hover-scale{transition:transform var(--duration-normal, .2s) var(--ease-smooth, ease)}.hover-scale:hover,.hover-scale:focus-visible{transform:scale(1.05)}.hover-scale-subtle{transition:transform var(--duration-normal, .2s) var(--ease-smooth, ease)}.hover-scale-subtle:hover,.hover-scale-subtle:focus-visible{transform:scale(1.02)}.hover-glow{transition:box-shadow var(--duration-normal, .2s) var(--ease-smooth, ease),border-color var(--duration-normal, .2s) var(--ease-smooth, ease)}.hover-glow:hover,.hover-glow:focus-visible{box-shadow:0 0 0 3px var(--color-primary-light);border-color:var(--color-primary)}.button-press{transition:transform var(--duration-fast, .1s) var(--ease-smooth, ease)}.button-press:active{transform:scale(.97)}.icon-hover{transition:transform var(--duration-fast, .1s) var(--ease-smooth, ease),color var(--duration-fast, .1s) var(--ease-smooth, ease)}.icon-hover:hover,.icon-hover:focus-visible{transform:scale(1.1);color:var(--color-primary)}.link-underline{position:relative;text-decoration:none}.link-underline:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:currentColor;transition:width var(--duration-normal, .2s) var(--ease-smooth, ease)}.link-underline:hover:after,.link-underline:focus-visible:after{width:100%}.transition-colors{transition:color var(--duration-fast, .1s) var(--ease-smooth, ease),background-color var(--duration-fast, .1s) var(--ease-smooth, ease),border-color var(--duration-fast, .1s) var(--ease-smooth, ease)}.hero-enter{opacity:0;transform:translateY(24px);animation:heroFadeUp .8s ease-out forwards;animation-delay:.12s}.hero-stagger-1,.hero-stagger-2,.hero-stagger-3,.hero-stagger-4,.hero-stagger-5,.hero-stagger-6{opacity:0;transform:translateY(20px);animation:heroStaggerFadeUp .6s var(--ease-smooth) forwards}.hero-stagger-1{animation-delay:.1s}.hero-stagger-2{animation-delay:.25s}.hero-stagger-3{animation-delay:.4s}.hero-stagger-4{animation-delay:.55s}.hero-stagger-5{animation-delay:.7s}.hero-stagger-6{animation-delay:.85s}@keyframes heroStaggerFadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fade-in-section{opacity:0;transform:translateY(20px);transition:opacity .6s ease-out,transform .6s ease-out}.fade-in-section.is-visible{opacity:1;transform:translateY(0)}.project-fade{opacity:0;transform:translateY(20px);transition:opacity .6s ease-out,transform .6s ease-out}.project-fade.is-visible{opacity:1;transform:translateY(0)}.project-delay-1{transition-delay:0s}.project-delay-2{transition-delay:.12s}.blog-post{opacity:0;transform:translateY(20px);transition:opacity .6s ease-out,transform .6s ease-out}.blog-post.visible{opacity:1;transform:translateY(0)}.blog-post.delay-1{transition-delay:.1s}.blog-post.delay-2{transition-delay:.25s}.blog-post.delay-3{transition-delay:.4s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.scroll-reveal,.scroll-reveal-fade,.scroll-reveal-slide-up,.scroll-reveal-scale,.fade-in-section,.project-fade,.blog-post{opacity:1!important;transform:none!important;transition:none!important}.hero-stagger-1,.hero-stagger-2,.hero-stagger-3,.hero-stagger-4,.hero-stagger-5,.hero-stagger-6{opacity:1!important;transform:none!important;animation:none!important}.hero-scroll-arrow{animation:none!important}.stagger-delay-1,.stagger-delay-2,.stagger-delay-3,.stagger-delay-4,.stagger-delay-5,.stagger-delay-6,.project-delay-1,.project-delay-2,.blog-post.delay-1,.blog-post.delay-2,.blog-post.delay-3{transition-delay:0ms!important}}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-0{padding-right:0}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.hidden{display:none}.visible{display:block}@media(min-width:768px){.hidden-tablet{display:none}.visible-tablet{display:block}}@media(min-width:1024px){.hidden-desktop{display:none}.visible-desktop{display:block}}.hidden-mobile{display:none}@media(min-width:768px){.hidden-mobile{display:block}}.sr-only-focusable:focus{position:static;width:auto;height:auto;padding:inherit;margin:inherit;overflow:visible;clip:auto;white-space:normal}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-primary);color:var(--color-text-inverse);padding:.5rem 1rem;text-decoration:none;z-index:100;border-radius:0 0 .25rem}.skip-link:focus{top:0}.focus-visible:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:.25rem}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.inline-grid{display:inline-grid}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.w-full{width:100%}.w-auto{width:auto}.max-w-sm{max-width:640px}.max-w-md{max-width:768px}.max-w-lg{max-width:1024px}.max-w-xl{max-width:1200px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-scroll{overflow:scroll}:root{--blue-50: #eff6ff;--blue-100: #dbeafe;--blue-200: #bfdbfe;--blue-300: #93c5fd;--blue-400: #60a5fa;--blue-500: #3b82f6;--blue-600: #2563eb;--blue-700: #1d4ed8;--blue-800: #1e40af;--blue-900: #1e3a8a;--purple-50: #faf5ff;--purple-100: #f3e8ff;--purple-200: #e9d5ff;--purple-300: #d8b4fe;--purple-400: #c084fc;--purple-500: #a855f7;--purple-600: #9333ea;--purple-700: #7e22ce;--purple-800: #6b21a8;--purple-900: #581c87;--cyan-50: #ecfeff;--cyan-100: #cffafe;--cyan-200: #a5f3fc;--cyan-300: #67e8f9;--cyan-400: #22d3ee;--cyan-500: #06b6d4;--cyan-600: #0891b2;--cyan-700: #0e7490;--cyan-800: #155e75;--cyan-900: #164e63;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-600: #4b5563;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--slate-50: #f8fafc;--slate-100: #f1f5f9;--slate-800: #1e293b;--slate-900: #0f172a;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--space-32: 8rem;--font-heading: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "Fira Code", "Courier New", monospace;--text-xs: .64rem;--text-sm: .8rem;--text-base: 1rem;--text-lg: 1.25rem;--text-xl: 1.5625rem;--text-2xl: 1.953rem;--text-3xl: 2.441rem;--text-4xl: 3.052rem;--text-5xl: 3.815rem;--text-6xl: 4.768rem;--text-7xl: 5.96rem;--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--leading-loose: 1.75;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--duration-instant: 0ms;--duration-fast: .1s;--duration-normal: .2s;--duration-moderate: .3s;--duration-slow: .4s;--duration-slower: .6s;--duration-slowest: .8s;--ease-default: ease;--ease-linear: linear;--ease-in: ease-in;--ease-out: ease-out;--ease-in-out: ease-in-out;--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-spring: cubic-bezier(.175, .885, .32, 1.275);--stagger-delay: .1s;--stagger-delay-long: .15s;--breakpoint-mobile: 768px;--breakpoint-tablet: 1024px;--breakpoint-desktop: 1280px;--breakpoint-wide: 1536px;--color-primary: var(--blue-600);--color-primary-hover: var(--blue-700);--color-primary-active: var(--blue-800);--color-primary-light: var(--blue-100);--color-secondary: var(--purple-600);--color-secondary-hover: var(--purple-700);--color-secondary-active: var(--purple-800);--color-secondary-light: var(--purple-100);--color-accent: var(--cyan-500);--color-accent-hover: var(--cyan-600);--color-accent-active: var(--cyan-700);--color-accent-light: var(--cyan-100);--color-bg-page: #0a1023;--color-bg-section: rgba(10, 16, 35, .88);--color-bg-section-alt: var(--slate-50);--color-bg-card: rgba(5, 8, 22, .25);--color-bg-card-hover: var(--gray-50);--color-bg-overlay: rgba(0, 0, 0, .5);--color-text-primary: #e5e7eb;--color-text-secondary: #d1d5db;--color-text-muted: #9ca3af;--color-text-inverse: #ffffff;--color-text-link: #8ab4ff;--color-text-link-hover: #60a5fa;--color-border-subtle: var(--gray-200);--color-border-default: var(--gray-300);--color-border-emphasis: var(--gray-400);--color-border-focus: var(--blue-500);--color-interactive-default: var(--blue-600);--color-interactive-hover: var(--blue-700);--color-interactive-active: var(--blue-800);--color-interactive-disabled: var(--gray-300);--color-interactive-disabled-text: var(--gray-400);--color-success: #10b981;--color-warning: #f59e0b;--color-error: #ef4444;--color-info: var(--blue-500);--spacing-section-desktop: var(--space-20);--spacing-section-mobile: var(--space-10);--spacing-section: var(--spacing-section-desktop);--container-max-width: 1200px;--container-padding: var(--space-6);--container-padding-mobile: var(--space-4);--spacing-component: var(--space-8);--spacing-element: var(--space-4);--spacing-inline: var(--space-2);--gap-grid: var(--space-8);--gap-grid-mobile: var(--space-6);--heading-1: var(--text-5xl);--heading-2: var(--text-4xl);--heading-3: var(--text-3xl);--heading-4: var(--text-2xl);--heading-5: var(--text-xl);--heading-6: var(--text-lg);--body-large: var(--text-lg);--body-base: var(--text-base);--body-small: var(--text-sm);--body-tiny: var(--text-xs);--font-size-xs: var(--text-xs);--font-size-sm: var(--text-sm);--font-size-base: var(--text-base);--font-size-lg: var(--text-lg);--font-size-xl: var(--text-xl);--font-size-2xl: var(--text-2xl);--font-size-3xl: var(--text-3xl);--font-size-4xl: var(--text-4xl);--font-size-5xl: var(--text-5xl);--font-size-6xl: var(--text-6xl);--font-size-7xl: var(--text-7xl);--line-height-heading: var(--leading-tight);--line-height-body: var(--leading-relaxed);--line-height-relaxed: var(--leading-relaxed);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-base: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-hero: 0 20px 50px rgba(0, 0, 0, .7);--shadow-primary: 0 8px 24px rgba(59, 130, 246, .3);--shadow-primary-sm: 0 4px 12px rgba(59, 130, 246, .3);--shadow-primary-md: 0 6px 16px rgba(59, 130, 246, .4);--shadow-text: 0 1px 3px rgba(0, 0, 0, .75);--gradient-hero: linear-gradient( 135deg, rgba(59, 130, 246, .1) 0%, rgba(168, 85, 247, .08) 50%, rgba(6, 182, 212, .1) 100% );--gradient-divider: linear-gradient( 90deg, transparent, var(--color-primary), transparent );--gradient-footer: linear-gradient(to bottom, var(--color-bg-page) 0%, rgba(5, 8, 22, 0) 50%);--gradient-footer-inset: inset 0 -10px 18px var(--color-accent-light), inset 0 -18px 28px rgba(0, 0, 0, .55);--radius-sm: .25rem;--radius-base: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--z-base: 0;--z-dropdown: 1000;--z-sticky: 1100;--z-fixed: 1200;--z-modal-backdrop: 1300;--z-modal: 1400;--z-popover: 1500;--z-tooltip: 1600}[data-theme=dark]{--color-bg-page: var(--slate-900);--color-bg-section: var(--slate-800);--color-bg-section-alt: var(--gray-900);--color-bg-card: var(--gray-800);--color-bg-card-hover: var(--gray-700);--color-bg-overlay: rgba(0, 0, 0, .7);--color-text-primary: var(--gray-50);--color-text-secondary: var(--gray-300);--color-text-muted: var(--gray-400);--color-text-inverse: var(--gray-900);--color-text-link: var(--blue-400);--color-text-link-hover: var(--blue-300);--color-border-subtle: var(--gray-700);--color-border-default: var(--gray-600);--color-border-emphasis: var(--gray-500);--color-border-focus: var(--blue-400);--color-interactive-default: var(--blue-500);--color-interactive-hover: var(--blue-400);--color-interactive-active: var(--blue-300);--color-interactive-disabled: var(--gray-700);--color-interactive-disabled-text: var(--gray-600);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-base: 0 1px 3px 0 rgba(0, 0, 0, .4), 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -2px rgba(0, 0, 0, .3);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .4), 0 10px 10px -5px rgba(0, 0, 0, .3);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .5)}@media(max-width:767px){:root{--spacing-section: var(--spacing-section-mobile);--container-padding: var(--container-padding-mobile);--gap-grid: var(--gap-grid-mobile);--heading-1: var(--text-4xl);--heading-2: var(--text-3xl);--heading-3: var(--text-2xl);--heading-4: var(--text-xl);--heading-5: var(--text-lg);--heading-6: var(--text-base)}}@media(min-width:768px)and (max-width:1023px){:root{--spacing-section: 4rem}}@media(prefers-reduced-motion:reduce){:root{--duration-fast: .01ms;--duration-normal: .01ms;--duration-moderate: .01ms;--duration-slow: .01ms;--duration-slower: .01ms;--duration-slowest: .01ms;--stagger-delay: 0ms;--stagger-delay-long: 0ms}}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-bold);line-height:var(--line-height-heading);color:var(--color-text-primary);margin:0}body{font-family:var(--font-body);font-size:var(--body-base);line-height:var(--line-height-body);color:var(--color-text-primary)}p,li,td,th,dd,dt{font-family:var(--font-body);line-height:var(--leading-relaxed)}code,pre,kbd,samp{font-family:var(--font-mono)}h1,.text-h1{font-size:var(--heading-1);line-height:var(--leading-tight)}h2,.text-h2{font-size:var(--heading-2);line-height:var(--leading-tight)}h3,.text-h3{font-size:var(--heading-3);line-height:var(--leading-snug)}h4,.text-h4{font-size:var(--heading-4);line-height:var(--leading-snug)}h5,.text-h5{font-size:var(--heading-5);line-height:var(--leading-snug)}h6,.text-h6{font-size:var(--heading-6);line-height:var(--leading-snug)}.text-xs{font-size:var(--text-xs);line-height:var(--leading-normal)}.text-sm{font-size:var(--text-sm);line-height:var(--leading-normal)}.text-base{font-size:var(--text-base);line-height:var(--leading-relaxed)}.text-lg{font-size:var(--text-lg);line-height:var(--leading-relaxed)}.text-xl{font-size:var(--text-xl);line-height:var(--leading-relaxed)}.text-2xl{font-size:var(--text-2xl);line-height:var(--leading-snug)}.text-3xl{font-size:var(--text-3xl);line-height:var(--leading-snug)}.text-4xl{font-size:var(--text-4xl);line-height:var(--leading-tight)}.text-5xl{font-size:var(--text-5xl);line-height:var(--leading-tight)}.text-6xl{font-size:var(--text-6xl);line-height:var(--leading-tight)}.text-7xl{font-size:var(--text-7xl);line-height:var(--leading-tight)}.leading-tight{line-height:var(--leading-tight)}.leading-snug{line-height:var(--leading-snug)}.leading-normal{line-height:var(--leading-normal)}.leading-relaxed{line-height:var(--leading-relaxed)}.leading-loose{line-height:var(--leading-loose)}.font-normal{font-weight:var(--font-normal)}.font-medium{font-weight:var(--font-medium)}.font-semibold{font-weight:var(--font-semibold)}.font-bold{font-weight:var(--font-bold)}.font-extrabold{font-weight:var(--font-extrabold)}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-muted{color:var(--color-text-muted)}.text-inverse{color:var(--color-text-inverse)}.text-link{color:var(--color-text-link)}@media(min-width:320px){h1,.text-h1{font-size:clamp(2.25rem,5vw + 1rem,3rem)}h2,.text-h2{font-size:clamp(1.875rem,4vw + .5rem,2.25rem)}h3,.text-h3{font-size:clamp(1.5rem,3vw + .5rem,1.875rem)}h4,.text-h4{font-size:clamp(1.25rem,2vw + .5rem,1.5rem)}body{font-size:clamp(.875rem,1vw + .5rem,1rem)}}@media(min-width:1024px){h1,.text-h1{font-size:var(--heading-1)}h2,.text-h2{font-size:var(--heading-2)}h3,.text-h3{font-size:var(--heading-3)}h4,.text-h4{font-size:var(--heading-4)}h5,.text-h5{font-size:var(--heading-5)}h6,.text-h6{font-size:var(--heading-6)}body{font-size:var(--body-base)}}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.underline{text-decoration:underline}.no-underline{text-decoration:none}.line-through{text-decoration:line-through}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}:root{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}html{font-size:16px;scroll-behavior:smooth}body{margin:0;padding:0;min-height:100vh;font-family:var(--font-body);font-size:var(--body-base);line-height:var(--line-height-body);color:var(--color-text-primary);background-color:var(--color-bg-page);overflow-x:hidden}#root{min-height:100vh;display:flex;flex-direction:column}a{color:var(--color-text-link);text-decoration:none;transition:color var(--duration-fast) var(--ease-default)}a:hover{color:var(--color-text-link-hover)}a:focus{outline:2px solid var(--color-border-focus);outline-offset:2px;border-radius:var(--radius-sm)}a:focus:not(:focus-visible){outline:none}a:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;border-radius:var(--radius-sm)}button:focus,input:focus,textarea:focus,select:focus,a:focus,[tabindex]:focus{outline:2px solid var(--color-border-focus);outline-offset:2px}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-primary-light)}button:focus:not(:focus-visible),input:focus:not(:focus-visible),textarea:focus:not(:focus-visible),select:focus:not(:focus-visible),a:focus:not(:focus-visible),[tabindex]:focus:not(:focus-visible){outline:none;box-shadow:none}button{font-family:inherit;font-size:inherit;line-height:inherit;cursor:pointer;border:none;background:none;color:inherit}button:disabled{cursor:not-allowed;opacity:.6}input,textarea,select{font-family:inherit;font-size:inherit;line-height:inherit;color:inherit}img{max-width:100%;height:auto;display:block}img[width][height]{height:auto}code{font-family:var(--font-mono);font-size:.875em;background-color:var(--color-bg-card);padding:.2em .4em;border-radius:var(--radius-sm);border:1px solid var(--color-border-subtle)}pre{font-family:var(--font-mono);font-size:.875em;background-color:var(--color-bg-card);padding:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);overflow-x:auto;line-height:var(--leading-relaxed)}pre code{background:none;padding:0;border:none;border-radius:0}::selection{background-color:var(--color-primary);color:var(--color-text-inverse)}::-moz-selection{background-color:var(--color-primary);color:var(--color-text-inverse)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--color-bg-section)}::-webkit-scrollbar-thumb{background:var(--color-border-default);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-border-emphasis)}.blog-post{color:var(--color-text-primary)}.blog-post h1,.blog-post h2,.blog-post h3,.blog-post h4,.blog-post h5,.blog-post h6{margin-top:var(--space-8);margin-bottom:var(--space-4);color:var(--color-text-primary)}.blog-post h1:first-child,.blog-post h2:first-child,.blog-post h3:first-child{margin-top:0}.blog-post p{margin-bottom:var(--space-4);line-height:var(--leading-relaxed)}.blog-post ul,.blog-post ol{margin-bottom:var(--space-4);padding-left:var(--space-6);list-style:disc}.blog-post ol{list-style:decimal}.blog-post li{margin-bottom:var(--space-2);line-height:var(--leading-relaxed)}.blog-post a{color:var(--color-text-link);text-decoration:underline}.blog-post a:hover{color:var(--color-text-link-hover)}.blog-post pre{background-color:var(--color-bg-card);color:var(--color-text-primary);padding:var(--space-4);border-radius:var(--radius-md);overflow-x:auto;margin-bottom:var(--space-4);border:1px solid var(--color-border-subtle)}.blog-post code{background-color:var(--color-bg-card);padding:.2em .4em;border-radius:var(--radius-sm);font-size:.875em;border:1px solid var(--color-border-subtle)}.blog-post pre code{background:none;padding:0;border:none}.blog-post blockquote{border-left:4px solid var(--color-primary);padding-left:var(--space-4);margin:var(--space-6) 0;color:var(--color-text-secondary);font-style:italic}.blog-post img{max-width:100%;height:auto;border-radius:var(--radius-md);margin:var(--space-6) 0}.blog-post hr{border:none;border-top:1px solid var(--color-border-subtle);margin:var(--space-8) 0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.skip-to-main{position:absolute;top:-40px;left:0;background:var(--color-primary);color:var(--color-text-inverse);padding:var(--space-2) var(--space-4);text-decoration:none;z-index:var(--z-tooltip);border-radius:var(--radius-sm)}.skip-to-main:focus{top:var(--space-2);left:var(--space-2)}
