/* ================================================
   GALERIA OPUS — Public Gallery CSS
   Font: Montserrat only
   Themes: Dark (noir/blanc) · Light (blanc/noir)
   ================================================ */

@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap');

/* ====== DARK THEME ====== */
.go-theme-dark {
  --go-bg:            #111111;
  --go-text:          #ffffff;
  --go-sub:           rgba(255,255,255,.5);
  --go-accent:        #ffffff;
  --go-accent-txt:    #000000;
  --go-card:          #1a1a1a;
  --go-border:        transparent;
  --go-bar-bg:        rgba(17,17,17,.93);
  --go-hero-grad:     rgba(17,17,17,1);
  --go-check-sel:     #ffffff;
  --go-check-txt:     #000000;
  --go-hint:          rgba(255,255,255,.9);
  --go-modal-bg:      #1a1a1a;
  --go-modal-border:  #2a2a2a;
  --go-footer-filter: brightness(0) invert(1);
  --go-logo-filter:   brightness(0) invert(1);
  --go-lb-btn-bg:     rgba(255,255,255,.12);
  --go-lb-btn-border: rgba(255,255,255,.3);
  --go-lb-btn-txt:    #ffffff;
  --go-lb-sel-bg:     #ffffff;
  --go-lb-sel-txt:    #000000;
}

/* ====== LIGHT THEME ====== */
.go-theme-light {
  --go-bg:            #ffffff;
  --go-text:          #000000;
  --go-sub:           rgba(0,0,0,.45);
  --go-accent:        #000000;
  --go-accent-txt:    #ffffff;
  --go-card:          #f0f0f0;
  --go-border:        transparent;
  --go-bar-bg:        rgba(255,255,255,.95);
  --go-hero-grad:     rgba(255,255,255,1);
  --go-check-sel:     #ffffff;
  --go-check-txt:     #000000;
  --go-hint:          rgba(0,0,0,.85);
  --go-modal-bg:      #ffffff;
  --go-modal-border:  #e0e0e0;
  --go-footer-filter: brightness(0);
  --go-logo-filter:   brightness(0);
  --go-lb-btn-bg:     rgba(0,0,0,.08);
  --go-lb-btn-border: rgba(0,0,0,.25);
  --go-lb-btn-txt:    #000000;
  --go-lb-sel-bg:     #000000;
  --go-lb-sel-txt:    #ffffff;
}

/* ====== Reset ====== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* ====== Wrapper ====== */
.go-gallery-wrap {
  background: var(--go-bg);
  min-height: 100vh;
  font-family: 'Montserrat', sans-serif;
  color: var(--go-text);
}

/* ====== MODULE — no rounding, no margin ====== */
.go-gallery-module {
  margin: 0;
  border-radius: 0;
  overflow: visible;
  background: var(--go-bg);
}

/* ====== Hero ====== */
.go-gallery-hero {
  position: relative;
  width: 100%;
  aspect-ratio: 3 / 2;
  max-height: 680px;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
}

/* Cover image rendered as <img> for full quality, anchored top */
.go-hero-cover-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  display: block;
  filter: brightness(1);
}
/* Dark theme: 20% black overlay */
.go-theme-dark .go-gallery-hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.20);
  pointer-events: none;
}
/* Light theme: no overlay on cover image */
.go-theme-light .go-gallery-hero::after {
  display: none;
}

/* Keep .go-hero-bg for no-cover fallback */
.go-hero-bg {
  position: absolute;
  inset: 0;
  background: #111;
  background-size: cover;
  background-position: top center;
  display: none;
}
.go-hero-bg.visible { display: block; }

.go-hero-overlay { display: none; }

.go-hero-content {
  position: relative;
  z-index: 2;
  padding: 32px 52px;
  width: 100%;
}

.go-gallery-name {
  font-family: 'Montserrat', sans-serif;
  font-size: 36px;
  font-weight: 600;
  color: #ffffff;
  letter-spacing: -.01em;
  line-height: 1.1;
  margin-bottom: 6px;
}
.go-theme-light .go-gallery-name { color: #ffffff; text-shadow: 0 1px 4px rgba(0,0,0,.4); }

.go-gallery-author {
  font-family: 'Montserrat', sans-serif;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(255,255,255,.55);
}
.go-theme-light .go-gallery-author { color: rgba(255,255,255,.8); }

.go-gallery-description {
  margin-top: 10px;
  font-family: 'Montserrat', sans-serif;
  font-size: 14px;
  font-weight: 600;
  color: #ffffff;
  max-width: 520px;
  line-height: 1.6;
}
.go-theme-light .go-gallery-description { color: #ffffff; text-shadow: 0 1px 3px rgba(0,0,0,.3); }

/* ====== Toolbar ====== */
.go-toolbar {
  position: sticky;
  top: 0;
  bottom: auto;
  z-index: 100;
  background: var(--go-bar-bg);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: none;
  border-top: none;
  margin-top: 20px;
  padding: 0 52px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 64px;
}

/* No logo in toolbar */
.go-toolbar-logo { display: none; }

.go-selection-counter {
  font-family: 'Montserrat', sans-serif;
  font-size: 13px;
  font-weight: 600;
  color: var(--go-sub);
  display: flex;
  align-items: center;
  gap: 6px;
}

.go-selection-count-num {
  font-family: 'Montserrat', sans-serif;
  font-size: 28px;
  font-weight: 800;
  color: var(--go-text);
  line-height: 1;
}

.go-toolbar-actions { display: flex; align-items: center; gap: 12px; }

/* ====== Public Buttons ====== */
.go-pub-btn {
  padding: 13px 28px;
  border-radius: 6px;
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all .2s;
  text-decoration: none;
  border: none;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.go-pub-btn-primary {
  background: var(--go-accent);
  color: var(--go-accent-txt);
  box-shadow: 0 2px 16px rgba(0,0,0,.25);
}
.go-pub-btn-primary:hover:not(:disabled) {
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(0,0,0,.35);
  opacity: .9;
}
.go-pub-btn-primary:disabled { opacity: .3; cursor: not-allowed; }

.go-pub-btn-ghost {
  background: rgba(255,255,255,.1);
  color: rgba(255,255,255,.9);
  border: 1.5px solid rgba(255,255,255,.25);
  backdrop-filter: blur(8px);
}
.go-theme-light .go-pub-btn-ghost {
  background: rgba(0,0,0,.06);
  color: rgba(0,0,0,.8);
  border-color: rgba(0,0,0,.2);
}
.go-pub-btn-ghost:hover { opacity: .8; }

/* ====== Photo Container ====== */
.go-photo-container { padding: 20px 52px 0; }
.go-gallery-hint {
  font-family: 'Montserrat', sans-serif;
  font-size: 13px;
  font-weight: 600;
  color: var(--go-hint);
  margin-bottom: 20px;
  letter-spacing: .01em;
}

/* ====== Photo Grid — flex masonry L→R ====== */
.go-photo-grid {
  display: flex;
  gap: 20px;
  align-items: flex-start;
}
.go-photo-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 20px;
  min-width: 0;
}
@media (max-width: 960px) {
  .go-toolbar, .go-photo-container, .go-hero-content { padding-left: 20px; padding-right: 20px; }
  .go-gallery-name { font-size: 28px; }
}
@media (max-width: 540px) {
  .go-photo-grid { gap: 12px; }
  .go-photo-col { gap: 12px; }
}

/* ====== Photo Item ====== */
.go-photo-item {
  position: relative;
  cursor: pointer;
  border-radius: 6px;
  overflow: hidden;
  background: var(--go-card);
}

.go-photo-item img {
  display: block;
  width: 100%;
  height: auto;
  transition: transform .38s ease;
  user-select: none;
  -webkit-user-drag: none;
  pointer-events: none;
}
.go-photo-item:hover img { transform: scale(1.025); }

.go-photo-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.3) 0%, transparent 50%);
  opacity: 0;
  transition: opacity .22s;
  pointer-events: none;
}
.go-photo-item:hover .go-photo-overlay { opacity: 1; }

