*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#08090f;--card:#12151f;--card2:#1a1e2b;
  --accent:#ff6b9d;--accent2:#7c5cff;--accent3:#3dd6c3;
  --text:#e8eaf6;--muted:#8b90a8;--border:rgba(255,255,255,.08);
  --radius:14px;--shadow:0 20px 50px rgba(0,0,0,.45);
}
html{scroll-behavior:smooth}
body{
  font-family:'Outfit',system-ui,sans-serif;
  background:var(--bg);color:var(--text);
  min-height:100vh;line-height:1.5;
}
.bg-glow{
  position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(ellipse 70% 45% at 15% -5%,rgba(124,92,255,.2),transparent),
    radial-gradient(ellipse 50% 35% at 95% 20%,rgba(255,107,157,.12),transparent),
    radial-gradient(ellipse 40% 30% at 50% 100%,rgba(61,214,195,.08),transparent);
}
.header{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;
  gap:1rem;padding:1rem 5%;
  background:rgba(8,9,15,.82);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
}
.logo{
  font-family:'Zen Tokyo Zoo',cursive;font-size:1.35rem;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  text-decoration:none;
}
.nav{display:flex;gap:1.25rem}
.nav a{color:var(--muted);text-decoration:none;font-size:.95rem;transition:color .2s}
.nav a:hover{color:var(--text)}
.header-actions{display:flex;align-items:center;gap:.6rem}
.user-badge{font-size:.85rem;color:var(--accent3);padding:.25rem .6rem;border:1px solid rgba(61,214,195,.35);border-radius:999px}
.btn{
  font-family:inherit;font-size:.9rem;padding:.5rem 1rem;border-radius:10px;
  border:none;cursor:pointer;transition:transform .15s,opacity .15s;
}
.btn:active{transform:scale(.97)}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}
.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border)}
.btn-block{width:100%;margin-top:.5rem}
.hidden{display:none!important}
main{position:relative;z-index:1}
.hero{text-align:center;padding:3.5rem 5% 2rem;max-width:720px;margin:0 auto}
.hero-tag{
  display:inline-block;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--accent2);margin-bottom:.75rem;
}
.hero h1{font-size:clamp(2rem,5vw,2.8rem);font-weight:700;margin-bottom:.75rem}
.hero-desc{color:var(--muted);font-size:1.05rem}
.section-head{padding:0 5% 1.25rem}
.section-head h2{font-size:1.5rem;margin-bottom:.25rem}
.muted{color:var(--muted);font-size:.9rem}
.gallery{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:1.25rem;padding:0 5% 3rem;max-width:1200px;margin:0 auto;
}
.card{
  background:var(--card);border-radius:var(--radius);overflow:hidden;
  border:1px solid var(--border);cursor:pointer;
  transition:transform .22s,box-shadow .22s;
}
.card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.card-img{aspect-ratio:16/9;object-fit:cover;width:100%;display:block;background:var(--card2)}
.card-body{padding:1rem 1.1rem 1.15rem}
.card-body h3{font-size:1.02rem;margin-bottom:.2rem}
.card-body span{font-size:.8rem;color:var(--muted)}
.upload-section{padding:0 5% 3rem;max-width:900px;margin:0 auto}
.upload-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}
.dropzone{
  display:block;border:2px dashed rgba(124,92,255,.35);border-radius:12px;
  padding:2rem 1rem;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;
}
.dropzone:hover,.dropzone.dragover{border-color:var(--accent2);background:rgba(124,92,255,.06)}
.dropzone-inner{display:flex;flex-direction:column;align-items:center;gap:.5rem;color:var(--muted)}
.dropzone-icon{
  width:48px;height:48px;border-radius:50%;
  background:linear-gradient(135deg,var(--accent2),var(--accent3));
  color:#fff;font-size:1.6rem;line-height:48px;font-weight:300;
}
.dropzone small{font-size:.78rem;opacity:.85}
.upload-preview{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));
  gap:.75rem;margin-top:1rem;
}
.preview-item{
  position:relative;border-radius:10px;overflow:hidden;
  aspect-ratio:1;background:var(--card2);border:1px solid var(--border);
}
.preview-item img{width:100%;height:100%;object-fit:cover}
.preview-item button{
  position:absolute;top:4px;right:4px;width:22px;height:22px;
  border:none;border-radius:50%;background:rgba(0,0,0,.65);color:#fff;
  cursor:pointer;font-size:.75rem;line-height:1;
}
.about{padding:0 5% 3rem;max-width:700px;margin:0 auto}
.about-card{
  background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius);padding:1.5rem;
}
.about-card h3{margin-bottom:.5rem}
.about-card p{color:var(--muted)}
footer{
  position:relative;z-index:1;text-align:center;padding:1.5rem;
  color:var(--muted);font-size:.85rem;border-top:1px solid var(--border);
}
.modal{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:1rem;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
.modal.open{opacity:1;visibility:visible}
.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.75)}
.modal-box{
  position:relative;background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius);padding:1.75rem;width:100%;max-width:380px;
  box-shadow:var(--shadow);animation:pop .25s ease;
}
.modal-wide{max-width:640px}
@keyframes pop{from{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}
.modal-close{
  position:absolute;top:.75rem;right:.75rem;width:32px;height:32px;
  border:none;border-radius:8px;background:var(--card2);color:var(--text);
  font-size:1.25rem;cursor:pointer;
}
.modal h3{margin-bottom:.35rem}
#loginForm{display:flex;flex-direction:column;gap:.85rem;margin-top:1rem}
#loginForm label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--muted)}
#loginForm input{
  padding:.65rem .85rem;border-radius:10px;border:1px solid var(--border);
  background:var(--bg);color:var(--text);font-family:inherit;font-size:1rem;
}
.form-hint{font-size:.8rem;color:var(--muted)}
.form-hint code{color:var(--accent3);background:var(--card2);padding:.1rem .35rem;border-radius:4px}
.form-error{color:var(--accent);font-size:.85rem}
.player-frame{position:relative;border-radius:10px;overflow:hidden;margin:1rem 0;background:#000}
.player-frame img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.player-overlay{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,0,.45);font-size:.9rem;color:var(--muted);
}
@media(max-width:640px){
  .nav{display:none}
  .header{padding:1rem 4%}
}
