@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:100 900;src:url(../fonts/inter-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:100 900;src:url(../fonts/inter-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--color-bg-primary:#0f0f23;--color-bg-secondary:#1a1a2e;--color-bg-card:#16213e;--color-text-primary:#e6e6e6;--color-text-secondary:#a0a0a0;--color-text-muted:#6b6b6b;--color-accent:#4fc3f7;--color-accent-hover:#81d4fa;--color-border:#2a2a4a;--color-category-backend:#4caf50;--color-category-iot:#ff9800;--color-category-web:#2196f3;--color-category-tools:#9c27b0;--color-status-active:#4caf50;--color-status-active-bg:rgba(76,175,80,.15);--font-family-base:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:2rem;--font-size-4xl:2.5rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.25;--line-height-base:1.6;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-8:3rem;--space-10:4rem;--space-12:6rem;--container-max:1200px;--container-padding:var(--space-4);--radius-sm:0.25rem;--radius-md:0.5rem;--radius-lg:1rem;--radius-full:9999px;--shadow-sm:0 1px 2px rgba(0,0,0,.05);--shadow-md:0 4px 6px rgba(0,0,0,.1);--shadow-lg:0 10px 15px rgba(0,0,0,.1);--shadow-card:0 4px 20px rgba(0,0,0,.25);--transition-fast:150ms ease;--transition-base:250ms ease;--transition-slow:350ms ease;--filter-animation-duration:350ms;--filter-stagger-delay:30ms;--filter-easing:cubic-bezier(0.16,1,0.3,1);--focus-outline-width:2px;--focus-outline-offset:2px;--focus-outline-color:var(--color-accent);--focus-outline-color-high-contrast:hsla(0,0%,100%,.9);--z-base:0;--z-dropdown:100;--z-sticky:200;--z-fixed:300;--z-modal:400;--z-tooltip:500}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--color-bg-primary:#f8f9fa;--color-bg-secondary:#e9ecef;--color-bg-card:#fff;--color-text-primary:#1a1a2e;--color-text-secondary:#495057;--color-text-muted:#868e96;--color-accent:#0277bd;--color-accent-hover:#01579b;--color-border:#dee2e6;--color-category-backend:#2e7d32;--color-category-iot:#e65100;--color-category-web:#1565c0;--color-category-tools:#7b1fa2;--color-status-active:#2e7d32;--color-status-active-bg:rgba(46,125,50,.12);--focus-outline-color-high-contrast:rgba(15,15,35,.9);--shadow-sm:0 1px 3px rgba(0,0,0,.08);--shadow-md:0 4px 6px rgba(0,0,0,.1);--shadow-lg:0 10px 20px rgba(0,0,0,.12);--shadow-card:0 4px 20px rgba(0,0,0,.1)}}[data-theme=light]{--color-bg-primary:#f8f9fa;--color-bg-secondary:#e9ecef;--color-bg-card:#fff;--color-text-primary:#1a1a2e;--color-text-secondary:#495057;--color-text-muted:#868e96;--color-accent:#0277bd;--color-accent-hover:#01579b;--color-border:#dee2e6;--color-category-backend:#2e7d32;--color-category-iot:#e65100;--color-category-web:#1565c0;--color-category-tools:#7b1fa2;--color-status-active:#2e7d32;--color-status-active-bg:rgba(46,125,50,.12);--focus-outline-color-high-contrast:rgba(15,15,35,.9);--shadow-sm:0 1px 3px rgba(0,0,0,.08);--shadow-md:0 4px 6px rgba(0,0,0,.1);--shadow-lg:0 10px 20px rgba(0,0,0,.12);--shadow-card:0 4px 20px rgba(0,0,0,.1)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:100%;scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background-color:var(--color-bg-primary);color:var(--color-text-primary);font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-base);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}canvas,img,picture,svg,video{display:block;height:auto;max-width:100%}button,input,select,textarea{font:inherit}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-accent-hover)}a:focus-visible,button:focus-visible{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}ol,ul{list-style:none}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}button{background:none;border:none;cursor:pointer}.container{margin-inline:auto;max-width:var(--container-max);padding-inline:var(--container-padding);width:100%}.section{padding-block:var(--space-10)}.section__title{font-size:var(--font-size-2xl);margin-bottom:var(--space-6)}.skip-link{background:var(--color-accent);border-radius:var(--radius-md);color:var(--color-bg-primary);font-weight:var(--font-weight-medium);left:var(--space-4);padding:var(--space-2) var(--space-4);position:absolute;top:-100%;z-index:var(--z-tooltip)}.skip-link:focus{top:var(--space-4)}.link--external:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='%234fc3f7' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6M15 3h6v6M10 14 21 3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:inline-block;height:.75em;margin-left:.25em;opacity:.8;vertical-align:middle;width:.75em}.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0;white-space:nowrap}.text-center{text-align:center}.text-muted{color:var(--color-text-muted)}.font-medium{font-weight:var(--font-weight-medium)}.font-bold{font-weight:var(--font-weight-bold)}.btn{align-items:center;border:2px solid transparent;border-radius:var(--radius-md);cursor:pointer;display:inline-flex;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);justify-content:center;padding:var(--space-3) var(--space-5);transition:all var(--transition-base)}.btn--primary{background-color:var(--color-accent);color:var(--color-bg-primary)}.btn--primary:hover{background-color:var(--color-accent-hover);color:var(--color-bg-primary);transform:translateY(-2px)}.btn--secondary{background-color:transparent;border-color:var(--color-accent);color:var(--color-accent)}.btn--secondary:hover{background-color:var(--color-accent);color:var(--color-bg-primary)}.btn--primary:focus-visible{outline-color:var(--focus-outline-color-high-contrast)}.project-card{background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);display:flex;flex-direction:column;padding:var(--space-5);transition:transform var(--transition-base),box-shadow var(--transition-base),opacity var(--transition-base)}.project-card:hover{box-shadow:var(--shadow-card);transform:translateY(-4px)}.project-card__thumbnail{background-color:var(--color-bg-secondary);border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin:calc(var(--space-5)*-1);margin-bottom:var(--space-4);overflow:hidden}.project-card__thumbnail img{display:block;height:auto;transition:transform var(--transition-base);width:100%}.project-card:hover .project-card__thumbnail img{transform:scale(1.05)}.project-card__thumbnail img:not([src]),.project-card__thumbnail img[src=""]{display:none}.project-card__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--space-3)}.project-card__category{border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);letter-spacing:.05em;padding:var(--space-1) var(--space-2);text-transform:uppercase}.project-card[data-category=backend] .project-card__category{background-color:rgba(76,175,80,.15);color:var(--color-category-backend)}.project-card[data-category=iot] .project-card__category{background-color:rgba(255,152,0,.15);color:var(--color-category-iot)}.project-card[data-category=web] .project-card__category{background-color:rgba(33,150,243,.15);color:var(--color-category-web)}.project-card[data-category=tools] .project-card__category{background-color:rgba(156,39,176,.15);color:var(--color-category-tools)}.project-card__links{display:flex;gap:var(--space-2)}.project-card__link{align-items:center;border-radius:var(--radius-md);color:var(--color-text-secondary);display:flex;height:2rem;justify-content:center;transition:all var(--transition-fast);width:2rem}.project-card__link:hover{background-color:var(--color-bg-secondary);color:var(--color-accent)}.project-card__link:focus-visible{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.project-card__link svg{height:1.25rem;width:1.25rem}.project-card__title{color:var(--color-text-primary);font-size:var(--font-size-xl);margin-bottom:var(--space-2)}.project-card__description{color:var(--color-text-secondary);font-size:var(--font-size-sm);line-height:var(--line-height-base);margin-bottom:var(--space-4)}.project-card__tech{display:flex;flex-wrap:wrap;gap:var(--space-2)}.project-card__tech li{background-color:var(--color-bg-secondary);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2)}.project-card__footer,.project-card__tech li{color:var(--color-text-muted);font-size:var(--font-size-xs)}.project-card__footer{align-items:center;border-top:1px solid var(--color-border);display:flex;gap:var(--space-2);justify-content:space-between;margin-top:var(--space-4);padding-top:var(--space-3);transition:border-color var(--transition-base),color var(--transition-base)}.project-card__status{align-items:center;background-color:var(--color-status-active-bg);border-radius:var(--radius-full);color:var(--color-status-active);display:inline-flex;font-weight:var(--font-weight-medium);gap:var(--space-1);letter-spacing:.02em;padding:var(--space-1) var(--space-2);transition:background-color var(--transition-base),color var(--transition-base);white-space:nowrap}.project-card__status-dot{animation:status-pulse 2s ease-in-out infinite;background-color:currentColor;border-radius:var(--radius-full);height:6px;width:6px}@keyframes status-pulse{0%,to{opacity:1}50%{opacity:.4}}@media (prefers-reduced-motion:reduce){.project-card__status-dot{animation:none}}.skill-group{background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5)}.skill-group__title{color:var(--color-accent);font-size:var(--font-size-lg);margin-bottom:var(--space-4)}.skill-group__list li{border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);font-size:var(--font-size-sm);padding:var(--space-2) 0}.skill-group__list li:last-child{border-bottom:none}.contact__links{display:flex;flex-direction:column;gap:var(--space-4)}.contact__link{align-items:center;background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);display:inline-flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);transition:background-color var(--transition-fast)}.contact__link:hover{background-color:var(--color-bg-secondary);color:var(--color-accent)}.contact__link:focus-visible{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.contact__link svg{flex-shrink:0;height:1.25rem;width:1.25rem}.theme-toggle{align-items:center;background-color:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;display:flex;flex-shrink:0;height:2rem;justify-content:center;margin-left:var(--space-2);padding:0;position:relative;transition:color var(--transition-fast),background-color var(--transition-fast),border-color var(--transition-fast);width:2rem}.theme-toggle:hover{background-color:var(--color-bg-secondary);border-color:var(--color-accent);color:var(--color-accent)}.theme-toggle:focus-visible{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.theme-toggle__icon{height:1.25rem;position:absolute;transition:opacity var(--transition-base),transform var(--transition-base);width:1.25rem}.theme-toggle__icon--sun{opacity:1;transform:rotate(0deg)}.theme-toggle__icon--moon{opacity:0;transform:rotate(-90deg)}[data-theme=light] .theme-toggle__icon--sun{opacity:0;transform:rotate(90deg)}[data-theme=light] .theme-toggle__icon--moon{opacity:1;transform:rotate(0deg)}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) .theme-toggle__icon--sun{opacity:0;transform:rotate(90deg)}:root:not([data-theme=dark]) .theme-toggle__icon--moon{opacity:1;transform:rotate(0deg)}}.project-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:center;margin-bottom:var(--space-6)}.filter-btn{background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-full);color:var(--color-text-secondary);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);padding:var(--space-2) var(--space-4);transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.filter-btn:hover{background-color:var(--color-bg-card);color:var(--color-text-primary);transform:translateY(-1px)}.filter-btn:focus-visible{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.filter-btn--active:focus-visible{outline-color:var(--focus-outline-color-high-contrast)}.filter-btn--active{border-color:transparent;color:var(--color-bg-primary)}.filter-btn--active[data-filter=all]{background-color:var(--color-accent)}.filter-btn--active[data-filter=backend]{background-color:var(--color-category-backend)}.filter-btn--active[data-filter=iot]{background-color:var(--color-category-iot)}.filter-btn--active[data-filter=web]{background-color:var(--color-category-web)}.filter-btn--active[data-filter=tools]{background-color:var(--color-category-tools)}[data-animate]{opacity:0;transform:translateY(24px);transition:opacity .4s cubic-bezier(.16,1,.3,1),transform .4s cubic-bezier(.16,1,.3,1)}.project-card[data-animate],.skill-group[data-animate]{transition:background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base),opacity .4s cubic-bezier(.16,1,.3,1),transform .4s cubic-bezier(.16,1,.3,1)}[data-animate].is-visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){[data-animate]{opacity:1;transform:none;transition:none}}.project-card.project-card--filtering-out{opacity:0;pointer-events:none;transform:scale(.92);transition:opacity var(--filter-animation-duration) var(--filter-easing),transform var(--filter-animation-duration) var(--filter-easing)}.project-card.project-card--filtering-in{opacity:0;transform:scale(.92) translateY(12px);transition:none}.project-card.project-card--filtering-in.is-filtering{opacity:1;transform:scale(1) translateY(0);transition:opacity var(--filter-animation-duration) var(--filter-easing),transform var(--filter-animation-duration) var(--filter-easing)}.project-card.project-card--hidden{opacity:0;pointer-events:none;position:absolute;transform:scale(.92);visibility:hidden}@media (prefers-reduced-motion:reduce){.project-card.project-card--filtering-in,.project-card.project-card--filtering-in.is-filtering,.project-card.project-card--filtering-out{transition:none}}.error-page{align-items:center;display:flex;justify-content:center;min-height:calc(100vh - 200px);text-align:center}.error-page__content{align-items:center;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-8) var(--space-4)}.error-page__image{border-radius:var(--radius-lg);height:auto;max-width:280px}.error-page__title{color:var(--color-accent);font-size:clamp(4rem,15vw,8rem);font-weight:var(--font-weight-bold);line-height:1;margin:0}.error-page__message{color:var(--color-text-primary);font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);margin:0}.error-page__description{color:var(--color-text-secondary);font-size:var(--font-size-base);margin:0;max-width:400px}.error-page__button{margin-top:var(--space-4)}.btn,.contact__link,.project-card,.site-header,.skill-group,body{transition:background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base)}.site-header{background-color:var(--color-bg-primary);border-bottom:1px solid var(--color-border);padding:var(--space-4) 0;position:sticky;top:0;z-index:var(--z-sticky)}.nav{align-items:center;display:flex}.nav__list{display:flex;flex:1;gap:var(--space-3);justify-content:center;min-width:0}.nav__list a{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);padding:var(--space-2)}.nav__list a:hover{color:var(--color-accent)}.hero{align-items:center;display:flex;min-height:80vh;padding-block:var(--space-12);text-align:center}.hero__title{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-2)}.hero__subtitle{color:var(--color-accent);font-size:var(--font-size-xl);margin-bottom:var(--space-2)}.hero__tagline{color:var(--color-text-secondary);margin-bottom:var(--space-6);margin-inline:auto;max-width:600px}.hero__cta{display:flex;flex-wrap:wrap;gap:var(--space-4);justify-content:center}.about__content{margin-inline:auto;max-width:700px}.about__content p{color:var(--color-text-secondary);margin-bottom:var(--space-4)}.about__content p:last-child{margin-bottom:0}.projects__grid{column-count:1;column-gap:var(--space-5)}.projects__grid .project-card{break-inside:avoid;margin-bottom:var(--space-5)}.projects__more{margin-top:var(--space-8);text-align:center}.skills__grid{display:grid;gap:var(--space-5)}.contact__intro{color:var(--color-text-secondary);margin-bottom:var(--space-6)}.site-footer{border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--font-size-sm);padding:var(--space-6) 0;text-align:center}@media (min-width:37.5em){:root{--container-padding:var(--space-6)}.nav__list{gap:var(--space-6)}.hero__title{font-size:calc(var(--font-size-4xl)*1.25)}.projects__grid{column-count:2}.skills__grid{grid-template-columns:repeat(2,1fr)}.contact__links{flex-direction:row;flex-wrap:wrap;justify-content:center}}@media (min-width:56.25em){.hero{min-height:90vh}.projects__grid{column-count:3}.skills__grid{grid-template-columns:repeat(4,1fr)}}@media (min-width:75em){:root{--container-padding:var(--space-8)}}@media print{.hero__cta,.site-header,.skip-link{display:none}body{background:#fff}a,body{color:#000}a{text-decoration:underline}.contact__link,.project-card,.skill-group{background:#fff;border:1px solid #ccc}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}