/* Client gallery styles. Everything hangs off .gv so the admin can reuse it for live theme preview. */
.gv { --bg:#FBFBFA; --fg:#16181A; --muted:#6B7075; --line:#E3E5E3; --accent:#1E5EFF; --accent-fg:#fff;
  --font-head: Georgia, serif; --font-body: system-ui, sans-serif; --gap:10px; --radius:0px;
  background:var(--bg); color:var(--fg); font-family:var(--font-body); font-size:16px; line-height:1.55;
  -webkit-font-smoothing:antialiased; text-size-adjust:100%; }
body.gv { margin:0; min-height:100vh; }
.gv *, .gv *::before, .gv *::after { box-sizing:border-box; }
.gv h1 { font-family:var(--font-head); font-weight:500; margin:0; letter-spacing:-.02em; line-height:1.04; }
.gv p { margin:0; }
.gv a { color:inherit; }
.gv img { display:block; max-width:100%; }
.gv .gv-muted { color:var(--muted); }
.gv :focus-visible { outline:2px solid var(--accent); outline-offset:3px; }

/* buttons */
.gv .gv-btn { display:inline-flex; align-items:center; justify-content:center; gap:.5em; min-height:44px; padding:0 1.25em;
  font:500 .95rem/1 var(--font-body); color:var(--fg); text-decoration:none; background:transparent; cursor:pointer;
  border:1px solid var(--line); border-radius:var(--radius); transition:background .15s, border-color .15s; list-style:none; }
.gv .gv-btn:hover { border-color:var(--fg); }
.gv .gv-btn-solid { background:var(--accent); color:var(--accent-fg); border-color:var(--accent); }
.gv .gv-btn-solid:hover { border-color:var(--accent); filter:brightness(1.08); }
.gv summary.gv-btn::-webkit-details-marker { display:none; }

/* cover */
.gv .gv-cover { position:relative; }
.gv .gv-cover-text { display:flex; flex-direction:column; align-items:flex-start; gap:.35rem; }
.gv .gv-cover h1 { font-size:clamp(2.4rem, 7.5vw, 6.25rem); max-width:16ch; text-wrap:balance; }
.gv .gv-cover .gv-desc { max-width:52ch; margin-top:.75rem; }
.gv .gv-cover .gv-btn { margin-top:1.4rem; }
.gv .gv-cover-media img { width:100%; height:100%; object-fit:cover; }

.gv[data-cover="full"] .gv-cover, .gv [data-cover="full"] .gv-cover { min-height:min(92vh, 940px); min-height:min(92svh, 940px); display:flex; align-items:flex-end; color:#fff; overflow:hidden; }
.gv[data-cover="full"] .gv-cover-media { position:absolute; inset:0; }
.gv[data-cover="full"] .gv-cover-media::after { content:""; position:absolute; inset:0;
  background:linear-gradient(to top, rgba(0,0,0,.62), rgba(0,0,0,.08) 55%, rgba(0,0,0,0)); }
.gv[data-cover="full"] .gv-cover-text { position:relative; width:100%; padding:clamp(1.25rem, 4vw, 3.5rem); }
.gv[data-cover="full"] .gv-cover .gv-muted { color:rgba(255,255,255,.82); }
.gv[data-cover="full"] .gv-cover .gv-btn-solid { border-color:transparent; }

.gv[data-cover="split"] .gv-cover { display:grid; grid-template-columns:1fr; }
.gv[data-cover="split"] .gv-cover-media { order:-1; aspect-ratio:4/3; }
.gv[data-cover="split"] .gv-cover-text { padding:clamp(1.5rem, 5vw, 3.5rem); justify-content:flex-end; }
@media (min-width:860px) {
  .gv[data-cover="split"] .gv-cover { grid-template-columns:minmax(0,5fr) minmax(0,6fr); min-height:min(90vh, 880px); }
  .gv[data-cover="split"] .gv-cover-media { order:0; aspect-ratio:auto; }
}

.gv[data-cover="minimal"] .gv-cover-media { display:none; }
.gv[data-cover="minimal"] .gv-cover-text { padding:clamp(3rem, 12vh, 8rem) clamp(1.25rem, 4vw, 3.5rem) clamp(2rem, 6vh, 4rem); }

/* sticky bar */
.gv .gv-bar { position:sticky; top:0; z-index:20; display:flex; align-items:center; gap:1rem; min-height:60px;
  padding:0 clamp(1rem, 3vw, 2.5rem); padding-top:env(safe-area-inset-top, 0px);
  background:color-mix(in srgb, var(--bg) 92%, transparent); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); }
