/* ═══════════════════════════════════════════════════
   COMPONENTS.CSS
   Shared sections and components (all pages)
═══════════════════════════════════════════════════ */

/* ── Sections ── */
.section {
  padding-block: var(--space-9);
}

.section + .section {
  padding-top: 0;
}

.section-title {
  font-size: var(--text-lg);
  margin-bottom: var(--space-5);
}

.section-title--center {
  text-align: center;
}

/* ── Site nav ── */
.site-nav {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-4);
  padding-block: var(--space-5);
  border-bottom: 1px solid var(--color-line);
}

.site-nav__home {
  font-family: var(--font-display);
  font-size: var(--text-md);
  font-weight: 500;
  text-decoration: none;
}

.site-nav__link {
  font-size: var(--text-sm);
  color: var(--color-muted);
}

@media (hover: hover) {
  .site-nav__link:hover { color: var(--color-ink); }
}

.site-nav .site-nav__studio {
  margin: 0;
}

@media (max-width: 640px) {
  .site-nav__studio { display: none; }
}

/* ── Hero (workshop pages) ── */
.hero {
  text-align: center;
  padding-block: var(--space-8) var(--space-9);
}

.masthead {
  font-size: var(--text-xs);
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--color-muted);
  direction: ltr;
  margin-bottom: var(--space-7);
}

.hero__title {
  font-size: var(--text-hero);
  line-height: 1.1;
  letter-spacing: -0.01em;
  margin-bottom: var(--space-3);
}

.hero__subtitle {
  font-family: var(--font-display);
  font-size: var(--text-md);
  font-style: italic;
  color: var(--color-muted);
  margin-bottom: var(--space-6);
}

.hero__lead {
  max-width: 34ch;
  margin-inline: auto;
  color: var(--color-ink-soft);
  margin-bottom: var(--space-7);
}

.facts {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: var(--space-5) var(--space-6);
  padding-block: var(--space-5);
  border-block: 1px solid var(--color-line);
  margin-bottom: var(--space-7);
}

.facts dt {
  font-size: var(--text-xs);
  color: var(--color-muted);
  line-height: 1.6;
}

.facts dd {
  font-family: var(--font-display);
  font-size: var(--text-md);
  font-weight: 500;
  line-height: 1.4;
}

.hero__actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
}

/* ── Buttons ── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  min-height: 54px;
  padding: var(--space-3) var(--space-7);
  border: 1px solid transparent;
  border-radius: 2px;
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: 0.01em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--transition-base), border-color var(--transition-base), color var(--transition-base), transform var(--transition-fast);
}

.btn:active {
  transform: scale(0.985);
}

.btn--ink {
  background-color: var(--color-ink);
  color: var(--color-paper);
}

.btn--paper {
  background-color: var(--color-paper);
  color: var(--color-ink);
}

.btn--band-line {
  background-color: transparent;
  border-color: var(--color-band-line);
  color: var(--color-band-text);
  font-weight: 400;
}

.btn--block {
  display: flex;
  width: 100%;
}

.btn--small {
  min-height: 44px;
  padding-inline: var(--space-5);
  font-size: var(--text-sm);
}

@media (hover: hover) {
  .btn--ink:hover       { background-color: var(--color-ink-soft); }
  .btn--paper:hover     { background-color: var(--color-panel); }
  .btn--band-line:hover { border-color: var(--color-band-text); }
}

.btn[aria-disabled="true"] {
  opacity: 0.45;
  pointer-events: none;
}

.icon-wa {
  width: 19px;
  height: 19px;
  fill: currentColor;
  flex-shrink: 0;
}

/* ── Intro ── */
.intro p {
  color: var(--color-ink-soft);
  margin-bottom: var(--space-5);
}

/* The invitation's one bold statement, set against a black bar */
.intro .intro__statement {
  font-size: var(--text-md);
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-ink);
  padding-inline-start: var(--space-5);
  border-inline-start: 3px solid var(--color-ink);
  margin-block: var(--space-6);
}

