/* ─────────────────────────────────────────────────────────────────────
   Mama Bloom · Lamplight layer (2026-07-06)
   Additive stylesheet: time-aware hero lamp line, season selection ring,
   and the Sunday Bloom Letter ritual. Loads AFTER css/style.css.
   Zero external requests · reduced-motion first-class.
   ───────────────────────────────────────────────────────────────────── */

/* ── One Lamp On: the hero line that knows the hour ── */
.hero__lamp {
  display: inline-flex; align-items: center; gap: .55rem;
  font-family: var(--font-serif); font-style: italic; font-weight: 500; font-size: 1.02rem; line-height: 1.4;
  color: var(--rose-mid); margin: 0 0 1.05rem;
  opacity: 0; transform: translateY(6px);
  transition: opacity 1.2s ease .2s, transform 1.2s cubic-bezier(.24,.9,.28,1.02) .2s;
}
.hero__lamp.is-lit { opacity: 1; transform: none; }
.hero__lamp::before {
  content: ""; width: 9px; height: 9px; border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #F4D8A8, #C9A050 70%);
  box-shadow: 0 0 12px 3px rgba(244,216,168,.75);
  flex: 0 0 auto;
}
body[data-band="deepnight"] .hero__glow {
  background: radial-gradient(circle, rgba(122,59,87,.5), transparent 66%);
}
body[data-band="deepnight"] .hero__lamp { color: #7A3B57; }
body[data-band="evening"] .hero__glow {
  background: radial-gradient(circle, rgba(212,148,120,.44), transparent 64%);
}
@media (prefers-reduced-motion: reduce) {
  .hero__lamp { transition: opacity .6s ease; transform: none; }
}

/* ── Season cards become gentle selectors ── */
.seasons__hint { text-align: center; font-family: var(--font-serif); font-style: italic; font-weight: 400; font-size: .98rem; line-height: 1.5; color: var(--rose-mid); margin: .4rem auto 0; }
.season[role="button"] { cursor: pointer; }
.season[role="button"]:focus-visible { outline: 2px solid var(--plum); outline-offset: 4px; border-radius: 18px; }
.season { transition: box-shadow .45s ease, transform .45s ease; border-radius: 18px; }
.season.is-picked {
  box-shadow: 0 0 0 2px #C9A050, 0 18px 40px -20px rgba(91,31,58,.35);
}
.season__picked {
  display: none; position: absolute; top: .7rem; right: .7rem; z-index: 2;
  font: 600 .62rem/1 'Hanken Grotesk', sans-serif; letter-spacing: .18em; text-transform: uppercase;
  color: #5B1F3A; background: #F4D8A8; border-radius: 999px; padding: .38rem .6rem;
}
.season { position: relative; }
.season.is-picked .season__picked { display: inline-block; }

/* ── The Sunday Bloom Letter ── */
.sbl {
  /* --sbl-cream/--sbl-plum/--sbl-rose-deep are identical to the shared
     --cream/--plum/--rose-mid tokens in css/style.css — aliased, not
     redeclared, so the two stylesheets can never drift apart on these.
     --sbl-paper/--sbl-paper-edge/--sbl-plum-soft/--sbl-gold/--sbl-gold-soft/
     --sbl-ink/--sbl-ink-faint are DELIBERATELY local: the wax-seal/parchment
     ritual wants a richer amber and warmer paper than the site's usual
     --gold/--paper, so these intentionally do not alias the shared tokens. */
  --sbl-cream: var(--cream); --sbl-paper: #FFFDFB; --sbl-paper-edge: #F1E2D3;
  --sbl-plum: var(--plum); --sbl-plum-soft: #7A3B57;
  --sbl-rose-deep: var(--rose-mid);
  --sbl-gold: #C9A050; --sbl-gold-soft: #F4D8A8;
  --sbl-ink: #40222F; --sbl-ink-faint: rgba(64,34,47,.72);
  --sbl-ease-paper: cubic-bezier(.24,.9,.28,1.02);
  --sbl-ease-lift: cubic-bezier(.4,.1,.6,1);
  position: relative;
  background:
    radial-gradient(120% 90% at 50% 0%, rgba(244,216,168,.28), transparent 55%),
    var(--sbl-cream);
  padding: clamp(4.5rem, 9vw, 8rem) 1.25rem clamp(5rem, 10vw, 9rem);
  overflow: hidden;
}
.sbl__inner { max-width: 680px; margin: 0 auto; text-align: center; }
.sbl__invite { font-family: var(--font-serif); font-style: italic; font-weight: 400; font-size: 1.05rem; line-height: 1.5; color: var(--sbl-rose-deep); margin: 1.6rem 0 1.4rem; }
.sbl__sound {
  display: inline-flex; align-items: center; gap: .45rem;
  font-family: var(--font-sans); font-size: .78rem; line-height: 1; color: var(--sbl-ink-faint);
  background: none; border: 1px solid rgba(155,95,117,.35); border-radius: 999px;
  padding: .5rem .85rem; margin: 0 0 2.2rem; cursor: pointer;
  transition: color .3s, border-color .3s, background .3s;
}
.sbl__sound[aria-pressed="true"] { color: var(--sbl-plum); border-color: var(--sbl-gold); background: rgba(244,216,168,.35); }
.sbl__sound:focus-visible, .sbl__seal-btn:focus-visible { outline: 2px solid var(--sbl-plum); outline-offset: 3px; }
.sbl__sound-dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; opacity: .55; }

