/*
 * Shared lightbox styles — extracted from couple/gallery.html (2026-05-19;
 * that orphan template was deleted 2026-08-17, this file is the sole home).
 * Loaded once via layouts/shell_couple.html. Owns:
 *   - #cg-lb modal frame, #lb-top, #lb-bottom, #lb-bg
 *   - .lb-arrow, .lb-action-btn, .lb-bbox, .lb-circle, .lb-cloud
 *   - .lb-addperson-mode, .lb-drag-bbox, .lb-snap-miss-flash
 *   - .lb-bbox-notface, .lb-cloud-notface (E1)
 *   - .lb-circles-overlay (Phase 4B Bruno 2026-05-17 + G4 2026-05-19)
 *
 * Ne dodaji nova pravila bez Rasmus consulta.
 * CSS varijable koje koristi (--cream, --ivory, --charcoal, --gold, --stone,
 * --red, --warm-black) MORAJU biti definirane u shell_couple.html ili
 * dalia-portal.css. Phase 1 (Bruno 2026-05-19) seli :root deklaraciju
 * iz gallery.html u shell_couple.html — bez te promjene lightbox bi
 * pao u transparent fallback na svim ne-gallery rutama.
 */

/* ── LIGHTBOX ────────────────────────────────────────────────────── */
/* B (Bruno 2026-06-07): "dualan play gumb na reprodukciji". Uzrok: iOS Safari
   crta VLASTITI veliki play-gumb (start-playback-button) na inline <video> PORED
   našeg #lb-play-btn. Sakrij nativni — naš badge je jedini. Vrijedi i za grid
   (muted autoplay) gdje bi iOS isto nacrtao svoj na poster/pauzi. Preview u
   upload-modalu zadržava native controls (ondje ih hoćemo). */
/* iOS crta DVA moguća play-gumba na inline videu: -start-playback-button (prije
   prvog igranja) I -overlay-play-button (veliki centrirani, na pauzi). Bruno je
   "plus" još vidio jer prvi krug NIJE pokrio overlay. Sakrij OBA + panel +
   default controls → ostaje SAMO naš #lb-play-btn (vlastita reprodukcija). */
#lb-video::-webkit-media-controls-start-playback-button,
#lb-video::-webkit-media-controls-overlay-play-button,
#lb-video::-webkit-media-controls-panel,
#lb-video::-webkit-media-controls,
.feed-cell--video video::-webkit-media-controls-start-playback-button,
.feed-cell--video video::-webkit-media-controls-overlay-play-button,
.feed-cell--video video::-webkit-media-controls-panel,
.feed-cell--video video::-webkit-media-controls{display:none!important;-webkit-appearance:none;}
/* Belt-and-suspenders: i ako bi browser pokušao prikazati kontrole, sakrij. */
#lb-video::-webkit-media-controls-enclosure{display:none!important;}

/* Bruno 2026-07-29: "ne sviđa mi se ova crna, tamna galerija, crna mi nije baš
   neka elegantna." Pregled fotografije više NIJE crna kutija — podloga je
   Dalia papir (--paper-2), fotografija na njemu stoji kao otisak na zidu, a
   sve kontrole padaju s bijelog na tintu. Blur ostaje (galerija iza se nazire),
   pa je podloga namjerno malo prozirna; prva deklaracija je fallback za
   preglednike bez color-mix. */
#cg-lb{position:fixed;inset:0;z-index:1000;
  /* Lokalna paleta pregleda — JEDNO mjesto istine za svjetlo/tamno. Dark mode
     u portalu je per-komponenta (nema token flipa u :root), pa ga lightbox
     rješava ovdje: iste deklaracije, druge vrijednosti. */
  --lb-surface: var(--paper-2,#f2e6db);
  --lb-panel:   var(--paper,#fffaf6);
  --lb-ink:     var(--ink,#3f3138);
  --lb-ink-soft:var(--ink-soft,#8B7F6E);
  --lb-veil:    rgba(63,49,56,.08);
  --lb-veil-2:  rgba(63,49,56,.18);
  --lb-line:    rgba(63,49,56,.12);
  --lb-ring:    rgba(63,49,56,.35);
  --lb-glass:   rgba(255,250,246,.72);
  background:var(--lb-surface);
  background:color-mix(in srgb, var(--lb-surface) 96%, transparent);
  -webkit-backdrop-filter:blur(10px) saturate(1.02);backdrop-filter:blur(10px) saturate(1.02);
  display:none;flex-direction:column;align-items:center;justify-content:center;}
body.dark-mode #cg-lb{
  --lb-surface:#241f22;
  --lb-panel:#2e2a2c;
  --lb-ink:#e8ded0;
  --lb-ink-soft:#9b9188;
  --lb-veil:rgba(232,222,208,.10);
  --lb-veil-2:rgba(232,222,208,.22);
  --lb-line:rgba(232,222,208,.16);
  --lb-ring:rgba(232,222,208,.42);
  --lb-glass:rgba(46,42,44,.75);}
#cg-lb.open{display:flex;}

/* Top bar — Bruno 2026-07-29: niži, bez tamnog gradijenta, kontrole diskretne.
   Lijevo Dalia znak + brojač + autor, desno akcije. */
#lb-top{position:absolute;top:0;left:0;right:0;padding:10px 14px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:linear-gradient(var(--lb-surface),transparent);z-index:5;}
#lb-top-meta{display:flex;align-items:center;gap:10px;min-width:0;}
/* Mali SIVI Dalia znak bez teksta — potpis, ne logo-blok. Grayscale je
   namjeran (znak ovdje ne smije konkurirati fotografiji); statičan filter,
   bez animacije. */
#lb-mark{width:20px;height:20px;display:block;flex-shrink:0;
  filter:grayscale(1);opacity:.42;pointer-events:none;}
body.dark-mode #lb-mark{opacity:.55;}
#lb-counter{color:var(--lb-ink-soft);font-size:12px;letter-spacing:.04em;
  font-variant-numeric:tabular-nums;}
/* Rasmus 2026-06-07: X = staklo (glass). Bruno 2026-07-29: X NIJE dominantan —
   ista ploha i ista težina kao ostale akcije, razlika je samo u ikoni. */
#lb-close{background:transparent;border:1px solid transparent;
  color:var(--lb-ink);cursor:pointer;width:44px;height:44px;
  padding:8px;display:flex;align-items:center;justify-content:center;
  transition:background .15s,color .15s,border-color .15s;border-radius:50%;}
#lb-close:hover{color:var(--lb-ink);background:var(--lb-veil);}
#lb-close:focus-visible{outline:2px solid var(--lilac-400,#b692d4);outline-offset:2px;}
#lb-top-actions{display:flex;align-items:center;gap:2px;}
/* 44px je sada osnovna mjera, ne mobilna iznimka (2026-08-06) — miš promašuje
   40px jednako kao prst, samo se rjeđe žali. Pravilo za `hover:none` je time
   postalo prazno i obrisano je. */

/* Image area */
/* Edge-to-edge (Bruno 2026-06-03, Rasmus): slika prekriva glavninu ekrana, bez
   60px crnog paspartua. Akcije sjede preko slike (gradijenti niže pojačani). */
#lb-img-wrap{position:relative;max-width:100vw;max-height:100vh;
  display:flex;align-items:center;justify-content:center;}
