:root{--portal-bg: #0a0a12;--portal-card: #151520;--portal-accent: #3b82f6;--portal-text: #e2e8f0;--portal-text-muted: #94a3b8;--portal-border: rgba(255, 255, 255, .1)}body.client-portal{background-color:var(--portal-bg);color:var(--portal-text);font-family:Inter,system-ui,-apple-system,sans-serif;margin:0;min-height:100vh;line-height:1.6}.hidden{display:none!important}.btn-portal{background:var(--portal-accent);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;cursor:pointer;font-weight:600;transition:all .2s}.btn-portal:hover{filter:brightness(1.1);transform:translateY(-1px)}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:radial-gradient(circle at center,#1b1b2a,#0a0a12)}.login-card{background:var(--portal-card);padding:3rem;border-radius:16px;width:100%;max-width:400px;box-shadow:0 8px 32px #0006;border:1px solid var(--portal-border);text-align:center}.login-logo{font-size:2rem;font-weight:800;margin-bottom:2rem;display:inline-block;color:#fff;text-decoration:none}.login-logo span{color:var(--portal-accent)}.form-group{margin-bottom:1.5rem;text-align:left}.form-label{display:block;margin-bottom:.5rem;font-size:.9rem;color:var(--portal-text-muted)}.form-input{width:100%;padding:.8rem;background:#0003;border:1px solid var(--portal-border);border-radius:6px;color:#fff;font-size:1rem}.form-input:focus{outline:none;border-color:var(--portal-accent)}.login-error{color:#ef4444;font-size:.9rem;margin-top:1rem;min-height:1.5em}.divider{display:flex;align-items:center;margin:1.5rem 0}.divider:before,.divider:after{content:"";flex:1;border-bottom:1px solid var(--portal-border)}.divider span{padding:0 1rem;color:var(--portal-text-muted);font-size:.85rem}.btn-google{display:flex;align-items:center;justify-content:center;gap:.75rem;width:100%;padding:.75rem 1.5rem;background:#fff;color:#333;border:none;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-google:hover{background:#f5f5f5;box-shadow:0 2px 8px #00000026}.dashboard-layout{display:flex;min-height:100vh}.sidebar{width:260px;background:var(--portal-card);border-right:1px solid var(--portal-border);padding:2rem;display:flex;flex-direction:column}.sidebar-header{font-size:1.5rem;font-weight:700;margin-bottom:3rem;color:#fff}.nav-item{display:flex;align-items:center;gap:.75rem;padding:1rem;color:var(--portal-text-muted);text-decoration:none;border-radius:8px;margin-bottom:.5rem;transition:all .2s}.nav-item.active,.nav-item:hover{background:#3b82f61a;color:var(--portal-accent)}.logout-btn{margin-top:auto;color:#ef4444}.logout-btn:hover{background:#ef44441a;color:#ef4444}.main-content{flex:1;padding:3rem;background:var(--portal-bg)}.header-welcome{margin-bottom:3rem}.header-welcome h1{font-size:2rem;margin:0;color:#fff}.header-welcome p{color:var(--portal-text-muted);margin-top:.5rem}.grid-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem}.card{background:var(--portal-card);border:1px solid var(--portal-border);border-radius:12px;padding:1.5rem}.card-title{font-size:1.1rem;font-weight:600;color:#fff;margin:0 0 1rem;display:flex;justify-content:space-between;align-items:center}.status-badge{background:#10b98133;color:#10b981;padding:.25rem .75rem;border-radius:999px;font-size:.8rem;font-weight:600}.upload-zone{border:2px dashed var(--portal-border);border-radius:8px;padding:3rem;text-align:center;cursor:pointer;transition:all .2s;background:#0003}.upload-zone:hover,.upload-zone.dragover{border-color:var(--portal-accent);background:#3b82f60d}.upload-icon{font-size:2rem;color:var(--portal-text-muted);margin-bottom:1rem}.project-item-header{display:flex;justify-content:space-between;margin-bottom:.5rem}.project-name{font-weight:600;color:#fff}.project-date{font-size:.85rem;color:var(--portal-text-muted)}.toast{position:fixed;bottom:2rem;right:2rem;background:#10b981;color:#fff;padding:1rem 2rem;border-radius:8px;box-shadow:0 4px 12px #0000004d;transform:translateY(150%);transition:transform .3s cubic-bezier(.18,.89,.32,1.28)}.toast-visible{transform:translateY(0)}