/* ── Axis: centred italic lines joined by fading gold strokes ── */
.axis {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.axis li {
  font-size: var(--text-md);
  font-style: italic;
  line-height: 1.5;
  color: var(--color-muted);
  max-width: 26ch;
}

.axis li + li::before {
  content: '';
  display: block;
  width: 1px;
  height: 88px;
  margin: var(--space-5) auto;
  background: linear-gradient(to bottom, transparent, var(--color-gold) 30%, var(--color-gold) 70%, transparent);
  transform-origin: top;
  transition: transform 900ms var(--ease-out);
}

/* Signature: strokes draw downward as the axis scrolls in (JS adds .will-draw) */
.axis.will-draw li + li::before {
  transform: scaleY(0);
}

.axis.will-draw.is-drawn li + li::before {
  transform: scaleY(1);
}

.axis.will-draw.is-drawn li:nth-child(3)::before {
  transition-delay: 450ms;
}

.axis__note {
  margin-top: var(--space-7);
  text-align: center;
  color: var(--color-ink-soft);
}

/* ── Panel (the invitation's pale "what awaits" box) ── */
.panel {
  background-color: var(--color-panel);
  padding: var(--space-7) var(--space-6);
}

.panel p {
  color: var(--color-ink-soft);
  margin-bottom: var(--space-5);
}

.panel .aside {
  color: var(--color-muted);
  margin-bottom: 0;
}

.takeaway {
  margin-block: var(--space-6);
  border-top: 1px solid var(--color-line);
}

.takeaway__title {
  font-size: var(--text-md);
  padding-top: var(--space-5);
  margin-bottom: var(--space-2);
}

.takeaway li {
  position: relative;
  padding-block: var(--space-3);
  padding-inline-start: var(--space-6);
  color: var(--color-ink-soft);
  line-height: 1.6;
}

.takeaway li::before {
  content: '';
  position: absolute;
  inset-inline-start: 0;
  inset-block-start: calc(var(--space-3) + 0.8em);
  width: 16px;
  height: 1px;
  background-color: var(--color-gold);
}

/* ── Schedule ("בְּקִצָּר:") ── */
.schedule {
  border-top: 1px solid var(--color-line);
}

.schedule li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-5);
  padding-block: var(--space-4);
  border-bottom: 1px solid var(--color-line);
}

.schedule time {
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
  color: var(--color-ink-soft);
}

.followup {
  margin-top: var(--space-7);
}

.followup h3 {
  font-size: var(--text-md);
  font-style: italic;
  font-weight: 700;
  margin-bottom: var(--space-2);
}

.followup p {
  color: var(--color-muted);
}

/* ── About ── */
.about p {
  color: var(--color-ink-soft);
  margin-bottom: var(--space-5);
}

.about__link {
  font-weight: 600;
}

/* ── FAQ ── */
.faq {
  border-bottom: 1px solid var(--color-line);
}

.faq:first-of-type {
  border-top: 1px solid var(--color-line);
}

.faq summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-height: 60px;
  padding-block: var(--space-3);
  font-family: var(--font-display);
  font-size: var(--text-md);
  font-weight: 500;
  line-height: 1.4;
  cursor: pointer;
  list-style: none;
}

.faq summary::-webkit-details-marker {
  display: none;
}

.faq summary::after {
  content: '';
  flex-shrink: 0;
  width: 11px;
  height: 11px;
  background:
    linear-gradient(var(--color-ink), var(--color-ink)) center / 100% 1px no-repeat,
    linear-gradient(var(--color-ink), var(--color-ink)) center / 1px 100% no-repeat;
  transition: transform var(--transition-base);
}

.faq[open] summary::after {
  transform: rotate(45deg);
}

.faq p {
  color: var(--color-ink-soft);
  padding-bottom: var(--space-5);
}

/* ── Register (white part) ── */
.register {
  text-align: center;
}

.register__limit {
  margin-bottom: var(--space-2);
}

.register .section-title {
  font-weight: 700;
  margin-bottom: var(--space-7);
}

.dates {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: var(--space-4);
  text-align: right;
}

.dates__legend {
  width: 100%;
  font-size: var(--text-sm);
  color: var(--color-muted);
  text-align: center;
  margin-bottom: var(--space-4);
}

.date-card {
  position: relative;
  display: grid;
  gap: var(--space-1);
  padding: var(--space-5);
  border: 1px solid var(--color-line);
  border-radius: 2px;
  cursor: pointer;
  transition: border-color var(--transition-base);
}

