/* Bridal Lookbook design system.

   Offline first: NO web font is loaded, because the app must render on a venue
   tablet with no internet. A system serif carries the headings, a system sans
   the body, so it looks composed on every device and never waits on a network.

   Colour arrives at runtime from config.js, so one stylesheet dresses any
   jewellery house the agency brings. */

:root {
  --ink: #2A211C;
  --paper: #FBF7F1;
  --card: #FFFFFF;
  --accent: #8E2C48;
  --gold: #B08A3E;
  --line: #EAE2D6;
  --soft: #7C7167;
  --serif: "Hoefler Text", "Iowan Old Style", Palatino, Georgia, "Times New Roman", serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --shadow: 0 1px 2px rgba(42,33,28,.05), 0 12px 34px rgba(42,33,28,.08);
}

* { box-sizing: border-box; }
html, body {
  margin: 0; padding: 0;
  background: var(--paper); color: var(--ink);
  font-family: var(--sans); font-size: 17px; line-height: 1.55;
  -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%;
  /* nothing on this page is selectable or long-press saveable */
  -webkit-user-select: none; user-select: none;
  -webkit-touch-callout: none;
  overscroll-behavior-y: contain;
}
img { -webkit-user-drag: none; user-drag: none; pointer-events: none; }

/* ---------------------------------------------------------------- header */

.top {
  position: sticky; top: 0; z-index: 20;
  background: color-mix(in srgb, var(--paper) 86%, transparent);
  backdrop-filter: saturate(1.1) blur(10px);
  border-bottom: 1px solid var(--line);
}
.top .in { max-width: 1100px; margin: 0 auto; padding: 16px 18px; text-align: center; }
.top .name {
  font-family: var(--serif); font-size: 22px; letter-spacing: .02em; font-weight: 600;
}
.top .tag { font-size: 12.5px; color: var(--soft); margin-top: 2px; letter-spacing: .01em; }

/* ------------------------------------------------------------------ tabs */

.tabs { display: flex; gap: 6px; justify-content: center; padding: 14px 12px 4px; position: sticky; top: 64px; z-index: 19;
        background: var(--paper); }
