:root{--bg-color:#0f172a;--panel-bg:#1e293bb3;--border-color:#ffffff1a;--text-main:#f8fafc;--text-muted:#94a3b8;--accent:#3b82f6;--accent-hover:#2563eb;--danger:#ef4444;--danger-hover:#dc2828;--success:#10b981}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-main);background-image:radial-gradient(at 0 0,#100f15 0,#0000 50%),radial-gradient(at 50% 0,#2f3e6a 0,#0000 50%),radial-gradient(at 100% 0,#722741 0,#0000 50%);background-attachment:fixed;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.app-container{max-width:1200px;margin:0 auto;padding:2rem}.header{text-align:center;margin-bottom:3rem}.header h1{background:linear-gradient(90deg,#60a5fa,#a78bfa);color:#0000;-webkit-background-clip:text;margin-bottom:.5rem;font-size:2.5rem;font-weight:800}.header p{color:var(--text-muted)}.glass-panel{background:var(--panel-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:1rem;padding:2rem;box-shadow:0 25px 50px -12px #00000080}.login-container{text-align:center;max-width:400px;margin:10vh auto}.input-group{text-align:left;margin-bottom:1.5rem}.input-group label{color:var(--text-muted);margin-bottom:.5rem;font-size:.875rem;display:block}.input-field{border:1px solid var(--border-color);color:#fff;background:#0f172a99;border-radius:.5rem;width:100%;padding:.75rem 1rem;font-size:1rem;transition:all .2s}.input-field:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px #3b82f64d}.btn{cursor:pointer;border:none;border-radius:.5rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background:var(--accent);color:#fff;width:100%}.btn-primary:hover{background:var(--accent-hover);transform:translateY(-1px)}.upload-zone{border:2px dashed var(--border-color);text-align:center;cursor:pointer;background:#ffffff05;border-radius:1rem;margin-bottom:2rem;padding:3rem 2rem;transition:all .3s}.upload-zone.drag-active{border-color:var(--accent);background:#3b82f61a;transform:scale(1.02)}.upload-icon{color:var(--text-muted);margin-bottom:1rem;transition:color .3s}.upload-zone:hover .upload-icon{color:var(--accent)}.upload-text{margin-bottom:.5rem;font-size:1.125rem}.upload-subtext{color:var(--text-muted);font-size:.875rem}.gallery-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.5rem;display:grid}.image-card{border:1px solid var(--border-color);aspect-ratio:1;background:#0003;border-radius:.75rem;position:relative;overflow:hidden}.image-card img{object-fit:cover;width:100%;height:100%;transition:transform .5s}.image-card:hover img{transform:scale(1.05)}.image-overlay{opacity:0;background:linear-gradient(#0000 50%,#000c);flex-direction:column;justify-content:flex-end;padding:1rem;transition:opacity .3s;display:flex;position:absolute;inset:0}.image-card:hover .image-overlay{opacity:1}.image-actions{gap:.5rem;margin-bottom:.5rem;display:flex}.action-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#fff3;border:none;border-radius:.25rem;flex:1;justify-content:center;align-items:center;padding:.4rem;transition:background .2s;display:flex}.action-btn:hover{background:#ffffff4d}.action-btn.delete:hover{background:var(--danger)}.image-info{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.loader{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.toast-container{z-index:50;flex-direction:column;gap:.5rem;display:flex;position:fixed;bottom:2rem;right:2rem}.toast{background:var(--panel-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border-color);border-radius:.5rem;align-items:center;gap:.75rem;padding:1rem 1.5rem;animation:.3s cubic-bezier(.16,1,.3,1) slideIn;display:flex;box-shadow:0 10px 15px -3px #0000004d}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}
