:root {
  --bg: #14110d;
  --raised: #1d1915;
  --overlay: #26211b;
  --line: rgba(53, 48, 40, 0.4);
  --line-strong: rgba(74, 66, 55, 0.6);
  --ink: #f2ede4;
  --dim: #b5aa99;
  --faint: #7d7466;
  --accent: #d9a648;
  --accent-ink: #1a1408;
  --danger: #e2695a;
  --ok: #7fb069;
  --font-display: "Fraunces", Georgia, serif;
  --font-body: "Inter", system-ui, sans-serif;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { background: var(--bg); color: var(--ink); font-family: var(--font-body); -webkit-font-smoothing: antialiased; }
body { min-height: 100dvh; }
::selection { background: rgba(217, 166, 72, 0.35); }
* { scrollbar-width: thin; scrollbar-color: #4a4237 transparent; }
a { color: inherit; }
button { font: inherit; cursor: pointer; border: none; background: none; color: inherit; }
input { font: inherit; color: inherit; }

.wrap { max-width: 64rem; margin: 0 auto; padding: 1.5rem; padding-bottom: 6rem; }
.kicker { font-size: 0.65rem; letter-spacing: 0.3em; text-transform: uppercase; color: var(--faint); }
.kicker .dot { color: var(--accent); }
h1.display { font-family: var(--font-display); font-weight: 500; font-size: 1.9rem; margin-top: 0.25rem; }

.btn { border-radius: 0.75rem; padding: 0.6rem 1.1rem; font-size: 0.9rem; transition: 0.15s; display: inline-block; text-decoration: none; }
.btn-accent { background: var(--accent); color: var(--accent-ink); font-weight: 600; }
.btn-accent:hover { filter: brightness(1.1); }
.btn-accent:disabled { opacity: 0.4; cursor: default; }
.btn-ghost { border: 1px solid var(--line-strong); background: var(--raised); }
.btn-ghost:hover { background: var(--overlay); }
.btn-pill { border-radius: 999px; }

.card { border: 1px solid var(--line); background: var(--raised); border-radius: 1rem; }
.field { width: 100%; border-radius: 0.75rem; border: 1px solid var(--line-strong); background: var(--overlay); padding: 0.65rem 1rem; outline: none; }
.field::placeholder { color: var(--faint); }
.field:focus { border-color: var(--accent); }

.grid-photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.25rem; }
@media (min-width: 640px) { .grid-photos { grid-template-columns: repeat(4, 1fr); gap: 0.375rem; } }
@media (min-width: 1024px) { .grid-photos { grid-template-columns: repeat(5, 1fr); } }
.tile { position: relative; aspect-ratio: 1; overflow: hidden; border-radius: 0.4rem; background: var(--raised); padding: 0; }
.tile img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.3s; }
.tile:hover img { transform: scale(1.03); }

.muted { color: var(--dim); }
.faint { color: var(--faint); }
.error { color: var(--danger); }
.okc { color: var(--ok); }

@keyframes fadeUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.fade-up { animation: fadeUp 0.35s ease both; }
@keyframes pulseDot { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
.live-dot { display: inline-block; width: 0.5rem; height: 0.5rem; border-radius: 999px; animation: pulseDot 1.6s ease-in-out infinite; }

/* lightbox */
.lightbox { position: fixed; inset: 0; z-index: 50; background: rgba(0, 0, 0, 0.95); display: flex; flex-direction: column; }
.lightbox .lb-top { display: flex; justify-content: space-between; align-items: center; padding: 1rem; }
.lightbox .lb-stage { flex: 1; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; padding: 0 0.5rem; }
.lightbox .lb-stage img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 0.5rem; }
.lightbox .lb-nav { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(0, 0, 0, 0.5); border-radius: 999px; padding: 0.6rem 1rem; font-size: 1.3rem; }
.lightbox .lb-actions { display: flex; justify-content: center; gap: 0.75rem; padding: 1.25rem; }

/* modal */
.modal-bg { position: fixed; inset: 0; z-index: 60; background: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; padding: 1.5rem; }
.modal { background: var(--raised); border: 1px solid var(--line-strong); border-radius: 1rem; padding: 1.5rem; max-width: 24rem; width: 100%; text-align: center; }

header.site { position: sticky; top: 0; z-index: 20; border-bottom: 1px solid var(--line); background: rgba(20, 17, 13, 0.9); backdrop-filter: blur(8px); padding: 1rem 1.25rem; }
footer.site { position: fixed; inset: 0 0 auto; top: auto; bottom: 0; border-top: 1px solid var(--line); background: rgba(20, 17, 13, 0.9); backdrop-filter: blur(8px); padding: 0.75rem 1.25rem; text-align: center; font-size: 0.75rem; color: var(--faint); }