.tabs button {
  font: inherit; font-size: 14px; font-weight: 600; letter-spacing: .01em;
  padding: 9px 18px; border-radius: 999px; cursor: pointer;
  background: transparent; color: var(--soft); border: 1px solid var(--line);
}
.tabs button[aria-selected="true"] { background: var(--ink); color: #fff; border-color: var(--ink); }

/* ------------------------------------------------------------------ grid */

.wrap { max-width: 1100px; margin: 0 auto; padding: 14px 14px 130px; }
.grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
@media (min-width: 620px) { .grid { grid-template-columns: repeat(3, 1fr); gap: 16px; } }
@media (min-width: 960px) { .grid { grid-template-columns: repeat(4, 1fr); } }

.card {
  position: relative; border-radius: 16px; overflow: hidden;
  background: var(--card); border: 1px solid var(--line);
  box-shadow: var(--shadow); cursor: pointer; aspect-ratio: 3 / 4;
}
.card .ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* transparent shield over the image kills long-press-save on mobile browsers */
.card .shield { position: absolute; inset: 0; z-index: 2; }
.card .code {
  position: absolute; left: 10px; bottom: 10px; z-index: 3;
  font-size: 11px; letter-spacing: .08em; font-weight: 700; color: #fff;
  background: rgba(0,0,0,.42); padding: 4px 9px; border-radius: 999px;
  backdrop-filter: blur(4px);
}
.card .heart {
  position: absolute; right: 10px; top: 10px; z-index: 3;
  width: 34px; height: 34px; border-radius: 50%;
  background: rgba(255,255,255,.9); display: flex; align-items: center; justify-content: center;
  font-size: 17px; color: var(--soft); border: 0;
}
.card.liked .heart { background: var(--accent); color: #fff; }

.card.empty { background: repeating-linear-gradient(45deg, #F4EEE5, #F4EEE5 10px, #F0E9DE 10px, #F0E9DE 20px);
              cursor: default; display: flex; align-items: center; justify-content: center; }
.card.empty span { font-size: 12px; color: var(--soft); letter-spacing: .04em; text-align: center; padding: 0 12px; }

/* --------------------------------------------------------------- viewer */

.viewer { position: fixed; inset: 0; z-index: 60; background: rgba(28,22,18,.96);
          display: none; align-items: center; justify-content: center; }
.viewer.on { display: flex; }
.viewer .stage { position: relative; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
.viewer img { max-width: 94vw; max-height: 82vh; border-radius: 12px; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.viewer .shield { position: absolute; inset: 0; z-index: 2; }
.viewer .bar { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; padding: 22px;
               display: flex; gap: 12px; align-items: center; justify-content: center; }
.viewer .close { position: absolute; top: 16px; right: 18px; z-index: 3; width: 42px; height: 42px; border-radius: 50%;
                 background: rgba(255,255,255,.14); color: #fff; border: 0; font-size: 20px; cursor: pointer; }
.viewer .nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 3; width: 48px; height: 48px;
               border-radius: 50%; background: rgba(255,255,255,.12); color: #fff; border: 0; font-size: 22px; cursor: pointer; }
.viewer .nav.prev { left: 12px; } .viewer .nav.next { right: 12px; }
.viewer .likebtn {
  font: inherit; font-size: 16px; font-weight: 700; color: #fff; cursor: pointer;
  padding: 14px 26px; border-radius: 999px; border: 1px solid rgba(255,255,255,.35); background: transparent;
}
.viewer .likebtn.on { background: var(--accent); border-color: transparent; }

/* -------------------------------------------------------------- shortlist bar */

.dock { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; padding: 14px 16px calc(14px + env(safe-area-inset-bottom));
        background: color-mix(in srgb, var(--paper) 92%, transparent); backdrop-filter: blur(10px);
        border-top: 1px solid var(--line); display: flex; gap: 12px; align-items: center; transform: translateY(120%);
        transition: transform .28s ease; }
.dock.on { transform: none; }
.dock .n { font-family: var(--serif); font-size: 17px; }
.dock .n b { color: var(--accent); }
.dock .go { margin-left: auto; font: inherit; font-size: 15.5px; font-weight: 700; color: #fff; background: var(--ink);
            border: 0; border-radius: 12px; padding: 14px 22px; cursor: pointer; }

/* -------------------------------------------------------------- sheet / form */

.sheet { position: fixed; inset: 0; z-index: 70; background: rgba(28,22,18,.5); display: none; align-items: flex-end; }
.sheet.on { display: flex; }
.sheet .panel { background: var(--paper); width: 100%; max-width: 560px; margin: 0 auto; border-radius: 22px 22px 0 0;
                padding: 26px 22px calc(26px + env(safe-area-inset-bottom)); }
.sheet h2 { font-family: var(--serif); font-size: 24px; margin: 0 0 4px; }
.sheet p.sub { color: var(--soft); font-size: 14.5px; margin: 0 0 20px; }
.field { margin: 0 0 16px; }
.field label { display: block; font-size: 13px; font-weight: 650; margin: 0 0 7px; }
.field input { width: 100%; font: inherit; font-size: 16px; padding: 14px 15px; border-radius: 12px;
               border: 1px solid var(--line); background: #fff; -webkit-user-select: text; user-select: text; }
.field input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 16%, transparent); }
.field .err { color: #C0392B; font-size: 13px; margin-top: 6px; font-weight: 600; }
.btn { width: 100%; font: inherit; font-size: 16.5px; font-weight: 700; color: #fff; background: var(--accent);
       border: 0; border-radius: 12px; padding: 16px; cursor: pointer; }
.btn.ghost { background: transparent; color: var(--soft); border: 1px solid var(--line); margin-top: 10px; }
.chips { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 20px; }
.chip { font-size: 12px; font-weight: 700; letter-spacing: .04em; background: #fff; border: 1px solid var(--line);
        color: var(--ink); padding: 6px 11px; border-radius: 999px; }

.done { text-align: center; padding: 20px 6px 8px; }
.done .tick { width: 62px; height: 62px; border-radius: 50%; background: var(--accent); color: #fff;
              display: flex; align-items: center; justify-content: center; font-size: 30px; margin: 0 auto 16px; }
.done h2 { font-family: var(--serif); font-size: 25px; margin: 0 0 6px; }
.done p { color: var(--soft); margin: 0 0 22px; }

.hint { text-align: center; color: var(--soft); font-size: 12px; padding: 26px 20px 0; }
