/* home.v1.css — the front door: one brass rail through the house.
   Structure: compact hero -> a vertical brass line with four stops, each of
   which demonstrates itself -> how we do things -> closer. */

/* ---------- hero ---------- */
.home-hero{padding-block:clamp(26px,5vw,56px) clamp(18px,3vw,34px)}
.home-hero h1{margin-bottom:18px;max-width:16ch}
.home-hero h1 .w{display:inline-block}
.home-hero .lede{margin-bottom:28px}
.home-hero .cta{display:flex;gap:12px;flex-wrap:wrap}
.js .home-hero h1 .w{opacity:0;transform:translateY(.35em)}
.js .home-hero.lit h1 .w{opacity:1;transform:none;transition:opacity .5s,transform .55s cubic-bezier(.2,.8,.2,1)}
.js .home-hero .lede,.js .home-hero .cta{opacity:0;transform:translateY(12px)}
.js .home-hero.lit .lede{opacity:1;transform:none;transition:opacity .6s .3s,transform .6s .3s}
.js .home-hero.lit .cta{opacity:1;transform:none;transition:opacity .6s .42s,transform .6s .42s}

/* ---------- the rail ---------- */
.rail{position:relative;padding-left:62px}
.rail::before{content:"";position:absolute;left:11px;top:0;bottom:0;width:2px;background:var(--rule);border-radius:2px}
.rail-fill{position:absolute;left:11px;top:0;width:2px;height:0;border-radius:2px;will-change:height;
  background:linear-gradient(180deg,var(--brass-2),var(--brass));box-shadow:0 0 16px rgba(209,171,105,.45)}
.stop{position:relative;padding-block:clamp(40px,6vw,76px)}
.node{position:absolute;left:-62px;top:clamp(40px,6vw,76px);width:24px;height:24px;border-radius:50%;
  background:var(--felt);box-shadow:inset 0 0 0 1px var(--rule);display:grid;place-items:center;transition:box-shadow .45s}
.node::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--rule);transition:background .45s,transform .45s}
.stop.on .node{box-shadow:inset 0 0 0 1px var(--brass),0 0 18px rgba(209,171,105,.35)}
.stop.on .node::after{background:var(--brass-2);transform:scale(1.3)}
.stop-in{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(22px,4vw,50px);align-items:center}
.kicker{display:block;font:600 .72rem/1 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--brass);margin-bottom:14px}
.stop h2{font-size:clamp(1.85rem,3.3vw,2.7rem);margin-bottom:14px}
.stop p{color:var(--mist);margin-bottom:.9em;max-width:46ch}
.stop .note{font-size:.87rem;opacity:.85}
.stop .incl{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:8px;max-width:46ch}
.stop .incl li{position:relative;padding-left:26px;color:var(--mist);font-size:.96rem;line-height:1.45}
.stop .incl li::before{content:"";position:absolute;left:2px;top:.42em;width:11px;height:6px;border-left:2px solid var(--brass);
  border-bottom:2px solid var(--brass);transform:rotate(-45deg);border-radius:1px}
.js .stop .incl li{opacity:0;transform:translateY(7px)}
.js .stop.in .incl li{opacity:1;transform:none;transition:opacity .5s cubic-bezier(.2,.8,.2,1),transform .55s cubic-bezier(.2,.8,.2,1)}
.buy{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:22px 0 0}
.buy .price{font-size:1.3rem}
.buy .soon-label{color:var(--mist);font-weight:600;letter-spacing:.02em}
.js .stop .says,.js .stop .demo{opacity:0;transform:translateY(16px);will-change:opacity,transform}
.stop.in .says,.stop.in .demo{will-change:auto}
.js .stop.in .says{opacity:1;transform:none;transition:opacity .6s,transform .65s cubic-bezier(.2,.8,.2,1)}
.js .stop.in .demo{opacity:1;transform:none;transition:opacity .7s .12s,transform .75s .12s cubic-bezier(.2,.8,.2,1)}

/* ---------- the demo panels ---------- */
.demo{position:relative;min-height:300px;padding:24px;border-radius:var(--r-md);overflow:hidden;
  background:radial-gradient(120% 90% at 50% 0,var(--felt-3) 0,var(--felt-2) 70%);
  box-shadow:inset 0 0 0 1px var(--rule);display:grid;place-items:center}