.date-card input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.date-card__weekday,
.date-card__time {
  font-size: var(--text-sm);
  color: var(--color-muted);
}

.date-card__date {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 500;
  line-height: 1.05;
}

.date-card__check {
  position: absolute;
  inset-block-start: var(--space-4);
  inset-inline-end: var(--space-4);
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 1px solid var(--color-line);
  transition: background-color var(--transition-base), border-color var(--transition-base), box-shadow var(--transition-base);
}

@media (hover: hover) {
  .date-card:hover { border-color: var(--color-muted); }
}

.date-card:has(input:checked) {
  border-color: var(--color-ink);
  box-shadow: inset 0 0 0 1px var(--color-ink);
}

.date-card:has(input:checked) .date-card__check {
  border-color: var(--color-ink);
  background-color: var(--color-ink);
  box-shadow: inset 0 0 0 4px var(--color-paper);
}

.date-card:has(input:focus-visible) {
  box-shadow: var(--focus-ring);
}

.dates__empty {
  color: var(--color-muted);
}

/* ── Black band (price + booking), as at the foot of the invitation ── */
.band {
  background-color: var(--color-band);
  color: var(--color-band-text);
  text-align: center;
  padding-block: var(--space-9);
}

.band :focus-visible {
  box-shadow: 0 0 0 2px var(--color-band), 0 0 0 4px var(--color-band-text);
}

.band__label {
  font-size: var(--text-xs);
  letter-spacing: 0.3em;
  color: var(--color-band-muted);
  margin-bottom: var(--space-3);
}

.band__price {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 700;
  line-height: 1.1;
  direction: ltr;
  margin-bottom: var(--space-2);
}

.band__currency {
  font-size: 0.6em;
  margin-inline-end: 0.12em;
}

.band__includes {
  font-style: italic;
  color: var(--color-band-muted);
  margin-bottom: var(--space-7);
}

.band__title {
  font-size: var(--text-lg);
  font-weight: 700;
  margin-bottom: var(--space-4);
}

.band__text {
  color: var(--color-band-muted);
  margin-bottom: var(--space-6);
}

.band__trust {
  margin-top: var(--space-3);
  font-size: var(--text-xs);
  color: var(--color-band-muted);
}

.band__or {
  margin-top: var(--space-7);
  margin-bottom: var(--space-3);
  color: var(--color-band-muted);
}

.after-pay {
  margin-top: var(--space-6);
  padding: var(--space-5);
  border: 1px solid var(--color-band-line);
  animation: rise 360ms var(--ease-out);
}

.after-pay p {
  margin-bottom: var(--space-4);
}

@keyframes rise {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Footer (continues the band) ── */
.footer {
  background-color: var(--color-band);
  color: var(--color-band-muted);
  font-size: var(--text-sm);
}

.footer__inner {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--space-3);
  padding-block: var(--space-6);
  border-top: 1px solid var(--color-band-line);
}

.footer a {
  color: var(--color-band-text);
}

.footer :focus-visible {
  box-shadow: 0 0 0 2px var(--color-band), 0 0 0 4px var(--color-band-text);
}

/* ── Sticky CTA (mobile only) ── */
.sticky-cta {
  position: fixed;
  inset-inline: 0;
  inset-block-end: 0;
  z-index: 10;
  display: none;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-3) var(--gutter);
  padding-bottom: calc(var(--space-3) + env(safe-area-inset-bottom));
  background-color: var(--color-paper);
  border-top: 1px solid var(--color-line);
  transform: translateY(110%);
  transition: transform var(--transition-base);
}

.sticky-cta__text {
  font-size: var(--text-sm);
  line-height: 1.3;
  color: var(--color-ink-soft);
}

.sticky-cta.is-visible {
  transform: translateY(0);
}

@media (max-width: 720px) {
  .sticky-cta:not([hidden]) { display: flex; }
  .footer { padding-bottom: 72px; }
}

/* ── Dialog (modal) ── */
.dialog {
  margin: auto;
  max-width: min(440px, calc(100% - 2 * var(--gutter)));
  border: none;
  border-radius: 2px;
  padding: 0;
  background-color: var(--color-paper);
  color: var(--color-ink);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.25);
}

.dialog[open] {
  animation: rise 360ms var(--ease-out);
}

.dialog::backdrop {
  background: rgba(27, 27, 27, 0.7);
}

