:root{
  --bg: #d4d3db;
  --accent: #231f20;
  --gap: 18px;
  --max-width: 1200px;
}

*{ box-sizing:border-box; }

body{
  margin:0;
  background:var(--bg);
  color:var(--accent);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  overflow-y:auto;
}

/* ---------------- HEADER ---------------- */

.site-header{
  display:flex;
  align-items:center;
  gap:16px;
  padding:20px;
  border-bottom:1px solid rgba(0,0,0,0.06);
}

.site-header .back{
  color:var(--accent);
  text-decoration:none;
  font-weight:600;
}

.site-header h1{
  margin:0;
  font-size:clamp(20px, 3.6vw, 28px);
}

/* ---------------- PAGE ---------------- */

.gallery-page{
  max-width: var(--max-width);
  margin: 28px auto;
  padding: 0 20px 80px;
}

/* ---------------- GRID ---------------- */

.gallery-grid{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--gap);
}

/* ============================= */
/*         FLIP TILES            */
/* ============================= */

.tile{
  padding:0;
  border:0;
  background:transparent;
  cursor:pointer;
  width:100%;
  aspect-ratio:1 / 1;
  border-radius:12px;
  perspective:1000px;
  -webkit-tap-highlight-color: transparent;
}

.tile-inner{
  position:relative;
  width:100%;
  height:100%;
  border-radius:12px;

  transform-style:preserve-3d;
  -webkit-transform-style:preserve-3d;

  transition:transform 0.6s ease;
}

.tile.flipped .tile-inner{
  transform:rotateY(180deg);
}

/* ---- Faces ---- */

.tile-front,
.tile-back{
  position:absolute;
  inset:0;
  border-radius:12px;

  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;

  transform-style:preserve-3d;
}

/* FRONT */
.tile-front{
  background:#ddd;
  transform:rotateY(0deg);
  box-shadow: 7px 7px 7px 1px rgba(0, 0, 0, 0.7);
}

.tile-front img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

/* BACK */
.tile-back{
  background:#ffffff;
  color:#231f20;

  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;

  padding:18px;
  gap:8px;

  transform:rotateY(180deg);
  text-align:center;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,0.05);
}

/* Back text styling */
.tile-back .title{
  font-family:'Anton', sans-serif;
  font-size:15px;
  letter-spacing:0.05em;
  text-transform:uppercase;
}

.tile-back .desc{
  font-family:'Oswald', sans-serif;
  font-size:14px;
  line-height:1.4;
  opacity:0.9;
}

.tile-back .hint{
  font-size:12px;
  opacity:0.6;
}

/* Optional hover lift (safe) */
.tile:hover .tile-inner{
  transform:translateY(-6px);
}
.tile.flipped:hover .tile-inner{
  transform:rotateY(180deg) translateY(-6px);
}

/* Focus outline */
.tile:focus{
  outline:3px solid rgba(35,31,32,0.25);
  outline-offset:3px;
}

/* ============================= */
/*           LIGHTBOX            */
/* ============================= */

.lightbox{
  position:fixed;
  inset:0;
  display:grid;
  place-items:center;
  background:rgba(0,0,0,0.7);
  z-index:2000;
  opacity:0;
  pointer-events:none;
  transition:opacity .22s ease;
}

.lightbox.open{
  opacity:1;
  pointer-events:auto;
}

.lb-stage{
  position:relative;
  width:min(1100px, 94%);
  background:#fff;
  border-radius:10px;
  overflow:hidden;
  box-shadow:0 18px 60px rgba(0,0,0,0.55);
}

.lb-image{
  display:flex;
  align-items:center;
  justify-content:center;
  background:#111;
  min-height:420px;
}

.lb-image img{
  max-width:100%;
  max-height:80vh;
  object-fit:contain;
  display:block;
  opacity:1;
  transition:opacity .18s ease;
}

.lb-image img.is-fading{
  opacity:0;
}

.lb-caption{
  padding:12px 16px;
  font-size:14px;
  color:#222;
  border-top:1px solid rgba(0,0,0,0.06);
}

/* Buttons */
.lb-close,
.lb-prev,
.lb-next{
  position:absolute;
  background:rgba(255,255,255,0.92);
  border:none;
  color:var(--accent);
  font-size:22px;
  padding:10px 12px;
  border-radius:8px;
  cursor:pointer;
  box-shadow:0 8px 24px rgba(0,0,0,0.18);
  z-index:10;
}

.lb-close{ right:18px; top:18px; }
.lb-prev{ left:10px; top:50%; transform:translateY(-50%); }
.lb-next{ right:10px; top:50%; transform:translateY(-50%); }

.lb-thumbs{
  display:flex;
  gap:8px;
  padding:10px;
  overflow:auto;
  background:#fafafa;
  border-top:1px solid rgba(0,0,0,0.06);
}

.thumb img{
  width:64px;
  height:44px;
  object-fit:cover;
  border-radius:8px;
  opacity:0.8;
}

.thumb.active img{
  outline:3px solid rgba(35,31,32,0.8);
  outline-offset:2px;
}

@media (max-width:640px){
  .lb-image{ min-height:320px; }
  .thumb img{ width:54px; height:38px; }
}