:root{--bg-page:#f9f9fa;--bg-panel:#fff;--text-main:#111;--text-muted:#666;--border-light:#eaeaea;--accent:#000;--radius-md:12px;--shadow-card:0 12px 24px #0000000f;--font-main:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, Helvetica, sans-serif}[data-theme=dark]{--bg-page:#0d0d0d;--bg-panel:#161616;--text-main:#f5f5f5;--text-muted:#999;--border-light:#2a2a2a;--accent:#fff;--radius-md:12px;--shadow-card:0 12px 24px #0006}[data-theme=opal]{--bg-page:#fff;--bg-panel:#fff;--text-main:#000;--text-muted:#888;--border-light:#000;--accent:#000;--radius-md:4px;--shadow-card:4px 4px 0px #000}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-main);background-color:var(--bg-page);color:var(--text-main);-webkit-font-smoothing:antialiased;padding:0;transition:background-color .4s,color .4s}nav{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;max-width:1400px;margin-bottom:3rem;margin-left:auto;margin-right:auto;padding:2rem 4vw;display:flex}.nav-logo{letter-spacing:-.02em;color:var(--text-main);font-size:1.2rem;font-weight:700}.nav-center{gap:2rem;display:flex;position:absolute;left:50%;transform:translate(-50%)}.nav-center a{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.9rem;font-weight:500;text-decoration:none;transition:color .3s}.nav-center a:hover,.nav-center a.active{color:var(--text-main)}.theme-controls{background:var(--bg-panel);border:1px solid var(--border-light);border-radius:100px;gap:.25rem;padding:.25rem;transition:all .4s;display:flex}.theme-btn{color:var(--text-muted);cursor:pointer;text-transform:uppercase;letter-spacing:.05em;background:0 0;border:none;border-radius:100px;padding:.4rem 1rem;font-size:.8rem;font-weight:600;transition:all .2s}.theme-btn:hover{color:var(--text-main)}.theme-btn.active{background:var(--text-main);color:var(--bg-page)}.projects-header{flex-direction:column;gap:2rem;max-width:1400px;margin:0 auto 3rem;padding:0 4vw;display:flex}.header-top{justify-content:space-between;align-items:center;display:flex}.header-title h1{letter-spacing:-.02em;font-size:2rem;font-weight:600}.filters{flex-wrap:wrap;gap:.5rem;display:flex}.filter-btn{background:var(--bg-panel);border:1px solid var(--border-light);color:var(--text-muted);cursor:pointer;border-radius:100px;padding:.6rem 1.2rem;font-size:.9rem;font-weight:500;transition:all .3s}.filter-btn:hover{border-color:var(--text-muted);color:var(--text-main)}.filter-btn.active{background:var(--text-main);color:var(--bg-panel);border-color:var(--text-main)}main{max-width:1400px;margin:0 auto;padding:0 4vw 4rem}.project-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:2rem;display:grid}.card{background:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--radius-md);cursor:pointer;flex-direction:column;transition:transform .3s,box-shadow .3s,border-radius .4s;display:flex;overflow:hidden}.card:hover{box-shadow:var(--shadow-card);transform:translateY(-4px)}.card-image{aspect-ratio:4/3;background:var(--border-light);border-bottom:1px solid var(--border-light);width:100%;transition:border-color .4s;overflow:hidden}.card-image img{object-fit:cover;width:100%;height:100%;transition:transform .5s}.card:hover .card-image img{transform:scale(1.03)}.card-meta{padding:1.5rem}.card-category{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.5rem;font-size:.75rem;display:block}.card-title{color:var(--text-main);margin-bottom:.5rem;font-size:1.2rem;font-weight:600}.detail-overlay{-webkit-backdrop-filter:blur(4px);z-index:999;opacity:0;pointer-events:none;background:#0006;width:100%;height:100%;transition:opacity .4s;position:fixed;top:0;left:0}.detail-overlay.active{opacity:1;pointer-events:auto}.detail-panel{background:var(--bg-panel);border-left:1px solid var(--border-light);z-index:1000;flex-direction:column;width:100%;max-width:600px;height:100vh;transition:transform .5s cubic-bezier(.16,1,.3,1),background-color .4s,border-color .4s;display:flex;position:fixed;top:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-20px 0 60px #0003}.detail-panel.active{transform:translate(0)}.panel-header{border-bottom:1px solid var(--border-light);background:var(--bg-panel);z-index:10;justify-content:space-between;align-items:center;padding:2rem;transition:background-color .4s,border-color .4s;display:flex;position:sticky;top:0}.close-btn{background:var(--bg-page);color:var(--text-main);border:1px solid var(--border-light);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.2rem;transition:all .2s;display:flex}.close-btn:hover{background:var(--text-main);color:var(--bg-panel)}.panel-content{padding:2rem}.dtl-category{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:1rem;font-size:.8rem;display:block}.dtl-title{letter-spacing:-.03em;color:var(--text-main);margin-bottom:2rem;font-size:2.5rem;font-weight:700;line-height:1.1}.dtl-metadata{background:var(--bg-page);border:1px solid var(--border-light);border-radius:var(--radius-md);grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:2.5rem;padding:1.5rem;transition:all .4s;display:grid}.meta-item span{color:var(--text-muted);text-transform:uppercase;margin-bottom:.2rem;font-size:.8rem;display:block}.meta-item strong{color:var(--text-main);font-size:1rem;font-weight:500}.dtl-description{color:var(--text-muted);margin-bottom:3rem;font-size:1.1rem;line-height:1.6}.dtl-images{flex-direction:column;gap:1.5rem;display:flex}.dtl-images img{border-radius:var(--radius-md);border:1px solid var(--border-light);width:100%;transition:all .4s}.dtl-images p{color:var(--text-muted);text-align:center;margin-top:.5rem;font-size:.85rem}.floating-contact-btn{background:var(--text-main);color:var(--bg-page);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;z-index:900;border:1px solid var(--border-light);border-radius:100px;padding:1rem 2rem;font-size:.85rem;font-weight:600;transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s;position:fixed;bottom:2.5rem;right:2.5rem;box-shadow:0 10px 30px #00000026}.floating-contact-btn:hover{transform:translateY(-5px)scale(1.02);box-shadow:0 15px 40px #00000040}.contact-overlay{-webkit-backdrop-filter:blur(8px);z-index:9999;opacity:0;pointer-events:none;background:#0009;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .4s;display:flex;position:fixed;top:0;left:0}.contact-overlay.active{opacity:1;pointer-events:auto}.contact-box{background:var(--bg-panel);border-radius:var(--radius-md);border:1px solid var(--border-light);width:90%;max-width:500px;padding:3.5rem;transition:transform .4s cubic-bezier(.16,1,.3,1);position:relative;transform:translateY(20px)scale(.95)}.contact-overlay.active .contact-box{transform:translateY(0)scale(1)}.contact-box h2{letter-spacing:-.02em;color:var(--text-main);margin-bottom:.5rem;font-size:2rem}.contact-box p{color:var(--text-muted);margin-bottom:2rem;font-size:.95rem;line-height:1.5}.contact-form{flex-direction:column;gap:1.25rem;display:flex}.contact-form input,.contact-form textarea{background:var(--bg-page);border:1px solid var(--border-light);width:100%;color:var(--text-main);border-radius:8px;padding:1rem;font-family:inherit;font-size:.95rem;transition:border-color .3s}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--text-main);outline:none}.contact-form button{background:var(--text-main);color:var(--bg-page);cursor:pointer;text-transform:uppercase;letter-spacing:.05em;border:none;border-radius:8px;margin-top:.5rem;padding:1rem;font-weight:600;transition:opacity .3s}.contact-form button:hover{opacity:.8}.close-contact{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:1.5rem;transition:color .2s;position:absolute;top:1.5rem;right:1.5rem}.close-contact:hover{color:var(--text-main)}@media (width<=768px){nav{flex-wrap:wrap;gap:1rem;padding:1.5rem 4vw}.nav-center{order:3;justify-content:center;gap:1.5rem;width:100%;padding-top:.5rem;position:relative;left:0;transform:none}.theme-btn{padding:.3rem .6rem;font-size:.75rem}main h1{font-size:clamp(2.5rem,12vw,4rem)}}@media (width<=480px){.nav-center{gap:1rem}.nav-center a{font-size:.8rem}}
