/* Personas pricing (30 Sep 2026): the home's Pricing section and the pricing
   page. Tokens are style.css's. Loaded only on pages with a calculator. Meaning
   lives in the glyph and the text colour; the one solid fill is the primary
   button. The parent owns padding and gap. */

.page-hero{padding:40px 0 8px}
@media (min-width:900px){.page-hero{padding:72px 0 8px}}
.page-hero h1{font-size:clamp(38px,6.4vw,64px);line-height:1.08}
.pricing.first{padding-top:36px}

.price-grid{display:grid;gap:14px;align-items:start}
.price-side{display:grid;gap:14px;align-content:start}
@media (min-width:960px){.price-grid{grid-template-columns:.85fr 1.25fr;gap:20px}}

/* The big numbers: display digits get at least 1.3x line height. */
.pricing .big{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0;color:var(--ink)}
.pricing .big span{font:700 clamp(44px,7vw,60px)/1.3 var(--sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.pricing .big small{font-size:15px;color:var(--ink2)}
.pricing .solo .big span{font-size:clamp(40px,5vw,48px)}
.pricing .who{font:500 12px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink3)}
.pricing .solo .btn{justify-self:start}

.calc{gap:22px}
.calc-head{display:grid;gap:8px}
.seats{display:grid;gap:14px}
.seats label{display:inline-flex;align-items:center;gap:8px;font:500 12px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink2)}
.seats label .i{color:var(--pine)}
.stepper{display:flex;align-items:center;gap:10px}
.stepper button{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer;transition:transform .24s var(--spring),background-color .2s}
.stepper button:hover{background:var(--surface)}
.stepper input{width:112px;height:60px;border:1px solid var(--line);border-radius:18px;background:var(--paper);color:var(--ink);text-align:center;font:700 30px/1.3 var(--sans);font-variant-numeric:tabular-nums;-moz-appearance:textfield;appearance:textfield}
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
@media (prefers-reduced-motion:no-preference){.stepper button:active{transform:scale(.92)}}

.slider{-webkit-appearance:none;appearance:none;width:100%;height:28px;background:transparent;margin:0;cursor:pointer}
.slider::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:linear-gradient(to right,var(--pine) var(--fill,0%),var(--line) var(--fill,0%))}
.slider::-moz-range-track{height:6px;border-radius:999px;background:var(--line)}
.slider::-moz-range-progress{height:6px;border-radius:999px;background:var(--pine)}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;margin-top:-10px;border-radius:50%;background:var(--pine);border:4px solid var(--raised);box-shadow:0 1px 4px rgba(0,0,0,.25);transition:transform .2s var(--spring)}
.slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--pine);border:4px solid var(--raised);box-shadow:0 1px 4px rgba(0,0,0,.25)}
.slider:active::-webkit-slider-thumb{transform:scale(1.12)}
.ticks{display:flex;justify-content:space-between;font:500 12px/1.3 var(--mono);color:var(--ink3);margin-top:-6px}
/* Without the script the controls cannot move anything: show the default. */
html:not(.js) .stepper button,html:not(.js) .slider,html:not(.js) .ticks{display:none}

.readout{display:grid;gap:14px}
.price-now{display:grid;gap:4px}
.off{display:flex;align-items:center;gap:8px;margin:0;color:var(--pine);font-weight:600}
.off span{display:inline-block}
@media (prefers-reduced-motion:no-preference){.off span.bump{animation:bump .36s var(--spring)}}
@keyframes bump{0%{transform:scale(.9);opacity:.5}100%{transform:none;opacity:1}}
.lines{display:grid;margin:0}
.lines>div{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:11px 0;border-top:1px solid var(--line)}
.lines dt{display:flex;align-items:center;gap:10px;color:var(--ink2)}
.lines dt .i{color:var(--pine)}
.lines dd{margin:0;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;text-align:right}
.lines .total dt,.lines .total dd{color:var(--ink);font-weight:700}
.yearinc{margin:-8px 0 0;text-align:right;color:var(--ink3);font-size:14px}
.hint,.contact-state{display:flex;gap:10px;align-items:flex-start;margin:0;color:var(--ink2);font-size:15px}
.hint .i,.contact-state .i{color:var(--pine);margin-top:3px}
.hint[hidden]{display:none}
.contact-state{display:none;font-size:18px;color:var(--ink)}
.calc.is-contact .contact-state{display:flex}
.calc.is-contact .price-now,.calc.is-contact .lines,.calc.is-contact .yearinc,.calc.is-contact .hint{display:none}
.calc .btn.go{width:100%}

.ladder{display:grid;gap:10px;border-top:1px solid var(--line);padding-top:18px}
.ladder .sub{display:flex;align-items:center;gap:8px;margin:0;font:500 12px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink2)}
.ladder .sub .i{color:var(--pine)}
.ladder ol{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.ladder li{display:grid;grid-template-columns:16px 1fr auto;column-gap:12px;align-items:center;padding:9px 12px;border-radius:12px;color:var(--ink2);font-size:15px;transition:background-color .2s var(--ease),color .2s var(--ease)}
.ladder li .i{color:var(--pine);opacity:0;transition:opacity .2s var(--ease)}
.ladder li .each{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;text-align:right}
.ladder li .pct{grid-column:2/-1;font-size:13px;color:var(--ink3)}
.ladder li .pct:empty{display:none}
@media (min-width:520px){.ladder li{grid-template-columns:16px 1fr auto 96px}.ladder li .pct{grid-column:auto;text-align:right}}
.ladder li.on{background:var(--paper);color:var(--ink)}
.ladder li.on .i{opacity:1}

.free h3 .well{color:var(--pine)}
.fine-print{display:flex;gap:10px;align-items:flex-start;margin:0;color:var(--ink2);font-size:15px;max-width:820px}
.fine-print .i{color:var(--pine);margin-top:3px}