.gv .gv-brand { font-family:var(--font-head); font-size:1.15rem; font-weight:500; text-decoration:none; margin-right:auto; }
.gv .gv-count { color:var(--muted); font-size:.9rem; }
.gv .gv-bar-actions { display:flex; gap:.5rem; }
.gv .gv-bar .gv-btn { min-height:40px; }
.gv .gv-menu { position:relative; }
.gv .gv-menu-list { position:absolute; right:0; top:calc(100% + 8px); min-width:250px; background:var(--bg); border:1px solid var(--line);
  border-radius:var(--radius); box-shadow:0 12px 32px rgba(0,0,0,.18); padding:6px; display:grid; }
.gv .gv-menu-list a { padding:.7rem .8rem; text-decoration:none; border-radius:max(var(--radius) - 2px, 0px); display:grid; }
.gv .gv-menu-list a:hover { background:color-mix(in srgb, var(--fg) 7%, transparent); }
.gv .gv-menu-list .gv-muted { font-size:.82rem; }
@media (max-width:520px) { .gv .gv-count { display:none; } .gv .gv-menu-list { right:-8px; min-width:min(260px, 86vw); } }

/* photos */
.gv .gv-photos { padding:var(--gap); }
.gv .gv-item { margin:0; position:relative; background:color-mix(in srgb, var(--fg) 6%, transparent); border-radius:var(--radius); overflow:hidden; }
.gv .gv-item > a:first-child { display:block; cursor:zoom-in; }
.gv .gv-item img { width:100%; height:auto; transition:transform .5s cubic-bezier(.2,.7,.2,1); }
@media (hover:hover) { .gv .gv-item:hover img { transform:scale(1.02); } }

.gv [data-layout="masonry"] .gv-photos, .gv[data-layout="masonry"] .gv-photos { column-width:280px; column-gap:var(--gap); }
.gv[data-layout="masonry"] .gv-item { break-inside:avoid; margin-bottom:var(--gap); }

.gv[data-layout="grid"] .gv-photos { display:grid; grid-template-columns:repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap:var(--gap); }
.gv[data-layout="grid"] .gv-item { aspect-ratio:1/1; }
.gv[data-layout="grid"] .gv-item > a:first-child, .gv[data-layout="grid"] .gv-item img { height:100%; }
.gv[data-layout="grid"] .gv-item img { object-fit:cover; }

.gv[data-layout="rows"] .gv-photos { display:flex; flex-wrap:wrap; gap:var(--gap); }
.gv[data-layout="rows"] .gv-item { flex:calc(var(--ar) * 100) 1 calc(var(--ar) * 230px); }
.gv[data-layout="rows"] .gv-photos::after { content:""; flex-grow:1000000; }
.gv[data-layout="rows"] .gv-item img { aspect-ratio:var(--ar); object-fit:cover; }

.gv .gv-dl { position:absolute; right:8px; bottom:8px; width:40px; height:40px; display:grid; place-items:center; color:#fff;
  background:rgba(12,12,12,.55); backdrop-filter:blur(6px); border-radius:max(var(--radius), 8px); text-decoration:none; opacity:0; transition:opacity .15s; }
.gv .gv-item:hover .gv-dl, .gv .gv-dl:focus-visible { opacity:1; }
@media (hover:none) { .gv .gv-dl { opacity:.9; } }
.gv .gv-empty { padding:6rem 1rem; text-align:center; color:var(--muted); }
.gv .gv-foot { padding:3rem 1rem 4rem; text-align:center; color:var(--muted); font-family:var(--font-head); }

