/* ══════════════════════════════════════════════════════════════════════
   One question per screen.

   Motion, in the order a participant sees it:
   - The question leaving slides up, blurs and fades; the next one rises in
     from below. Going back reverses the direction.
   - The answer tiles arrive one after another, 40 ms apart.
   - A tapped tile springs, and its check mark draws itself.
   - The progress line fills with an eased transition, and the backdrop
     turns a step (see talks.css).
   ══════════════════════════════════════════════════════════════════════ */

.survey{position:relative;z-index:2;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}

/* Progress */
.progress{position:fixed;top:0;left:0;right:0;height:4px;z-index:5;background:rgba(246,241,231,.08)}
.progress i{
  display:block;height:100%;width:0;
  background:linear-gradient(90deg,var(--teal),var(--gold),var(--tangerine),var(--magenta));
  background-size:200% 100%;
  transition:width .8s var(--ease);
  animation:shimmer 6s linear infinite;
}
@keyframes shimmer{to{background-position:-200% 0}}

.count{font-variant-numeric:tabular-nums;font-size:13px;color:var(--muted);letter-spacing:.08em}
.count b{color:var(--paper)}

/* Stage: where questions come and go */
.stage{
  position:relative;flex:1;display:grid;
  width:100%;max-width:720px;margin:0 auto;
  padding:3vh 16px 140px;
}
.q{grid-area:1/1;align-self:center;width:100%}
.q.enter{animation:qIn .7s var(--ease) both}
.q.enter.back{animation-name:qInBack}
.q.leave{animation:qOut .45s var(--ease) both;pointer-events:none}
.q.leave.back{animation-name:qOutBack}
@keyframes qIn{from{opacity:0;transform:translateY(48px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes qInBack{from{opacity:0;transform:translateY(-48px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes qOut{to{opacity:0;transform:translateY(-40px);filter:blur(8px)}}
@keyframes qOutBack{to{opacity:0;transform:translateY(40px);filter:blur(8px)}}

.q__num{display:flex;align-items:center;gap:10px;margin:0 0 16px;font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.q__num svg{width:16px;height:16px}
.q__title{font-family:var(--display);font-weight:600;font-size:clamp(28px,5vw,44px);line-height:1.1;letter-spacing:-.015em;margin:0}
.q__hint{margin:12px 0 0;color:var(--muted);font-size:16px}
.q__hint b{color:var(--paper);font-weight:600}
.q__body{margin-top:28px}

/* Answer tiles */
.opts{display:grid;gap:10px;grid-template-columns:1fr}
@media (min-width:640px){.opts.two{grid-template-columns:1fr 1fr}}
.opt{
  position:relative;display:flex;align-items:center;gap:14px;width:100%;
  min-height:56px;padding:12px 16px;border-radius:14px;cursor:pointer;text-align:left;
  background:rgba(246,241,231,.05);border:1px solid var(--line);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  opacity:0;transform:translateY(14px);
  animation:tileIn .6s var(--ease) forwards;animation-delay:calc(var(--i) * 40ms + 120ms);
  transition:background .25s, border-color .25s, transform .35s var(--spring);
}
@keyframes tileIn{to{opacity:1;transform:none}}
.opt:hover{background:rgba(246,241,231,.1);border-color:rgba(246,241,231,.3)}
.opt:active{transform:scale(.98)}
.opt[aria-pressed="true"],.opt[aria-checked="true"]{
  background:linear-gradient(120deg,rgba(255,107,53,.22),rgba(123,92,255,.18));
  border-color:var(--tangerine);
  animation:tileIn .6s var(--ease) forwards, pop .45s var(--spring);
}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.025)}100%{transform:scale(1)}}
.opt.is-locked{opacity:.4 !important;cursor:not-allowed}

.key{
  flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;
  border:1px solid var(--line);font-size:12px;font-weight:700;color:var(--muted);
  transition:background .25s,color .25s,border-color .25s;
}
.opt[aria-pressed="true"] .key,.opt[aria-checked="true"] .key{background:var(--tangerine);border-color:var(--tangerine);color:var(--ink)}
.opt__label{flex:1;font-size:16px;line-height:1.35}
.tick{flex:none;width:22px;height:22px;opacity:0;transition:opacity .2s}
.tick path{stroke-dasharray:24;stroke-dashoffset:24;transition:stroke-dashoffset .35s var(--ease) .05s}
.opt[aria-pressed="true"] .tick,.opt[aria-checked="true"] .tick{opacity:1}
.opt[aria-pressed="true"] .tick path,.opt[aria-checked="true"] .tick path{stroke-dashoffset:0}

.other{
  grid-column:1/-1;overflow:hidden;max-height:0;opacity:0;
  transition:max-height .45s var(--ease),opacity .3s,margin .45s var(--ease);
}
.other.on{max-height:90px;opacity:1;margin-top:2px}

/* Feeling scale: five tiles in a row, a line joining them */
.scale{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;position:relative}
.scale .opt{flex-direction:column;justify-content:center;gap:8px;min-height:120px;padding:14px 6px;text-align:center}
.scale .n{font-family:var(--display);font-size:34px;line-height:1;font-weight:600}
.scale .opt__label{font-size:13px;flex:none}
.scale .key{display:none}
.scale .opt[aria-checked="true"] .n{color:var(--gold)}
@media (max-width:520px){
  .scale{grid-template-columns:1fr}
  .scale .opt{flex-direction:row;justify-content:flex-start;min-height:56px;padding:12px 16px;text-align:left;gap:16px}
  .scale .n{font-size:24px;width:28px}
}

/* Text entry */
.field{display:block;margin-bottom:18px}
.field span{display:block;font-size:13px;font-weight:600;letter-spacing:.04em;color:var(--muted);margin-bottom:8px}
.input{
  width:100%;padding:14px 16px;border-radius:12px;font:inherit;font-size:18px;color:var(--paper);
  background:rgba(246,241,231,.06);border:1px solid var(--line);
  transition:border-color .25s, background .25s, box-shadow .25s;
}
.input::placeholder{color:rgba(185,179,204,.6)}
.input:focus{outline:none;border-color:var(--gold);background:rgba(246,241,231,.09);box-shadow:0 0 0 4px rgba(255,201,60,.12)}
textarea.input{min-height:140px;resize:vertical;line-height:1.5}
.chars{margin-top:8px;font-size:12px;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}
.example{
  margin:0 0 18px;padding:14px 16px;border-left:3px solid var(--teal);border-radius:0 10px 10px 0;
  background:rgba(46,196,182,.08);font-size:15px;color:var(--muted);
}
.example b{color:var(--paper);font-weight:600}

/* Bottom bar */
.bar{
  position:fixed;left:0;right:0;bottom:0;z-index:4;
  padding:14px 16px calc(14px + env(safe-area-inset-bottom));
  background:linear-gradient(to top, rgba(14,12,29,.96) 55%, rgba(14,12,29,0));
}
.bar__in{max-width:720px;margin:0 auto;display:flex;align-items:center;gap:12px}
.bar .btn--ghost{padding:0 18px}
.bar .next{margin-left:auto}
.enterhint{font-size:12px;color:var(--muted);display:none}
@media (hover:hover) and (min-width:720px){.enterhint{display:inline}}
.enterhint kbd{font:inherit;font-weight:700;border:1px solid var(--line);border-radius:6px;padding:2px 6px}

.err{
  display:none;margin-top:18px;padding:12px 14px;border-radius:12px;font-size:15px;
  background:rgba(239,71,111,.14);border:1px solid rgba(239,71,111,.5);
}
.err.on{display:block;animation:shake .4s var(--ease)}
@keyframes shake{20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-3px)}80%{transform:translateX(3px)}}

/* Intro and closing screens */
.cover .display{font-size:clamp(42px,8vw,78px)}
.cover .lede{font-size:clamp(17px,2.2vw,20px);color:var(--muted);margin:22px 0 0;max-width:560px}
.facts{display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 34px;padding:0;list-style:none}
.facts li{font-size:14px;padding:8px 12px;border-radius:999px;border:1px solid var(--line);background:rgba(246,241,231,.05)}
.facts li b{color:var(--gold);font-weight:700}
.cover .small{font-size:14px;color:var(--muted);margin-top:22px}

.done .burst{width:96px;height:96px;margin-bottom:22px}
.done .burst circle{transform-origin:center;animation:ring 1.2s var(--ease) both}
.done .burst path{stroke-dasharray:60;stroke-dashoffset:60;animation:draw .7s var(--ease) .35s forwards}
@keyframes ring{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}
@keyframes draw{to{stroke-dashoffset:0}}
.next-steps{margin:28px 0 0;padding:0;list-style:none;display:grid;gap:12px}
.next-steps li{display:flex;gap:12px;align-items:flex-start;color:var(--muted)}
.next-steps li::before{content:"";flex:none;width:10px;height:10px;margin-top:8px;border-radius:2px;background:var(--gold);transform:rotate(45deg)}

.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

@media (prefers-reduced-motion: reduce){
  .opt{opacity:1;transform:none}
}
