/* =========================================================
   Reyna Rose — landing
   palette: warm ivory / powder blue / dusty slate
   type: Fraunces (display, italic) + Geist (ui)
   ========================================================= */

:root{
  --ivory:        #F4EEE4;
  --ivory-2:      #EEE6D7;
  --sand:         #E6DAC5;
  --blue-mist:    #D8E2EA;
  --blue:         #A9BFD0;
  --blue-deep:    #6E879E;
  --ink:          #1E2A35;
  --ink-2:        #2B3B4C;
  --slate:        #3E556C;
  --rose:         #C9756A;
  --rose-soft:    #E6B6A9;

  --bg:           var(--ivory);
  --text:         var(--ink);
  --muted:        #6A7785;

  --radius-sm: 10px;
  --radius-md: 18px;
  --radius-lg: 28px;
  --radius-xl: 36px;

  --shadow-1: 0 1px 2px rgba(30,42,53,.06), 0 6px 20px -8px rgba(30,42,53,.14);
  --shadow-2: 0 2px 4px rgba(30,42,53,.08), 0 20px 50px -10px rgba(30,42,53,.18);
  --shadow-soft: 0 30px 60px -30px rgba(110,135,158,.45);

  --ease: cubic-bezier(.2,.7,.1,1);
  --ease-soft: cubic-bezier(.22,.6,.12,1);

  --safe-top:    env(safe-area-inset-top, 0px);
  --safe-bot:    env(safe-area-inset-bottom, 0px);
}