/* Selection circle — heart button (top-right, replaces check) */
.go-photo-check {
  display: none; /* replaced by go-photo-heart */
}

.go-photo-heart {
  position: absolute;
  top: 10px; right: 10px;
  width: 32px; height: 32px;
  min-width: 32px; min-height: 32px; max-width: 32px; max-height: 32px;
  border-radius: 50% !important;
  border: 1.5px solid rgba(255,255,255,.75);
  background: rgba(0,0,0,.3);
  display: grid; place-items: center;
  cursor: pointer;
  opacity: 0;
  transition: opacity .18s, background .18s, border-color .18s;
  z-index: 3;
  backdrop-filter: blur(6px);
  padding: 0;
  box-sizing: border-box;
  transform: none !important;
  line-height: 1;
}
.go-photo-heart:active {
  transform: none !important;
}

/* Two SVGs: empty shown at rest, full hidden — swap on selected */
.go-heart-svg {
  width: 14px; height: 14px;
  display: block;
  grid-area: 1 / 1;
  transition: opacity .15s;
}
.go-heart-empty {
  fill: none;
  stroke: rgba(255,255,255,.95);
  stroke-width: 2;
  stroke-linejoin: round;
  opacity: 1;
}
.go-heart-full {
  fill: rgba(255,255,255,.95);
  stroke: none;
  opacity: 0;
}

.go-photo-item:hover .go-photo-heart { opacity: 1; }

/* Selected — transparent bg, full white heart visible, border white */
.go-photo-item.selected .go-photo-heart {
  opacity: 1;
  background: rgba(0,0,0,.3);
  border-color: rgba(255,255,255,.75);
}
.go-photo-item.selected .go-heart-empty { opacity: 0; }
.go-photo-item.selected .go-heart-full  { opacity: 1; }

/* White border around selected photo */
.go-photo-item.selected::after {
  content: '';
  position: absolute; inset: 0;
  border: 2.5px solid var(--go-accent);
  border-radius: 6px;
  pointer-events: none;
  z-index: 1;
}

/* Viewing / portfolio mode */
.viewing-mode .go-photo-heart,
.portfolio-mode .go-photo-heart { display: none; }