/* Bruno 2026-06-07: "blago zaobljeni moment" — daj malo daha (frosted pozadina
   to opravdava) da se radius 10px vidi; meka box-shanka. Slika i video isti jezik. */
/* Bruno 2026-07-29: na papirnatoj podlozi crna sjena je mrlja — mekša,
   mauve-tonirana sjena (isti jezik kao --shadow-lg u portalu). */
#lb-img{max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);object-fit:contain;
  display:block;transition:opacity .2s;border-radius:10px;
  box-shadow:0 26px 64px -30px rgba(45,34,56,.42);}
#lb-img.loading{opacity:0;}
#lb-video{max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);object-fit:contain;
  display:block;background:var(--ink,#3f3138);cursor:pointer;border-radius:10px;
  box-shadow:0 26px 64px -30px rgba(45,34,56,.42);}
/* Rasmus 2026-06-07: klik kruga na pauzi → lilac pravokutnik oko lica na frame-u.
   Scale-in 220ms / fade-out 180ms. pointer-events none (ne hvata klik, ne prati). */
.lb-vbbox{position:absolute;border:1.5px solid #b692d4;border-radius:6px;
  box-shadow:0 0 0 1px rgba(0,0,0,.28), 0 6px 18px -6px rgba(182,146,212,.55);
  pointer-events:none;opacity:0;transform:scale(1.06);z-index:4;
  transition:opacity .18s ease, transform .22s cubic-bezier(.22,1,.36,1);}
.lb-vbbox.show{opacity:1;transform:scale(1);}
/* #8 zoom: dok je medij zoomiran, face overlay (krugovi/bbox) bi se razišao →
   sakrij ga; vrati se na fit. Touch-action none na zoomu da browser ne preuzme gestu. */
#lb-img-wrap.lb-zoomed #lb-face-layer,#lb-img-wrap.lb-zoomed ~ #lbCircles,
.lb-zoomed .lb-vbbox{opacity:0!important;pointer-events:none!important;}
#lb-img-wrap.lb-zoomed{touch-action:none;}