/* unlock + message pages */
.gv .gv-unlock { min-height:100vh; min-height:100svh; display:grid; place-items:center; padding:1.5rem; }
.gv .gv-unlock-card { width:min(100%, 400px); display:grid; gap:.6rem; }
.gv .gv-unlock-card h1 { font-size:clamp(2rem, 8vw, 3rem); }
.gv .gv-studio { color:var(--muted); font-size:.9rem; margin-bottom:1.25rem; }
.gv .gv-unlock-card label { margin-top:1.25rem; font-size:.9rem; font-weight:500; }
.gv .gv-unlock-card input { min-height:48px; padding:0 .9rem; font:inherit; color:var(--fg); background:transparent;
  border:1px solid var(--line); border-radius:var(--radius); }
.gv .gv-unlock-card input:focus { border-color:var(--accent); outline:none; box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent); }
.gv .gv-unlock-card .gv-btn { margin-top:.6rem; min-height:48px; }
.gv .gv-error { color:#C2362B; font-size:.92rem; }
.gv[style*="--bg:#0F1A17"] .gv-error, .gv[style*="--bg:#09090A"] .gv-error { color:#FF8C7F; }
.gv .gv-link { margin-top:1rem; color:var(--muted); font-size:.9rem; }

/* lightbox */
.gv-lb { position:fixed; inset:0; z-index:100; background:rgba(8,8,9,.96); color:#f3f3f1; display:grid; grid-template-rows:auto 1fr; font-family:var(--font-body); }
.gv-lb[hidden] { display:none; }
.gv-lb-top { display:flex; align-items:center; gap:.75rem; padding:.6rem .9rem; padding-top:max(.6rem, env(safe-area-inset-top)); }
.gv-lb-count { margin-right:auto; font-size:.9rem; opacity:.75; }
.gv-lb-actions { display:flex; gap:.4rem; }
.gv-lb-actions a, .gv-lb-close { color:inherit; font:500 .9rem/1 var(--font-body); text-decoration:none; padding:0 1rem; min-height:44px; display:inline-flex; align-items:center;
  border:1px solid rgba(255,255,255,.25); border-radius:var(--radius); background:transparent; cursor:pointer; }
.gv-lb-actions a:hover, .gv-lb-close:hover { border-color:#fff; }
.gv-lb-stage { position:relative; min-height:0; display:grid; place-items:center; padding:0 clamp(0px, 6vw, 84px) max(1rem, env(safe-area-inset-bottom)); touch-action:pan-y; }
.gv-lb-stage img { max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; user-select:none; -webkit-user-drag:none; }
.gv-lb-nav { position:absolute; top:50%; translate:0 -50%; z-index:2; width:52px; height:72px; color:#fff; background:transparent; border:0; font-size:3rem; line-height:1; cursor:pointer; opacity:.7; }
.gv-lb-nav:hover { opacity:1; }
.gv-lb-prev { left:0; } .gv-lb-next { right:0; }
@media (max-width:700px) { .gv-lb-nav { width:44px; font-size:2.2rem; opacity:.55; } }

/* embed mode: no cover, compact bar, no sticky offset issues */
.gv.is-embed .gv-cover, .gv.is-embed .gv-foot { display:none; }
.gv.is-embed .gv-bar { position:static; }
.gv.is-embed .gv-unlock { min-height:420px; }

/* admin theme preview reuses these with a smaller footprint */
.gv-preview .gv-cover { min-height:260px !important; }
.gv-preview .gv-cover h1 { font-size:2.2rem; }
.gv-preview .gv-bar { position:static; }

@media (prefers-reduced-motion:reduce) { .gv * { transition:none !important; } .gv .gv-item:hover img { transform:none; } html { scroll-behavior:auto; } }
html { scroll-behavior:smooth; }
