:root{--fp-primary:#2563eb;--fp-primary-light:#3b82f6;--fp-secondary:#06b6d4;--fp-secondary-light:#22d3ee;--fp-success:#10b981;--fp-warning:#fbbf24;--fp-danger:#ef4444;--fp-text-primary:#1e293b;--fp-text-secondary:#475569;--fp-text-tertiary:#64748b;--fp-bg-main:linear-gradient(135deg,#eff6ff 0%,#e0f2fe 50%,#dbeafe 100%);--fp-bg-card:linear-gradient(145deg,#fff,#f8fafc);--fp-border:#e2e8f0;--fp-border-light:rgba(37,99,235,.15);--fp-shadow:0 4px 6px -1px rgba(0,0,0,.1);--fp-shadow-lg:0 20px 25px -5px rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){:root{--fp-primary:#3b82f6;--fp-primary-light:#60a5fa;--fp-secondary:#22d3ee;--fp-secondary-light:#67e8f9;--fp-success:#34d399;--fp-text-primary:#f1f5f9;--fp-text-secondary:#cbd5e1;--fp-text-tertiary:#94a3b8;--fp-bg-main:linear-gradient(135deg,#020617 0%,#0f172a 50%,#020617 100%);--fp-bg-card:linear-gradient(145deg,#1e293b,#0f172a);--fp-border:#475569;--fp-border-light:rgba(71,85,105,.5);--fp-shadow:0 4px 6px -1px rgba(0,0,0,.3);--fp-shadow-lg:0 20px 25px -5px rgba(0,0,0,.4)}}html,body{width:100%;max-width:100vw;margin:0;padding:0;overflow-x:hidden}*{box-sizing:border-box}.projects-page{background:var(--fp-bg-main);width:100%;max-width:100vw;min-height:100vh;overflow-x:hidden}.projects-hero{text-align:center;max-width:1200px;margin:0 auto;padding:4rem 2rem;animation:.8s ease-out fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.hero-content{flex-direction:column;align-items:center;gap:1.5rem;display:flex}.hero-badge{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--fp-primary);box-shadow:var(--fp-shadow);background:rgba(255,255,255,.8);border:1px solid rgba(255,255,255,.5);border-radius:9999px;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;display:inline-flex}@media (prefers-color-scheme:dark){.hero-badge{background:rgba(30,41,59,.6);border-color:rgba(71,85,105,.4)}}.hero-title{color:var(--fp-text-primary);margin:0;font-size:max(2rem,min(5vw,3.5rem));font-weight:800;line-height:1.2}.gradient-text{background:linear-gradient(to right,var(--fp-primary),var(--fp-secondary));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.hero-subtitle{color:var(--fp-text-secondary);max-width:700px;margin:0;font-size:1.125rem;line-height:1.6}.hero-stats{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--fp-shadow);background:rgba(255,255,255,.8);border:1px solid rgba(255,255,255,.5);border-radius:1rem;align-items:center;gap:2rem;margin-top:2rem;padding:1.5rem 2rem;display:flex}@media (prefers-color-scheme:dark){.hero-stats{background:rgba(30,41,59,.6);border-color:rgba(71,85,105,.4)}}.stat-item{flex-direction:column;align-items:center;gap:.25rem;display:flex}.stat-number{background:linear-gradient(to right,var(--fp-primary),var(--fp-secondary));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.5rem;font-weight:800}.stat-label{text-transform:uppercase;color:var(--fp-text-tertiary);font-size:.75rem;font-weight:600}.stat-divider{background:var(--fp-border);width:1px;height:2rem}.projects-filters{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:2px solid var(--fp-border-light);width:100%;max-width:1400px;box-shadow:var(--fp-shadow);background:rgba(255,255,255,.95);border-radius:.75rem;flex-wrap:wrap;align-items:center;gap:2rem;margin:0 auto 3rem;padding:1rem 2rem;display:flex}@media (prefers-color-scheme:dark){.projects-filters{background:rgba(30,41,59,.95)}}.filter-group{flex:none;align-items:center;gap:.75rem;display:flex}.filter-group label{text-transform:uppercase;letter-spacing:.5px;color:var(--fp-text-secondary);white-space:nowrap;align-items:center;gap:.5rem;font-size:.75rem;font-weight:700;display:flex}.filter-group label svg{color:var(--fp-primary);flex-shrink:0;width:16px;height:16px}.filter-select{border:2px solid var(--fp-border);color:var(--fp-text-primary);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border-radius:.5rem;outline:none;min-width:120px;padding:.5rem 2.5rem .5rem 1rem;font-size:.875rem;font-weight:600;transition:all .3s}@media (prefers-color-scheme:dark){.filter-select{background-color:#1e293b;border-color:#334155}}.filter-select:hover{border-color:var(--fp-primary);box-shadow:0 2px 8px rgba(37,99,235,.15)}.filter-select:focus{border-color:var(--fp-primary);box-shadow:0 0 0 3px rgba(37,99,235,.15)}.results-info{white-space:nowrap;background:linear-gradient(135deg,rgba(37,99,235,.1),rgba(6,182,212,.1));border:2px solid rgba(37,99,235,.2);border-radius:.5rem;align-items:center;margin-left:auto;padding:.5rem 1.25rem;display:flex}@media (prefers-color-scheme:dark){.results-info{background:linear-gradient(135deg,rgba(96,165,250,.15),rgba(34,211,238,.15));border-color:rgba(96,165,250,.3)}}.results-info p{color:var(--fp-text-primary);margin:0;font-size:.875rem;font-weight:600}.highlight{color:var(--fp-primary);margin:0 .25rem;font-size:1rem;font-weight:800}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:2rem;max-width:1400px;margin:0 auto 4rem;padding:0 2rem;display:grid}.project-card{background:var(--fp-bg-card);cursor:pointer;border:2px solid transparent;border-radius:1rem;transition:all .3s;position:relative;overflow:hidden}.project-card:before{content:"";border-radius:inherit;background:linear-gradient(135deg,var(--fp-primary-light),var(--fp-secondary));-webkit-mask-composite:xor;opacity:0;pointer-events:none;padding:2px;transition:opacity .3s;position:absolute;top:-2px;bottom:-2px;left:-2px;right:-2px;-webkit-mask-image:linear-gradient(#fff 0,#fff 0),linear-gradient(#fff 0,#fff 0);mask-image:linear-gradient(#fff 0,#fff 0),linear-gradient(#fff 0,#fff 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.project-card:hover{box-shadow:var(--fp-shadow-lg);transform:translateY(-8px)}.project-card:hover:before{opacity:1}.project-card:active{transform:translateY(-4px)}.project-card:focus{outline:3px solid var(--fp-primary);outline-offset:2px}.featured-badge{background:linear-gradient(to right,var(--fp-warning),#f97316);color:#fff;box-shadow:var(--fp-shadow);z-index:10;border-radius:9999px;align-items:center;gap:.25rem;padding:.375rem .75rem;font-size:.75rem;font-weight:700;animation:2s ease-in-out infinite pulse;display:flex;position:absolute;top:1rem;right:1rem}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.project-image-wrapper{width:100%;height:200px;position:relative;overflow:hidden}.project-image{object-fit:cover;width:100%;height:100%;transition:transform .3s}.project-card:hover .project-image{transform:scale(1.1)}.project-placeholder{background:linear-gradient(135deg,#e0f2fe 0%,#bae6fd 100%);justify-content:center;align-items:center;width:100%;height:100%;display:flex}@media (prefers-color-scheme:dark){.project-placeholder{background:linear-gradient(135deg,#334155 0%,#1e293b 100%)}}.project-placeholder svg{color:var(--fp-text-tertiary);opacity:.4}.difficulty-badge{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;border-radius:.5rem;padding:.375rem .75rem;font-size:.75rem;font-weight:700;position:absolute;bottom:.75rem;left:.75rem}.difficulty-beginner{background:rgba(34,197,94,.9)}.difficulty-intermediate{background:rgba(251,191,36,.9)}.difficulty-advanced{background:rgba(239,68,68,.9)}.project-content{flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.project-header{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.project-header h3{color:var(--fp-text-primary);flex:1;margin:0;font-size:1.25rem;font-weight:700;line-height:1.3}.project-category{color:var(--fp-primary);background:rgba(37,99,235,.1);border:1px solid rgba(37,99,235,.2);border-radius:9999px;padding:.25rem .75rem;font-size:.75rem;font-weight:600}.project-description{color:var(--fp-text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.875rem;line-height:1.6;display:-webkit-box;overflow:hidden}.project-features{flex-wrap:wrap;gap:.5rem;display:flex}.feature-tag{color:var(--fp-success);background:rgba(16,185,129,.1);border:1px solid rgba(16,185,129,.2);border-radius:9999px;align-items:center;gap:.25rem;padding:.25rem .75rem;font-size:.75rem;font-weight:600;display:flex}.feature-tag svg{width:12px;height:12px}.project-components{background:rgba(37,99,235,.05);border:1px solid rgba(37,99,235,.1);border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}@media (prefers-color-scheme:dark){.project-components{background:rgba(34,211,238,.05);border-color:rgba(34,211,238,.1)}}.components-label{color:var(--fp-text-primary);text-transform:uppercase;align-items:center;gap:.5rem;font-size:.75rem;font-weight:700;display:flex}.components-label svg{color:var(--fp-primary)}.components-list{flex-wrap:wrap;gap:.5rem;display:flex}.component-chip{color:var(--fp-text-tertiary);background:#fff;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500}@media (prefers-color-scheme:dark){.component-chip{background:#0f172a}}.project-meta,.project-footer{border-top:1px solid var(--fp-border);justify-content:space-between;align-items:center;padding-top:1rem;display:flex}.rating{align-items:center;gap:.5rem;display:flex}.stars{color:var(--fp-warning);letter-spacing:-2px;font-size:.875rem}.rating-text,.duration{color:var(--fp-text-tertiary);font-size:.75rem;font-weight:500}.duration{align-items:center;gap:.25rem;display:flex}.duration svg{color:var(--fp-primary)}.view-btn{background:linear-gradient(to right,var(--fp-primary),var(--fp-secondary));color:#fff;box-shadow:var(--fp-shadow);border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.875rem;font-weight:700;text-decoration:none;transition:all .3s;display:flex}.view-btn:hover{transform:scale(1.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.2)}.view-btn svg{width:16px;height:16px;transition:transform .3s}.view-btn:hover svg{transform:translate(4px)}.projects-cta{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);text-align:center;background:linear-gradient(135deg,rgba(37,99,235,.1),rgba(6,182,212,.1));border:1px solid rgba(37,99,235,.2);border-radius:1.5rem;max-width:1200px;margin:0 auto 4rem;padding:3rem 2rem}@media (prefers-color-scheme:dark){.projects-cta{background:linear-gradient(135deg,rgba(96,165,250,.1),rgba(34,211,238,.1));border-color:rgba(96,165,250,.2)}}.cta-content h2{color:var(--fp-text-primary);margin:0 0 1rem;font-size:2rem;font-weight:800}.cta-content p{color:var(--fp-text-secondary);max-width:600px;margin:0 auto 2rem;font-size:1.125rem}.cta-buttons{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.cta-btn{box-shadow:var(--fp-shadow);border-radius:.75rem;align-items:center;gap:.5rem;padding:1rem 2rem;font-size:1rem;font-weight:700;text-decoration:none;transition:all .3s;display:flex}.cta-btn.primary{background:linear-gradient(to right,var(--fp-primary),var(--fp-secondary));color:#fff}.cta-btn.primary:hover{transform:scale(1.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.2)}.cta-btn.secondary{color:var(--fp-primary);border:2px solid var(--fp-primary);background:#fff}@media (prefers-color-scheme:dark){.cta-btn.secondary{background:0 0}}.cta-btn.secondary:hover{background:var(--fp-primary);color:#fff}@media (max-width:768px){.projects-hero{padding:3rem 1rem}.hero-stats{flex-direction:column;gap:1rem}.stat-divider{width:100%;height:1px}.projects-filters{flex-direction:column;align-items:stretch;gap:1rem;padding:1rem}.filter-group{flex-direction:column;flex:100%;align-items:flex-start;gap:.5rem}.filter-select{width:100%}.results-info{flex:100%;justify-content:center;margin-left:0}.projects-grid{grid-template-columns:1fr;padding:0 1rem}.cta-buttons{flex-direction:column}.cta-btn{justify-content:center;width:100%}}@media (max-width:480px){.filter-group label{font-size:.7rem}.filter-select{padding:.4rem 1rem;font-size:.8rem}}