.sbl__stage { position: relative; margin: 0 auto; max-width: 480px; perspective: 1400px; display: grid; }
.sbl__seal-btn {
  display: block; width: 100%; border: 0; padding: 0; background: none; cursor: pointer;
  -webkit-tap-highlight-color: transparent; grid-area: 1 / 1; align-self: start;
}
.sbl__envelope {
  display: block; position: relative; margin: 0 auto; width: min(100%, 440px); aspect-ratio: 8 / 5;
  transition: opacity .7s var(--sbl-ease-lift) .9s, transform .9s var(--sbl-ease-lift) .8s;
}
.sbl__pocket {
  position: absolute; inset: 0; border-radius: 14px;
  background: linear-gradient(175deg, var(--sbl-paper) 0%, #FBF3EA 68%, var(--sbl-paper-edge) 100%);
  box-shadow:
    0 1px 0 rgba(255,255,255,.9) inset,
    0 -14px 26px -18px rgba(91,31,58,.25) inset,
    0 24px 48px -22px rgba(91,31,58,.35),
    0 3px 10px -4px rgba(91,31,58,.18);
  border: 1px solid rgba(201,160,80,.28);
}
.sbl__pocket::after {
  content: ""; position: absolute; inset: 0; border-radius: 14px;
  background:
    linear-gradient(115deg, transparent 49.6%, rgba(91,31,58,.055) 50%, transparent 50.5%) left/51% 100% no-repeat,
    linear-gradient(245deg, transparent 49.6%, rgba(91,31,58,.055) 50%, transparent 50.5%) right/51% 100% no-repeat;
}
.sbl__flap {
  position: absolute; left: 0; right: 0; top: 0; height: 58%;
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  background: linear-gradient(180deg, #FDF8F2 0%, #F6EADD 78%, #EFDCC8 100%);
  border-radius: 14px 14px 0 0;
  transform-origin: 50% 0;
  transition: transform 1.15s var(--sbl-ease-paper) .28s;
  box-shadow: 0 10px 18px -14px rgba(91,31,58,.35);
  z-index: 3; backface-visibility: hidden;
}
.sbl__flap::after {
  content: ""; position: absolute; inset: 0; clip-path: inherit;
  background: linear-gradient(180deg, rgba(91,31,58,0) 55%, rgba(91,31,58,.14) 100%);
  transition: opacity 1.1s var(--sbl-ease-paper) .28s;
}
.sbl__front {
  position: absolute; inset: 0; z-index: 2; display: grid; place-items: center; align-content: end;
  gap: .35rem; padding-bottom: 7%;
  transition: opacity .6s ease .75s;
}
.sbl__front-eyebrow { font-family: var(--font-sans); font-weight: 600; font-size: .6rem; line-height: 1; letter-spacing: .42em; color: var(--sbl-gold); text-transform: uppercase; }
.sbl__front-script { font-family: var(--font-serif); font-style: italic; font-weight: 500; font-size: 1.6rem; line-height: 1.2; color: var(--sbl-plum-soft); }
.sbl__front-rule { width: 54px; height: 1px; background: linear-gradient(90deg, transparent, var(--sbl-gold), transparent); margin-top: .4rem; }

.sbl__seal {
  position: absolute; left: 50%; top: 50%; z-index: 4;
  width: 76px; height: 76px; margin: -38px 0 0 -38px; border-radius: 50%;
  display: grid; place-items: center;
  background: radial-gradient(circle at 34% 30%, #C86B85 0%, #9C3F57 42%, #6E2740 78%, #5B1F3A 100%);
  box-shadow: 0 2px 0 rgba(255,255,255,.25) inset, 0 -3px 8px rgba(0,0,0,.28) inset, 0 10px 22px -8px rgba(91,31,58,.55);
  transition: transform .55s var(--sbl-ease-lift), opacity .5s ease .12s;
}
.sbl__seal::before {
  content: ""; position: absolute; inset: -7px; border-radius: 50%;
  background: radial-gradient(circle at 62% 70%, rgba(156,63,87,.5), rgba(156,63,87,0) 60%);
  filter: blur(1px); z-index: -1;
  clip-path: polygon(50% 0%, 63% 6%, 76% 4%, 84% 14%, 95% 20%, 94% 33%, 100% 45%, 95% 57%, 97% 70%, 88% 78%, 83% 90%, 70% 92%, 58% 100%, 45% 95%, 32% 98%, 23% 89%, 12% 84%, 10% 71%, 2% 61%, 6% 48%, 0% 36%, 8% 26%, 12% 14%, 25% 10%, 34% 2%);
}
.sbl__seal svg { width: 34px; height: 34px; opacity: .92; }

.sbl__letter-slot {
  grid-area: 1 / 1; pointer-events: none;
  display: grid; grid-template-rows: 0fr; transition: grid-template-rows 1.9s var(--sbl-ease-paper) .55s;
}
.sbl.is-open .sbl__letter-slot { pointer-events: auto; }
.sbl__letter-clip { overflow: hidden; }
.sbl__letter {
  margin: 0 auto; width: min(100%, 440px); text-align: left;
  transform: translateY(2.2rem); opacity: 0;
  transition: transform 1.1s var(--sbl-ease-paper) .55s, opacity .8s ease .6s;
}
.sbl__sheet {
  background: linear-gradient(178deg, var(--sbl-paper) 0%, #FDF6EE 100%);
  border: 1px solid rgba(201,160,80,.3); border-radius: 12px;
  box-shadow: 0 30px 60px -30px rgba(91,31,58,.4), 0 4px 14px -8px rgba(91,31,58,.2);
  padding: clamp(1.6rem, 4.5vw, 2.4rem) clamp(1.4rem, 4.5vw, 2.2rem) 1.9rem;
  position: relative;
}
.sbl__sheet::before {
  content: ""; position: absolute; left: 18%; right: 18%; top: 0; height: 2px;
  background: linear-gradient(90deg, transparent, var(--sbl-gold), transparent); opacity: .7;
}
.sbl__panel { transform-origin: 50% 0; }
.sbl__panel + .sbl__panel { margin-top: 1.05em; }
.sbl--anim .sbl__panel { transform: rotateX(-88deg); opacity: 0; }
.sbl.is-open .sbl__panel { transform: rotateX(0); opacity: 1; }
.sbl.is-open .sbl--anim-p1 { transition: transform 1s var(--sbl-ease-paper) .8s,  opacity .7s ease .8s; }
.sbl.is-open .sbl--anim-p2 { transition: transform 1s var(--sbl-ease-paper) 1.35s, opacity .7s ease 1.35s; }
.sbl.is-open .sbl--anim-p3 { transition: transform 1s var(--sbl-ease-paper) 1.9s,  opacity .7s ease 1.9s; }

.sbl__salutation { font-family: var(--font-serif); font-style: italic; font-weight: 500; font-size: 1.25rem; line-height: 1.4; color: var(--sbl-plum); margin: 0 0 .9em; }
.sbl__line { font-family: var(--font-serif); font-style: italic; font-weight: 400; font-size: clamp(1.02rem, 2.2vw, 1.14rem); line-height: 1.75; color: var(--sbl-ink); margin: 0; }
.sbl__sig {
  display: flex; align-items: baseline; gap: .55rem; margin-top: 1.5em;
  font: 500 1.35rem/1 "Bradley Hand", "Segoe Script", var(--font-display), cursive; color: var(--sbl-rose-deep);
}
.sbl__sig::before { content: ""; flex: 0 0 34px; height: 1px; background: var(--sbl-gold); opacity: .8; align-self: center; }
.sbl__samplenote {
  margin: 1.1rem auto 0; max-width: 40ch; text-align: center;
  font-family: var(--font-sans); font-size: .78rem; line-height: 1.55; color: var(--sbl-ink-faint);
  opacity: 0; transition: opacity .8s ease 2.5s;
}

/* Tender mode: after loss (and gentler for expecting-after-loss) */
.sbl[data-season="afterloss"] { background: linear-gradient(180deg, #FAF5EF, #F4EEE6); }
.sbl[data-season="afterloss"] .sbl__seal {
  background: radial-gradient(circle at 34% 30%, #B4BFAC 0%, #93A28A 45%, #7C8B74 100%);
}
.sbl[data-season="afterloss"] .sbl__sig { color: var(--sbl-plum-soft); }

.sbl__cta { margin-top: 2.6rem; opacity: 0; transform: translateY(10px); transition: opacity .9s ease 2.7s, transform .9s var(--sbl-ease-paper) 2.7s; }
.sbl.is-open .sbl__cta, .sbl.is-open .sbl__samplenote { opacity: 1; transform: none; }
.sbl__cta-line { font-family: var(--font-serif); font-style: italic; font-weight: 500; font-size: 1.3rem; line-height: 1.4; color: var(--sbl-plum); margin: 0 0 1.3rem; }

.sbl.is-open .sbl__flap { transform: rotateX(-168deg); }
.sbl.is-open .sbl__flap::after { opacity: 0; }
.sbl.is-open .sbl__seal { transform: translateY(-16px) rotate(-11deg) scale(.9); opacity: 0; }
.sbl.is-open .sbl__front { opacity: 0; }
.sbl.is-open .sbl__envelope { opacity: 0; transform: translateY(1.4rem) scale(.96); }
.sbl.is-open .sbl__letter-slot { grid-template-rows: 1fr; }
.sbl.is-open .sbl__letter { transform: none; opacity: 1; }
.sbl.is-open .sbl__invite { opacity: 0; transition: opacity .5s ease; }
.sbl.is-open .sbl__seal-btn { cursor: default; }
.sbl__seal-btn[aria-disabled="true"] { pointer-events: none; }

@media (prefers-reduced-motion: reduce) {
  .sbl * { transition-duration: .01ms !important; transition-delay: 0ms !important; }
  .sbl__envelope, .sbl__letter, .sbl__cta, .sbl__samplenote { transition: opacity 1.1s ease !important; }
  .sbl.is-open .sbl__letter-slot { transition: none; }
  .sbl--anim .sbl__panel { transform: none; opacity: 1; }
  .sbl.is-open .sbl__envelope, .sbl.is-open .sbl__letter, .sbl.is-open .sbl__cta { transform: none; }
}
.sbl__body { transition: opacity .28s ease; }
.sbl__body.is-fading { opacity: 0; }

@media (max-width: 520px) {
  .sbl__seal { width: 64px; height: 64px; margin: -32px 0 0 -32px; }
}