/* Selection mode: image click = zoom-in cursor */
.go-gallery-wrap:not(.viewing-mode):not(.portfolio-mode) .go-photo-item { cursor: zoom-in; }
/* ====== Lightbox ====== */
.go-lightbox {
  position: fixed;
  inset: 0;
  /* Fallback then dynamic viewport units (handles iOS Safari browser chrome) */
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  z-index: 9999;
  background: rgba(0,0,0,.97);
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.go-lightbox.open { display: flex; }

/* Scroll lock when lightbox is open — applied to <html> and <body> via JS.
   iOS Safari ignores plain `overflow:hidden` on body, so we additionally pin
   the body with position:fixed and restore scrollY on close (via JS).
   Uses !important to override theme rules (Twenty Twenty-Five forces overflow). */
html.go-lb-locked,
body.go-lb-locked {
  overflow: hidden !important;
  overscroll-behavior: contain;
  touch-action: none;
}
body.go-lb-locked {
  position: fixed !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  /* `top` is set inline by JS = `-scrollY + 'px'` to preserve scroll position */
}

/* Bottom bar with back + select */
.go-lightbox-topbar {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 72px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 32px;
  background: rgba(0,0,0,.6);
  backdrop-filter: blur(12px);
  /* Must sit ABOVE the .go-lightbox-img-shield (z:10) so its buttons stay
     clickable in the overlap zone (img-wrap padding-bottom). */
  z-index: 11;
}

.go-lightbox-back {
  background: var(--go-lb-btn-bg, rgba(255,255,255,.12));
  border: 1.5px solid var(--go-lb-btn-border, rgba(255,255,255,.25));
  color: var(--go-lb-btn-txt, #ffffff);
  padding: 12px 22px;
  border-radius: 6px;
  font-family: 'Montserrat', sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all .2s;
}
.go-lightbox-back:hover { opacity: .8; }

.go-lightbox-select-btn {
  background: var(--go-lb-sel-bg, #ffffff);
  border: none;
  color: var(--go-lb-sel-txt, #000000);
  padding: 12px 28px;
  border-radius: 6px;
  font-family: 'Montserrat', sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all .2s;
  box-shadow: 0 2px 12px rgba(0,0,0,.3);
}
.go-lightbox-select-btn:hover { transform: translateY(-1px); opacity: .85; }
.go-lightbox-select-btn.selected {
  opacity: .5;
  text-decoration: line-through;
}

/* Counter (bottom center, above bar) */
.go-lightbox-counter {
  position: absolute;
  bottom: 84px;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'Montserrat', sans-serif;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .1em;
  color: rgba(255,255,255,.3);
  z-index: 11;
}

/* Image area */
.go-lightbox-img-wrap {
  max-width: 92vw;
  max-height: calc(100vh - 100px);
  max-height: calc(100dvh - 100px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding-bottom: 72px;
  position: relative;
}

.go-lightbox-img {
  max-width: 100%;
  max-height: calc(100vh - 100px);
  max-height: calc(100dvh - 100px);
  object-fit: contain;
  border-radius: 4px;
  user-select: none;
  -webkit-user-select: none;
  -webkit-user-drag: none;
  pointer-events: none;
  display: block;
}

/* Transparent shield blocks right-click, drag, long-press on all devices */
.go-lightbox-img-shield {
  position: absolute;
  inset: 0;
  z-index: 10;
  cursor: zoom-out;
  -webkit-touch-callout: none;
  user-select: none;
  -webkit-user-select: none;
}

/* Nav arrows */
.go-lightbox-nav {
  position: absolute;
  top: 50%;
  transform: translateY(calc(-50% - 36px));
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 50%;
  width: 52px; height: 52px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  font-size: 22px;
  color: rgba(255,255,255,.75);
  transition: all .2s;
  user-select: none;
  /* CRITICAL: must sit ABOVE .go-lightbox-img-shield (z:10) — without this,
     the shield (positioned inside .go-lightbox-img-wrap) overlays the nav
     buttons when the image wrap covers the same viewport area as the arrows.
     Click events go to the shield (which has no click handler) → navigation
     appears broken. This was the user-reported Chrome bug. */
  z-index: 11;
}
.go-lightbox-nav:hover { background: rgba(255,255,255,.2); color: white; }
.go-lightbox-prev { left: 20px; }
.go-lightbox-next { right: 20px; }

/* ====== Modal (Confirmer sélection) ====== */
.go-modal-overlay {
  position: fixed; inset: 0; z-index: 10000;
  background: rgba(0,0,0,.65);
  display: none; align-items: center; justify-content: center;
  font-family: 'Montserrat', sans-serif;
}
.go-modal-overlay.open { display: flex; }

.go-modal {
  background: var(--go-modal-bg, #111111);
  border: 1px solid var(--go-modal-border, #222);
  border-radius: 16px;
  padding: 44px 40px;
  max-width: 440px; width: 90%;
  text-align: center;
  box-shadow: 0 24px 64px rgba(0,0,0,.6);
  font-family: 'Montserrat', sans-serif;
}
.go-modal-icon { font-size: 40px; margin-bottom: 16px; display: flex; justify-content: center; align-items: center; }
.go-modal-icon svg { display: block; }
.go-modal-title {
  font-family: 'Montserrat', sans-serif;
  font-size: 20px;
  font-weight: 800;
  color: var(--go-text, #ffffff);
  margin-bottom: 12px;
  letter-spacing: -.01em;
}
.go-modal-text {
  font-family: 'Montserrat', sans-serif;
  font-size: 13px;
  font-weight: 500;
  color: var(--go-sub, rgba(255,255,255,.5));
  line-height: 1.7;
  margin-bottom: 28px;
}
.go-modal-actions { display: flex; gap: 12px; justify-content: center; }

/* ====== Success screen ====== */
.go-success-screen {
  display: none; flex-direction: column; align-items: center;
  justify-content: center; min-height: 80vh;
  text-align: center; padding: 60px 24px;
  font-family: 'Montserrat', sans-serif;
}
.go-success-screen.show { display: flex; }
.go-success-icon { font-size: 56px; margin-bottom: 24px; animation: go-pop .4s ease; }
@keyframes go-pop {
  0%   { transform: scale(.5); opacity: 0; }
  70%  { transform: scale(1.1); }
  100% { transform: scale(1); opacity: 1; }
}
.go-success-title {
  font-family: 'Montserrat', sans-serif;
  font-size: 28px; font-weight: 800;
  color: var(--go-text); margin-bottom: 12px;
}
.go-success-text {
  font-family: 'Montserrat', sans-serif;
  font-size: 14px; font-weight: 500;
  color: var(--go-sub); line-height: 1.7; max-width: 360px;
  margin-bottom: 0;
}
/* Return button on success screen */
#go-back-to-gallery {
  background: transparent !important;
  border: 1.5px solid var(--go-text) !important;
  color: var(--go-text) !important;
}
#go-back-to-gallery:hover {
  background: var(--go-text) !important;
  color: var(--go-bg) !important;
  opacity: 1 !important;
}

/* ====== Footer logo ====== */
.go-gallery-footer {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 14px;
  padding: 90px 24px 60px;
  margin-top: 0;
  border-top: none;
}
.go-footer-logo {
  height: 72px;
  width: auto;
  max-width: 200px;
  margin: 0 auto;
  opacity: .3;
  filter: var(--go-footer-filter);
  transition: opacity .3s;
  display: block;
}
.go-footer-logo:hover { opacity: .5; }

/* Modal email input - light theme override via JS inline style is fine, add base style */
#go-client-email-input {
  font-family: 'Montserrat', sans-serif !important;
}
.go-theme-light #go-client-email-input {
  background: rgba(0,0,0,.05) !important;
  border-color: rgba(0,0,0,.2) !important;
  color: #000000 !important;
}

/* ====== Empty state ====== */
.go-gallery-empty {
  text-align: center; padding: 100px 40px;
  font-family: 'Montserrat', sans-serif;
  color: var(--go-sub);
}

/* ====== No select ====== */
/* ====== Global image protection ====== */
.go-gallery-wrap img {
  -webkit-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
  -webkit-touch-callout: none;
  pointer-events: none;
}
/* Shield and interactive elements restore pointer events */
.go-lightbox-img-shield,
.go-lightbox-nav,
.go-lightbox-bar,
.go-photo-item {
  pointer-events: all;
}

/* ================================================
   MOBILE — Full responsive overhaul
   ================================================ */

@media (max-width: 768px) {

  /* ====== Hero ====== */
  .go-gallery-hero {
    aspect-ratio: 4 / 3;
    max-height: 56vw;
  }
  .go-hero-content {
    padding: 20px 18px;
  }
  .go-gallery-name {
    font-size: 22px;
    letter-spacing: -.01em;
  }
  .go-gallery-author {
    font-size: 9px;
    letter-spacing: .12em;
  }
  .go-gallery-description {
    font-size: 13px;
  }

  /* ====== Toolbar — compact, never overflows ====== */
  .go-toolbar {
    height: auto;
    min-height: 56px;
    padding: 10px 14px;
    flex-wrap: nowrap;
    gap: 8px;
    overflow: hidden;
  }
  .go-selection-counter {
    font-size: 11px;
    gap: 4px;
    flex-shrink: 0;
  }
  .go-selection-count-num {
    font-size: 22px;
  }
  .go-toolbar-actions {
    flex-shrink: 0;
    gap: 8px;
  }
  /* Shrink validate button on mobile */
  #go-submit-selection {
    padding: 10px 14px !important;
    font-size: 10px !important;
    letter-spacing: .05em !important;
    white-space: nowrap;
    max-width: 160px;
  }
  #go-max-warning {
    display: none !important;
  }
  /* Hide top download button on mobile — bottom button still available */
  #go-download-btn-top {
    display: none !important;
  }

  /* ====== Photo grid — 2 columns mobile ====== */
  .go-photo-grid {
    gap: 12px;
  }
  .go-photo-col {
    gap: 12px;
  }
  .go-photo-item {
    border-radius: 4px;
  }
  /* Heart always visible on mobile (no hover on touch) */
  .go-photo-heart {
    width: 32px;
    height: 32px;
    min-width: 32px; min-height: 32px; max-width: 32px; max-height: 32px;
    top: 8px;
    right: 8px;
    opacity: 1 !important;
  }
  .go-photo-heart svg {
    width: 14px; height: 14px;
  }

  /* ====== Photo container ====== */
  .go-photo-container {
    padding: 16px 10px 0;
  }
  .go-gallery-hint {
    font-size: 11px;
    margin-bottom: 14px;
  }

  /* ====== Lightbox — fully mobile ====== */
  .go-lightbox {
    align-items: center;
    justify-content: center;
  }
  /* Image takes full width */
  .go-lightbox-img-wrap {
    max-width: 100vw;
    max-height: calc(100vh - 80px);
    max-height: calc(100dvh - 80px);
    padding-bottom: 72px;
    padding-left: 0;
    padding-right: 0;
  }
  .go-lightbox-img {
    max-width: 100vw;
    max-height: calc(100vh - 80px);
    max-height: calc(100dvh - 80px);
    border-radius: 0;
  }
  /* Nav arrows smaller, don't overlap image much */
  .go-lightbox-nav {
    width: 40px;
    height: 40px;
    font-size: 18px;
    top: auto;
    bottom: 86px;
    transform: none;
  }
  .go-lightbox-prev { left: 12px; bottom: 86px; }
  .go-lightbox-next { right: 12px; bottom: 86px; }

  /* Bottom bar — full width, always visible */
  .go-lightbox-topbar {
    height: 64px;
    padding: 0 14px;
    left: 0;
    right: 0;
    bottom: 0;
    gap: 10px;
  }
  .go-lightbox-back {
    padding: 10px 14px;
    font-size: 10px;
    letter-spacing: .06em;
    flex-shrink: 0;
  }
  .go-lightbox-select-btn {
    padding: 10px 16px;
    font-size: 10px;
    letter-spacing: .06em;
    flex-shrink: 0;
  }
  .go-lightbox-counter {
    bottom: 72px;
    font-size: 10px;
  }

  /* ====== Modal — full screen friendly ====== */
  .go-modal {
    padding: 32px 24px;
    border-radius: 12px;
    width: 92%;
  }
  .go-modal-title { font-size: 17px; }
  .go-modal-text  { font-size: 12px; }
  #go-client-email-input {
    font-size: 16px !important; /* prevents iOS zoom on input focus */
  }
  .go-modal-actions {
    flex-direction: column;
    gap: 10px;
  }
  .go-modal-actions .go-pub-btn {
    width: 100%;
    justify-content: center;
  }

  /* ====== Success screen ====== */
  .go-success-title { font-size: 20px; }
  .go-success-text  { font-size: 13px; }
  #go-back-to-gallery { font-size: 11px; padding: 11px 20px; }

  /* ====== Footer logo ====== */
  .go-gallery-footer { padding: 36px 16px; }
  .go-footer-logo { height: 48px; }

}

