.theme-switcher{display:inline-flex;align-items:center;gap:2px;padding:3px;background:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:999px;transition:background .2s ease,border-color .2s ease}.theme-switcher__btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:transparent;color:var(--color-text-muted);cursor:pointer;transition:background .2s ease,color .2s ease,transform .2s ease}.theme-switcher__btn:hover{background:var(--color-accent-soft);color:var(--color-accent)}.theme-switcher__btn.is-active{background:var(--color-accent);color:var(--color-accent-contrast);animation:themeBtnPop .25s ease}.theme-switcher__btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@keyframes themeBtnPop{0%{transform:scale(.85)}60%{transform:scale(1.1)}to{transform:scale(1)}}@media (max-width: 720px){.theme-switcher{margin-left:auto}.theme-switcher__btn{width:28px;height:28px}}.navbar{position:fixed;top:0;left:0;right:0;z-index:100;transition:background .3s ease,box-shadow .3s ease;background:#0f172a99;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.navbar--scrolled{background:#0f172af2;box-shadow:var(--shadow)}.navbar__inner{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;padding-bottom:1rem}.navbar__logo{font-weight:700;font-size:1.25rem;color:var(--color-accent);padding:.3rem .1rem;border-radius:var(--radius)}.navbar__nav{display:flex;gap:1.75rem}.navbar__nav a{color:#fff;font-weight:500;opacity:.85;transition:opacity .2s ease,color .2s ease;font-size:.95rem}.navbar__nav a:hover{color:var(--color-accent);opacity:1}.navbar__toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;padding:.5rem}.navbar__toggle span{display:block;width:26px;height:2px;background:var(--color-text);border-radius:1px}@media (max-width: 720px){.navbar__toggle{display:flex}.navbar__nav{position:absolute;top:100%;left:0;right:0;background:var(--color-bg-alt);flex-direction:column;gap:0;padding:0;max-height:0;overflow:hidden;transition:max-height .3s ease}.navbar__nav--open{max-height:400px;padding:1rem 0}.navbar__nav a{padding:.75rem 1.5rem}}.hero{min-height:100vh;display:flex;align-items:center;background:radial-gradient(circle at top right,var(--color-accent-soft) 0%,transparent 50%),var(--color-bg);padding-top:5rem}section.hero{background:radial-gradient(circle at top right,var(--color-accent-soft) 0%,transparent 50%),var(--color-bg)}.hero__content{max-width:800px}.hero__greeting{color:var(--color-accent);font-size:1.1rem;margin:0 0 .5rem;font-weight:500}.hero__name{font-size:clamp(2.5rem,6vw,4rem);line-height:1.1;margin:0 0 .5rem;display:inline-block;white-space:nowrap;overflow:hidden;border-right:3px solid var(--color-accent);width:0;animation:typing 2.5s steps(26) .5s forwards,blink .75s step-end infinite}@keyframes typing{0%{width:0}to{width:100%}}@keyframes blink{0%,to{border-color:transparent}50%{border-color:var(--color-accent)}}.hero__role{font-size:clamp(1.25rem,3vw,1.75rem);color:var(--color-text-muted);font-weight:400;margin:0 0 1.5rem}.hero__intro{font-size:1.05rem;color:var(--color-text-muted);max-width:600px;margin:0 0 2rem}.hero__buttons{display:flex;gap:1rem;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border-radius:var(--radius);font-weight:600;font-size:.95rem;transition:all .2s ease;border:2px solid transparent}.btn--primary{background:var(--color-accent);color:var(--color-accent-contrast)}.btn--primary:hover{background:var(--color-accent-hover);color:var(--color-accent-contrast);transform:translateY(-2px)}.btn--outline{background:transparent;border-color:var(--color-accent);color:var(--color-accent)}.btn--outline:hover{background:var(--color-accent-soft);transform:translateY(-2px)}.btn--ghost{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn--ghost:hover{background:var(--color-surface);border-color:var(--color-accent);color:var(--color-accent);transform:translateY(-2px)}.about__grid{display:grid;grid-template-columns:1.5fr 1fr;gap:3rem;align-items:start}.about__text p{color:var(--color-text-muted);font-size:1.05rem;margin:0 0 1rem}.about__intro{display:flex;gap:1.5rem;align-items:flex-start;margin-bottom:1rem}.about__photo{width:160px;height:200px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;transition:transform .3s ease,box-shadow .3s ease}.about__photo:hover{transform:translateY(-3px);box-shadow:var(--shadow)}@media (max-width: 600px){.about__intro{flex-direction:column;align-items:center;text-align:center}.about__photo{width:180px;height:220px}}.about__sidebar{display:flex;flex-direction:column;gap:1.5rem}.info-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem}.info-card h3{font-size:1.1rem;margin:0 0 1rem;color:var(--color-accent)}.info-card ul{list-style:none;padding:0;margin:0}.info-card li{display:flex;justify-content:space-between;padding:.4rem 0;border-bottom:1px solid var(--color-border);color:var(--color-text-muted);font-size:.95rem}.info-card li:last-child{border-bottom:none}.info-card li strong{color:var(--color-text)}.cert-list li{display:block;font-size:.9rem;line-height:1.5;padding:.5rem 0}@media (max-width: 800px){.about__grid{grid-template-columns:1fr;gap:2rem}}.skills__intro{color:var(--color-text-muted);font-size:1.05rem;margin:-.5rem 0 2rem;max-width:600px}.marquees{display:flex;flex-direction:column;gap:1.5rem;max-width:900px;margin:1rem auto 0;padding:2rem 0;background:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;mask-image:linear-gradient(to right,transparent 0%,black 6%,black 94%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0%,black 6%,black 94%,transparent 100%)}.marquee{overflow:hidden;width:100%}.marquee__track{display:flex;gap:1.5rem;width:max-content;animation:marquee-left 28s linear infinite}@keyframes marquee-left{0%{transform:translate(0)}to{transform:translate(-33.3333%)}}@keyframes marquee-right{0%{transform:translate(-33.3333%)}to{transform:translate(0)}}.marquee--right .marquee__track{animation-name:marquee-right}.marquee:hover .marquee__track{animation-play-state:paused}@media (prefers-reduced-motion: reduce){.marquee__track{animation:none}}.skill-chip{display:inline-flex;align-items:center;gap:.55rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.55rem 1.1rem;font-size:.95rem;color:var(--color-text);white-space:nowrap;cursor:pointer;font-family:inherit;transition:border-color .2s ease,transform .2s ease,background .2s ease}.skill-chip:hover{border-color:var(--color-accent);background:var(--color-accent-soft);transform:translateY(-2px)}.skill-chip:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.skill-chip__icon{width:18px;height:18px;object-fit:contain;flex-shrink:0}.skill-chip__icon[src*=simple-icons]{filter:invert(1) brightness(2)}.muted{color:var(--color-text-muted)}.error{color:#f87171}.skills-modal__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;padding:1.5rem;animation:modalFadeIn .9s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.skills-modal{position:relative;background:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.6rem 1.75rem;max-width:900px;width:100%;max-height:95vh;overflow-y:auto;box-shadow:0 20px 60px #00000080;animation:modalSlideIn .25s ease;line-height:.5}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.skills-modal__title{margin:0 0 1.1rem;font-size:1.3rem;color:var(--color-accent)}.skills-modal__close{position:absolute;top:1rem;right:1rem;width:36px;height:36px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}.skills-modal__close:hover{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast)}.skills-modal__sections{display:flex;flex-direction:column;gap:.9rem}.skills-modal__section{padding-bottom:.75rem;border-bottom:2px solid var(--color-border)}.skills-modal__section:last-child{border-bottom:none;padding-bottom:5}.skills-modal__section h4{margin:0 0 .55rem;font-size:1.45rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--color-accent)}.skills-modal__row{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.6rem 1.25rem}.skills-modal__item{display:inline-flex;align-items:center;gap:.6rem}.skills-modal__icon{width:18px;height:18px;object-fit:contain;flex-shrink:0}.skills-modal__icon[src*=simple-icons]{filter:invert(1) brightness(2)}.skills-modal__item-name{font-size:.85rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}@media (max-width: 500px){.skills-modal{padding:1.5rem}.skills-modal__section h4{font-size:1.15rem}.skills-modal__row{gap:1rem 1.25rem}.skills-modal__icon{width:18px;height:18px}}.timeline{list-style:none;padding:0;margin:0;position:relative}.timeline:before{content:"";position:absolute;left:11px;top:0;bottom:0;width:2px;background:var(--color-border)}.timeline__item{position:relative;padding:0 0 2rem 2.5rem}.timeline__item:last-child{padding-bottom:0}.timeline__marker{position:absolute;left:4px;top:6px;width:16px;height:16px;border-radius:50%;background:var(--color-accent);border:3px solid var(--color-bg);box-shadow:0 0 0 2px var(--color-accent)}.timeline__period{color:var(--color-accent);font-size:.85rem;font-weight:500;letter-spacing:.04em}.timeline__content h3{font-size:1.15rem;margin:.25rem 0}.timeline__company{color:var(--color-text);font-weight:500;margin:0 0 .5rem}.timeline__desc{color:var(--color-text-muted);margin:0;font-size:.95rem}.projects__carousel{position:relative;padding:0 60px}.projects__grid{display:flex;gap:1.5rem;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:.25rem 0 1rem;scrollbar-width:none}.projects__grid::-webkit-scrollbar{display:none}.project-card{flex:0 0 280px;scroll-snap-align:start;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;display:flex;flex-direction:column;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.project-card{cursor:pointer}.project-card:hover{transform:translateY(-4px);border-color:var(--color-accent);box-shadow:var(--shadow)}.project-card:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-card__more{margin-top:auto;color:var(--color-accent);font-size:.9rem;font-weight:600;align-self:flex-end}.project-card h3{margin:0 0 .75rem;font-size:1.2rem}.project-card__desc{color:var(--color-text-muted);font-size:.95rem;margin:0 0 1rem;display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;min-height:6.08rem}.project-card__tags{list-style:none;padding:0;margin:0 0 1rem;display:flex;flex-wrap:wrap;gap:.4rem}.project-card__tags li{background:var(--color-accent-soft);color:var(--color-accent);font-size:.8rem;padding:.25rem .6rem;border-radius:999px;display:inline-flex;align-items:center;gap:.35rem}.project-card__tag-icon{width:14px;height:14px;object-fit:contain;flex-shrink:0}.project-card__tag-icon[src*=simple-icons]{filter:invert(1) brightness(2)}.project-card__links{display:flex;gap:1rem}.project-card__links a{font-size:.9rem;font-weight:500}.carousel__arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:44px;height:44px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow);transition:background .2s ease,color .2s ease,border-color .2s ease,opacity .2s ease}.carousel__arrow:hover:not(:disabled){background:var(--color-accent);color:var(--color-accent-contrast);border-color:var(--color-accent)}.carousel__arrow:disabled{opacity:.3;cursor:not-allowed}.carousel__arrow--left{left:8px}.carousel__arrow--right{right:8px}@media (max-width: 600px){.projects__carousel{padding:0 50px}.project-card{flex:0 0 240px}}.project-modal__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;padding:1.5rem;animation:pmFadeIn .2s ease}@keyframes pmFadeIn{0%{opacity:0}to{opacity:1}}.project-modal{position:relative;background:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:var(--radius);max-width:720px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000080;animation:pmSlideIn .25s ease;line-height:1.5}@keyframes pmSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.project-modal__close{position:absolute;top:1rem;right:1rem;z-index:3;width:36px;height:36px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}.project-modal__close:hover{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast)}.project-modal__media{width:100%;height:240px;background:var(--color-surface);overflow:hidden;display:flex;align-items:center;justify-content:center}.project-modal__media img{width:100%;height:100%;object-fit:cover;display:block}.project-modal__placeholder{width:100%;height:100%;background:linear-gradient(135deg,var(--color-accent-soft) 0%,var(--color-bg-alt) 100%);display:flex;align-items:center;justify-content:center}.project-modal__placeholder span{font-size:4rem;font-weight:800;letter-spacing:.05em;color:var(--color-accent);opacity:.5}.project-modal__body{padding:1.75rem}.project-modal__title{margin:0 0 .75rem;font-size:1.7rem;color:var(--color-accent)}.project-modal__description{margin:0 0 1.5rem;color:var(--color-text)}.project-modal__subtitle{margin:0 0 .75rem;font-size:.85rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.project-modal__techs{list-style:none;padding:0;margin:0 0 1.75rem;display:flex;flex-wrap:wrap;gap:.5rem}.project-modal__techs li{display:inline-flex;align-items:center;gap:.4rem;background:var(--color-accent-soft);color:var(--color-accent);font-size:.85rem;padding:.35rem .75rem;border-radius:999px}.project-modal__tech-icon{width:16px;height:16px;object-fit:contain;flex-shrink:0}.project-modal__tech-icon[src*=simple-icons]{filter:invert(1) brightness(2)}.project-modal__actions{display:flex;gap:.75rem;flex-wrap:wrap}.project-modal__actions .btn{flex:1 1 auto;justify-content:center}.project-modal__actions .btn[disabled]{opacity:.5;cursor:not-allowed}@media (max-width: 500px){.project-modal__media{height:180px}.project-modal__body{padding:1.25rem}.project-modal__title{font-size:1.4rem}.project-modal__actions .btn{flex:1 1 100%}}.contact__inner{display:grid;grid-template-columns:1fr 1.2fr;gap:3rem;align-items:start}.contact__info p{color:var(--color-text-muted);margin:0 0 1.5rem}.contact__list{list-style:none;padding:0;margin:0}.contact__list li{padding:.5rem 0;color:var(--color-text-muted);font-size:.95rem}.contact__list strong{color:var(--color-text);margin-right:.4rem}.contact__map{position:relative;margin-top:1.5rem;width:100%;height:240px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--color-border);background:var(--color-bg-alt);box-shadow:var(--shadow)}.contact__map iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}html.dark .contact__map iframe,html.classic .contact__map iframe{filter:brightness(.9) contrast(.95)}.contact__form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;display:flex;flex-direction:column;gap:1rem;margin-top:7.8rem}.contact__form label{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;color:var(--color-text-muted)}.contact__form input,.contact__form textarea{background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);padding:.75rem;font-family:inherit;font-size:.95rem;resize:vertical;transition:border-color .2s ease}.contact__form input:focus,.contact__form textarea:focus{outline:none;border-color:var(--color-accent)}.contact__form button[disabled]{opacity:.6;cursor:not-allowed}.contact__status{margin:0;padding:.75rem;border-radius:6px;font-size:.9rem;text-align:center}.contact__status--success{background:#22c55e26;color:#4ade80}.contact__status--error{background:#f8717126;color:#f87171}.contact__status--loading{background:#94a3b826;color:var(--color-text-muted)}.contact__link{color:var(--color-accent, #38bdf8);text-decoration-thickness:1px;transition:all .2s ease}.contact__link:hover{text-decoration-thickness:2px;opacity:.85}@media (max-width: 800px){.contact__inner{grid-template-columns:1fr;gap:2rem}}.footer{background:var(--color-bg-alt);padding:2rem 0;border-top:1px solid var(--color-border)}.footer__inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.footer p{color:var(--color-text-muted);font-size:.9rem;margin:0}.footer__links{display:flex;gap:1.5rem;font-size:.9rem}:root{--color-bg: #FAFAF7;--color-bg-alt: #F5F5F2;--color-surface: #FFFFFF;--color-border: #E7E5E4;--color-text: #1C1917;--color-text-muted: #57534E;--color-accent: #DC4633;--color-accent-hover: #B83A2B;--color-accent-soft: rgba(220, 70, 51, .1);--color-accent-ring: rgba(220, 70, 51, .18);--color-accent-contrast: #FFFFFF;--max-width: 1100px;--radius: 10px;--shadow: 0 6px 24px rgba(28, 25, 23, .08);--shadow-lg: 0 18px 48px rgba(28, 25, 23, .12);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.6;color-scheme:light}@media (prefers-color-scheme: dark){:root{--color-bg: #18181B;--color-bg-alt: #1F1F23;--color-surface: #27272A;--color-border: #3F3F46;--color-text: #FAFAF9;--color-text-muted: #A1A1AA;--color-accent: #E85D49;--color-accent-hover: #DC4633;--color-accent-soft: rgba(232, 93, 73, .12);--color-accent-ring: rgba(232, 93, 73, .22);--color-accent-contrast: #18181B;--shadow: 0 8px 24px rgba(0, 0, 0, .35);--shadow-lg: 0 22px 48px rgba(0, 0, 0, .5);color-scheme:dark}}html.dark{--color-bg: #18181B;--color-bg-alt: #1F1F23;--color-surface: #27272A;--color-border: #3F3F46;--color-text: #FAFAF9;--color-text-muted: #A1A1AA;--color-accent: #E85D49;--color-accent-hover: #DC4633;--color-accent-soft: rgba(232, 93, 73, .12);--color-accent-ring: rgba(232, 93, 73, .22);--color-accent-contrast: #18181B;--shadow: 0 8px 24px rgba(0, 0, 0, .35);--shadow-lg: 0 22px 48px rgba(0, 0, 0, .5);color-scheme:dark}html.classic{--color-bg: #0F172A;--color-bg-alt: #1E293B;--color-surface: #1E293B;--color-border: #334155;--color-text: #E2E8F0;--color-text-muted: #94A3B8;--color-accent: #38BDF8;--color-accent-hover: #0EA5E9;--color-accent-soft: rgba(56, 189, 248, .1);--color-accent-ring: rgba(56, 189, 248, .18);--color-accent-contrast: #0F172A;--shadow: 0 4px 12px rgba(0, 0, 0, .25);--shadow-lg: 0 18px 48px rgba(0, 0, 0, .45);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--color-bg);color:var(--color-text);scroll-behavior:smooth;transition:background-color .4s ease,color .4s ease}a{color:var(--color-accent);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-accent-hover)}h1,h2,h3{color:var(--color-text);margin:0 0 .5em;letter-spacing:-.01em}h2{font-size:2rem;margin-bottom:1.5rem;position:relative;padding-bottom:.5rem}h2:after{content:"";position:absolute;left:0;bottom:0;width:56px;height:3px;background:var(--color-accent);border-radius:2px}button{font-family:inherit;cursor:pointer}.container{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem}section{padding:5rem 0;transition:background-color .4s ease}section:nth-of-type(2n){background:var(--color-bg-alt)}
