/* ============================================================
   Ionela & Sergiu · 19.09.2026
   One stylesheet. The values in :root drive everything.
   ============================================================ */

:root{
  --ivory:#FBF9F5; --white:#fff; --beige:#F0EAE0; --sand:#E3DACB;
  --ink:#141310; --gray:#8C877C; --line:rgba(20,19,16,.12);
  --serif:"Cormorant Garamond",Georgia,serif;
  --sans:"Manrope",-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  --pad:clamp(24px,7vw,64px);
  --ease:cubic-bezier(.22,1,.36,1);
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--ivory);color:var(--ink);
  font-family:var(--sans);font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;overflow:hidden;
}
img{max-width:100%;height:auto;display:block}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
h1,h2,h3{font-family:var(--serif);font-weight:300;margin:0;line-height:1.08}
p{margin:0}
:focus-visible{outline:1px solid var(--ink);outline-offset:4px}

/* ---------- view system ---------- */
#views{position:fixed;inset:0}
.view{
  position:absolute;inset:0;
  display:flex;flex-direction:column;justify-content:center;justify-content:safe center;
  padding:calc(env(safe-area-inset-top) + 78px) var(--pad) calc(env(safe-area-inset-bottom) + 104px);
  overflow-y:auto;
  opacity:0;visibility:hidden;transform:translateY(14px);
  transition:opacity .55s var(--ease),transform .55s var(--ease),visibility .55s var(--ease);
}
.view.is-active{opacity:1;visibility:visible;transform:none}
.view.is-active > *{animation:rise .7s var(--ease) both}
.view.is-active > *:nth-child(2){animation-delay:.07s}
.view.is-active > *:nth-child(3){animation-delay:.12s}
.view.is-active > *:nth-child(4){animation-delay:.17s}
.view.is-active > *:nth-child(5){animation-delay:.22s}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.inner{width:100%;max-width:560px;margin-inline:auto}
.view--center{text-align:center;align-items:center}
.view--wide .inner{max-width:760px}

/* ---------- type ---------- */
.q{font-size:clamp(2rem,7.5vw,3.1rem);letter-spacing:-.01em}
.sub{margin-top:16px;color:var(--gray);font-size:.95rem}
.eyebrow{font-size:.66rem;letter-spacing:.24em;text-transform:uppercase;color:var(--gray)}
.lede{font-family:var(--serif);font-size:clamp(1.6rem,5vw,2.4rem);line-height:1.35}
.names{font-family:var(--serif);font-size:clamp(2.4rem,9vw,3.6rem);line-height:1.1}
.names em{display:block;font-style:italic;font-size:.42em;color:var(--gray);margin:2px 0}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:58px;padding:0 38px;border-radius:999px;
  border:1px solid var(--ink);background:var(--ink);color:var(--ivory);
  font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;
  transition:transform .3s var(--ease),background .3s var(--ease),color .3s var(--ease),opacity .3s var(--ease);
}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn--ghost:hover{border-color:var(--ink)}
.btn--wide{width:100%}
.btn[disabled]{background:transparent;color:var(--gray);border-color:var(--line);pointer-events:none}
.btn--small{min-height:44px;padding:0 22px;font-size:.64rem;border-color:var(--line);background:transparent;color:var(--ink)}
.btn--small:hover{background:var(--ink);color:var(--ivory)}
.actions{display:grid;gap:12px;margin-top:44px}
.actions--row{grid-auto-flow:column;justify-content:start}

/* ---------- inputs ---------- */
.input,.textarea{
  width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);
  padding:14px 2px;font-family:var(--serif);font-size:clamp(1.5rem,5.5vw,2rem);
  color:var(--ink);transition:border-color .3s var(--ease);
}
.input::placeholder,.textarea::placeholder{color:rgba(140,135,124,.5)}
.input:focus,.textarea:focus{outline:none;border-bottom-color:var(--ink)}
.textarea{font-size:clamp(1.15rem,4vw,1.4rem);line-height:1.5;resize:none;min-height:120px}
.hint{margin-top:14px;font-size:.85rem;color:#8A3A2E;min-height:20px}

/* ---------- choices ---------- */
.choices{display:grid;gap:12px;margin-top:38px}
.choice{
  display:flex;align-items:center;gap:16px;width:100%;text-align:left;
  padding:22px 24px;border:1px solid var(--line);border-radius:20px;background:var(--white);
  transition:border-color .3s var(--ease),background .3s var(--ease),transform .3s var(--ease);
}
.choice:hover{border-color:var(--ink);transform:translateY(-1px)}
.choice .dot{flex:none;width:18px;height:18px;border-radius:50%;border:1px solid var(--gray);transition:box-shadow .3s var(--ease),border-color .3s var(--ease)}
.choice.is-on{border-color:var(--ink);background:var(--beige)}
.choice.is-on .dot{border-color:var(--ink);box-shadow:inset 0 0 0 4px var(--ink)}
.choice b{display:block;font-family:var(--serif);font-weight:400;font-size:1.5rem;line-height:1.2;color:var(--ink)}
.choice__body{display:block;flex:1}
.choice__body span{display:block;font-size:.85rem;color:var(--gray);margin-top:4px}

.numbers{display:flex;gap:12px;margin-top:38px;flex-wrap:wrap}
.num{
  width:76px;height:76px;border-radius:50%;border:1px solid var(--line);background:var(--white);
  font-family:var(--serif);font-size:1.7rem;
  transition:all .3s var(--ease);
}
.num:hover{border-color:var(--ink)}
.num.is-on{background:var(--ink);color:var(--ivory);border-color:var(--ink)}

/* ---------- chrome ---------- */
.topbar{
  position:fixed;top:0;left:0;right:0;z-index:20;height:78px;
  display:flex;align-items:center;justify-content:space-between;
  padding:env(safe-area-inset-top) var(--pad) 0;
  opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s var(--ease);
}
.topbar.is-on{opacity:1;visibility:visible}
.back{display:inline-flex;align-items:center;gap:10px;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gray)}
.back:hover{color:var(--ink)}
.back svg{transition:transform .3s var(--ease)}
.back:hover svg{transform:translateX(-3px)}
.topbar__left{display:flex;align-items:center;gap:16px}
.topbar__left::after{content:"";display:none}
.step{font-size:.66rem;letter-spacing:.2em;color:var(--gray);font-variant-numeric:tabular-nums}
.progress{position:fixed;top:0;left:0;right:0;height:2px;background:transparent;z-index:21}
.progress i{display:block;height:100%;width:0;background:var(--ink);transition:width .6s var(--ease)}

