/* shots.felixv.com — generated by build.py */
* { margin: 0; padding: 0; box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  background: #0b0b0c;
  color: #e8e6e3;
  font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 15px;
  line-height: 1.5;
  min-height: 100vh;
}
a { color: inherit; text-decoration: none; }
img { display: block; }

/* ------- home ------- */
.site-head { text-align: center; padding: 7vh 24px 5vh; }
.site-logo { width: min(420px, 72vw); margin: 0 auto; }
.site-sub {
  margin-top: 18px;
  font-size: 13px;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: #9a968f;
}
.tiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(440px, 100%), 1fr));
  gap: 14px;
  padding: 0 14px;
  max-width: 1500px;
  margin: 0 auto;
}
.tile { position: relative; overflow: hidden; aspect-ratio: 3 / 2; background: #141416; }
.tile img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease, opacity 0.6s ease;
  opacity: 0.92;
}
.tile:hover img { transform: scale(1.025); opacity: 1; }
.tile-label {
  position: absolute; inset: auto 0 0 0;
  padding: 42px 22px 18px;
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.62));
  display: flex; align-items: baseline; justify-content: space-between;
}
.tile-name { font-size: 21px; font-weight: 300; letter-spacing: 0.14em; text-transform: uppercase; }
.tile-count { font-size: 12px; color: #b5b1aa; letter-spacing: 0.08em; }
.site-foot {
  text-align: center;
  padding: 48px 24px 40px;
  font-size: 12px;
  color: #6d6a65;
  letter-spacing: 0.08em;
}

/* ------- gallery grid ------- */
.bar {
  display: flex; align-items: center; gap: 22px;
  padding: 22px clamp(14px, 3vw, 34px);
}
.bar-home img { width: 150px; opacity: 0.9; }
.bar-home:hover img { opacity: 1; }
.bar-title { display: flex; align-items: baseline; gap: 14px; margin-left: auto; }
.bar-title h1 { font-size: 17px; font-weight: 300; letter-spacing: 0.22em; text-transform: uppercase; }
.bar-count { font-size: 12px; color: #8d8983; letter-spacing: 0.06em; }
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(250px, 44vw), 1fr));
  gap: 10px;
  padding: 0 10px;
  max-width: 1500px;
  margin: 0 auto;
}
.cell { aspect-ratio: 4 / 5; overflow: hidden; background: #141416; }
.cell img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: opacity 0.35s ease, transform 0.6s ease;
  opacity: 0.93;
}
.cell:hover img { opacity: 1; transform: scale(1.02); }

/* ------- fullscreen viewer ------- */
#stage { position: fixed; inset: 0; background: #060607; cursor: pointer; }
#stage img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: contain;
  opacity: 0;
  transition: opacity 0.28s ease;
  user-select: none; -webkit-user-select: none;
}
#stage img.visible { opacity: 1; }
.viewer-chrome {
  position: fixed; top: 0; left: 0; right: 0;
  display: flex; align-items: center; gap: 18px;
  padding: 16px clamp(14px, 3vw, 30px) 26px;
  padding-top: max(16px, env(safe-area-inset-top));
  background: linear-gradient(rgba(0, 0, 0, 0.55), transparent);
  transition: opacity 0.4s ease;
  z-index: 3;
}
.viewer-chrome.hidden { opacity: 0; pointer-events: none; }
.chrome-back { font-size: 14px; letter-spacing: 0.16em; text-transform: uppercase; color: #d9d6d1; }
.chrome-back:hover { color: #fff; }
.chrome-counter { margin-left: auto; font-size: 13px; color: #a5a19a; letter-spacing: 0.1em; }
.chrome-grid { font-size: 19px; line-height: 1; color: #d9d6d1; }
.chrome-grid:hover { color: #fff; }
.nav-arrow {
  position: fixed; top: 50%; transform: translateY(-50%);
  z-index: 2;
  background: none; border: none; cursor: pointer;
  color: rgba(255, 255, 255, 0.55);
  font-size: 54px; font-weight: 200;
  padding: 30px 18px;
  transition: color 0.25s ease, opacity 0.4s ease;
}
.nav-arrow:hover { color: #fff; }
.nav-prev { left: 4px; }
.nav-next { right: 4px; }
body.idle .nav-arrow { opacity: 0; }
body.idle #stage { cursor: none; }
@media (hover: none) { .nav-arrow { display: none; } }
@media (max-width: 640px) {
  .bar-home img { width: 120px; }
  .tile { aspect-ratio: 4 / 3; }
}