.dialog__content {
  padding: var(--space-7) var(--space-6);
  text-align: center;
}

.dialog__title {
  font-size: var(--text-lg);
  margin-bottom: var(--space-3);
}

.dialog__desc {
  color: var(--color-ink-soft);
  margin-bottom: var(--space-6);
}

/* ── Responsive ── */
@media (max-width: 480px) {
  .hero {
    padding-block: var(--space-6) var(--space-8);
  }

  .masthead {
    letter-spacing: 0.2em;
    margin-bottom: var(--space-6);
  }

  .facts {
    gap: var(--space-4) var(--space-6);
  }

  .hero__actions .btn {
    width: 100%;
  }

  .panel {
    padding: var(--space-6) var(--space-5);
    margin-inline: calc(-1 * var(--space-2));
  }

  .axis li + li::before {
    height: 64px;
  }
}

/* ═══════════════════════════════════════════════════
   THE VIDEO WORLD: backdrop, sheet, prints
   Shared by the home page and the event pages
═══════════════════════════════════════════════════ */

/* ── Backdrop: the May workshop plays behind the whole page ── */
.has-backdrop {
  background-color: var(--color-band);
}

.backdrop {
  position: fixed;
  inset: 0;
  z-index: 0;
  background: var(--color-band) url('../assets/img/video-poster.jpg') center / cover no-repeat;
}

.backdrop__video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 1.6s var(--ease-out);
}

.backdrop__video.is-ready {
  opacity: 1;
}

.backdrop__veil {
  position: absolute;
  inset: 0;
  background-color: var(--color-veil);
}

/* Everything else scrolls over the backdrop */
.has-backdrop > header,
.has-backdrop > nav,
.has-backdrop main,
.has-backdrop .footer {
  position: relative;
  z-index: 1;
}

/* ── The sheet: the page content as a card laid over the video ── */
.sheet {
  max-width: calc(var(--wide) + 2 * var(--space-9));
  margin-inline: auto;
  background-color: var(--color-paper);
  background-image: var(--paper-grain);
  border-radius: 2px;
  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.35);
  overflow: hidden;
}

@media (max-width: 1199px) {
  .sheet {
    margin-inline: var(--space-3);
  }
}

/* ── Band + footer over the video again (pages with a backdrop) ── */
.band.band--over {
  /* a soft, edge-less darkening so text stays calm over any frame */
  background: linear-gradient(to bottom, transparent, rgba(24, 19, 15, 0.45) 22%, rgba(24, 19, 15, 0.45) 78%, transparent);
  padding-block: var(--space-9) var(--space-8);
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.35);
}

.band--over .btn {
  text-shadow: none;
}

.band--over .band__text {
  color: rgba(250, 246, 239, 0.84);
}

.footer.footer--over {
  background-color: transparent;
  color: rgba(250, 246, 239, 0.78);
}

/* ── Photo prints: white-bordered photos, laid down by hand ── */
.photo {
  background-color: var(--color-card);
  padding: 10px 10px 34px;
  box-shadow: 0 1px 2px rgba(43, 35, 29, 0.12), 0 12px 28px rgba(43, 35, 29, 0.14);
  transition: transform 500ms var(--ease-out);
}

.photo img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  /* a touch of film: warmer, softer blacks */
  filter: sepia(0.12) saturate(0.92) contrast(0.96);
}


/* ── Event pages in the video world ── */
.sheet {
  position: relative;
  z-index: 1;
}

/* A band of video shows above the card, under the nav */
.sheet--page {
  margin-top: clamp(40px, 12vh, 120px);
}

.sheet--page .hero {
  padding-top: var(--space-9);
}

.sheet--page.event-missing {
  margin-bottom: var(--space-9);
  padding-inline: var(--gutter);
}

.site-nav--over {
  border-bottom-color: var(--color-band-line);
  color: var(--color-band-text);
}

.site-nav--over .site-nav__studio,
.site-nav--over .site-nav__link {
  color: var(--color-band-muted);
}

.site-nav--over :focus-visible {
  box-shadow: 0 0 0 2px var(--color-band), 0 0 0 4px var(--color-band-text);
}

@media (hover: hover) {
  .site-nav--over .site-nav__link:hover { color: var(--color-band-text); }
}