/* Extra small phones */
@media (max-width: 390px) {
  .go-gallery-name { font-size: 19px; }
  .go-photo-grid { gap: 12px; } .go-photo-col { gap: 12px; }
  #go-submit-selection { max-width: 130px; font-size: 9px !important; }
}

/* Hint text visibility by device */
.go-hint-mobile { display: none; }
@media (max-width: 768px) {
  .go-hint-desktop { display: none; }
  .go-hint-mobile  { display: block; }
}

/* ================================================
   WELCOME / RETURN OVERLAY
   ================================================ */
.go-welcome-overlay {
  position: fixed;
  inset: 0;
  z-index: 20000;
  background: rgba(0,0,0,.88);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.go-theme-light .go-welcome-overlay { background: rgba(255,255,255,.92); }

.go-welcome-modal {
  background: #111111;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 16px;
  padding: 40px 36px;
  max-width: 420px;
  width: 100%;
  text-align: center;
  box-shadow: 0 32px 80px rgba(0,0,0,.6);
}
.go-theme-light .go-welcome-modal {
  background: #ffffff;
  border-color: rgba(0,0,0,.1);
}

.go-welcome-logo {
  margin-bottom: 24px;
}
.go-welcome-logo img {
  height: 36px;
  width: auto;
  opacity: .5;
  filter: brightness(0) invert(1);
}
.go-theme-light .go-welcome-logo img {
  filter: brightness(0);
}

.go-welcome-title {
  font-family: 'Montserrat', sans-serif;
  font-size: 20px;
  font-weight: 700;
  color: #ffffff;
  margin: 0 0 4px 0;
  letter-spacing: -.01em;
}
.go-theme-light .go-welcome-title { color: #000000; }

.go-welcome-sub {
  font-family: 'Montserrat', sans-serif;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(255,255,255,.4);
  margin: 0 0 28px 0;
}
.go-theme-light .go-welcome-sub { color: rgba(0,0,0,.35); }

.go-welcome-text {
  font-family: 'Montserrat', sans-serif;
  font-size: 13px;
  font-weight: 500;
  color: rgba(255,255,255,.55);
  line-height: 1.65;
  margin: 0 0 20px 0;
}
.go-theme-light .go-welcome-text { color: rgba(0,0,0,.5); }

/* Light theme input override */
.go-theme-light #go-welcome-email {
  background: rgba(0,0,0,.05) !important;
  border-color: rgba(0,0,0,.2) !important;
  color: #000000 !important;
}
.go-theme-light #go-welcome-msg { color: rgba(0,0,0,.5) !important; }

/* Mobile welcome */
@media (max-width: 480px) {
  .go-welcome-modal { padding: 28px 20px; }
  .go-welcome-title { font-size: 17px; }
  #go-welcome-email { font-size: 16px !important; } /* prevents iOS zoom */
}

/* ====== Comment indicator on photo ====== */
.go-photo-item.has-comment::before {
  content: '💬';
  position: absolute;
  bottom: 8px;
  left: 8px;
  font-size: 14px;
  z-index: 2;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,.5));
}

