/* forever
   Black page, one pink, and the hearts do the rest. */

:root{
  --black:#07060a;
  --ink:#f6eef1;
  --pink:#ff5d92;
  --pink-soft:#e9b7c8;
  --dim:rgba(246,238,241,.52);
  --line:rgba(233,183,200,.16);
  --serif:"Instrument Serif", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --sans:ui-sans-serif, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  background:var(--black);
  color:var(--ink);
  font-family:var(--sans);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

/* the hearts sit behind everything, the glow sits between them and the page */
#hearts{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block}
.glow{
  position:fixed;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(58vmax 44vmax at 50% 22%, rgba(255,93,146,.16), transparent 62%),
    radial-gradient(46vmax 40vmax at 12% 96%, rgba(255,93,146,.10), transparent 66%),
    radial-gradient(40vmax 34vmax at 92% 78%, rgba(233,183,200,.07), transparent 68%);
}

#app{
  position:relative;z-index:2;
  min-height:100%;
  display:flex;align-items:center;justify-content:center;
  padding:clamp(28px,7vw,64px) clamp(20px,6vw,40px) clamp(84px,12vw,120px);
}
.screen{width:100%;max-width:620px;text-align:center}

/* ---------- the door ---------- */

.mark{
  width:clamp(96px,22vw,140px);height:auto;
  opacity:.9;
  filter:drop-shadow(0 12px 40px rgba(255,93,146,.28));
  margin-bottom:clamp(14px,3vw,22px);
}
.word{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(56px,16vw,104px);
  line-height:.92;
  letter-spacing:-.02em;
  margin:0;
  color:var(--ink);
}
.sub{
  font-family:var(--serif);font-style:italic;
  font-size:clamp(16px,4vw,21px);
  color:var(--pink-soft);opacity:.8;
  margin:12px 0 clamp(30px,7vw,44px);
}

#door-form{display:flex;flex-direction:column;align-items:center;gap:14px}
.field-label{
  font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--dim);
}
.code{
  width:min(280px,80vw);
  height:74px;
  background:rgba(255,255,255,.035);
  border:1px solid var(--line);
  border-radius:18px;
  color:var(--ink);
  font-family:var(--serif);
  font-size:34px;
  text-align:center;
  letter-spacing:.28em;
  text-indent:.28em;
  outline:none;
  transition:border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.code:focus{
  border-color:rgba(255,93,146,.55);
  background:rgba(255,93,146,.06);
  box-shadow:0 0 0 4px rgba(255,93,146,.10);
}
.code.wrong{animation:shake .32s ease}
@keyframes shake{
  0%,100%{transform:translateX(0)}
  25%{transform:translateX(-7px)}
  75%{transform:translateX(7px)}
}

/* Black until she is through the door. The pink is what she gets on the other
   side, so the door itself stays dark. */
.go{
  margin-top:4px;
  padding:15px 34px;
  border:1px solid var(--line);
  border-radius:999px;
  background:rgba(255,255,255,.035);
  color:var(--pink-soft);
  font-family:var(--sans);
  font-size:15px;font-weight:600;letter-spacing:.02em;
  cursor:pointer;
  transition:transform .16s ease, border-color .16s ease, background .16s ease, color .16s ease;
}
.go:hover{background:rgba(255,93,146,.08);border-color:rgba(255,93,146,.4);color:var(--ink)}
.go:active{transform:scale(.97)}

.err{color:var(--pink);font-size:14px;margin:4px 0 0;min-height:1em}

/* ---------- inside ---------- */

.eyebrow{
  font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--dim);margin:0 0 10px;
}
.big{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(40px,11vw,76px);
  line-height:1.02;letter-spacing:-.02em;
  margin:0;
}
#free .big{color:var(--pink-soft)}
.soft{
  font-family:var(--serif);font-style:italic;
  font-size:clamp(15px,3.8vw,19px);
  color:var(--dim);
  margin:18px auto 0;max-width:34ch;
}

.work{
  font-family:var(--serif);
  font-size:clamp(20px,5.2vw,28px);
  color:var(--pink-soft);
  margin:18px 0 0;
}

.timer{margin-top:clamp(20px,5vw,30px)}
.clock{
  display:block;
  font-family:var(--serif);
  font-size:clamp(46px,15vw,88px);
  line-height:1;
  letter-spacing:.01em;
  color:var(--pink);
  font-variant-numeric:tabular-nums;
  text-shadow:0 8px 40px rgba(255,93,146,.35);
}
.clock-label{
  display:block;margin-top:8px;
  font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);
}
.until{
  margin:14px 0 0;font-size:14px;color:var(--dim);
}

.note{
  margin:clamp(26px,6vw,38px) auto 0;
  max-width:460px;
  text-align:left;
  padding:22px 24px;
  border:1px solid var(--line);
  border-radius:20px;
  background:linear-gradient(180deg, rgba(255,93,146,.07), rgba(255,255,255,.02));
}
.note-label{
  margin:0 0 10px;
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);
}
.note-body{
  margin:0;
  font-family:var(--serif);
  font-size:clamp(19px,4.6vw,25px);
  line-height:1.4;
  color:var(--ink);
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}

.offline{margin-top:26px;font-size:13px;color:var(--dim)}

.foot{
  position:fixed;left:0;right:0;bottom:0;z-index:2;
  padding:18px;text-align:center;
  font-family:var(--serif);font-style:italic;
  font-size:13px;color:rgba(246,238,241,.28);
  pointer-events:none;
}

@media (prefers-reduced-motion: reduce){
  .code.wrong{animation:none}
}