/* "Osoba u videu" explorer (Bruno+Rasmus 2026-06-08): bottom-sheet 88% */
#lb-vexplorer{position:fixed;inset:0;z-index:1100;display:none;}
#lb-vexplorer.open{display:block;}
.lb-vex-scrim{position:absolute;inset:0;background:rgba(26,23,20,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}
.lb-vex-sheet{position:absolute;left:0;right:0;bottom:0;height:88%;background:#fffaf6;border-radius:20px 20px 0 0;
  box-shadow:0 -20px 60px -20px rgba(0,0,0,.5);display:flex;flex-direction:column;padding:10px 16px 18px;
  transform:translateY(100%);transition:transform .32s cubic-bezier(.22,1,.36,1);}
#lb-vexplorer.open .lb-vex-sheet{transform:translateY(0);}
.lb-vex-grip{width:40px;height:4px;border-radius:2px;background:#d8cfc4;margin:2px auto 10px;flex-shrink:0;}
.lb-vex-close{position:absolute;top:12px;right:14px;width:34px;height:34px;border:none;border-radius:50%;
  background:rgba(20,15,12,.06);color:#3f3138;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2;}
.lb-vex-circles{display:flex;gap:12px;overflow-x:auto;padding:2px 2px 12px;flex-shrink:0;scrollbar-width:none;}
.lb-vex-circles::-webkit-scrollbar{display:none;}
.lb-vex-circ{flex-shrink:0;width:60px;height:60px;border-radius:50%;border:2px solid transparent;cursor:pointer;
  background-size:cover;background-position:center;background-color:#e2cff3;
  display:flex;align-items:center;justify-content:center;color:#6b4f8a;font-family:'Cardo',Georgia,serif;font-size:22px;
  transition:border-color .15s,transform .15s;}
.lb-vex-circ.sel{border-color:#b692d4;transform:scale(1.07);}
.lb-vex-circ:hover{border-color:#d3bbe8;}
.lb-vex-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#1a1714;border-radius:14px;overflow:hidden;margin:2px 0 8px;}
.lb-vex-stage video{max-width:100%;max-height:100%;object-fit:contain;transition:opacity .12s ease;}
.lb-vex-stage.cut video{opacity:.25;}
.lb-vex-name{font-family:'Cardo',Georgia,serif;font-size:17px;color:#3f3138;text-align:center;margin-bottom:10px;min-height:22px;flex-shrink:0;}
.lb-vex-timeline{position:relative;height:8px;border-radius:4px;background:#ece3d8;flex-shrink:0;cursor:pointer;}
.lb-vex-seg{position:absolute;top:0;bottom:0;background:#b692d4;border-radius:4px;min-width:3px;transition:background .15s;}
.lb-vex-seg:hover{background:#8e62b8;}
.lb-vex-play{position:absolute;top:-3px;width:2px;height:14px;background:#3f3138;border-radius:1px;pointer-events:none;box-shadow:0 0 7px rgba(182,146,212,.9);}
@media(max-width:700px){.lb-vex-sheet{height:90%;}.lb-vex-circ{width:54px;height:54px;}}
/* IG-style video kontrole (Bruno 2026-06-06 v2): mute DIREKTNO ISPOD play,
   blizu njega — oba centrirana stupcem, vidljiva SAMO na pauzi (ne smeta dok
   video igra). Tap na video = pauza/igra. */
/* Bug fix 2026-06-06: kad je hidden (slika), MORA nestati — inače pause-event
   pri navigaciji re-doda .is-paused i kontrole iskoče na susjednoj fotki. */
#lb-video-ctrls[hidden]{display:none!important;}
#lb-video-ctrls{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  display:flex;flex-direction:column;align-items:center;gap:12px;pointer-events:none;
  opacity:0;transition:opacity .16s ease;}
#lb-img-wrap.is-paused #lb-video-ctrls{opacity:1;}
#lb-img-wrap.is-paused #lb-play-btn{pointer-events:auto;}
/* Rasmus 2026-06-07: play badge = SAMO znak na pauzi (centriran).
   Bruno 2026-06-11: staklasti paper (ne crni) — ista obitelj kao mute/cloud. */
#lb-play-btn{width:72px;height:72px;border-radius:50%;
  border:1px solid var(--lilac-200,#e2cff3);
  background:rgba(255,250,246,.66);color:var(--ink,#3f3138);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  box-shadow:0 8px 24px rgba(45,34,56,.18);
  transition:background .15s,transform .15s;}
#lb-play-btn:hover{background:var(--paper,#fffaf6);transform:scale(1.05);}
/* Staklasti paper gumbi ostaju svijetli i u dark modu (lightbox je kino), ali
   im ikona ide kroz var(--ink) koji u darku posvijetli → svijetlo na svijetlom.
   Ikona se vraća na tamnu tintu. */
body.dark-mode #lb-play-btn,
body.dark-mode #lb-mute-btn { color: #3f3138; }
#lb-play-btn svg{margin-left:3px;}
/* Rasmus 2026-06-07: mute u donji-desni kut, UVIJEK vidljiv dok video traje (ne
   više u centriranom stupcu koji se gasi dok igra). Van #lb-video-ctrls u markupu.
   Bruno 2026-06-11: staklasti paper (ne crni) — ista obitelj kao lb-cloud/pill. */
#lb-mute-btn{position:absolute;right:16px;bottom:84px;z-index:6;
  width:38px;height:38px;border-radius:50%;
  border:1px solid var(--lilac-200,#e2cff3);
  background:rgba(255,250,246,.72);color:var(--ink,#3f3138);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  box-shadow:0 8px 24px rgba(45,34,56,.18);
  transition:background .15s,transform .15s;}
#lb-mute-btn[hidden]{display:none!important;}
#lb-mute-btn:hover{background:var(--paper,#fffaf6);transform:scale(1.06);}

/* Minimalni progress bar (Bruno 2026-06-11): 3px traka na dnu video elementa.
   Track ivory/25, fill lilac-400. Kontejner je viši (hit-area 16px) radi
   klik/tap seek-a; vidljiv suptilno cijelo vrijeme reprodukcije. */
#lb-vprogress{position:absolute;left:10px;right:10px;bottom:0;height:16px;
  display:flex;align-items:flex-end;padding-bottom:5px;cursor:pointer;z-index:6;}
#lb-vprogress[hidden]{display:none!important;}
.lb-vprogress-track{width:100%;height:3px;border-radius:2px;overflow:hidden;
  background:var(--lb-veil-2);}
#lb-vprogress-fill{height:100%;width:0;border-radius:2px;
  background:var(--lilac-400,#b692d4);}
/* Oznaka vremena — staklasti paper pill, pojavi se s chromeom (pauza) i
   izblijedi s njim (--ease). pointer-events none (ne hvata tap). */
#lb-vtime{position:absolute;left:14px;bottom:26px;z-index:6;
  padding:4px 10px;border-radius:12px;
  background:rgba(255,250,246,.72);color:var(--ink,#3f3138);
  border:1px solid var(--lilac-200,#e2cff3);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  font-family:'Manrope',system-ui,sans-serif;font-size:11px;
  letter-spacing:.03em;font-variant-numeric:tabular-nums;
  opacity:0;pointer-events:none;
  transition:opacity .3s var(--ease,cubic-bezier(0.22,1,0.36,1));}
#lb-vtime:empty{display:none;}
#lb-img-wrap.is-paused #lb-vtime{opacity:1;}
/* Pending/failed video (prazan url): tiha poruka u paused stanju. */
#lb-video-hint{position:absolute;left:0;right:0;bottom:18%;text-align:center;
  color:var(--lb-ink-soft);font-family:'Manrope',system-ui,sans-serif;
  font-size:13px;letter-spacing:.02em;pointer-events:none;display:none;}
#lb-img-wrap.is-video-pending #lb-video-hint{display:block;}
#lb-img-wrap.is-video-pending #lb-play-btn{display:none;}
#lb-spinner{position:absolute;inset:0;display:none;align-items:center;
  justify-content:center;pointer-events:none;}
#lb-spinner.show{display:flex;}
#lb-spinner svg{animation:lb-spin 1s linear infinite;color:var(--lb-ink-soft);}
@keyframes lb-spin{to{transform:rotate(360deg)}}

/* Navigation arrows — Bruno 2026-06-11: skrivene dok korisnik ne "probudi"
   chrome (tap na fotku na touchu / mousemove na desktopu → JS doda .lb-nav-on
   na #cg-lb); ~2.5s neaktivnosti → blagi fade-out (--ease). Samo opacity
   tranzicije (bez display skokova); pointer-events ugašen dok su skrivene.
   .lb-arrow-off = jedina fotka (nema kamo) — trajno skrivene. */
.lb-arrow{position:absolute;top:50%;transform:translateY(-50%);
  background:var(--lb-glass);border:1px solid var(--lb-line);
  color:var(--lb-ink);cursor:pointer;
  width:44px;height:56px;display:flex;align-items:center;justify-content:center;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  opacity:0;pointer-events:none;
  transition:background .2s,opacity .45s var(--ease,cubic-bezier(0.22,1,0.36,1));
  z-index:5;border-radius:12px;}
#cg-lb.lb-nav-on .lb-arrow{opacity:1;pointer-events:auto;}
.lb-arrow.lb-arrow-off{opacity:0!important;pointer-events:none!important;}
.lb-arrow:hover{background:var(--lb-panel);border-color:var(--lilac-400,#b692d4);}
#lb-prev{left:12px;}
#lb-next{right:12px;}

/* Bottom info — Bruno 2026-07-29: manji gumbi, papirnati gradijent umjesto
   crne trake, datum i sekcija u tinti. */
#lb-bottom{position:absolute;bottom:0;left:0;right:0;padding:14px 16px 12px;
  background:linear-gradient(transparent,var(--lb-surface));z-index:5;
  display:flex;align-items:flex-end;justify-content:space-between;gap:12px;}
#lb-meta{flex:1;min-width:0;}
#lb-meta-name{color:var(--lb-ink);font-size:13px;margin-bottom:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#lb-meta-name:empty{display:none;}
#lb-meta-date{color:var(--lb-ink-soft);font-size:11px;}
/* D2 (Rasmus audit 2026-05-18): section chip kao treća meta stavka.
   Ista boja, ista veličina kao date — paralelno, ne hijerarhijski. */
#lb-meta-section{color:var(--lb-ink-soft);font-size:11px;
                 font-family:'Manrope',system-ui,sans-serif;letter-spacing:.04em;}
#lb-meta-section:empty{display:none;}
/* F (Bruno 2026-06-04): tko je objavio — GORE uz counter, diskretno. */
#lb-top-uploader{color:var(--lb-ink-soft);font-size:11px;
                 font-family:'Manrope',system-ui,sans-serif;letter-spacing:.04em;
                 overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#lb-top-uploader:empty{display:none;}
/* Ime autora vodi na njegov profil (2026-08-06) — poveznica se čita kao ime,
   ne kao gumb: podcrta tek na dodiru, jer traka nad fotografijom nema pravo
   vikati. Dodirna meta je cijela linija (min 44 px visine kroz padding). */
#lb-top-uploader .lb-uploader-link{color:inherit;text-decoration:none;
                 display:inline-block;padding:4px 0;}
#lb-top-uploader .lb-uploader-link:hover,
#lb-top-uploader .lb-uploader-link:focus-visible{text-decoration:underline;
                 text-underline-offset:2px;color:var(--lb-ink,#F5EFE6);}

/* E3 mode ribbon — top center, fade-in samo dok je mode aktivan.
   Rasmus: "10px Manrope, ivory/65, fade-in 200ms pri ulasku u mode". */
#lb-mode-ribbon{position:fixed;top:16px;left:50%;transform:translateX(-50%);
                z-index:10001;padding:6px 14px;border-radius:18px;
                background:rgba(20,20,20,.72);color:rgba(248,244,239,.65);
                font-family:'Manrope',system-ui,sans-serif;
                font-size:10px;letter-spacing:.06em;
                opacity:0;transition:opacity 200ms ease;pointer-events:none;}
#lb-mode-ribbon.show{opacity:1;}

/* E3 add-person mode — crosshair cursor + suttle ivory dotted overlay.
   Rasmus: "signal klikni gdje god, sustav će razumjeti. Ne prikazujemo
   nevidljive bbox-eve". */
.lb-addperson-mode #lb-img-wrap{cursor:crosshair;}
.lb-addperson-mode #lb-img{
  outline:1px dashed rgba(248,244,239,.15);outline-offset:-2px;
}

/* E3 snap miss crveni flash — Rasmus: "1.2s flash, opacity 0→1→0,
   bez zvuka". Korisnik vidi 'ovdje nema lica'. */
.lb-snap-miss-flash{position:absolute;border:2px solid rgba(220,80,80,.8);
                    border-radius:4px;pointer-events:none;
                    animation: lb-flash-miss 1200ms ease-out;}
@keyframes lb-flash-miss{
  0%{opacity:0;transform:scale(.6);}
  20%{opacity:1;transform:scale(1);}
  100%{opacity:0;transform:scale(1.1);}
}

/* E3 manual drag bbox — lilac border tijekom drag-a, no zatamnjenje pozadine.
   Rasmus: "subtle 1.5px lilac border tijekom drag-a, gotovo". */
.lb-drag-bbox{position:absolute;border:1.5px solid #b692d4;
              background:rgba(182,146,212,.08);pointer-events:none;
              border-radius:2px;}

/* E1 lokacija A — "Ovo nije lice" pill iznad active bbox.
   Rasmus: "tanki pill, padding 5px 10px, opacity 0→1 u 180ms".
   Bruno 2026-06-11: paper/ink/lilac umjesto tamnog (ista obitelj kao cloud). */
.lb-bbox-notface{position:absolute;left:50%;
                 padding:5px 10px;border-radius:14px;
                 background:var(--paper,#fffaf6);
                 color:var(--ink,#3f3138);
                 border:1px solid var(--lilac-200,#e2cff3);
                 box-shadow:0 8px 24px rgba(45,34,56,.18);
                 font-family:'Manrope',system-ui,sans-serif;
                 font-size:11px;letter-spacing:.04em;white-space:nowrap;
                 cursor:pointer;opacity:0;transition:opacity 180ms ease;
                 transform:translateX(-50%);pointer-events:auto;}
.lb-bbox-notface.show{opacity:1;}
/* Default: iznad bbox-a. Flip ispod ako bbox je u gornjih 60px ekrana. */
.lb-bbox-notface{top:-32px;}
.lb-bbox-notface.below{top:auto;bottom:-32px;}
.lb-bbox-notface:hover{color:var(--ink,#3f3138);
                       border-color:var(--lilac-400,#b692d4);}

/* E1 lokacija B — footer u classify cloud. Rasmus: "blago, 10px Manrope,
   ink/45 boja, align center, padding 8px 0, border-top 1px ink/8".
   Bruno 2026-06-11: cloud je sad paper → ink tonovi (doslovno po Rasmusu). */
.lb-cloud-notface{margin-top:10px;padding-top:8px;
                  border-top:1px solid rgba(63,49,56,.08);
                  text-align:center;cursor:pointer;
                  color:rgba(63,49,56,.45);
                  font-family:'Manrope',system-ui,sans-serif;
                  font-size:10px;letter-spacing:.06em;
                  transition:color 160ms;}
.lb-cloud-notface:hover{color:rgba(63,49,56,.75);}
#lb-actions{display:flex;gap:4px;flex-shrink:0;align-items:center;}
/* Bruno 2026-07-29: kontrole su sekundarne — tihe, bez ploha i bez VERZALA.
   Ikone same nose značenje; tekst ostaje samo tamo gdje ikona nije dovoljna
   ("Označi osobu"). Touch target ≥40px (44 na prstu), vizualna težina ~0. */
/* ⚠️ 2026-08-06 (Bruno: „ove opcije kad se uđe u fotku su premale, ništa se ne
   vidi"). Dva su razloga bila, i oba su bila mjerljiva:

     · SVG-ovi u `templates/components/lightbox.html` su 13×13 px — pet puta
       manji od plohe koja ih nosi. Zvjezdica, dijeljenje i preuzimanje su bili
       sitni potezi u velikoj praznini, pa se traka čitala kao ukras, ne kao
       radnje. Ikone su podignute na 18px u markupu.
     · Ploha je bila 40px, ispod dodirnog minimuma od 44 (VISUAL_CANON:166-174),
       a `@media (hover:none)` ju je dizao samo na `#lb-close`. Ostale tri su i
       na prstu ostajale 40px.

   Ovo NIJE povećanje vizualne težine: ploha je i dalje prozirna i bez ruba,
   raste samo meta i ikona u njoj. */
.lb-action-btn{background:transparent;border:1px solid transparent;
  color:var(--lb-ink);
  cursor:pointer;padding:8px 12px;min-height:44px;min-width:44px;border-radius:999px;
  font-family:'Manrope',system-ui,sans-serif;font-size:12px;letter-spacing:.02em;
  display:flex;align-items:center;justify-content:center;gap:6px;
  transition:background .15s,color .15s,border-color .15s;}
.lb-action-btn:hover{background:var(--lb-veil);}
.lb-action-btn:focus-visible{outline:2px solid var(--lilac-400,#b692d4);outline-offset:2px;}
.lb-action-btn.gold{color:var(--gold-deep,#a55779);background:rgba(181,107,141,.14);}
.lb-action-btn.gold:hover{background:rgba(181,107,141,.24);}
.lb-action-btn.danger{color:var(--rose-500,#b87a76);background:rgba(184,122,118,.12);}
.lb-action-btn.danger:hover{background:rgba(184,122,118,.2);}
@media (hover:none){ .lb-action-btn{min-height:44px;min-width:44px;} }

/* Slot picker REMOVED in Phase 4B (Bruno 2026-05-16: "ne idemo u tom smjeru").
   Invitation slot assignment (PROFILNA/PORTAL POZA/POZIVNICA 1-3) lives
   on the invitation builder page, not in the lightbox. Cluster identify
   ("Tko je ovo?") remains — vidi #lbCloud niže. */

/* Backdrop — sits behind image, click to close */
#lb-bg{position:absolute;inset:0;z-index:-1;cursor:default;}

/* Swipe hint */
#lb-swipe-hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  background:rgba(0,0,0,.6);color:rgba(255,255,255,.7);font-size:11px;padding:8px 14px;
  border-radius:20px;pointer-events:none;opacity:0;transition:opacity .3s;}

/* ── REJECT MODAL ────────────────────────────────────────────────── */
#rejectModal{display:none;position:fixed;inset:0;background:rgba(26,23,20,.6);
  z-index:2000;align-items:center;justify-content:center;}
#rejectModal.show{display:flex;}
.rj-box{background:white;max-width:400px;width:90%;padding:32px 28px;border-radius:10px;}
.rj-title{font-family:var(--font-display);font-size:18px;font-weight:400;margin-bottom:10px;}
.rj-msg{font-size:12px;color:var(--stone);line-height:1.6;margin-bottom:24px;}
.rj-btns{display:flex;gap:10px;}
.rj-cancel{flex:1;background:none;border:1px solid var(--ivory);padding:11px;font-size:11px;
  letter-spacing:.06em;text-transform:uppercase;cursor:pointer;border-radius:6px;}
.rj-confirm{flex:1;background:var(--red);color:white;border:none;padding:11px;font-size:11px;
  letter-spacing:.06em;text-transform:uppercase;cursor:pointer;border-radius:6px;}

/* ── TOAST ───────────────────────────────────────────────────────── */
#cg-toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);
  background:var(--dark-fill, var(--warm-black));color:white;font-size:12px;padding:10px 22px;
  opacity:0;transition:opacity .25s;pointer-events:none;z-index:9999;
  border-radius:20px;white-space:nowrap;}
#cg-toast.show{opacity:1;}

/* ── SPRINT C: Lightbox face interaction (Rasmus audit 2026-05-16) ──
   Bbox overlay + people circles + classification cloud. Three rules:
   1. Lightbox primarily a *photo viewer* — bbox visibility is opt-in, with
      ~1s idle delay before fade-in so the user sees the photo first.
   2. Filled circle = navigation to person album. Hollow circle = open
      classify cloud. Same visual family, intentionally different fills.
   3. Desktop = anchored pointer cloud. Mobile = bottom sheet. Switch
      criterion: viewport < 700px OR bbox shorter than 60px in screen
      pixels. Never one pattern for both. */

/* Phase 4B (Bruno 2026-05-16): face bbox je sad PER-RECT hover-only.
   Default opacity 0 — bbox je nevidljiv dok mouse ne uđe točno preko
   pojedinog pravokutnika. Rasmus citat: "affordance always on,
   signifier on-demand". Slika nosi težinu, ne overlay. */
#lb-face-layer{position:absolute;inset:0;pointer-events:none;}
#lb-face-layer.show{pointer-events:auto;}
.lb-bbox{position:absolute;background:transparent;border:1.5px solid rgba(248,244,239,.4);
  border-radius:4px;cursor:pointer;opacity:0;
  transition:opacity .2s ease-out, border-color .15s, box-shadow .15s;
  padding:0;}
.lb-bbox.classified{border-color:rgba(155,138,184,.55);}  /* lilac-400/55 */
.lb-bbox:hover{opacity:1;border-width:2px;border-color:#9B8AB8;
  box-shadow:0 0 6px rgba(155,138,184,.35);}
.lb-bbox.active{opacity:1;border-width:2px;border-color:#B56B8D;
  box-shadow:0 0 8px rgba(181,107,141,.5);}
/* Mobile first-use hint: bbox-evi blink jednom kad korisnik prvi put
   otvori lightbox na touch device-u, signal "ovdje su lica". Session
   flag u localStorage da ne ponavlja. Triggered by JS, .lb-hint klasa. */
.lb-bbox.lb-hint{animation: lb-bbox-hint 800ms ease-out 1;}
@keyframes lb-bbox-hint {
  0%, 100% { opacity: 0; }
  50% { opacity: 1; border-color: #b692d4; box-shadow: 0 0 8px rgba(182,146,212,.6); }
}

/* Phase 4B + Bruno 2026-05-17 + G4 2026-05-19: people circles overlay.
   Bruno: "ako ima puno kružića da ne blokiraju značajke". Opcija A iz
   spec-a (Rasmus): 44px desktop, flex-wrap u drugi stupac s max-height
   = min(380px, calc(100vh - 200px)). Mobile: bottom strip ispod meta,
   38px, row wrap. Zander: density nije broj nego osjećaj — grupiranje
   u tihu kolonu dok ne treba pažnju. */
/* z-index 6 (Bruno 2026-06-04): krugovi IZNAD #lb-bottom ravnine (kategorija),
   ništa preko njih. Labeli krugova idu još iznad (z-index 9). */
.lb-circles-overlay{position:absolute;top:64px;right:24px;display:flex;
  flex-direction:column-reverse;flex-wrap:wrap-reverse;gap:8px;z-index:6;
  pointer-events:auto;
  max-height:min(380px, calc(100vh - 200px));
  align-content:flex-start;}
.lb-circles-overlay.lb-circles-empty{display:none;}
/* Video (Bruno 2026-06-06): krugovi skriveni dok video igra, otkriju se na
   pauzi (IG princip — "tko je u kadru" kad zaustaviš). */
#cg-lb.lb-vplaying .lb-circles-overlay{opacity:0;pointer-events:none;
  transition:opacity .2s ease;}

/* Legacy .lb-circles class still used by JS rendering; styles below apply
   regardless of which parent class owns the children. */
.lb-circles{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;
  max-width:480px;margin:0 auto 10px;padding:8px 12px;
  background:var(--lb-veil);border-radius:24px;}
/* Bruno 2026-07-29: podloga je sad papir — ivory rubovi krugova su na njoj
   bili nevidljivi; ring ide u tintu, hover u lilac (couple signal). */
.lb-circle{width:44px;height:44px;border-radius:50%;background:none;
  border:1.5px solid var(--lb-ring);cursor:pointer;display:flex;
  align-items:center;justify-content:center;font-family:'Manrope',system-ui,sans-serif;
  font-size:13px;color:var(--lb-ink-soft);padding:0;flex-shrink:0;
  transition:transform .15s ease, border-color .15s, background .2s;
  position:relative;background-repeat:no-repeat;background-position:center;
  background-size:220%;}
.lb-circle:hover{transform:scale(1.08);border-color:var(--lilac-500,#8e62b8);
  color:var(--lb-ink);}

/* Bruno 2026-05-19 BUG fix: klik na classified bbox sad highlight-a krug
   + ime ispod (umjesto navigation na nepostojeću rutu). Scale up + label
   appear ispod kruga, auto-hide 2.5s ili na sljedeći klik. */
/* D (Bruno 2026-06-04): klik na krug → jasno POVEĆANJE + veći čitljiv label.
   Krug 44px→~62px (scale 1.42 desktop / 1.5 mobile), label 15px, više gapa od
   pojačanog ringa, centriran ispod kruga. */
.lb-circle.lb-name-shown{transform:scale(1.42);
  box-shadow:0 0 0 3px rgba(182,146,212,.85), 0 8px 24px rgba(182,146,212,.45);
  z-index:8;}
@media (max-width:700px){ .lb-circle.lb-name-shown{transform:scale(1.5);} }
/* Label UVIJEK IZNAD kruga (Bruno 2026-06-04): krugovi su pri donjem rubu pa bi
   label ispod bio odrezan; iznad je uvijek vidljiv ("njihov tekst ide iznad
   krugova uvijek"). */
.lb-circle-name-label{position:absolute;bottom:calc(100% + 12px);left:50%;
  transform:translateX(-50%);padding:6px 14px;border-radius:14px;
  background:rgba(20,15,12,.9);color:#fdfaf4;
  font-family:'Manrope',system-ui,sans-serif;font-size:15px;
  letter-spacing:.01em;white-space:nowrap;pointer-events:none;
  /* Cap + ellipsis — label nikad ne pređe širinu fotke (+ JS viewport clamp). */
  max-width:min(240px,60vw);overflow:hidden;text-overflow:ellipsis;
  opacity:0;animation:lb-name-fadein 180ms ease forwards;z-index:9;}
@keyframes lb-name-fadein{to{opacity:1;}}

/* G3 (Bruno 2026-05-19): hover bbox ↔ circle cross-highlight.
   Bruno: "kada se hovera preko pravokutnika da i blago zasjaji ili se
   animira kružić s kojom osobom korespondira". Two-way breath puls.
   Zander citation: affordance pairing — dimension breath, ne color shift. */
@keyframes lb-circle-breath {
  0%, 100% { transform: scale(1.0);
    box-shadow: 0 0 0 1px rgba(155,138,184,.35), 0 2px 8px rgba(0,0,0,.25); }
  50% { transform: scale(1.06);
    box-shadow: 0 0 0 2px rgba(155,138,184,.55), 0 4px 14px rgba(155,138,184,.35); }
}
.lb-circle.lb-correlated { animation: lb-circle-breath 1.6s ease-in-out infinite; }
@keyframes lb-bbox-breath {
  0%, 100% { border-color: rgba(155,138,184,.55); }
  50% { border-color: rgba(155,138,184,.95); }
}
.lb-bbox.lb-correlated { animation: lb-bbox-breath 1.6s ease-in-out infinite;
                          border-width: 2px; }
.lb-circle.filled{
  border-color:rgba(155,138,184,.7);color:transparent;font-size:0;
  box-shadow:0 0 0 1px rgba(155,138,184,.35), 0 2px 8px rgba(0,0,0,.25);}
.lb-circle.filled:hover{border-color:#9B8AB8;
  box-shadow:0 0 0 2px rgba(155,138,184,.6), 0 4px 12px rgba(0,0,0,.35);}
.lb-circle.filled.no-thumb{
  background:linear-gradient(135deg, rgba(155,138,184,.85), rgba(151,176,156,.75));}
/* Bruno 2026-05-18: hollow krug sada pokazuje face crop iz trenutne fotke,
   ne više bezlični "?". Razlika prema filled: dashed border + zlatni "+"
   plate u donjem desnom kutu signalizira "još nije imenovano". */
.lb-circle.hollow{color:transparent;font-size:0;
  border-style:dashed;border-color:rgba(181,107,141,.55);
  box-shadow:0 2px 8px rgba(0,0,0,.2);}
.lb-circle.hollow:hover{border-color:#B56B8D;border-style:solid;
  box-shadow:0 0 0 2px rgba(181,107,141,.45), 0 4px 12px rgba(0,0,0,.3);}
.lb-circle-plate{position:absolute;bottom:-2px;right:-2px;
  width:18px;height:18px;border-radius:50%;background:#B56B8D;
  color:#1A1714;font-size:14px;font-weight:600;line-height:18px;
  font-family:'Manrope',system-ui,sans-serif;text-align:center;
  box-shadow:0 1px 3px rgba(0,0,0,.4);}
/* Pop state — prvi klik na filled circle, otkriva ime + count + CTA. */
.lb-circle.popped{transform:scale(1.12);
  box-shadow:0 0 0 3px #B56B8D, 0 6px 18px rgba(0,0,0,.45);}
/* Tooltip IZNAD kruga (Bruno 2026-06-04): prije je išao sa strane (right:62px)
   pa kolidirao s drugim krugovima u redu. Sad centriran iznad (kao ime-label) +
   z-index iznad svih krugova; JS flip ispod ako krug pri samom vrhu. */
.lb-circle-tooltip{position:absolute;bottom:calc(100% + 12px);left:50%;transform:translateX(-50%);
  background:#1A1714;border:1px solid rgba(181,107,141,.6);border-radius:10px;
  padding:8px 14px;white-space:nowrap;pointer-events:auto;
  font-family:'Manrope',system-ui,sans-serif;font-size:12px;color:#F8F4EF;
  letter-spacing:.02em;line-height:1.4;
  box-shadow:0 8px 24px rgba(0,0,0,.45);z-index:1150;}
.lb-circle-tooltip strong{font-weight:500;color:#F8F4EF;display:block;
  font-size:14px;margin-bottom:2px;
  max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lb-circle-tooltip span{font-size:11px;color:rgba(248,244,239,.55);}
.lb-circle-tooltip .cta{display:block;margin-top:8px;color:#B56B8D;
  font-size:11px;letter-spacing:.06em;text-transform:uppercase;}
/* Detach CTA (Bruno 2026-06-03) — destruktivno, čita se kao "pažljivo".
   Armed (drugi tap) je svjetlije/bold. */
.lb-circle-tooltip .lb-tip-detach{color:#e8a39c;}
.lb-circle-tooltip .lb-tip-detach-armed{color:#f4b6ae;font-weight:600;}
.lb-circle-tooltip::after{content:'';position:absolute;right:-6px;top:50%;
  transform:translateY(-50%) rotate(45deg);width:10px;height:10px;
  background:#1A1714;border-right:1px solid rgba(181,107,141,.6);
  border-top:1px solid rgba(181,107,141,.6);}
.lb-circles-more{font-size:11px;color:var(--lb-ink-soft);
  background:none;border:1px solid var(--lb-ring);border-radius:24px;
  padding:0 10px;cursor:pointer;height:44px;display:flex;align-items:center;
  justify-content:center;flex-shrink:0;white-space:nowrap;}
.lb-circles-more:hover{color:var(--lb-ink);border-color:var(--lilac-500,#8e62b8);}
.lb-circles-empty{display:none !important;}  /* hide row when no faces */

/* Reduced meta — single line "name · date" per Rasmus.
   Bruno 2026-07-29: datum je sad glavna meta informacija (oznaka "prije
   vjenčanja" je izbačena) pa smije biti čitljiv, ne 10px duh. */
#lb-meta.lb-meta-compact #lb-meta-name,
#lb-meta.lb-meta-compact #lb-meta-date{display:inline;font-size:11.5px;
  color:var(--lb-ink-soft);margin:0;}
#lb-meta.lb-meta-compact #lb-meta-name:not(:empty)::after,
#lb-meta.lb-meta-compact #lb-meta-date:not(:empty) + #lb-meta-section:not(:empty)::before{
  content:' · ';color:var(--ink-faint,#c8bfbe);}

/* Classification cloud — desktop anchored.
   Bruno 2026-06-11: paper/ink/lilac restyle (umjesto tamnog #1A1714) — ista
   pozicija/ponašanje, samo izgled. Border kroz token (--lilac-200), sjena s
   ljubičastim tintom. */
.lb-cloud{position:absolute;background:var(--paper,#fffaf6);
  border:1px solid var(--lilac-200,#e2cff3);
  border-radius:14px;padding:16px 18px 14px;width:300px;max-width:90vw;
  box-shadow:0 8px 24px rgba(45,34,56,.18),0 20px 48px rgba(45,34,56,.16);
  z-index:1100;
  transform:translateY(4px);opacity:0;pointer-events:none;
  transition:opacity .18s ease, transform .18s ease;}
.lb-cloud.open{opacity:1;transform:translateY(0);pointer-events:auto;}
.lb-cloud-q{font-family:var(--font-display);font-size:16px;
  color:var(--ink,#3f3138);margin:0 0 10px;font-weight:400;}
.lb-cloud-suggest{display:none;background:rgba(181,107,141,.1);
  border:1px solid rgba(181,107,141,.4);color:var(--ink,#3f3138);font-size:12px;
  padding:7px 12px;border-radius:14px;cursor:pointer;margin-bottom:10px;
  width:100%;text-align:left;}
.lb-cloud-suggest.show{display:flex;align-items:center;gap:8px;}
.lb-cloud-suggest:hover{background:rgba(181,107,141,.2);}
/* D (Bruno 2026-06-03): chip pitanje + "x" za odbacivanje prijedloga te osobe. */
.lb-cloud-suggest-q{flex:1;text-align:left;cursor:pointer;}
.lb-cloud-suggest-x{flex-shrink:0;width:20px;height:20px;line-height:18px;
  text-align:center;border-radius:50%;font-size:15px;color:rgba(63,49,56,.55);
  cursor:pointer;transition:background .12s,color .12s;}
.lb-cloud-suggest-x:hover{background:rgba(63,49,56,.1);color:var(--ink,#3f3138);}
/* Hover-profilna (Bruno 2026-06-03, Rasmus spec): face-crop osobe u tagiranju.
   Chip nosi 28px lice inline (uvijek); AC lista 44px float na desktop dwell. */
.lb-cloud-suggest-face{flex-shrink:0;width:28px;height:28px;border-radius:50%;
  background-size:cover;background-position:center;background-repeat:no-repeat;
  box-shadow:0 0 0 1px rgba(63,49,56,.15);}
.lb-cloud-suggest-face.lb-mono{display:flex;align-items:center;justify-content:center;
  background:rgba(182,146,212,.22);color:var(--lilac-400,#b692d4);
  font-family:var(--font-display,'Cardo',serif);font-size:14px;line-height:1;}
.lb-ac-face{position:fixed;z-index:10002;width:44px;height:44px;border-radius:50%;
  background-size:cover;background-position:center;background-repeat:no-repeat;
  border:2px solid var(--paper,#fdfaf4);box-shadow:0 4px 12px rgba(0,0,0,.18);
  opacity:0;transform:translateY(4px);pointer-events:none;
  transition:opacity .16s ease-out,transform .16s ease-out;}
.lb-ac-face.show{opacity:1;transform:translateY(0);}
/* Skeleton placeholder (gallery overhaul 2026-06-03, Rasmus Dio B1): rezervira
   prostor chipa dok stigne suggest-persons → pravi chip ne skače u layout. */
.lb-cloud-suggest.skeleton{display:block;min-height:32px;box-sizing:border-box;
  color:transparent;cursor:default;pointer-events:none;border-color:rgba(181,107,141,.18);
  background:linear-gradient(90deg,rgba(181,107,141,.06) 25%,rgba(181,107,141,.16) 50%,rgba(181,107,141,.06) 75%);
  background-size:200% 100%;animation:lbChipShimmer 1.1s ease-in-out infinite;}
@keyframes lbChipShimmer{0%{background-position:200% 0;}100%{background-position:-200% 0;}}
/* Overflow kebab u footeru (gallery overhaul 2026-06-03, Rasmus): destruktivni
   "Obriši" izvučen iz reda uz "Označi osobu". Menu se otvara prema gore jer
   footer sjedi na dnu viewporta. */
.lb-overflow{position:relative;display:inline-flex;}
/* Bruno 2026-07-29: meni prati novu podlogu — papir, ne tamna ploha. */
.lb-overflow-menu{position:absolute;bottom:calc(100% + 8px);right:0;
  background:var(--lb-panel);border:1px solid var(--lb-line);
  border-radius:9px;
  box-shadow:0 14px 40px -22px rgba(45,34,56,.5);padding:4px;min-width:170px;
  display:none;z-index:6;}
.lb-overflow-menu.open{display:block;}
.lb-overflow-item{display:block;width:100%;text-align:left;border:none;
  background:transparent;cursor:pointer;font-size:12.5px;color:var(--lb-ink);
  font-family:'Manrope',system-ui,sans-serif;padding:11px 12px;border-radius:6px;
  transition:background .12s;}
.lb-overflow-item:hover{background:var(--lb-veil);}
.lb-overflow-item.danger{color:var(--rose-500,#b87a76);}
.lb-overflow-item.danger:hover{background:rgba(184,122,118,.12);}
/* B2 (Bruno 2026-06-03): kebab separator + "Dodaj u album" picker (lb-recog dark jezik). */
.lb-overflow-sep{height:1px;margin:4px 6px;background:var(--lb-line);}
.lb-album{position:fixed;inset:0;z-index:1300;display:none;
  align-items:center;justify-content:center;padding:20px;
  background:rgba(8,6,5,.72);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);}
.lb-album.open{display:flex;}
/* Albumi redesign (Rasmus Dio 1 C, 2026-06-12): feed select-mod otvara sheet
   BEZ otvorenog lightboxa. #cg-lb je display:none van .open pa se fixed
   .lb-album ne bi renderirao — .lb-sheet-only pokaže SAMO sheet, ostatak
   lightbox chroma (top bar, strelice, prazna slika) ostaje skriven. */
#cg-lb.lb-sheet-only{display:block;background:transparent;
  -webkit-backdrop-filter:none;backdrop-filter:none;}
#cg-lb.lb-sheet-only > :not(.lb-album){display:none;}
.lb-album-inner{position:relative;background:#1A1714;border:1px solid rgba(248,244,239,.15);
  border-radius:16px;padding:22px;max-width:420px;width:100%;max-height:84vh;
  display:flex;flex-direction:column;box-shadow:0 16px 48px rgba(0,0,0,.6);}
.lb-album-title{font-family:var(--font-display);font-size:18px;color:#F8F4EF;
  margin:0 0 14px;font-weight:400;}
.lb-album-list{overflow-y:auto;display:flex;flex-direction:column;gap:2px;margin:0 0 6px;}
.lb-album-empty{font-size:13px;color:rgba(248,244,239,.5);padding:10px 4px;
  font-family:'Manrope',system-ui,sans-serif;}
.lb-album-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  border:none;background:transparent;cursor:pointer;padding:11px 12px;border-radius:9px;
  color:#F8F4EF;font-family:'Manrope',system-ui,sans-serif;font-size:14px;
  transition:background .12s;min-height:44px;}
.lb-album-row:hover{background:rgba(248,244,239,.07);}
.lb-album-row.is-in{background:rgba(182,146,212,.12);}
.lb-album-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lb-album-count{font-size:11px;color:rgba(248,244,239,.4);}
.lb-album-check{width:16px;text-align:center;color:#b692d4;font-size:13px;}
.lb-album-new{border-top:1px solid rgba(248,244,239,.1);margin-top:6px;padding-top:10px;}
.lb-album-newbtn{background:none;border:none;cursor:pointer;color:#b692d4;
  font-family:'Manrope',system-ui,sans-serif;font-size:13px;padding:8px 12px;min-height:44px;}
.lb-album-newform{display:flex;gap:8px;padding:4px 0;}
/* [hidden] reset — display:flex inače pregazi UA [hidden]{display:none}
   (Vedran bug 2026-07-04: input je bio stalno vidljiv, a "+ Novi album"
   je izgledao kao da ne radi ništa). */
.lb-album-newform[hidden]{display:none;}
.lb-album-close{position:absolute;top:10px;right:10px;background:none;border:none;
  cursor:pointer;color:rgba(248,244,239,.55);font-size:20px;line-height:1;
  padding:10px;min-width:44px;min-height:44px;}
.lb-album-close:hover{color:#F8F4EF;}
.lb-album-newinput{flex:1;background:rgba(248,244,239,.06);border:1px solid rgba(248,244,239,.2);
  border-radius:8px;color:#F8F4EF;padding:9px 12px;font-size:13px;font-family:inherit;outline:none;}
.lb-album-newinput:focus{border-color:#b692d4;}
.lb-album-newgo{background:#6b4f8a;border:none;border-radius:8px;color:#fdfaf4;
  padding:0 16px;cursor:pointer;font-size:13px;font-family:'Manrope',system-ui,sans-serif;}
.lb-album-actions{display:flex;justify-content:flex-end;margin-top:12px;}
.lb-cloud-input{width:100%;background:rgba(63,49,56,.05);
  border:1px solid rgba(63,49,56,.16);border-radius:7px;color:var(--ink,#3f3138);
  padding:10px 12px;font-size:13px;font-family:inherit;box-sizing:border-box;
  outline:none;transition:border-color .15s;}
.lb-cloud-input:focus{border-color:#B56B8D;}
.lb-cloud-input::placeholder{color:rgba(63,49,56,.4);}
.lb-cloud-ac{margin-top:6px;background:rgba(63,49,56,.04);border-radius:7px;
  max-height:180px;overflow-y:auto;}
.lb-cloud-ac-item{padding:8px 12px;font-size:12px;color:var(--ink,#3f3138);cursor:pointer;
  border-radius:5px;display:flex;align-items:center;justify-content:space-between;gap:8px;}
.lb-cloud-ac-item:hover, .lb-cloud-ac-item.active{background:rgba(181,107,141,.15);}
/* "postoji" badge — već imenovana osoba (#2, Bruno 2026-05-30). Tih signal da
   odabir ATTACHA na postojeći klaster, ne kreira novo ime. Boja/copy: Rasmus gate. */
.lb-cloud-ac-exists{font-size:9px;letter-spacing:.05em;text-transform:uppercase;
  color:rgba(63,49,56,.45);flex-shrink:0;}
.lb-cloud-actions{display:flex;gap:8px;margin-top:12px;}
.lb-cloud-btn{flex:1;padding:9px;font-size:11px;letter-spacing:.07em;
  text-transform:uppercase;border:none;border-radius:18px;cursor:pointer;font-family:inherit;}
.lb-cloud-btn-go{background:#B56B8D;color:#1A1714;}
.lb-cloud-btn-go:hover{background:#b8943e;}
.lb-cloud-btn-skip{background:none;color:rgba(63,49,56,.6);
  border:1px solid rgba(63,49,56,.22);}
.lb-cloud-btn-skip:hover{color:var(--ink,#3f3138);border-color:rgba(63,49,56,.45);}
/* lb-album / lb-recog ostaju TAMNE plohe (van 2026-06-11 paper restylea) —
   njihov skip gumb zadržava ivory ton da ne nestane na #1A1714. */
.lb-album .lb-cloud-btn-skip,.lb-recog .lb-cloud-btn-skip{
  color:rgba(248,244,239,.55);border-color:rgba(248,244,239,.2);}
.lb-album .lb-cloud-btn-skip:hover,.lb-recog .lb-cloud-btn-skip:hover{
  color:#F8F4EF;border-color:rgba(248,244,239,.4);}

/* Mobile bottom sheet variant — toggled via .sheet class on #lbCloud.
   Bruno 2026-05-19 post-deploy BUG 2b: sheet je vizualno bio "u footer
   stranice". Root cause je bio JS clamp (vidi lbOpenCloud) — ali bumpamo
   z-index na 1200 (iznad #lb-bottom 1050) i dodajemo border-top tako da
   sheet ima jasan vizualni shelf nad meta footerom. */
.lb-cloud.sheet{position:fixed;left:0;right:0;bottom:0;top:auto;
  width:100%;max-width:100%;border-radius:18px 18px 0 0;padding:20px 22px 28px;
  transform:translateY(100%);z-index:1200;
  border-top:1px solid var(--lilac-200,#e2cff3);
  box-shadow:0 -8px 32px rgba(45,34,56,.28);}
.lb-cloud.sheet.open{transform:translateY(0);}
.lb-cloud.sheet::before{content:'';display:block;width:36px;height:4px;
  background:rgba(63,49,56,.2);border-radius:2px;margin:-8px auto 14px;}

@media (max-width:700px){
  /* G4 mobile (Bruno 2026-05-19): top-right na mobitelu je "smiješna
     lokacija — palac ne stiže". Bottom strip ispod meta footera,
     row-wrap, 38px krugovi. Rasmus: photo je primary, kružići
     padaju ispod ako prelaze. */
  .lb-circles-overlay{position:absolute;top:auto;right:auto;
    left:8px;bottom:64px;
    flex-direction:row;flex-wrap:wrap;align-content:flex-start;
    gap:6px;max-height:none;max-width:calc(100vw - 16px);}
  .lb-circles{gap:6px;padding:6px 10px;}
  .lb-circle{width:38px;height:38px;font-size:11px;border-width:1.25px;}
  .lb-circle-plate{width:14px;height:14px;font-size:11px;line-height:14px;
    bottom:-1px;right:-1px;}
  .lb-circles-more{height:38px;font-size:10px;padding:0 8px;}
  .lb-circle-tooltip{right:auto;left:46px;font-size:11px;padding:6px 10px;}
  .lb-circle-tooltip strong{font-size:13px;}
  .lb-circle-tooltip::after{right:auto;left:-6px;
    border-right:none;border-top:none;
    border-left:1px solid rgba(181,107,141,.6);
    border-bottom:1px solid rgba(181,107,141,.6);}
}


/* #4 (Bruno 2026-05-29): "oblak prepoznatih" — batch-attach panel nakon
   imenovanja osobe u cloudu. Centriran nad lightboxom, thumb grid, lilac
   selekcija (zaključana odluka: lilac svuda; cloud gold migracija = backlog). */
.lb-recog{position:fixed;inset:0;z-index:1300;display:none;
  align-items:center;justify-content:center;padding:20px;
  background:rgba(8,6,5,.72);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);}
.lb-recog.open{display:flex;}
.lb-recog-inner{background:#1A1714;border:1px solid rgba(248,244,239,.15);
  border-radius:16px;padding:22px;max-width:520px;width:100%;
  max-height:84vh;display:flex;flex-direction:column;
  box-shadow:0 16px 48px rgba(0,0,0,.6);}
.lb-recog-title{font-family:var(--font-display);font-size:18px;color:#F8F4EF;
  margin:0 0 4px;font-weight:400;}
.lb-recog-sub{font-size:12px;color:rgba(248,244,239,.5);margin:0 0 16px;}
.lb-recog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));
  gap:8px;overflow-y:auto;padding-right:4px;}
.lb-recog-cell{position:relative;aspect-ratio:1/1;border:none;border-radius:10px;
  background-size:cover;background-position:center;cursor:pointer;padding:0;
  outline:2px solid transparent;outline-offset:-2px;
  transition:outline-color .15s, opacity .15s;opacity:.5;}
.lb-recog-cell.is-on{outline-color:var(--lilac-400, #b692d4);opacity:1;}
.lb-recog-actions{display:flex;gap:8px;margin-top:16px;}
.lb-recog-actions .lb-cloud-btn{flex:1;}
.lb-recog-actions .lb-cloud-btn-go{background:var(--lilac-500, #8e62b8);color:#fff;}
/* Rasmus recog audit: na dark surface hover ide SVJETLIJE, ne tamnije. */
.lb-recog-actions .lb-cloud-btn-go:hover{background:var(--lilac-400, #b692d4);}
.lb-recog-actions .lb-cloud-btn-go:disabled{opacity:.45;cursor:default;}
@media (max-width:520px){
  .lb-recog-grid{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));}
}