*,*::before,*::after{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
html{ -webkit-text-size-adjust:100%; }
body{
  min-height:100vh;
  min-height:100dvh;
  font-family: "Geist", ui-sans-serif, system-ui, sans-serif;
  font-weight:400;
  color:var(--text);
  background:
    radial-gradient(120% 70% at 85% -10%, rgba(169,191,208,.55), transparent 60%),
    radial-gradient(90%  60% at 10% 100%, rgba(230,182,169,.35), transparent 55%),
    linear-gradient(180deg, #F6F0E6 0%, var(--ivory) 40%, #ECE3D2 100%);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  letter-spacing:.005em;
  line-height:1.5;
  overflow-x:hidden;
}

/* subtle grain / paper texture */
.grain{
  position:fixed; inset:0; pointer-events:none; z-index:1;
  mix-blend-mode: multiply;
  opacity:.06;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  background-size: 180px 180px;
}

/* =========================================================
   STAGE / LAYOUT  (mobile first)
   ========================================================= */
.stage{
  position:relative; z-index:2;
  max-width: 520px;
  margin-inline:auto;
  padding:
    calc(32px + var(--safe-top))
    22px
    calc(28px + var(--safe-bot));
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:28px;
  min-height:100dvh;
}

/* HERO ==================================================== */
.hero{
  width:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:22px;
  padding-top:8px;
}

.hero__photo{
  position:relative;
  width: clamp(200px, 56vw, 260px);
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  overflow:hidden;
  background: linear-gradient(150deg, var(--blue-mist), var(--blue) 60%, var(--blue-deep));
  box-shadow:
    var(--shadow-soft),
    inset 0 0 0 1px rgba(255,255,255,.5);
  isolation:isolate;
}
.hero__photo::after{
  /* soft ring */
  content:"";
  position:absolute; inset:-10px;
  border-radius:50%;
  background: radial-gradient(closest-side, rgba(255,255,255,.6), transparent 70%);
  z-index:-1;
  filter: blur(10px);
}
.hero__photo img{
  width:100%; height:100%;
  object-fit:cover;
  display:block;
  transition: transform .9s var(--ease);
}
.hero__fallback{
  position:absolute; inset:0;
  display:none;
}
.hero__fallback svg{ width:100%; height:100%; display:block; }
.hero__photo--empty img{ display:none; }
.hero__photo--empty .hero__fallback{ display:block; }

.hero__photo:hover img{ transform: scale(1.03); }

.hero__name{
  margin:0;
  font-family:"Fraunces", ui-serif, Georgia, serif;
  font-weight:300;
  font-style:italic;
  font-size: clamp(46px, 13vw, 72px);
  line-height:.95;
  letter-spacing:-0.01em;
  color:var(--ink);
  text-align:center;
  font-variation-settings: "opsz" 144, "SOFT" 80;
}
.hero__name-first{ display:block; }
.hero__name-last{
  display:block;
  font-style:italic;
  font-weight:400;
  color:var(--slate);
  transform: translateX(.3em);
}

.hero__tag{
  margin:0;
  font-size: 16px;
  color:var(--muted);
  text-align:center;
  max-width: 28ch;
  line-height:1.55;
}
.hero__tag-sub{ color:var(--slate); font-weight:500; letter-spacing:.01em; }
.kiss{ filter: saturate(.9); }

/* BUTTONS =================================================== */
.choices{
  width:100%;
  display:flex; flex-direction:column; gap:12px;
  margin-top:6px;
}

.btn{
  --btn-bg: var(--ink);
  --btn-fg: var(--ivory);
  --btn-bd: transparent;
  appearance:none;
  border:1px solid var(--btn-bd);
  background: var(--btn-bg);
  color: var(--btn-fg);
  font: inherit;
  font-family: "Geist", sans-serif;
  font-weight:500;
  font-size:16px;
  letter-spacing:.02em;
  padding: 18px 22px;
  border-radius: var(--radius-lg);
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  cursor:pointer;
  text-decoration:none;
  width:100%;
  min-height:58px;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease),
              background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
  box-shadow: var(--shadow-1);
  position:relative;
  overflow:hidden;
  -webkit-tap-highlight-color: transparent;
}
.btn:active{ transform: translateY(1px) scale(.995); }
.btn:focus-visible{ outline: 2px solid var(--slate); outline-offset: 3px; }

.btn__label{ position:relative; z-index:1; }
.btn__icon{ display:inline-flex; align-items:center; justify-content:center; position:relative; z-index:1; }

.btn--primary{
  --btn-bg: var(--ink);
  --btn-fg: var(--ivory);
}
.btn--primary::before{
  content:"";
  position:absolute; inset:0;
  background: linear-gradient(120deg, transparent 30%, rgba(255,255,255,.08) 50%, transparent 70%);
  transform: translateX(-100%);
  transition: transform .8s var(--ease);
}
.btn--primary:hover::before{ transform: translateX(100%); }
.btn--primary:hover{ box-shadow: var(--shadow-2); }

.btn--secondary{
  --btn-bg: rgba(255,255,255,.55);
  --btn-fg: var(--ink);
  --btn-bd: rgba(62,85,108,.25);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.btn--secondary:hover{
  --btn-bg: rgba(255,255,255,.8);
  --btn-bd: rgba(62,85,108,.4);
  box-shadow: var(--shadow-2);
}

.btn[disabled]{ opacity:.45; cursor:not-allowed; }
.btn--next{ margin-top: 22px; }

/* telegram CTA on slide 4 */
.btn--tg{
  --btn-bg: var(--slate);
  --btn-fg: var(--ivory);
}

/* Loading spinner on Send button */
.btn__loader{
  width:16px; height:16px; border-radius:50%;
  border:2px solid rgba(255,255,255,.35);
  border-top-color: #fff;
  animation: spin .7s linear infinite;
  display:none;
}
.btn.is-loading .btn__label{ opacity:.35; }
.btn.is-loading .btn__loader{ display:inline-block; }
@keyframes spin{ to{ transform: rotate(360deg); } }

/* FOOTER =================================================== */
.foot{
  margin-top:auto;
  font-size:12px;
  color: color-mix(in srgb, var(--muted) 80%, transparent);
  letter-spacing:.08em;
  text-transform:uppercase;
}

/* REVEAL ANIMATIONS ======================================= */
[data-reveal]{
  opacity:0;
  transform: translateY(14px);
  animation: reveal .9s var(--ease) forwards;
}
[data-reveal="1"]{ animation-delay:.10s; }
[data-reveal="2"]{ animation-delay:.28s; }
[data-reveal="3"]{ animation-delay:.44s; }
[data-reveal="4"]{ animation-delay:.58s; }
[data-reveal="5"]{ animation-delay:.70s; }
[data-reveal="6"]{ animation-delay:.90s; }
@keyframes reveal{
  to{ opacity:1; transform:none; }
}
@media (prefers-reduced-motion: reduce){
  [data-reveal]{ animation:none; opacity:1; transform:none; }
  .hero__photo img{ transition:none; }
}

/* =========================================================
   SHEET (slide form)
   ========================================================= */
.sheet{
  position:fixed; inset:0; z-index:20;
  visibility:hidden;
  pointer-events:none;
}
.sheet.is-open{ visibility:visible; pointer-events:auto; }

.sheet__scrim{
  position:absolute; inset:0;
  background: rgba(20,28,37,.35);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  opacity:0;
  transition: opacity .4s var(--ease);
}
.sheet.is-open .sheet__scrim{ opacity:1; }

.sheet__panel{
  position:absolute;
  left:0; right:0; bottom:0;
  background:
    radial-gradient(120% 60% at 0% 0%, rgba(216,226,234,.6), transparent 55%),
    linear-gradient(180deg, #FAF4EA, #F0E7D6);
  border-top-left-radius: var(--radius-xl);
  border-top-right-radius: var(--radius-xl);
  box-shadow: 0 -20px 60px -10px rgba(30,42,53,.3);
  padding:
    18px
    22px
    calc(28px + var(--safe-bot));
  transform: translateY(100%);
  transition: transform .5s var(--ease);
  max-height: 96dvh;
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.sheet.is-open .sheet__panel{ transform: translateY(0); }

@media (min-width: 640px){
  .sheet__panel{
    left:50%; right:auto; bottom:50%;
    transform: translate(-50%, 60%) scale(.98);
    max-width: 520px;
    width: calc(100vw - 48px);
    border-radius: var(--radius-xl);
    max-height: 88dvh;
    transition: transform .55s var(--ease), opacity .4s var(--ease);
    opacity:0;
  }
  .sheet.is-open .sheet__panel{
    transform: translate(-50%, 50%);
    opacity:1;
  }
}

.sheet__head{
  display:flex; align-items:center; justify-content:space-between;
  padding: 4px 2px 10px;
}
.sheet__progress{ display:flex; gap:8px; }
.dot{
  width:6px; height:6px; border-radius:50%;
  background: rgba(62,85,108,.22);
  transition: background .35s var(--ease), width .35s var(--ease), transform .35s var(--ease);
}
.dot.is-on{ background: var(--slate); width:22px; border-radius:6px; }
.dot.is-done{ background: var(--rose); }

.sheet__close{
  width:36px; height:36px;
  border-radius:50%;
  border:1px solid rgba(62,85,108,.2);
  background: rgba(255,255,255,.6);
  color: var(--slate);
  display:grid; place-items:center;
  cursor:pointer;
  transition: background .3s var(--ease), transform .3s var(--ease);
}
.sheet__close:hover{ background: rgba(255,255,255,.9); transform: rotate(90deg); }
.sheet__close:focus-visible{ outline: 2px solid var(--slate); outline-offset:2px; }

.sheet__form{
  position:relative;
  flex:1;
  display:flex;
  min-height:0;
}

/* SLIDES =================================================== */
.slides{
  position:relative;
  width:100%;
  flex:1;
  display:grid;
  grid-template-areas: "stack";
}
.slide{
  grid-area: stack;
  padding: 14px 4px 6px;
  display:flex;
  flex-direction:column;
  gap:12px;
  opacity:0;
  transform: translateX(24px);
  pointer-events:none;
  transition:
    opacity .45s var(--ease-soft),
    transform .55s var(--ease-soft);
  will-change: transform, opacity;
}
.slide.is-active{
  opacity:1;
  transform: translateX(0);
  pointer-events:auto;
}
.slide.is-leaving{
  opacity:0;
  transform: translateX(-24px);
}

.slide__eyebrow{
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color: var(--slate);
  margin: 2px 0 4px;
  opacity:.75;
}
.slide__q{
  margin:0;
  font-family: "Fraunces", serif;
  font-weight: 400;
  font-style: italic;
  font-variation-settings: "opsz" 72, "SOFT" 50;
  font-size: clamp(26px, 7.5vw, 34px);
  line-height:1.1;
  color: var(--ink);
  letter-spacing:-.01em;
}
.slide__hint{
  margin: -4px 0 6px;
  font-size:13px;
  color:var(--muted);
}
.slide__small{
  font-size: 13px;
  color: var(--muted);
  letter-spacing:.05em;
  text-align:center;
  margin: 8px 0 0;
}
.slide__done-copy{
  margin: 0 0 8px;
  font-size: 15px;
  color: var(--ink-2);
  line-height:1.5;
}

/* FIELDS =================================================== */
.field{
  display:flex;
  align-items:center;
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(62,85,108,.2);
  border-radius: var(--radius-md);
  padding: 2px 14px;
  transition: border-color .3s var(--ease), background .3s var(--ease), box-shadow .3s var(--ease);
  margin-top: 6px;
}
.field:focus-within{
  background: #fff;
  border-color: var(--slate);
  box-shadow: 0 0 0 4px rgba(62,85,108,.12);
}
.field input{
  flex:1;
  appearance:none;
  border:0;
  background:transparent;
  outline:none;
  font: inherit;
  font-size:17px;
  color:var(--ink);
  padding: 16px 0;
  min-width:0;
}
.field input::placeholder{ color: #9AA6B2; }
.field__prefix{
  color: var(--slate);
  font-weight:500;
  font-size:17px;
  padding-right:4px;
}
.field--tg input{ letter-spacing:.01em; }

/* CHIPS =================================================== */
.chips{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-top:4px;
}
.chip{
  position:relative;
  display:flex;
  align-items:center;
  gap:12px;
  padding: 16px 18px;
  background: rgba(255,255,255,.7);
  border: 1px solid rgba(62,85,108,.18);
  border-radius: var(--radius-md);
  cursor:pointer;
  transition: background .25s var(--ease), border-color .25s var(--ease), transform .2s var(--ease);
  -webkit-tap-highlight-color: transparent;
}
.chip input{
  appearance:none;
  width:20px; height:20px;
  border-radius:50%;
  border: 1.5px solid rgba(62,85,108,.35);
  background: #fff;
  margin:0;
  display:grid; place-items:center;
  transition: border-color .25s var(--ease), background .25s var(--ease);
  flex-shrink:0;
}
.chip input::after{
  content:"";
  width:10px; height:10px; border-radius:50%;
  background: var(--ivory);
  transform: scale(0);
  transition: transform .25s var(--ease);
}
.chip input:checked{
  background: var(--slate);
  border-color: var(--slate);
}
.chip input:checked::after{ transform: scale(1); }
.chip:has(input:checked){
  background: rgba(216,226,234,.9);
  border-color: var(--slate);
}
.chip span{
  font-family: "Geist", sans-serif;
  font-weight:500;
  font-size:16px;
  color:var(--ink);
}
.chip:hover{ background: rgba(255,255,255,.9); }
.chip:active{ transform: scale(.99); }

/* Safari fallback without :has — checked state via label */
.chip input:checked ~ span{ color: var(--ink); }

/* DONE SLIDE =============================================== */
.slide--done{
  align-items:stretch;
  justify-content:center;
  text-align:center;
  gap: 14px;
  padding-top: 24px;
}
.slide--done .slide__eyebrow{ text-align:center; color: var(--rose); opacity:1; }
.slide--done .slide__q{ text-align:center; }
.slide--done .slide__done-copy{ text-align:center; }
.slide--done .btn{ margin-top: 10px; }

/* Tall screens: more breathing room */
@media (min-height: 800px){
  .stage{ gap: 36px; }
  .hero{ gap: 28px; }
}

/* Desktop polish */
@media (min-width: 640px){
  .stage{ padding-top: 64px; padding-bottom: 48px; gap: 34px; }
  .hero__photo{ width: 240px; }
  .choices{ flex-direction: row; gap: 14px; }
  .choices .btn{ flex: 1; }
  .btn--next{ width:auto; min-width: 180px; align-self: flex-end; }
  .slide--done .btn--tg{ align-self:stretch; }
}

/* Very narrow devices */
@media (max-width: 340px){
  .hero__name{ font-size: 44px; }
  .btn{ padding: 16px 18px; font-size: 15px; }
}
