* , *::before, *::after { box-sizing: border-box; }
:root {
  --kc-space-1: .5rem;
  --kc-space-2: 1rem;
  --kc-space-3: 1.5rem;
  --kc-space-4: 2.5rem;
  --kc-space-5: 4rem;
  --kc-layout-reading: 46rem;
  --kc-layout-wide: 72rem;
  --kc-z-gate: 100;
  --kc-z-music: 50;
  --kc-motion-fast: 140ms;
  --kc-motion-reveal: 220ms;
  --kc-media-ratio-portrait: 3 / 4;
  --kc-ink: #161616;
  --kc-paper: #f4f4f2;
  --kc-surface: #fff;
  --kc-rule: #c7c7c4;
  --kc-muted: #555;
  color-scheme: light;
  scroll-behavior: smooth;
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
}
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; color: var(--kc-ink); background: var(--kc-paper); line-height: 1.55; }
img { display: block; max-width: 100%; height: auto; }
button, input, select { font: inherit; }
a { color: inherit; }
:focus-visible { outline: 3px solid var(--kc-ink); outline-offset: 4px; }
body.kc-locked { overflow: hidden; }
.kc-content-width { width: min(100% - 2rem, var(--kc-layout-reading)); margin-inline: auto; }
.kc-section { padding: clamp(3rem, 10vw, 7rem) 0; border-top: 1px solid var(--kc-rule); }
.kc-section h2, .kc-story-transition h2 { margin: 0 0 var(--kc-space-3); font-size: clamp(1.6rem, 6vw, 2.6rem); line-height: 1.12; font-weight: 500; }
.kc-section-index, .kc-eyebrow { margin: 0 0 var(--kc-space-2); color: var(--kc-muted); font-size: .82rem; letter-spacing: .08em; text-transform: uppercase; }
.kc-hero { min-height: 86svh; display: grid; place-items: center; padding: 4rem 1rem 6rem; position: relative; text-align: center; }
.kc-hero-content h1 { margin: 0; font-size: clamp(3rem, 15vw, 7rem); line-height: .98; font-weight: 500; }
.kc-year-hook:not(:empty)::before { content: " · "; }
.kc-hero-content p:last-child { margin-top: var(--kc-space-3); font-size: 1.15rem; }
.kc-scroll-link { position: absolute; bottom: 1.5rem; display: inline-flex; gap: .7rem; padding: .5rem; text-decoration-thickness: 1px; text-underline-offset: .25em; }
.kc-reading-section { text-align: center; }
.kc-long-copy { max-width: 42rem; font-size: 1.1rem; line-height: 1.8; }
.kc-reading-section .kc-long-copy { margin-inline: auto; }
.kc-countdown-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; max-width: 28rem; }
.kc-countdown-grid > div { min-height: 4rem; display: flex; align-items: baseline; gap: .5rem; border-bottom: 1px solid var(--kc-rule); padding: .6rem 0; }
.kc-count-value { min-width: 1ch; font-size: 1.35rem; font-variant-numeric: tabular-nums; }
.kc-status { min-height: 1.5em; color: var(--kc-muted); }
.kc-family-groups { display: grid; gap: 1.5rem; margin-top: 2rem; }
.kc-family-groups h3, .kc-story-chapter h3 { margin: 0 0 .5rem; font-size: 1.1rem; }
.kc-family-groups ul { padding-left: 1.25rem; margin: 0; }
.kc-story-transition { min-height: 15rem; padding: 3rem 1rem; display: grid; place-content: center; justify-items: center; text-align: center; border-block: 1px solid var(--kc-rule); position: relative; }
.kc-story-transition h2 { max-width: 18ch; }
.kc-story-marker { color: var(--kc-muted); font-size: .85rem; letter-spacing: .15em; }
.kc-gallery-section .kc-content-width { max-width: var(--kc-layout-wide); }
.kc-story-chapter { margin-top: 3rem; }
.kc-story-photos { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
.kc-story-photo { margin: 0; }
.kc-story-photo img { width: 100%; border: 1px solid var(--kc-rule); }
.kc-story-photo figcaption { padding-top: .4rem; color: var(--kc-muted); font-size: .9rem; }
.kc-event-time { font-size: 1.25rem; font-variant-numeric: tabular-nums; }
.kc-event-section h3 { margin-bottom: .3rem; font-size: 1.15rem; }
.kc-event-section p { max-width: 40rem; }
.kc-button { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: .5rem; padding: .7rem 1rem; border: 1px solid var(--kc-ink); background: var(--kc-surface); color: var(--kc-ink); text-decoration: none; cursor: pointer; }
.kc-button:disabled { cursor: not-allowed; opacity: .65; }
.kc-link-action { margin: .4rem .5rem .4rem 0; }
#kc-rsvp-form { max-width: 34rem; }
.kc-field { display: grid; gap: .4rem; margin: 1rem 0; }
.kc-field input, .kc-field select { width: 100%; min-height: 48px; padding: .65rem .75rem; border: 1px solid var(--kc-rule); background: var(--kc-surface); color: var(--kc-ink); font-size: 16px; }
.kc-fieldset { display: grid; gap: .75rem; border: 0; padding: 0; margin: 1rem 0; }
.kc-fieldset legend { margin-bottom: .5rem; font-weight: 600; }
.kc-fieldset label { min-height: 44px; display: flex; align-items: center; gap: .65rem; }
.kc-field-error { color: #303030; }
.kc-ticket-hook { border-top: 1px solid var(--kc-rule); margin-top: 2rem; padding-top: 1.5rem; }
#kc-footer { padding: 3.5rem 1rem; border-top: 1px solid var(--kc-rule); text-align: center; }
.kc-footer-inner { display: flex; flex-direction: column; align-items: center; gap: 1rem; }
.kc-footer-divider { width: min(80vw, 20rem); display: flex; align-items: center; gap: 1rem; color: var(--kc-muted); }
.kc-footer-divider::before, .kc-footer-divider::after { content: ""; height: 1px; flex: 1; background: var(--kc-rule); }
.kc-footer-dedication, .kc-footer-date { margin: 0; }
.kc-footer-brand { min-height: 44px; display: inline-flex; align-items: center; gap: .55rem; padding: .4rem; text-decoration: none; color: var(--kc-ink); }
.kc-footer-instagram { width: 18px; height: 18px; }
.kc-footer-reveal.reveal-pending { opacity: 0; transform: translateY(8px); }
.kc-footer-reveal.appeared { opacity: 1; transform: none; transition: opacity var(--kc-motion-reveal) ease, transform var(--kc-motion-reveal) ease; }
.kc-gate { position: fixed; inset: 0; z-index: var(--kc-z-gate); display: grid; place-items: center; padding: 1.25rem; background: var(--kc-paper); }
.kc-gate-content { display: grid; justify-items: center; gap: 1rem; text-align: center; }
.kc-gate-content h2 { margin: 0; font-size: clamp(2rem, 9vw, 4rem); }
.kc-gate-label, .kc-gate-credit { margin: 0; color: var(--kc-muted); }
.kc-gate-cta { min-width: 12rem; min-height: 3.5rem; display: inline-flex; justify-content: center; align-items: center; gap: .75rem; }
.kc-gate-cta::before, .kc-gate-cta::after { pointer-events: none; }
.kc-float { position: fixed; z-index: var(--kc-z-music); inset-inline-end: 1rem; inset-block-end: 1rem; width: 3rem; height: 3rem; border: 0; padding: 0; background: transparent; }
.kc-float-bg { position: absolute; inset: .35rem; border: 1px solid var(--kc-rule); border-radius: 50%; background: var(--kc-surface); }
.kc-float-glow { position: absolute; inset: -.25rem; border-radius: 50%; pointer-events: none; }
.kc-ring { position: absolute; inset: 0; border: 1px dashed var(--kc-muted); border-radius: 50%; animation: kc-ring-rotate 24s linear infinite; pointer-events: none; }
.kc-float.paused .kc-ring { animation-play-state: paused; }
.kc-letter { position: absolute; inset: 0; display: grid; place-items: center; z-index: 1; font-size: .7rem; }
.kc-bars { position: absolute; z-index: 2; inset-inline-start: 50%; inset-block-end: .35rem; display: flex; gap: 2px; transform: translateX(-50%); pointer-events: none; }
.kc-bar { width: 2px; height: 3px; background: var(--kc-ink); }
.kc-float:not(.paused) .kc-bar { animation: kc-bar-pulse .5s ease-in-out infinite alternate; }
.kc-bar:nth-child(2) { animation-delay: .12s !important; }
.kc-bar:nth-child(3) { animation-delay: .24s !important; }
@keyframes kc-ring-rotate { to { transform: rotate(360deg); } }
@keyframes kc-bar-pulse { to { height: 9px; } }
@media (min-width: 720px) {
  .kc-family-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kc-story-photos { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
  .kc-story-chapter[data-gallery-stage="infant"] .kc-story-photos { grid-template-columns: minmax(0, 32rem); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .kc-footer-reveal.reveal-pending { opacity: 1; transform: none; }
}