/* ============================================================
 * Chapters (sections) — v1.1.0
 * ============================================================ */

/* The wrapper (#go-photo-grid) becomes a vertical stack of sections */
.go-photo-grid-wrap {
  display: flex;
  flex-direction: column;
  gap: 32px;
}

/* Section stacks groups vertically (cols-row + hero-row) */
.go-photo-section {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* Cols-row = horizontal flex of N columns. Items distributed left-to-right
   by JS round-robin (item N → col N mod nCols) for predictable order. */
.go-photo-cols-row {
  display: flex;
  gap: 20px;
  align-items: flex-start;
}

/* Hero-row = single full-width item */
.go-photo-hero-row {
  display: block;
  width: 100%;
}
.go-photo-hero-row > .go-photo-item {
  width: 100%;
}

@media (max-width: 540px) {
  .go-photo-section { gap: 12px; }
  .go-photo-cols-row { gap: 12px; }
  .go-photo-grid-wrap { gap: 24px; }
}

/* ── Featured photos (storytelling grid, v1.2.0) ──────────── */
/* Column spans are computed in JS — span = 1 (Standard), span = 2 (Large),
   span = nCols (Hero, full row). Mobile capped at 2 cols → Large and Hero
   both render full-width. Item heights preserve natural aspect ratio. */

/* ── Featured caption (title + subtitle overlay) ──────────── */
/* Only rendered for featured photos (level ≥ 1). Hero shows the full-size
   text; Large shows a smaller variant of both title + subtitle to fit
   the narrower cell. */
.go-photo-caption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 36px 24px 20px;
  /* Gradient ensures text readability on photos with light or busy bottoms */
  background: linear-gradient(to top, rgba(0,0,0,.55) 0%, rgba(0,0,0,.25) 50%, transparent 100%);
  color: #fff;
  pointer-events: none; /* doesn't intercept the lightbox click */
  font-family: 'Montserrat', sans-serif;
  z-index: 2;
}
.go-photo-caption-title {
  font-weight: 700;
  letter-spacing: .01em;
  line-height: 1.15;
  text-shadow: 0 1px 2px rgba(0,0,0,.18);
  word-break: break-word;
}
.go-photo-caption-subtitle {
  font-weight: 400;
  letter-spacing: .02em;
  line-height: 1.35;
  margin-top: 6px;
  opacity: .9;
  text-shadow: 0 1px 2px rgba(0,0,0,.18);
  word-break: break-word;
}

/* Hero — full-size text */
.go-photo-item[data-featured-level="2"] .go-photo-caption-title    { font-size: 28px; }
.go-photo-item[data-featured-level="2"] .go-photo-caption-subtitle { font-size: 14px; }

/* Large — smaller title + smaller subtitle (both visible) */
.go-photo-item[data-featured-level="1"] .go-photo-caption-title    { font-size: 18px; }
.go-photo-item[data-featured-level="1"] .go-photo-caption-subtitle { font-size: 12px; }
.go-photo-item[data-featured-level="1"] .go-photo-caption          { padding: 28px 18px 14px; }

/* Mobile sizing */
@media (max-width: 768px) {
  .go-photo-caption { padding: 28px 16px 14px; }
  .go-photo-item[data-featured-level="2"] .go-photo-caption-title    { font-size: 22px; }
  .go-photo-item[data-featured-level="2"] .go-photo-caption-subtitle { font-size: 12px; }
  .go-photo-item[data-featured-level="1"] .go-photo-caption-title    { font-size: 16px; }
  .go-photo-item[data-featured-level="1"] .go-photo-caption-subtitle { font-size: 11px; }
}

/* Chapter heading (separator between sections) */
.go-chapter-separator {
  position: relative;
  width: 100%;
  padding-top: 18px;
  margin-bottom: 4px;
}
.go-chapter-separator::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: currentColor;
  opacity: .15;
}
/* No top rule for the very first separator */
.go-photo-grid-wrap > .go-chapter-separator:first-child {
  padding-top: 0;
}
.go-photo-grid-wrap > .go-chapter-separator:first-child::before { display: none; }

.go-chapter-heading {
  margin: 0;
  font-family: 'Montserrat', sans-serif;
  font-weight: 700;
  font-size: 13px;
  line-height: 1.2;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--go-text, #fff);
}

/* ============================================================
 * Sticky header wrapper — REMOVED in alpha7
 * ============================================================ */
.go-sticky-header {
  display: contents;
}

/* ============================================================
 * Chapter navigation — fixed on scroll (alpha8)
 * Uses JS to toggle the .is-pinned class because position:sticky
 * is unreliable inside themes that wrap content with overflow:clip
 * (Twenty Twenty-Five, etc.). The placeholder reserves the height
 * to prevent content jump when the nav becomes fixed.
 * ============================================================ */