.menu{
  position:fixed;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom) + 22px);
  z-index:20;display:flex;gap:4px;padding:5px;border-radius:999px;
  background:rgba(251,249,245,.86);backdrop-filter:blur(14px) saturate(160%);
  -webkit-backdrop-filter:blur(14px) saturate(160%);
  border:1px solid var(--line);box-shadow:0 12px 40px -22px rgba(20,19,16,.5);
  opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s var(--ease),transform .5s var(--ease);
}
.menu.is-on{opacity:1;visibility:visible}
.menu button{padding:11px 20px;border-radius:999px;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gray);transition:all .3s var(--ease)}
.menu button:hover{color:var(--ink)}
.menu button.is-on{background:var(--ink);color:var(--ivory)}

.lang{position:fixed;top:calc(env(safe-area-inset-top) + 22px);right:var(--pad);z-index:22;display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:rgba(251,249,245,.86);backdrop-filter:blur(12px);opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s var(--ease)}
.lang.is-on{opacity:1;visibility:visible}
.lang button{padding:8px 13px;font-size:.62rem;font-weight:600;letter-spacing:.14em;color:var(--gray)}
.lang button.is-on{background:var(--ink);color:var(--ivory)}

/* ---------- cover ---------- */
.cover__logo{width:clamp(160px,42vw,250px);margin:0 auto 40px}
.cover__date{margin-top:26px;font-size:.7rem;letter-spacing:.26em;color:var(--gray)}

/* ---------- program ---------- */
.page-head{text-align:center;margin-bottom:44px}
.page-head h2{font-size:clamp(2.2rem,7vw,3rem)}
.page-head p{margin-top:12px;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gray)}
.tl{display:grid;gap:0}
.tl__card{background:var(--white);border:1px solid var(--line);border-radius:24px;padding:clamp(24px,5vw,34px)}
.tl__time{font-size:.68rem;letter-spacing:.2em;color:var(--gray)}
.tl__card h3{font-size:clamp(1.5rem,5vw,1.9rem);margin-top:10px}
.tl__card p{margin-top:12px;color:#4A463E;font-size:.98rem}
.tl__loc{margin-top:16px;font-family:var(--serif);font-size:1.15rem}
.tl__arrow{display:flex;justify-content:center;color:var(--sand);padding:14px 0}
.tl__card .btn--small{margin-top:18px}
.dress{margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}
.dress span{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gray)}
.dress b{display:block;font-family:var(--serif);font-weight:400;font-size:1.5rem;margin-top:6px}

/* ---------- stay ---------- */
.stay{display:grid;gap:14px}
.stay__card{background:var(--white);border:1px solid var(--line);border-radius:24px;padding:clamp(24px,5vw,32px)}
.stay__card h3{font-size:1.6rem}
.stay__meta{margin-top:8px;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gray)}
.stay__phone{display:inline-block;margin-top:16px;font-family:var(--serif);font-size:1.25rem;color:inherit;text-decoration:none;border-bottom:1px solid var(--line)}
.stay__row{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}

/* ---------- done ---------- */
.heart{font-size:2.6rem;line-height:1}
.summary{margin-top:34px;padding-top:22px;border-top:1px solid var(--line);display:grid;gap:10px;text-align:left}
.summary div{display:flex;justify-content:space-between;gap:20px;font-size:.9rem}
.summary dt{color:var(--gray)}
.summary dd{margin:0;font-family:var(--serif);font-size:1.1rem;text-align:right}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
}

/* ---------- accommodation note ---------- */
.note{max-width:46ch;margin:0 auto 34px;text-align:center;color:var(--gray);font-size:.92rem}
.stay__card .stay__desc{margin-top:10px;color:#4A463E;font-size:.94rem}

/* ---------- confirmed line ---------- */
.confirmed{
  display:inline-flex;align-items:center;gap:10px;margin-top:34px;
  padding:14px 24px;border-radius:999px;background:var(--beige);
  font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);
}
.confirmed svg{flex:none}

/* ---------- handwritten signature ----------
   The real handwriting, used as an image. Width is capped in both
   viewport units and pixels so it stays proportional everywhere. */
.signature{width:min(78vw,340px);height:auto;margin:0 auto}
.view[data-view="lang"] .signature{opacity:0;animation:rise 1.1s var(--ease) .18s forwards}
.signature--sign{width:min(52vw,190px);margin-top:46px;opacity:.5}
@media (prefers-reduced-motion:reduce){
  .view[data-view="lang"] .signature{opacity:1;animation:none}
}
