@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Manrope:wght@400;500;700;800&display=swap');

:root{
  --bg: #141317;
  --surface: #1e1c22;
  --surface-2: #27242c;
  --accent: #ffb703;        /* flash amber */
  --accent-2: #e63946;      /* shutter red / like */
  --text: #f4f1ea;
  --muted: #a39cae;
  --border: #34303b;
  --radius: 14px;
  --sprocket: #0d0c0f;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Manrope', -apple-system, BlinkMacSystemFont, sans-serif;
  line-height:1.5;
  -webkit-tap-highlight-color:transparent;
}

.wrap{
  max-width:560px;
  margin:0 auto;
  padding:0 18px 48px;
}

/* --- Film sprocket strip: the signature element --- */
.sprocket-strip{
  height:22px;
  background:
    repeating-linear-gradient(90deg,
      var(--sprocket) 0 10px,
      transparent 10px 22px);
  background-color:var(--bg);
  position:relative;
}
.sprocket-strip::before,
.sprocket-strip::after{
  content:"";
  position:absolute;
  top:0; bottom:0; left:0; right:0;
  background-image: radial-gradient(circle, var(--bg) 3.5px, transparent 3.6px);
  background-size:22px 22px;
  background-position: 5px center;
}

header.app-header{
  text-align:center;
  padding:28px 18px 18px;
}
.logo-row{
  display:flex;
  align-items:center;
  justify-content:center;
  flex-wrap:wrap;
  gap:16px;
  margin-bottom:18px;
}
.logo-row img{
  height:38px;
  width:auto;
  max-width:180px;
  object-fit:contain;
}
.logo-row .logo-chip{
  background:#fff;
  border-radius:10px;
  padding:8px 14px;
  display:flex;
  align-items:center;
}
.logo-row .logo-chip img{ height:30px; }
.logo-row .logo-divider{
  width:1px;
  height:28px;
  background:var(--border);
}
header.app-header h1{
  font-family:'Bebas Neue', sans-serif;
  letter-spacing:0.06em;
  font-size:2.4rem;
  margin:0.2em 0 0.1em;
  color:var(--accent);
}
header.app-header p{
  color:var(--muted);
  margin:0;
  font-size:0.95rem;
}

.card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:22px;
  margin-top:18px;
}

label{
  display:block;
  font-weight:700;
  font-size:0.85rem;
  letter-spacing:0.02em;
  margin:16px 0 6px;
  color:var(--text);
}
label .req{ color:var(--accent-2); }
label .opt{ color:var(--muted); font-weight:500; }

input[type=text],
input[type=email],
textarea{
  width:100%;
  background:var(--surface-2);
  border:1px solid var(--border);
  border-radius:10px;
  padding:12px 14px;
  color:var(--text);
  font-family:inherit;
  font-size:1rem;
}
input:focus, textarea:focus{
  outline:2px solid var(--accent);
  outline-offset:1px;
}
textarea{ min-height:80px; resize:vertical; }

.file-drop{
  margin-top:16px;
  border:2px dashed var(--border);
  border-radius:12px;
  padding:22px 16px;
  text-align:center;
  color:var(--muted);
  cursor:pointer;
  transition:border-color .15s ease, background .15s ease;
}
.file-drop.has-file{ border-color:var(--accent); color:var(--text); }
.file-drop input{ display:none; }
.file-drop .shutter{
  width:56px; height:56px;
  border-radius:50%;
  background:var(--accent);
  margin:0 auto 10px;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 0 0 4px var(--surface-2), 0 0 0 5px var(--border);
}
.file-drop .shutter svg{ width:26px; height:26px; }
.file-drop img.preview{
  max-width:100%; max-height:220px; border-radius:8px; margin-top:10px;
}

button.submit-btn{
  width:100%;
  margin-top:22px;
  background:var(--accent);
  color:#1a1400;
  border:none;
  border-radius:10px;
  padding:14px;
  font-size:1.05rem;
  font-weight:800;
  letter-spacing:0.02em;
  cursor:pointer;
}
button.submit-btn:active{ transform:translateY(1px); }
button.submit-btn:disabled{ opacity:0.6; }

.msg{
  border-radius:10px;
  padding:12px 14px;
  margin-top:16px;
  font-size:0.92rem;
}
.msg.success{ background:#1c3324; color:#8ee6a8; border:1px solid #2c5b3a; }
.msg.error{ background:#3a1c1f; color:#ff9aa0; border:1px solid #6b2a30; }

.hint{ color:var(--muted); font-size:0.8rem; margin-top:6px; }

footer.app-footer{
  text-align:center;
  color:var(--muted);
  font-size:0.78rem;
  margin-top:28px;
}
a.gallery-link{
  display:block;
  text-align:center;
  margin-top:18px;
  color:var(--accent);
  font-weight:700;
  text-decoration:none;
}

/* --- Gallery --- */
.gallery-wrap{ max-width:1100px; }
.gallery-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));
  gap:16px;
  margin-top:18px;
}
.photo-card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.photo-card .photo-frame{
  aspect-ratio:4/3;
  overflow:hidden;
  background:var(--sprocket);
}
.photo-card img{
  width:100%; height:100%; object-fit:cover; display:block;
  cursor:zoom-in;
}
.photo-meta{ padding:12px 14px 14px; }
.photo-desc{ font-size:0.92rem; margin:0 0 4px; }
.photo-author{ color:var(--muted); font-size:0.8rem; margin:0 0 10px; }
.like-row{
  display:flex; align-items:center; gap:8px;
}
.like-btn{
  display:flex; align-items:center; gap:6px;
  background:var(--surface-2);
  border:1px solid var(--border);
  color:var(--text);
  border-radius:999px;
  padding:7px 14px;
  font-weight:700;
  font-size:0.85rem;
  cursor:pointer;
}
.like-btn svg{ width:16px; height:16px; }
.like-btn.liked{ background:rgba(230,57,70,0.15); border-color:var(--accent-2); color:#ff9aa0; }
.like-btn.liked svg{ fill:var(--accent-2); }
.like-btn:disabled{ opacity:0.6; cursor:default; }

.empty-state{
  text-align:center;
  color:var(--muted);
  padding:60px 20px;
}

/* Lightbox */
.lightbox{
  position:fixed; inset:0; background:rgba(10,9,11,0.92);
  display:none; align-items:center; justify-content:center; z-index:50; padding:20px;
}
.lightbox.open{ display:flex; }
.lightbox img{ max-width:100%; max-height:90vh; border-radius:8px; }
.lightbox-close{
  position:absolute; top:16px; right:20px;
  background:none; border:none; color:var(--text); font-size:2rem; cursor:pointer;
}

/* Admin */
.admin-table{ width:100%; border-collapse:collapse; margin-top:18px; }
.admin-table th, .admin-table td{
  border-bottom:1px solid var(--border);
  padding:10px 8px;
  text-align:left;
  font-size:0.88rem;
  vertical-align:middle;
}
.admin-table img{ width:70px; height:52px; object-fit:cover; border-radius:6px; }
.btn-delete{
  background:var(--accent-2); color:#fff; border:none; border-radius:8px;
  padding:8px 12px; font-weight:700; cursor:pointer; font-size:0.82rem;
}
.login-form{ max-width:360px; margin:60px auto; }
.top-bar{
  display:flex; justify-content:space-between; align-items:center;
  padding-top:24px; flex-wrap:wrap; gap:10px;
}
.top-bar a{ color:var(--accent); text-decoration:none; font-weight:700; font-size:0.85rem;}

@media (max-width:480px){
  .admin-table{ font-size:0.78rem; }
}
