@charset "UTF-8";
/* ============================================================
   Section choreography.
   app.js already fades whole sections up as one block. That is
   fine but flat, so reveal.js hands the big containers over to
   this file and the pieces inside cascade instead.

   Premium personality throughout: 520ms, cubic-bezier(.4,0,.2,1),
   no overshoot, 70ms stagger, each group under 500ms total.
   ============================================================ */

.js-ready .rv{
  opacity:0;
  transform:translateY(16px);
  transition:
    opacity .52s cubic-bezier(.4,0,.2,1) var(--d,0ms),
    transform .52s cubic-bezier(.4,0,.2,1) var(--d,0ms);
}
.js-ready .rv.rv-in{opacity:1;transform:none}

/* headings lift a little further than body copy */
.js-ready h2.rv,.js-ready .closing h2.rv{transform:translateY(22px)}

/* ---------- section index: the number arrives before its label ---------- */
.section-index.rv span{
  display:inline-block;
  opacity:0;transform:translateX(-6px);
  transition:opacity .4s ease calc(var(--d,0ms) + 160ms),
             transform .4s cubic-bezier(.4,0,.2,1) calc(var(--d,0ms) + 160ms);
}
.section-index.rv.rv-in span{opacity:1;transform:none}

/* ============================================================
   TWO-DAY PATH — a rail that fills as you read down the list
   ============================================================ */
.day-content ol{
  position:relative;
  padding-left:26px;
}
.day-content ol::before,
.day-content ol::after{
  content:"";
  position:absolute;
  left:5px;top:8px;
  width:1px;height:calc(100% - 16px);
}
.day-content ol::before{background:rgba(255,255,255,.09)}
.day-content ol::after{
  background:linear-gradient(180deg,var(--warm),rgba(255,106,43,.3));
  transform-origin:top center;
  transform:scaleY(var(--p,0));
}

.day-content li{position:relative}
.day-content li::before{
  content:"";
  position:absolute;
  left:-26px;top:7px;
  width:11px;height:11px;
  border-radius:50%;
  background:#0b0d12;
  border:1px solid rgba(255,255,255,.2);
  transition:background .34s ease,border-color .34s ease,box-shadow .34s ease;
}
.day-content li.step-on::before{
  background:var(--warm);
  border-color:var(--warm);
  box-shadow:0 0 0 4px rgba(255,106,43,.15);
}
.day-content li h4{transition:color .34s ease}
.day-content li.step-on h4{color:#fff}

/* ============================================================
   FAQ — rows cascade in, answers open on a measured height
   ============================================================ */
.faq-list details{overflow:hidden}
.faq-list summary{
  display:flex;align-items:center;gap:14px;
  cursor:pointer;list-style:none;
}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary .icon{
  margin-left:auto;
  transition:transform .36s cubic-bezier(.4,0,.2,1),color .24s ease;
}
.faq-list details[open] summary .icon{transform:rotate(180deg);color:var(--warm)}
.faq-list summary:hover .icon{color:var(--warm)}
.faq-answer{overflow:hidden}

/* ============================================================
   Small arrivals
   ============================================================ */
.reason-list article.is-visible .reason-number{
  animation:rv-number .62s cubic-bezier(.4,0,.2,1) both;
}
@keyframes rv-number{
  from{opacity:0;transform:translateX(-10px)}
  to{opacity:1;transform:none}
}

.join-info dl>div.rv{transform:translateX(12px)}
.join-info dl>div.rv.rv-in{transform:none}

.closing .button.rv{transform:translateY(14px) scale(.97)}
.closing .button.rv.rv-in{transform:none}

@media (prefers-reduced-motion:reduce){html:not(.motion-on) .js-ready .rv,html:not(.motion-on) .js-ready .rv.rv-in,html:not(.motion-on) .section-index.rv span,html:not(.motion-on) .join-info dl>div.rv,html:not(.motion-on) .closing .button.rv{
    opacity:1 !important;
    transform:none !important;
    transition:none !important;
  }html:not(.motion-on) .reason-list article.is-visible .reason-number{animation:none}html:not(.motion-on) .day-content ol::after{transform:scaleY(1)}html:not(.motion-on) .day-content li::before{
    background:var(--warm);border-color:var(--warm);transition:none;
  }html:not(.motion-on) .faq-list summary .icon{transition:none}
}
