:root{--color-primary:#0f172a;--color-primary-light:#1e293b;--color-accent:#2563eb;--color-accent-hover:#1d4ed8;--color-accent-light:#dbeafe;--color-text:#0f172a;--color-text-light:#64748b;--color-text-inverse:#fff;--color-bg:#fff;--color-bg-alt:#f8fafc;--color-border:#cbd5e1;--color-success:#047857;--font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--font-weight-regular:400;--font-weight-semibold:600;--font-weight-bold:700;--spacing-xs:0.5rem;--spacing-sm:1rem;--spacing-md:1.5rem;--spacing-lg:2rem;--spacing-xl:3rem;--spacing-2xl:4rem;--max-width:1200px;--border-radius:8px;--transition:all 0.3s ease}@media (prefers-color-scheme:dark){:root{--color-primary:#1e293b;--color-primary-light:#334155;--color-accent:#60a5fa;--color-accent-hover:#3b82f6;--color-accent-light:#2563eb;--color-text:#f1f5f9;--color-text-light:#94a3b8;--color-text-card-secondary:#cbd5e1;--color-text-inverse:#0f172a;--color-bg:#0f172a;--color-bg-alt:#334155;--color-border:#94a3b8;--color-success:#34d399}}*,:after,:before{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{font-family:var(--font-family);font-weight:var(--font-weight-regular);color:var(--color-text);background-color:var(--color-bg);line-height:1.6;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-bold);line-height:1.2;margin-bottom:var(--spacing-sm)}h1{font-size:clamp(2rem,5vw,3.5rem)}h2{font-size:clamp(1.75rem,4vw,2.5rem)}h3{font-size:clamp(1.25rem,3vw,1.75rem)}p{margin-bottom:var(--spacing-sm);color:var(--color-text-light)}a{color:var(--color-accent);text-decoration:none;transition:color .3s ease,outline .2s ease,outline-offset .2s ease}a:hover{color:var(--color-accent-hover);text-decoration:underline}a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.main{min-height:100vh}.container{max-width:var(--max-width);margin:0 auto;padding:var(--spacing-2xl) var(--spacing-md)}.header{position:fixed;top:0;left:0;width:100%;background-color:var(--color-bg);z-index:1000;transition:box-shadow .3s ease}.header.scrolled{box-shadow:0 2px 8px rgba(15,23,42,.1)}.nav{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);height:70px}.logo{font-size:1.5rem;font-weight:var(--font-weight-bold);color:var(--color-primary);transition:color .3s ease,outline .2s ease,outline-offset .2s ease;z-index:1001}.logo,.logo:hover{text-decoration:none}.logo:hover{color:var(--color-accent)}.logo:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}.nav-menu{display:flex;gap:var(--spacing-lg);align-items:center}.nav-item,.nav-menu{list-style:none}.nav-link{color:var(--color-text);font-weight:var(--font-weight-semibold);font-size:1rem;padding:.5rem 0;position:relative;transition:color .3s ease,outline .2s ease,outline-offset .2s ease}.nav-link:hover{color:var(--color-accent);text-decoration:none}.nav-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px;border-radius:4px}.nav-link:after{content:"";position:absolute;bottom:0;left:0;width:0;height:2px;background-color:var(--color-accent);transition:width .3s ease}.nav-link:hover:after{width:100%}.hamburger{display:none;flex-direction:column;gap:var(--spacing-xs);background:none;border:none;cursor:pointer;padding:.5rem;z-index:1001;transition:outline .2s ease,outline-offset .2s ease,transform .3s ease}.hamburger:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px;border-radius:4px}.hamburger-line{width:25px;height:3px;background-color:var(--color-primary);border-radius:3px;transition:all .3s ease}.hamburger.active .hamburger-line:first-child{transform:rotate(45deg) translate(7px,7px)}.hamburger.active .hamburger-line:nth-child(2){opacity:0}.hamburger.active .hamburger-line:nth-child(3){transform:rotate(-45deg) translate(7px,-7px)}.main{padding-top:70px}.hero{min-height:calc(100vh - 70px);display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-bg),var(--color-bg-alt));padding:var(--spacing-2xl) var(--spacing-md);text-align:center}.hero-content{max-width:800px;margin:0 auto}.hero-title{color:var(--color-primary);margin-bottom:var(--spacing-md);font-size:clamp(2.5rem,6vw,4rem)}.hero-subtitle{font-size:clamp(1.125rem,2vw,1.5rem);color:var(--color-text-light);margin-bottom:var(--spacing-xl);line-height:1.6;max-width:600px;margin-left:auto;margin-right:auto}.hero-buttons{display:flex;gap:var(--spacing-md);justify-content:center;flex-wrap:wrap}.card{position:relative;background-color:var(--color-bg);border-radius:var(--border-radius);box-shadow:0 2px 8px rgba(15,23,42,.08);transition:transform .3s ease,box-shadow .3s ease}.card:focus-within{transform:translateY(-4px);box-shadow:0 8px 16px rgba(15,23,42,.12)}.card:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:0 8px 16px rgba(15,23,42,.12);opacity:0;transition:opacity .3s ease;pointer-events:none;border-radius:var(--border-radius);z-index:-1}.card:hover{transform:translateY(-4px)}.card:hover:after{opacity:1}.btn{position:relative;display:inline-block;padding:1rem 2rem;font-size:1rem;font-weight:var(--font-weight-semibold);text-align:center;text-decoration:none;border-radius:var(--border-radius);cursor:pointer;transition:transform .3s ease,background-color .3s ease,color .3s ease,border-color .3s ease,outline .2s ease,outline-offset .2s ease;border:2px solid transparent;max-width:100%}.btn:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:var(--border-radius);opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:-1}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}.btn:disabled{opacity:.6;cursor:not-allowed}.btn:disabled,.btn:disabled:hover{transform:none}.btn-primary{background-color:var(--color-accent);color:var(--color-text-inverse);border-color:var(--color-accent)}.btn-primary:disabled,.btn-primary:disabled:hover{background-color:var(--color-text-light);border-color:var(--color-text-light);color:var(--color-text-inverse)}.btn-primary:disabled:hover{transform:none}.btn-primary:disabled:hover:after{opacity:0}.btn-primary:after{box-shadow:0 4px 12px rgba(59,130,246,.3)}.btn-primary:hover{background-color:var(--color-accent-hover);border-color:var(--color-accent-hover);color:var(--color-text-inverse);transform:translateY(-2px)}.btn-primary:hover:after{opacity:1}.btn-secondary{background-color:transparent;color:var(--color-accent);border-color:var(--color-accent)}.btn-secondary:after{box-shadow:0 4px 12px rgba(59,130,246,.2)}.btn-secondary:hover{background-color:var(--color-accent);color:var(--color-text-inverse);transform:translateY(-2px)}.btn-secondary:hover:after{opacity:1}.about{background-color:var(--color-bg-alt)}.section-title{text-align:center;color:var(--color-primary);margin-bottom:var(--spacing-xl)}.team-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-xl);max-width:1000px;margin:0 auto}.team-card{padding:var(--spacing-xl)}.team-card-header{text-align:center}.team-card-header,.team-photo{margin-bottom:var(--spacing-md)}.team-photo{width:120px;height:120px;border-radius:50%;object-fit:cover;border:4px solid var(--color-accent-light)}.team-name{color:var(--color-primary);margin-bottom:var(--spacing-xs);font-size:1.5rem}.team-role{color:var(--color-accent);font-weight:var(--font-weight-semibold);font-size:1rem}.team-bio,.team-role{margin-bottom:var(--spacing-md)}.team-bio{color:var(--color-text-light);line-height:1.7;text-align:left}.team-highlights{list-style:none;padding:0;margin-bottom:var(--spacing-md)}.team-highlights li{color:var(--color-text);padding:var(--spacing-xs) 0;font-size:.95rem;line-height:1.6}.team-links{display:flex;gap:var(--spacing-md);justify-content:center;padding-top:var(--spacing-md);border-top:1px solid var(--color-border)}.team-link{color:var(--color-accent);font-weight:var(--font-weight-semibold);padding:var(--spacing-xs) var(--spacing-sm);border-radius:4px;transition:background-color .3s ease,color .3s ease,transform .3s ease,outline .2s ease,outline-offset .2s ease}.team-link:hover{background-color:var(--color-accent-light);color:var(--color-accent-hover);transform:translateY(-2px)}.team-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.services-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-lg);max-width:1000px;margin:0 auto}.service-card{padding:var(--spacing-xl);text-align:center}.service-icon{font-size:3rem;margin-bottom:var(--spacing-md)}.service-title{color:var(--color-primary);margin-bottom:var(--spacing-sm);font-size:1.5rem}.service-description{color:var(--color-text-light);line-height:1.7;margin-bottom:0}.technologies{background-color:var(--color-bg-alt)}.tech-category{margin-bottom:var(--spacing-xl)}.tech-category:last-child{margin-bottom:0}.tech-category-title{color:var(--color-primary);font-size:1.25rem;margin-bottom:var(--spacing-md);text-align:center;font-family:var(--font-family)!important}.tech-grid{display:grid;grid-template-columns:repeat(auto-fit,150px);gap:var(--spacing-md);justify-content:center}.tech-badge{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-xs);padding:var(--spacing-md);width:150px;height:150px;transition:outline .2s ease,outline-offset .2s ease,box-shadow .2s ease}.tech-badge i{font-size:2.5rem;filter:grayscale(100%);opacity:.7;transition:filter .3s ease,opacity .3s ease}.tech-badge:focus-visible i,.tech-badge:hover i{filter:grayscale(0);opacity:1}.tech-badge:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px;box-shadow:0 0 0 3px rgba(59,130,246,.2)}.tech-icon-emoji{font-size:2.5rem;filter:grayscale(100%);opacity:.7;transition:filter .3s ease,opacity .3s ease}.tech-badge:focus-visible .tech-icon-emoji,.tech-badge:hover .tech-icon-emoji{filter:grayscale(0);opacity:1}.tech-name{font-size:.8rem;color:var(--color-text);font-weight:var(--font-weight-semibold);text-align:center;line-height:1.2}.tech-name,.technologies,.technologies *{font-family:var(--font-family)!important}.technologies i[class*=devicon]{font-family:devicon!important}.devicon-loading .tech-badge i{opacity:0}.devicon-loaded .tech-badge i{opacity:.7;animation:a .3s ease-in}.devicon-loaded .tech-badge:focus-visible i,.devicon-loaded .tech-badge:hover i{opacity:1}@keyframes a{0%{opacity:0;transform:scale(.9)}to{opacity:.7;transform:scale(1)}}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--spacing-xl);max-width:1200px;margin:0 auto}.project-card{overflow:hidden;display:flex;flex-direction:column}.project-card:after{z-index:0}.project-image{position:relative;width:100%;height:250px;overflow:hidden;z-index:1}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.project-card:focus-within .project-image img,.project-card:hover .project-image img{transform:scale(1.05)}.project-status{position:absolute;top:var(--spacing-sm);right:var(--spacing-sm);background-color:var(--color-success);color:var(--color-text-inverse);padding:var(--spacing-xs) var(--spacing-sm);border-radius:4px;font-size:.75rem;font-weight:var(--font-weight-semibold)}.project-status-dev{background-color:var(--color-accent)}.project-content{position:relative;padding:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-sm);flex-grow:1;z-index:1}.project-title{color:var(--color-primary);font-size:1.5rem;margin-bottom:0}.project-description{color:var(--color-text-light);line-height:1.7;margin-bottom:0}.project-tags{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);margin-top:auto;justify-content:center}.project-tag{background-color:var(--color-bg-alt);color:var(--color-text);padding:var(--spacing-xs) var(--spacing-sm);border-radius:4px;font-size:.75rem;font-weight:var(--font-weight-semibold)}.project-card-cta .project-content{text-align:center}.project-card-cta .btn{margin-top:auto;align-self:center}.contact{background-color:var(--color-bg-alt)}.contact-subtitle{text-align:center;color:var(--color-text-light);font-size:1.125rem;margin-bottom:var(--spacing-2xl);max-width:600px;margin-left:auto;margin-right:auto}.contact-form{background-color:var(--color-bg);padding:var(--spacing-2xl);border-radius:var(--border-radius);box-shadow:0 2px 8px rgba(15,23,42,.08);max-width:800px;margin:0 auto}.form-group{margin-bottom:var(--spacing-md)}.form-label{display:block;color:var(--color-text);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-xs);font-size:.875rem}.form-input{width:100%;padding:var(--spacing-sm);border:2px solid var(--color-border);border-radius:var(--border-radius);font-family:var(--font-family);font-size:1rem;color:var(--color-text);transition:border-color .3s ease,box-shadow .3s ease}.form-input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px rgba(59,130,246,.1)}.form-input[aria-invalid=true]{border-color:#ef4444}.form-input[aria-invalid=true]:focus{border-color:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.1)}.form-error{color:#ef4444;min-height:1.25rem;font-weight:var(--font-weight-semibold)}.form-error,.form-help-text{display:block;font-size:.875rem;margin-top:var(--spacing-xs)}.form-help-text{color:var(--color-text-light);font-style:italic}select.form-input:focus{outline:3px solid var(--color-accent);outline-offset:2px;box-shadow:0 0 0 3px rgba(59,130,246,.2)}.form-textarea{resize:vertical;min-height:120px}.contact-form .btn{width:100%;margin-top:var(--spacing-sm)}.btn-loading{position:relative;pointer-events:none}.btn-loading .btn-text{opacity:0}.btn-spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:20px;height:20px;border:3px solid hsla(0,0%,100%,.3);border-top-color:var(--color-text-inverse);border-radius:50%;animation:b .8s linear infinite}@keyframes b{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}@media (prefers-color-scheme:dark){.btn-spinner{border-color:rgba(15,23,42,.3);border-top-color:var(--color-text-inverse)}}@media (prefers-color-scheme:dark){.project-image img,.team-photo{filter:brightness(.9)}.team-photo{border:2px solid var(--color-border)}.project-card:focus-within .project-image img,.project-card:hover .project-image img{filter:brightness(.95)}img[src*=og-image]{filter:brightness(.9)}}@media (prefers-color-scheme:dark){.hamburger-line{background-color:var(--color-text)}.logo{color:var(--color-text)}.logo:hover{color:var(--color-accent)}.hero-title{color:var(--color-text)!important}.team-name,.team-role{color:var(--color-text)}.team-bio{color:#a8b8cf}.team-link:hover{color:var(--color-text)!important}.card{background-color:var(--color-primary);border:1px solid var(--color-border);box-shadow:0 2px 8px rgba(0,0,0,.3)}.card:hover{border-color:var(--color-accent)}.card:after,.card:hover{box-shadow:0 8px 16px rgba(0,0,0,.4)}.tech-category-title,.tech-name{color:var(--color-text)}.tech-badge{background-color:var(--color-bg-alt);border:1px solid var(--color-border)}.tech-badge:hover{border-color:var(--color-accent)}.project-card{background-color:var(--color-bg-alt);border:1px solid var(--color-border)}.project-title{color:var(--color-text)}.project-description{color:var(--color-text-card-secondary)!important}.project-tag{background-color:var(--color-primary-light);color:var(--color-text);border:1px solid var(--color-border)}.form-input{background-color:var(--color-bg-alt);color:var(--color-text);border-color:var(--color-border)}.footer-logo{color:var(--color-text)!important}.footer-tagline{color:var(--color-text-light)!important}.footer-member-name,.footer-text,.footer-title{color:var(--color-text)!important}.footer-link{color:var(--color-text-light)!important}.footer-email:hover,.footer-link:hover{color:var(--color-accent)!important}.footer-copyright{color:var(--color-text-light)!important}.footer-bottom{border-top-color:var(--color-border)}.service-card{background-color:var(--color-bg-alt);border:1px solid var(--color-border)}.service-card:hover{border-color:var(--color-accent)}.service-title{color:var(--color-text)}.service-description{color:var(--color-text-card-secondary)!important}.section-title{color:var(--color-text)}.section-subtitle{color:var(--color-text-light)}}.footer{background-color:var(--color-primary);color:var(--color-text-inverse);padding:var(--spacing-2xl) 0 var(--spacing-md)}.footer-content{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--spacing-2xl);margin-bottom:var(--spacing-xl)}.footer-brand{display:flex;flex-direction:column;gap:var(--spacing-sm)}.footer-logo{font-size:1.75rem;font-weight:var(--font-weight-bold)}.footer-logo,.footer-tagline{color:var(--color-text-inverse);margin-bottom:0}.footer-tagline{opacity:.8;font-size:1rem}.footer-title{font-size:1.125rem;font-weight:var(--font-weight-semibold);color:var(--color-text-inverse);margin-bottom:var(--spacing-md)}.footer-team{gap:var(--spacing-md)}.footer-member,.footer-team{display:flex;flex-direction:column}.footer-member{gap:var(--spacing-xs)}.footer-member-name{font-weight:var(--font-weight-semibold);margin-bottom:0}.footer-link,.footer-member-name{color:var(--color-text-inverse);font-size:.875rem}.footer-link{opacity:.8;transition:opacity .3s ease;text-decoration:none}.footer-link:hover{opacity:1;color:var(--color-accent-light);text-decoration:underline}.footer-contact{display:flex;flex-direction:column}.footer-contact-item{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-xs)}.footer-icon{font-size:1.25rem;flex-shrink:0}.footer-text{color:var(--color-text-inverse);opacity:.8;font-size:.875rem;line-height:1.6;margin-bottom:0}.footer-address{font-style:normal}.footer-email{text-decoration:none;transition:opacity .3s ease}.footer-email:hover{opacity:1;text-decoration:underline}.footer-bottom{padding-top:var(--spacing-xl);border-top:1px solid hsla(0,0%,100%,.1);text-align:center}.footer-copyright{color:var(--color-text-inverse);opacity:.7;font-size:.875rem;margin-bottom:0}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-100px;left:0;background:var(--color-accent);color:var(--color-text-inverse);padding:var(--spacing-sm) var(--spacing-md);text-decoration:none;font-weight:var(--font-weight-semibold);font-size:1rem;z-index:10000;border-radius:0 0 var(--border-radius) 0;transition:top .3s ease;box-shadow:0 4px 6px rgba(0,0,0,.2)}.skip-link:focus{top:0}@media (max-width:768px){:root{--spacing-xl:2rem;--spacing-2xl:3rem}.container,.hero{padding:var(--spacing-xl) var(--spacing-sm)}.hero{min-height:calc(100vh - 70px)}.hero-title{margin-bottom:var(--spacing-sm)}.hero-subtitle{margin-bottom:var(--spacing-lg)}.hero-buttons{flex-direction:column;gap:var(--spacing-sm);align-items:stretch}.btn{width:100%}.hamburger{display:flex}.nav-menu{position:fixed;top:70px;left:0;width:100%;height:calc(100vh - 70px);background-color:var(--color-bg);flex-direction:column;justify-content:flex-start;padding:var(--spacing-lg) var(--spacing-md);gap:var(--spacing-sm);transform:translateX(100%);transition:transform .3s ease;box-shadow:-2px 0 8px rgba(15,23,42,.1)}.nav-menu.active{transform:translateX(0)}.nav-item{width:100%}.nav-link{display:block;padding:var(--spacing-sm);font-size:1.125rem;border-radius:var(--border-radius)}.nav-link:hover{background-color:var(--color-bg-alt)}.nav-link:after{display:none}.team-grid{grid-template-columns:1fr;gap:var(--spacing-lg)}.team-card{padding:var(--spacing-md)}.team-photo{width:100px;height:100px}.services-grid{grid-template-columns:1fr;gap:var(--spacing-md)}.service-card{padding:var(--spacing-lg)}.tech-grid{grid-template-columns:repeat(auto-fit,100px);justify-content:center;margin:0 auto}.tech-badge{width:100px;height:100px;padding:var(--spacing-sm)}.tech-badge i,.tech-icon-emoji{font-size:2rem}.tech-name{font-size:.7rem}.projects-grid{grid-template-columns:1fr;gap:var(--spacing-lg)}.project-image{height:200px}.project-content{padding:var(--spacing-lg)}.contact-form{padding:var(--spacing-xl)}.footer-content{grid-template-columns:1fr;gap:var(--spacing-xl)}.footer-brand,.footer-contact,.footer-links{text-align:center}.footer-contact-item{justify-content:center;align-items:center}.footer-member{align-items:center}}@media (max-width:350px){.team-card{padding:var(--spacing-sm)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.card:focus-within,.card:hover{transform:none!important}.btn-primary:hover,.btn:hover,.team-link:hover{transform:none!important}.project-card:focus-within .project-image img,.project-card:hover .project-image img{transform:none!important}.hamburger-line{transition:none!important}.hamburger.active .hamburger-line:first-child{transform:none!important;opacity:0!important}.hamburger.active .hamburger-line:nth-child(2){opacity:1!important;background-color:var(--color-accent)!important}.hamburger.active .hamburger-line:nth-child(3){transform:none!important;opacity:0!important}.btn-spinner{animation:none!important;border:3px solid var(--color-text-inverse)!important;border-radius:50%}@keyframes a{0%,to{opacity:1;transform:none}}}