.go-gallery-module .go-chapter-nav,
.go-chapter-nav {
  position: relative !important;
  top: auto !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 99 !important;
  background: var(--go-bar-bg, rgba(17, 17, 17, 0.92)) !important;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  padding: 0 52px !important;
  margin: 0 !important;
  border-top: 1px solid rgba(127,127,127,.12) !important;
  display: block !important;
  width: 100% !important;
  box-sizing: border-box !important;
}
/* When pinned (scrolled past trigger), it becomes fixed at the top */
.go-chapter-nav.is-pinned {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  box-shadow: 0 2px 12px rgba(0,0,0,.18);
}
/* Placeholder element keeps the layout from jumping when nav goes fixed */
.go-chapter-nav-placeholder {
  display: none;
}
.go-chapter-nav.is-pinned + .go-chapter-nav-placeholder {
  display: block;
}
.go-chapter-nav .go-chapter-nav-inner {
  display: flex !important;
  gap: 6px !important;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding: 12px 0 !important;
  margin: 0 !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  list-style: none !important;
}
.go-chapter-nav .go-chapter-nav-inner::-webkit-scrollbar { display: none; }
.go-chapter-nav .go-chapter-nav-btn,
button.go-chapter-nav-btn {
  flex-shrink: 0 !important;
  background: transparent !important;
  border: 1px solid rgba(127,127,127,.35) !important;
  color: var(--go-text, #ffffff) !important;
  font-family: 'Montserrat', sans-serif !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: .08em !important;
  text-transform: uppercase !important;
  padding: 7px 14px !important;
  border-radius: 999px !important;
  cursor: pointer !important;
  white-space: nowrap !important;
  margin: 0 !important;
  line-height: 1 !important;
  height: auto !important;
  min-height: 0 !important;
  text-decoration: none !important;
  box-shadow: none !important;
  transition: background .15s, border-color .15s, color .15s;
}
.go-chapter-nav .go-chapter-nav-btn:hover,
button.go-chapter-nav-btn:hover {
  border-color: var(--go-text, #fff) !important;
  background: transparent !important;
}
.go-chapter-nav .go-chapter-nav-btn.is-active,
button.go-chapter-nav-btn.is-active {
  background: var(--go-text, #fff) !important;
  color: var(--go-bg, #111) !important;
  border-color: var(--go-text, #fff) !important;
}

@media (max-width: 960px) {
  .go-chapter-nav { padding: 0 20px !important; }
  .go-chapter-nav .go-chapter-nav-inner { padding: 10px 0 !important; }
  .go-chapter-nav .go-chapter-nav-btn,
  button.go-chapter-nav-btn { font-size: 10px !important; padding: 6px 12px !important; }
}

/* ============================================================
 * Critical button reset — defeats WP block library / theme
 * Migrated from inject_critical_styles() in v1.1.1 for caching.
 * Keep identical specificity (.go-gallery-wrap + button states + !important)
 * to win against WP/theme overrides.
 * ============================================================ */
.go-gallery-wrap button,
.go-gallery-wrap button:link,
.go-gallery-wrap button:visited,
.go-gallery-wrap button:hover,
.go-gallery-wrap button:focus,
.go-gallery-wrap button:focus-visible,
.go-gallery-wrap button:active,
.go-gallery-wrap .go-pub-btn,
.go-gallery-wrap .go-pub-btn:link,
.go-gallery-wrap .go-pub-btn:visited,
.go-gallery-wrap .go-pub-btn:hover,
.go-gallery-wrap .go-pub-btn:focus,
.go-gallery-wrap .go-pub-btn:focus-visible,
.go-gallery-wrap .go-pub-btn:active {
  outline: none !important;
  outline-offset: 0 !important;
  box-shadow: none !important;
  text-decoration: none !important;
  -webkit-tap-highlight-color: rgba(0,0,0,0) !important;
}
.go-gallery-wrap .go-pub-btn,
.go-gallery-wrap .go-pub-btn:link,
.go-gallery-wrap .go-pub-btn:visited,
.go-gallery-wrap .go-pub-btn:hover,
.go-gallery-wrap .go-pub-btn:focus,
.go-gallery-wrap .go-pub-btn:focus-visible,
.go-gallery-wrap .go-pub-btn:active {
  border-radius: 6px !important;
}
.go-gallery-wrap .go-photo-heart,
.go-gallery-wrap .go-photo-heart:link,
.go-gallery-wrap .go-photo-heart:visited,
.go-gallery-wrap .go-photo-heart:hover,
.go-gallery-wrap .go-photo-heart:focus,
.go-gallery-wrap .go-photo-heart:focus-visible,
.go-gallery-wrap .go-photo-heart:active {
  border-radius: 50% !important;
  box-shadow: none !important;
  outline: none !important;
  background-color: rgba(0,0,0,.3) !important;
  color: transparent !important;
  border: 1.5px solid rgba(255,255,255,.75) !important;
  width: 32px !important;
  height: 32px !important;
  min-width: 32px !important;
  min-height: 32px !important;
  max-width: 32px !important;
  max-height: 32px !important;
  padding: 0 !important;
  transform: none !important;
  display: grid !important;
  place-items: center !important;
}
.go-gallery-wrap .go-photo-item.selected .go-photo-heart,
.go-gallery-wrap .go-photo-item.selected .go-photo-heart:hover,
.go-gallery-wrap .go-photo-item.selected .go-photo-heart:focus,
.go-gallery-wrap .go-photo-item.selected .go-photo-heart:active {
  background-color: rgba(0,0,0,.3) !important;
  border-color: rgba(255,255,255,.75) !important;
}
.go-gallery-wrap .go-pub-btn-primary,
.go-gallery-wrap .go-pub-btn-primary:link,
.go-gallery-wrap .go-pub-btn-primary:visited,
.go-gallery-wrap .go-pub-btn-primary:hover,
.go-gallery-wrap .go-pub-btn-primary:focus,
.go-gallery-wrap .go-pub-btn-primary:focus-visible,
.go-gallery-wrap .go-pub-btn-primary:active {
  background-color: var(--go-accent, #111111) !important;
  color: var(--go-accent-txt, #ffffff) !important;
  border-color: transparent !important;
}
.go-gallery-wrap .go-pub-btn-primary:hover:not(:disabled) {
  opacity: .88 !important;
  transform: translateY(-1px) !important;
}
.go-gallery-wrap .go-pub-btn-primary:active:not(:disabled) {
  opacity: .75 !important;
  transform: translateY(0) !important;
}
.go-gallery-wrap .go-pub-btn-primary:disabled {
  opacity: .3 !important;
  cursor: not-allowed !important;
}
.go-gallery-wrap .go-pub-btn-ghost,
.go-gallery-wrap .go-pub-btn-ghost:link,
.go-gallery-wrap .go-pub-btn-ghost:visited,
.go-gallery-wrap .go-pub-btn-ghost:hover,
.go-gallery-wrap .go-pub-btn-ghost:focus,
.go-gallery-wrap .go-pub-btn-ghost:focus-visible,
.go-gallery-wrap .go-pub-btn-ghost:active {
  background-color: rgba(255,255,255,.08) !important;
  color: rgba(255,255,255,.9) !important;
  border-color: rgba(255,255,255,.25) !important;
}
.go-gallery-wrap.go-theme-light .go-pub-btn-ghost,
.go-gallery-wrap.go-theme-light .go-pub-btn-ghost:hover,
.go-gallery-wrap.go-theme-light .go-pub-btn-ghost:focus,
.go-gallery-wrap.go-theme-light .go-pub-btn-ghost:active {
  background-color: rgba(0,0,0,.06) !important;
  color: rgba(0,0,0,.8) !important;
  border-color: rgba(0,0,0,.2) !important;
}

/* ============================================================
 * Modal button reset — modals are rendered OUTSIDE .go-gallery-wrap
 * so the wrap-scoped resets above don't reach them. Apply the same
 * neutral monochrome palette here to defeat WP theme button colors
 * (e.g. Twenty Twenty-Five accent palette bleeding through).
 * ============================================================ */
.go-modal-overlay button,
.go-modal-overlay button:link,
.go-modal-overlay button:visited,
.go-modal-overlay button:hover,
.go-modal-overlay button:focus,
.go-modal-overlay button:focus-visible,
.go-modal-overlay button:active {
  outline: none !important;
  outline-offset: 0 !important;
  text-decoration: none !important;
  -webkit-tap-highlight-color: rgba(0,0,0,0) !important;
}
.go-modal-overlay .go-pub-btn,
.go-modal-overlay .go-pub-btn:link,
.go-modal-overlay .go-pub-btn:visited,
.go-modal-overlay .go-pub-btn:hover,
.go-modal-overlay .go-pub-btn:focus,
.go-modal-overlay .go-pub-btn:focus-visible,
.go-modal-overlay .go-pub-btn:active {
  border-radius: 6px !important;
}
.go-modal-overlay .go-pub-btn-primary,
.go-modal-overlay .go-pub-btn-primary:link,
.go-modal-overlay .go-pub-btn-primary:visited,
.go-modal-overlay .go-pub-btn-primary:hover,
.go-modal-overlay .go-pub-btn-primary:focus,
.go-modal-overlay .go-pub-btn-primary:focus-visible,
.go-modal-overlay .go-pub-btn-primary:active {
  background-color: var(--go-accent, #ffffff) !important;
  background-image: none !important;
  color: var(--go-accent-txt, #000000) !important;
  border: none !important;
  box-shadow: none !important;
}
.go-modal-overlay .go-pub-btn-primary:hover:not(:disabled) {
  opacity: .88 !important;
}
.go-modal-overlay .go-pub-btn-primary:active:not(:disabled) {
  opacity: .75 !important;
}
.go-modal-overlay .go-pub-btn-ghost,
.go-modal-overlay .go-pub-btn-ghost:link,
.go-modal-overlay .go-pub-btn-ghost:visited,
.go-modal-overlay .go-pub-btn-ghost:hover,
.go-modal-overlay .go-pub-btn-ghost:focus,
.go-modal-overlay .go-pub-btn-ghost:focus-visible,
.go-modal-overlay .go-pub-btn-ghost:active {
  background-color: rgba(255,255,255,.1) !important;
  background-image: none !important;
  color: rgba(255,255,255,.9) !important;
  border: 1.5px solid rgba(255,255,255,.25) !important;
  box-shadow: none !important;
}
.go-modal-overlay.go-theme-light .go-pub-btn-ghost {
  background-color: rgba(0,0,0,.06) !important;
  color: rgba(0,0,0,.8) !important;
  border-color: rgba(0,0,0,.2) !important;
}
.go-gallery-wrap #go-back-to-gallery,
.go-gallery-wrap #go-back-to-gallery:hover,
.go-gallery-wrap #go-back-to-gallery:focus,
.go-gallery-wrap #go-back-to-gallery:active {
  background-color: transparent !important;
  border: 1.5px solid var(--go-text) !important;
  color: var(--go-text) !important;
}
.go-gallery-wrap #go-back-to-gallery:hover {
  background-color: var(--go-text) !important;
  color: var(--go-bg) !important;
}
.go-lightbox button,
.go-lightbox button:hover,
.go-lightbox button:focus,
.go-lightbox button:active {
  outline: none !important;
  box-shadow: none !important;
  -webkit-tap-highlight-color: rgba(0,0,0,0) !important;
}
.go-lightbox .go-lightbox-back,
.go-lightbox .go-lightbox-back:hover,
.go-lightbox .go-lightbox-back:focus,
.go-lightbox .go-lightbox-back:active {
  background-color: rgba(255,255,255,.12) !important;
  border-color: rgba(255,255,255,.3) !important;
  color: #ffffff !important;
}
.go-lightbox .go-lightbox-select-btn,
.go-lightbox .go-lightbox-select-btn:hover,
.go-lightbox .go-lightbox-select-btn:focus,
.go-lightbox .go-lightbox-select-btn:active {
  background-color: #ffffff !important;
  color: #000000 !important;
  border: none !important;
}
.go-lightbox .go-lightbox-select-btn.selected {
  opacity: .5 !important;
  text-decoration: line-through !important;
}
.go-modal-overlay .go-pub-btn-ghost,
.go-modal-overlay .go-pub-btn-ghost:hover,
.go-modal-overlay .go-pub-btn-ghost:focus,
.go-modal-overlay .go-pub-btn-ghost:active {
  background-color: rgba(255,255,255,.08) !important;
  color: rgba(255,255,255,.9) !important;
  border-color: rgba(255,255,255,.25) !important;
}
.go-modal-overlay.go-theme-light .go-pub-btn-ghost,
.go-modal-overlay.go-theme-light .go-pub-btn-ghost:hover,
.go-modal-overlay.go-theme-light .go-pub-btn-ghost:focus,
.go-modal-overlay.go-theme-light .go-pub-btn-ghost:active {
  background-color: rgba(0,0,0,.06) !important;
  color: rgba(0,0,0,.8) !important;
  border-color: rgba(0,0,0,.2) !important;
}

/* ====== Video item — width + heart ====== */
.go-video-item {
  width: 100%;
}

/* Heart button on video — mirrors go-photo-heart */
.go-video-heart {
  position: absolute;
  bottom: 10px; right: 10px;
  width: 32px; height: 32px;
  min-width: 32px; min-height: 32px; max-width: 32px; max-height: 32px;
  border-radius: 50% !important;
  border: 1.5px solid rgba(255,255,255,.75);
  background: rgba(0,0,0,.3);
  display: grid; place-items: center;
  cursor: pointer;
  opacity: 1;
  transition: opacity .18s, background .18s, border-color .18s;
  z-index: 10;
  backdrop-filter: blur(6px);
  padding: 0;
  box-sizing: border-box;
  transform: none !important;
  line-height: 1;
}
.go-video-heart:active { transform: none !important; }

/* Selected state — mirrors go-photo-item.selected */
.go-video-item.selected .go-video-heart {
  opacity: 1;
  background: rgba(0,0,0,.3);
  border-color: rgba(255,255,255,.75);
}
.go-video-item.selected .go-heart-empty { opacity: 0; }
.go-video-item.selected .go-heart-full  { opacity: 1; }

/* Accent border on selected video — mirrors go-photo-item.selected::after */
.go-video-item.selected .go-video-wrapper::after {
  content: '';
  position: absolute; inset: 0;
  border: 2.5px solid var(--go-accent);
  border-radius: 6px;
  pointer-events: none;
  z-index: 1;
}

/* ── Other participants badge (v1.5.0) ────────────────────── */
.go-other-badge {
  position: absolute;
  top: 8px;
  left: 8px;
  background: rgba(255, 255, 255, 0.92);
  color: #111;
  font-family: 'Montserrat', sans-serif;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  padding: 4px 7px;
  border-radius: 20px;
  pointer-events: none;
  z-index: 4;
  box-shadow: 0 1px 4px rgba(0,0,0,.25);
  letter-spacing: .03em;
}
.go-theme-light .go-other-badge {
  background: rgba(17,17,17,.85);
  color: #fff;
}

/* ── Nudge toast (v1.5.0) ─────────────────────────────────── */
#go-nudge-toast {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(16px);
  background: rgba(20,20,20,.96);
  border: 1px solid rgba(255,255,255,.15);
  color: rgba(255,255,255,.9);
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  padding: 14px 20px;
  border-radius: 8px;
  max-width: 340px;
  width: calc(100% - 48px);
  text-align: center;
  z-index: 9998;
  opacity: 0;
  transition: opacity .35s ease, transform .35s ease;
  pointer-events: none;
  box-shadow: 0 4px 24px rgba(0,0,0,.4);
}
#go-nudge-toast.visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ── Instructions screen (v1.5.0) ────────────────────────── */
.go-instr-screen {
  position: fixed !important;
  inset: 0 !important;
  z-index: 9999 !important;
  background: #111 !important;
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
  overflow-y: auto !important;
  padding: 40px 24px !important;
  box-sizing: border-box !important;
}
.go-instr-inner {
  max-width: 500px !important;
  width: 100% !important;
  padding: 20px 0 40px !important;
}
.go-instr-header {
  text-align: center !important;
  margin-bottom: 36px !important;
}
.go-instr-logo {
  display: block !important;
  height: 24px !important;
  width: auto !important;
  opacity: .45 !important;
  margin: 0 auto 18px !important;
}
.go-instr-eyebrow {
  font-family: 'Montserrat', sans-serif !important;
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: .14em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,.3) !important;
  margin: 0 0 10px !important;
}
.go-instr-title {
  font-family: 'Montserrat', sans-serif !important;
  font-size: 22px !important;
  font-weight: 800 !important;
  color: #fff !important;
  margin: 0 !important;
  letter-spacing: -.01em !important;
  line-height: 1.25 !important;
}
.go-instr-steps {
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
  margin-bottom: 36px !important;
}
.go-instr-step {
  display: flex !important;
  gap: 16px !important;
  position: relative !important;
  padding-bottom: 24px !important;
}
.go-instr-step--last {
  padding-bottom: 0 !important;
}
.go-instr-connector {
  position: absolute !important;
  left: 15px !important;
  top: 32px !important;
  bottom: 0 !important;
  width: 1px !important;
  background: rgba(255,255,255,.1) !important;
}
.go-instr-num {
  flex-shrink: 0 !important;
  width: 32px !important;
  height: 32px !important;
  border-radius: 50% !important;
  border: 1.5px solid rgba(255,255,255,.25) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-family: 'Montserrat', sans-serif !important;
  font-size: 11px !important;
  font-weight: 800 !important;
  color: #fff !important;
  margin-top: 2px !important;
  background: transparent !important;
}
.go-instr-num--final {
  background: #fff !important;
  border-color: #fff !important;
  color: #111 !important;
}
.go-instr-body {
  flex: 1 !important;
}
.go-instr-step-title {
  font-family: 'Montserrat', sans-serif !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: .05em !important;
  text-transform: uppercase !important;
  color: #fff !important;
  margin: 6px 0 5px !important;
}
.go-instr-step-desc {
  font-family: 'Montserrat', sans-serif !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  color: rgba(255,255,255,.5) !important;
  line-height: 1.65 !important;
  margin: 0 !important;
}
.go-instr-step-desc strong {
  color: rgba(255,255,255,.85) !important;
  font-weight: 700 !important;
}
.go-instr-chip {
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  background: rgba(255,255,255,.08) !important;
  border: 1px solid rgba(255,255,255,.15) !important;
  border-radius: 4px !important;
  font-family: 'Montserrat', sans-serif !important;
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: .06em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,.7) !important;
  padding: 3px 8px !important;
  margin-top: 8px !important;
}
.go-instr-chip--accent {
  background: #fff !important;
  border-color: #fff !important;
  color: #111 !important;
}
.go-instr-badge-demo {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(255,255,255,.9) !important;
  color: #111 !important;
  font-family: 'Montserrat', sans-serif !important;
  font-size: 10px !important;
  font-weight: 800 !important;
  width: 20px !important;
  height: 20px !important;
  border-radius: 50% !important;
  vertical-align: middle !important;
  margin: 0 2px !important;
  line-height: 1 !important;
}
.go-instr-footer {
  border-top: 1px solid rgba(255,255,255,.08) !important;
  padding-top: 20px !important;
  margin-bottom: 32px !important;
}
.go-instr-note {
  font-family: 'Montserrat', sans-serif !important;
  font-size: 11px !important;
  color: rgba(255,255,255,.35) !important;
  font-weight: 500 !important;
  line-height: 1.6 !important;
  margin: 0 !important;
}
.go-instr-note strong {
  color: rgba(255,255,255,.6) !important;
  font-weight: 700 !important;
}
.go-instr-cta {
  text-align: center !important;
}
.go-instr-start-btn {
  font-family: 'Montserrat', sans-serif !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: .08em !important;
  text-transform: uppercase !important;
  background: #fff !important;
  color: #111 !important;
  border: none !important;
  padding: 14px 48px !important;
  border-radius: 6px !important;
  cursor: pointer !important;
  display: inline-block !important;
}
