/* gd-access-sheet: veil + bottom sheet, same tints as the other sheets
   (it covers the photos, it does not float over them). */
gd-access-sheet { position: fixed; inset: 0; z-index: 40; background: var(--scrim); backdrop-filter: blur(var(--blur-veil));
  display: flex; align-items: flex-end; justify-content: center; }
gd-access-sheet .sheet { width: 100%; max-width: 480px;
  background: linear-gradient(180deg, var(--sheet-tint-top), var(--sheet-tint-bottom));
  border: 1px solid var(--accent-soft-border); border-bottom: 0;
  border-radius: var(--radius-card) var(--radius-card) 0 0;
  padding: var(--gap-grid) 22px calc(18px + env(safe-area-inset-bottom));
  animation: gd-sheet-up var(--dur-sheet) var(--ease-out); }
/* Redefined locally so the sheet rises even in standalone previews that
   load only this stylesheet (duplicate @keyframes are legal). */
@keyframes gd-sheet-up { from { transform: translateY(100%); } }
gd-access-sheet .sheet-handle { width: var(--tap-min); height: 4px; border-radius: 2px;
  background: var(--ink-3); opacity: .5; margin: var(--space-2xs) auto var(--space-md); }
gd-access-sheet .sheet-title { font: 500 var(--type-title-lg)/1.2 var(--font-display); color: var(--ink); }
gd-access-sheet .as-body { font: var(--type-ui)/1.55 var(--font-ui); color: var(--ink-2); margin: 8px 0 14px; }
/* The subtle removal action: quiet, centered, unmistakably tappable. */
gd-access-sheet .as-remove { display: block; margin: var(--space-sm) auto 0; }
gd-access-sheet .as-remove[disabled] { opacity: .45; cursor: default; }
@media (prefers-reduced-motion: reduce) {
  gd-access-sheet .sheet { animation: none; }
}

/* The gate: revealed in place under its button, so choosing to leave an
   email does not replace the sheet and lose the other endings. */
gd-access-sheet .as-gateform { margin-top: var(--space-xs); text-align: left; }
gd-access-sheet .as-gateform .btn { margin-top: var(--space-xs); }

/* MORE OPTIONS. Deletion and the code-level close are not steps in the
   saving flow -- they are things a guest arrives already intending to do,
   and deletion in particular affects everyone else in a group photo. So
   they live behind a disclosure that someone has to open on purpose
   (2026-07-25). <details> because the platform already solved this: a
   native disclosure is keyboard-accessible and announced correctly with no
   JS at all. Step two of deletion is now a real alert dialog (gd-dialog),
   not a block appended below the endings. */
gd-access-sheet .as-more { margin-top: var(--space-md); }
gd-access-sheet .as-moretoggle { display: block; text-align: center; cursor: pointer;
  min-height: var(--tap-min); line-height: var(--tap-min);
  font: var(--type-note)/1.5 var(--font-ui); color: var(--ink-3);
  list-style: none; }
gd-access-sheet .as-moretoggle::-webkit-details-marker { display: none; }
gd-access-sheet .as-moretoggle:hover { color: var(--accent); }
gd-access-sheet .as-delete { display: block; margin: var(--space-sm) auto 0; }