/* cast deck */
.deck{position:relative;width:min(214px,60%);aspect-ratio:3/4;perspective:1100px}
.deck .card{position:absolute;inset:0;border-radius:var(--r-sm);overflow:hidden;background:var(--felt-3);
  box-shadow:0 24px 46px -20px rgba(0,0,0,.75)}
.deck .card img{width:100%;height:100%;object-fit:cover}
.deck .b1{transform:rotate(-7deg) translate(-12px,7px) scale(.95);opacity:.5}
.deck .b2{transform:rotate(6deg) translate(11px,4px) scale(.975);opacity:.72}
.deck .b1{z-index:1}.deck .b2{z-index:2}
.deck .front{z-index:3;transform:rotateY(0deg);transition:transform .32s cubic-bezier(.55,0,1,.45);will-change:transform}
.deck.flip .front{transform:rotateY(78deg)}
.deck.unflip .front{transition:transform .44s cubic-bezier(.16,.84,.32,1)}
.deck .name{position:absolute;left:0;right:0;bottom:0;padding:30px 10px 11px;text-align:center;
  font:600 .95rem/1 var(--body);letter-spacing:.05em;background:linear-gradient(transparent,rgba(0,0,0,.8))}

/* live coat of arms */
.crestbox{display:grid;justify-items:center;gap:14px;width:100%}
.crestbox .art{width:min(196px,56%);transform-origin:50% 55%;
  transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.2,1);will-change:opacity,transform}
.crestbox .art svg{width:100%;height:auto;display:block}
.crestbox .blazon{font:400 .88rem/1.45 var(--body);color:var(--mist);text-align:center;max-width:32ch;min-height:2.9em;transition:opacity .55s}
.crestbox.swap .art{opacity:0;transform:scale(.94)}
.crestbox.swap .blazon{opacity:0}

/* paper panels (budget sheet + report card) */
.paper-card{width:100%;max-width:328px;background:var(--card);color:var(--ink);border-radius:7px;padding:18px;
  box-shadow:0 24px 46px -20px rgba(0,0,0,.7);font:500 .92rem/1.4 var(--body)}
.paper-card h4{font:600 .68rem/1 var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:0 0 14px}
.n{font-variant-numeric:tabular-nums}
.sheet .row{display:grid;grid-template-columns:1fr auto;gap:4px 8px;margin-bottom:11px}
.sheet .bar{grid-column:1/-1;height:6px;border-radius:3px;background:#DCE3D8;overflow:hidden}
.sheet .bar i{display:block;height:100%;width:0;background:#2F6B48;transition:width 1.05s cubic-bezier(.16,.84,.28,1)}
.sheet .tot{display:flex;justify-content:space-between;border-top:1px solid #D4DBD1;margin-top:14px;padding-top:11px;font-weight:600}
.sheet .tot b{color:#1F6B45}
.glance .fig{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:10px 0;border-bottom:1px solid #DFE5DC}
.glance .fig span{color:var(--ink-2);font-size:.87rem}
.glance .fig b{font:600 1.15rem/1 var(--body);font-variant-numeric:tabular-nums}
.glance .chip{display:inline-block;margin-top:15px;padding:7px 15px;border-radius:999px;background:#E5EFE7;color:#1F6B45;
  font:600 .85rem/1 var(--body);opacity:0;transform:scale(.82);transition:.55s cubic-bezier(.2,1.7,.4,1)}
.glance .chip.on{opacity:1;transform:none}
.illus{font-size:.76rem;color:var(--mist);margin-top:12px;text-align:center}

@media (max-width:860px){
  .rail{padding-left:34px}
  .rail::before,.rail-fill{left:6px}
  .node{left:-34px;top:clamp(34px,6vw,76px);width:18px;height:18px}
  .stop{padding-block:clamp(34px,6vw,76px)}
  .stop-in{grid-template-columns:1fr;gap:24px}
  .stop .demo{order:-1;min-height:0;padding:18px}
  .stop p{max-width:none}
}
@media (prefers-reduced-motion:reduce){
  .js .home-hero h1 .w,.js .home-hero .lede,.js .home-hero .cta,
  .js .stop .says,.js .stop .demo,.js .stop .incl li{opacity:1;transform:none}
  .deck .front{transition:none}
  .sheet .bar i{transition:none}
}
