/* Landing page only.
 *
 * Deliberately outside the Tailwind/PrimeVue pipeline: the marketing page has
 * its own scale and nothing to gain from the app's component theme, and keeping
 * it apart means a change here can never move a button inside the product.
 * Served as a plain file so Blade never parses a stylesheet.
 *
 * The accent is the app's own green. An earlier version used Swiss red with a
 * cross in the logo, which read as the Red Cross — don't go back there.
 *
 * Light only, on purpose. Every product screenshot on the page is of the
 * light UI, so honouring a dark system preference would put bright screens on
 * a dark page and make the whole thing look mismatched. Every colour below is
 * therefore stated outright rather than inherited from the host.
 *
 * The font is self-hosted on purpose. A page that argues the data never
 * leaves Switzerland should not send every visitor's IP to Google before
 * they have read the first sentence.
 */
@font-face{
  font-family:'Instrument Sans';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url('/fonts/instrument-sans-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Instrument Sans';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url('/fonts/instrument-sans-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{
  --ink:#0A1014;
  --ink-2:#39454E;
  --muted:#6C7883;
  --bg:#FFFFFF;
  --bg-soft:#F4F8F6;
  --bg-deep:#0C1512;
  --line:#E3EAE7;
  --line-soft:#EFF4F2;
  --brand:#0E9F6B;
  --brand-ink:#0A7A52;
  --brand-soft:#E6F6EF;
  --shadow-sm:0 1px 2px rgba(10,16,20,.04),0 4px 12px rgba(10,16,20,.05);
  --shadow-lg:0 2px 6px rgba(10,16,20,.05),0 24px 60px -12px rgba(10,16,20,.18);
  --r:14px;
  --r-lg:20px;
  --sans:'Instrument Sans',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --gut:clamp(1.25rem,5vw,2.5rem);
  --maxw:1180px;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--sans);font-size:17px;line-height:1.6;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
h1,h2,h3{margin:0;letter-spacing:-.032em;line-height:1.08;font-weight:600;text-wrap:balance}
p{margin:0}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:6px}

.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gut)}
.sec{padding-block:clamp(4rem,9vw,7.5rem)}
.sec--soft{background:var(--bg-soft)}

/* ── nav ─────────────────────────────────────────────────────── */
.nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 82%,transparent);
  backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line-soft)}
.nav .in{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:66px}
.logo{display:flex;align-items:center;gap:.55rem;font-weight:700;font-size:1.06rem;letter-spacing:-.03em}
.logo svg{display:block;flex:none;color:var(--brand)}
.nav nav{display:flex;gap:1.75rem;font-size:.94rem;color:var(--ink-2)}
.nav nav a:hover{color:var(--ink)}
@media (max-width:820px){.nav nav{display:none}}

/* ── buttons ─────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  font-size:.95rem;font-weight:600;letter-spacing:-.01em;
  padding:.72rem 1.25rem;border-radius:10px;border:1px solid transparent;
  background:var(--brand);color:#fff;white-space:nowrap;
  transition:transform .15s ease,box-shadow .15s ease,background .15s ease}
.btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px -6px color-mix(in srgb,var(--brand) 55%,transparent)}
.btn--soft{background:transparent;color:var(--ink);border-color:var(--line)}
.btn--soft:hover{border-color:var(--ink-2);box-shadow:none}
.btn--sm{padding:.52rem .95rem;font-size:.88rem}
/* ── hero ────────────────────────────────────────────────────── */
.hero{padding-block:clamp(3.25rem,8vw,6rem) 0;text-align:center}
.chip{display:inline-flex;align-items:center;gap:.5rem;
  background:var(--brand-soft);color:var(--brand-ink);
  border:1px solid color-mix(in srgb,var(--brand) 22%,transparent);
  padding:.34rem .78rem;border-radius:999px;font-size:.82rem;font-weight:600;letter-spacing:-.005em}
.chip svg{flex:none}
.hero h1{font-size:clamp(2.6rem,1.2rem + 5.6vw,4.9rem);margin:1.4rem auto .95rem;max-width:16ch}
.hero .sub{font-size:clamp(1.06rem,1rem + .5vw,1.28rem);color:var(--ink-2);max-width:52ch;margin-inline:auto}
.hero .acts{display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap;margin-top:1.9rem}
.hero .note{margin-top:1rem;font-size:.86rem;color:var(--muted)}

/* the product, big */
.shot{margin-top:clamp(2.5rem,6vw,4rem);border-radius:var(--r-lg);overflow:hidden;
  border:1px solid var(--line);box-shadow:var(--shadow-lg);background:var(--bg)}
.shot img{width:100%}
.hero-shot{position:relative}
.hero-shot::after{content:"";position:absolute;inset:0;pointer-events:none;
  border-radius:var(--r-lg);box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}
/* ── trust strip ─────────────────────────────────────────────── */
.trust{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin-top:clamp(2.5rem,5vw,3.5rem)}
.trust>div{background:var(--bg);padding:1.15rem 1.25rem}
.trust dt{font-size:.78rem;color:var(--muted);font-weight:500}
.trust dd{margin:.28rem 0 0;font-size:1rem;font-weight:600;display:flex;align-items:center;gap:.4rem}
.trust dd svg{color:var(--brand);flex:none}
@media (max-width:800px){.trust{grid-template-columns:repeat(2,1fr)}}
@media (max-width:440px){.trust{grid-template-columns:1fr}}

/* ── section heads ───────────────────────────────────────────── */
.head{max-width:62ch;margin-bottom:clamp(2.25rem,5vw,3.25rem)}
.head.mid{margin-inline:auto;text-align:center}
.kicker{font-size:.83rem;font-weight:600;color:var(--brand-ink);letter-spacing:-.005em}
.head h2{font-size:clamp(1.85rem,1.2rem + 2.4vw,3.05rem);margin:.6rem 0 .85rem}
.head p{color:var(--ink-2);font-size:clamp(1rem,.97rem + .25vw,1.13rem)}

/* ── cards ───────────────────────────────────────────────────── */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem}
@media (max-width:860px){.cards{grid-template-columns:1fr}}
.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);
  padding:1.6rem 1.5rem;box-shadow:var(--shadow-sm)}
.card .ico{width:38px;height:38px;border-radius:10px;background:var(--brand-soft);
  color:var(--brand-ink);display:grid;place-items:center;margin-bottom:1rem}
.card h3{font-size:1.14rem;margin-bottom:.45rem}
.card p{color:var(--ink-2);font-size:.96rem}

/* ── split feature ───────────────────────────────────────────── */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(2rem,6vw,4.5rem);align-items:center}
@media (max-width:900px){.split{grid-template-columns:1fr;gap:2.25rem}.split.flip>*:first-child{order:2}}
.split h2{font-size:clamp(1.7rem,1.2rem + 2vw,2.6rem);margin:.6rem 0 1rem}
.split p{color:var(--ink-2)}
.phone{max-width:330px;margin-inline:auto;border-radius:28px;overflow:hidden;
  border:1px solid var(--line);box-shadow:var(--shadow-lg);background:var(--bg)}

.checks{list-style:none;margin:1.5rem 0 0;padding:0;display:grid;gap:.85rem}
.checks li{display:grid;grid-template-columns:auto 1fr;gap:.7rem;align-items:start;color:var(--ink-2)}
.checks svg{color:var(--brand);margin-top:.32rem;flex:none}
.checks b{color:var(--ink);font-weight:600}

/* ── residency ───────────────────────────────────────────────── */
.chain{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--bg)}
.chain div{display:grid;grid-template-columns:minmax(0,.3fr) minmax(0,1fr) auto;
  gap:1rem;align-items:center;padding:1.05rem 1.35rem;border-top:1px solid var(--line-soft)}
.chain div:first-child{border-top:0}
.chain .k{font-weight:600;font-size:.95rem}
.chain .v{color:var(--ink-2);font-size:.95rem}
.chain .w{display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap;
  font-size:.85rem;font-weight:600;color:var(--brand-ink);
  background:var(--brand-soft);padding:.28rem .65rem;border-radius:999px}
@media (max-width:700px){
  .chain div{grid-template-columns:1fr auto;gap:.2rem 1rem}
  .chain .v{grid-column:1/-1;order:3}
}

/* ── guardrails ──────────────────────────────────────────────── */
.rails{display:grid;grid-template-columns:repeat(2,1fr);gap:1.1rem}
@media (max-width:860px){.rails{grid-template-columns:1fr}}
.rail{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);padding:1.45rem 1.4rem}
.rail h3{font-size:1.05rem;margin-bottom:.4rem;display:flex;align-items:center;gap:.55rem}
.rail h3 svg{color:var(--brand);flex:none}
.rail p{color:var(--ink-2);font-size:.94rem}

/* ── close ───────────────────────────────────────────────────── */
.close{background:var(--bg-deep);color:#F2F6F4;border-radius:var(--r-lg);
  padding:clamp(2.5rem,6vw,4.5rem);text-align:center}
.close h2{font-size:clamp(1.9rem,1.3rem + 2.4vw,3rem);margin-bottom:.9rem;color:#fff}
.close p{color:#A8B6B0;max-width:50ch;margin-inline:auto}
.close .acts{display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap;margin-top:1.9rem}
/* Order matters here: .close .btn and .close .btn--soft have equal specificity,
   so the outline variant has to come last or it inherits the filled button's
   dark text and disappears against the dark panel. */
.close .btn{color:#04140E}
.close .btn.btn--soft{color:#F2F6F4;background:transparent;border-color:rgba(255,255,255,.24)}
.close .btn.btn--soft:hover{border-color:rgba(255,255,255,.55);box-shadow:none}

/* ── footer ──────────────────────────────────────────────────── */
footer{border-top:1px solid var(--line);padding-block:2.5rem 3.25rem;color:var(--muted);font-size:.87rem}
footer .cols{display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap;align-items:flex-start}
footer .legal{max-width:56ch;line-height:1.6;margin-top:1.5rem;font-size:.82rem}
footer .legal b{color:var(--ink-2);font-weight:600}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation:none!important;transition:none!important}
  .btn:hover{transform:none}
}


/* ── motion ───────────────────────────────────────────────────
   One idea, applied consistently: things arrive from slightly
   below and slightly transparent, once, when they first matter.
   Nothing loops, nothing moves on its own after it has landed. */
@keyframes rise{from{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:none}}

.r{opacity:0}
.r.in{animation:rise .72s cubic-bezier(.22,.68,.28,1) forwards}
.r.in.d1{animation-delay:.07s}
.r.in.d2{animation-delay:.14s}
.r.in.d3{animation-delay:.21s}
.r.in.d4{animation-delay:.28s}
.r.in.d5{animation-delay:.35s}

/* the hero screenshot settles a touch later and further, so the page
   reads as one movement rather than several */
@keyframes settle{from{opacity:0;transform:translate3d(0,42px,0) scale(.985)}to{opacity:1;transform:none}}
.hero-shot.r.in{animation:settle 1.05s cubic-bezier(.2,.7,.25,1) .28s forwards}

.card,.rail{transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.card:hover,.rail:hover{transform:translateY(-3px);
  box-shadow:0 2px 4px rgba(10,16,20,.04),0 16px 34px -14px rgba(10,16,20,.22);
  border-color:color-mix(in srgb,var(--brand) 28%,var(--line))}

.chain div{transition:background .2s ease}
.chain div:hover{background:var(--brand-soft)}

/* JS off, or motion turned down: everything is simply visible. */
.no-js .r,.r.shown{opacity:1;animation:none}
@media (prefers-reduced-motion:reduce){
  .r{opacity:1!important;animation:none!important}
  .card:hover,.rail:hover{transform:none}
}

/* ── the sovereignty diagram ──────────────────────────────────
   The argument the page exists to make, drawn rather than
   asserted: everything inside the border happens in Switzerland,
   and the things deliberately left outside are named. */
.sov{display:grid;gap:1.5rem}
.border-ch{position:relative;border:2px solid var(--brand);border-radius:var(--r-lg);
  background:linear-gradient(180deg,var(--brand-soft),var(--bg) 62%);
  padding:clamp(2.25rem,5vw,3.25rem) clamp(1.25rem,3vw,2.25rem) clamp(1.75rem,4vw,2.5rem)}
.border-ch .tag{position:absolute;top:-.85rem;left:50%;transform:translateX(-50%);
  background:var(--brand);color:#fff;font-size:.74rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;padding:.3rem .95rem;border-radius:999px;white-space:nowrap}

.flow{display:grid;grid-template-columns:repeat(4,1fr);gap:.9rem;align-items:stretch}
@media (max-width:900px){.flow{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.flow{grid-template-columns:1fr}}
.step{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);
  padding:1.15rem 1.1rem;text-align:left;position:relative;box-shadow:var(--shadow-sm)}
.step .n{width:26px;height:26px;border-radius:8px;background:var(--brand-soft);color:var(--brand-ink);
  display:grid;place-items:center;font-size:.78rem;font-weight:700;margin-bottom:.7rem}
.step h4{margin:0 0 .25rem;font-size:1rem;font-weight:600;letter-spacing:-.02em}
.step p{font-size:.87rem;color:var(--ink-2);line-height:1.5}
.step .loc{margin-top:.6rem;display:inline-flex;align-items:center;gap:.32rem;
  font-size:.76rem;font-weight:600;color:var(--brand-ink)}

.outside{display:grid;grid-template-columns:repeat(4,1fr);gap:.9rem}
@media (max-width:900px){.outside{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.outside{grid-template-columns:1fr}}
.nope{display:flex;gap:.6rem;align-items:flex-start;padding:.9rem 1rem;
  border:1px dashed var(--line);border-radius:var(--r);color:var(--muted);font-size:.87rem;line-height:1.45}
.nope svg{flex:none;margin-top:.18rem;color:#B9C2BE}
.nope b{display:block;color:var(--ink-2);font-weight:600}

/* ── swiss made mark ─────────────────────────────────────────── */
.made{display:inline-flex;align-items:center;gap:.7rem;color:var(--muted);
  font-size:.72rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase}
.made::before,.made::after{content:"";height:1px;width:26px;background:var(--line)}

/* ── Swiss flag ───────────────────────────────────────────────
   Official proportion: square, cross arms 6 units wide and 20
   long on a 32 unit field. White on red — the inverse of the
   Red Cross, which is what makes it unmistakably the flag. */
.flag{display:inline-block;border-radius:3px;overflow:hidden;flex:none;
  box-shadow:0 0 0 1px rgba(10,16,20,.08)}
.flag--lg{border-radius:5px}

/* ── vividness: depth behind the hero ─────────────────────────
   A wash and a faint grid, not a gradient hero. The point is to
   give the screenshot something to sit on. */
.hero{position:relative;isolation:isolate}
.hero::before{
  content:"";position:absolute;inset:-10% -30% 40%;z-index:-2;
  background:
    radial-gradient(58% 44% at 50% 18%, color-mix(in srgb,var(--brand) 17%,transparent), transparent 70%),
    radial-gradient(38% 30% at 78% 6%, rgba(213,43,30,.07), transparent 72%);
  pointer-events:none;
}
.hero::after{
  content:"";position:absolute;inset:0 0 34%;z-index:-1;pointer-events:none;
  background-image:radial-gradient(circle at 1px 1px, rgba(10,16,20,.055) 1px, transparent 0);
  background-size:26px 26px;
  -webkit-mask-image:radial-gradient(70% 55% at 50% 26%, #000 30%, transparent 78%);
  mask-image:radial-gradient(70% 55% at 50% 26%, #000 30%, transparent 78%);
}

/* the product deserves a glow, not just a shadow */
.hero-shot{
  box-shadow:
    0 2px 6px rgba(10,16,20,.05),
    0 30px 70px -18px rgba(10,16,20,.26),
    0 0 90px -30px color-mix(in srgb,var(--brand) 60%,transparent);
}

/* ── a band with weight, for rhythm ──────────────────────────── */
.band-deep{
  background:linear-gradient(165deg,#0F1F1A 0%,#0B1512 55%,#0C1512 100%);
  color:#EAF2EE;border-radius:var(--r-lg);
  padding:clamp(2.5rem,6vw,4rem) clamp(1.4rem,4vw,3rem);
  position:relative;overflow:hidden;
}
.band-deep::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(46% 70% at 82% 8%, color-mix(in srgb,var(--brand) 26%,transparent), transparent 68%);
}
.band-deep>*{position:relative}
.band-deep h2{color:#fff;font-size:clamp(1.7rem,1.2rem + 2vw,2.6rem);margin-bottom:.7rem}
.band-deep .lead{color:#A9BAB3;max-width:56ch}

.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:2.25rem;
  background:rgba(255,255,255,.1);border-radius:var(--r);overflow:hidden}
@media (max-width:760px){.stats{grid-template-columns:1fr}}
.stats>div{background:#0D1714;padding:1.4rem 1.35rem}
.stats .big{font-size:clamp(1.6rem,1.2rem + 1.6vw,2.2rem);font-weight:700;
  letter-spacing:-.035em;color:#fff;display:flex;align-items:center;gap:.55rem}
.stats .cap{margin-top:.3rem;font-size:.9rem;color:#9FB0AA;line-height:1.5}

/* ── icon tiles, with a little variation ─────────────────────── */
.card:nth-child(2) .ico{background:#FDECEA;color:#B32B1F}
.card:nth-child(3) .ico{background:#EAF0FB;color:#2C5AA8}

/* ── who it is for ────────────────────────────────────────────
   Two audiences, side by side and equal in weight. The product
   has genuinely two users — the person holding the Beleg and the
   person who has to book it — and a page that addresses only the
   second one leaves the first wondering whether it is for them. */
.who{display:grid;grid-template-columns:repeat(2,1fr);gap:1.1rem}
@media (max-width:900px){.who{grid-template-columns:1fr}}
.who-card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:clamp(1.5rem,3vw,2.1rem);box-shadow:var(--shadow-sm);
  border-top:3px solid var(--brand)}
.who-card--alt{border-top-color:#2C5AA8}
.who-h{display:flex;align-items:flex-start;gap:.85rem;margin-bottom:.9rem}
.who-h .ico{width:38px;height:38px;border-radius:10px;background:var(--brand-soft);
  color:var(--brand-ink);display:grid;place-items:center;flex:none}
.who-card--alt .who-h .ico{background:#EAF0FB;color:#2C5AA8}
.who-h .eyebrow{display:block;font-size:.78rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--brand-ink);margin-bottom:.3rem}
.who-card--alt .who-h .eyebrow{color:#2C5AA8}
.who-h h3{font-size:1.24rem;line-height:1.2}
.who-card>p{color:var(--ink-2);font-size:.96rem}
.who-card .checks{margin-top:1.2rem;font-size:.95rem}

/* the handoff, because who does what is the whole product */
.relay{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem;
  margin-top:clamp(1.5rem,3vw,2.2rem)}
@media (max-width:820px){.relay{grid-template-columns:1fr}}
.lane{position:relative;background:var(--bg);border:1px solid var(--line);
  border-radius:var(--r);padding:1.2rem 1.25rem}
.lane .n{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;
  background:var(--ink);color:#fff;font-size:.76rem;font-weight:700;margin-bottom:.6rem}
.lane h4{margin:0 0 .2rem;font-size:1.02rem;font-weight:600;letter-spacing:-.02em}
.lane p{font-size:.9rem;color:var(--ink-2);line-height:1.5}
.lane .by{display:inline-block;margin-top:.7rem;font-size:.78rem;font-weight:600;
  color:var(--muted)}
@media (min-width:821px){
  .lane:not(:last-child)::after{content:"";position:absolute;top:1.75rem;right:-.72rem;
    width:.55rem;height:.55rem;border-top:2px solid var(--line);border-right:2px solid var(--line);
    transform:rotate(45deg);z-index:1}
}
.relay-note{margin-top:1.1rem;font-size:.92rem;color:var(--muted);max-width:64ch}

/* ── the time calculator ──────────────────────────────────────
   Every input belongs to the visitor. The one number we supply
   is the twenty seconds, and the note under the widget names it
   as an assumption — a page that refuses to publish an accuracy
   percentage cannot quietly publish a savings percentage. */
.calc{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  background:var(--bg);box-shadow:var(--shadow-lg)}
@media (max-width:820px){.calc{grid-template-columns:1fr}}
.calc-in{padding:clamp(1.5rem,3vw,2.3rem);display:grid;gap:1.6rem;align-content:start}
.field{display:grid;gap:.45rem}
.field .lab{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}
.field .lab b{font-weight:600;font-size:.97rem}
.field .val{font-variant-numeric:tabular-nums;font-weight:700;font-size:.85rem;
  color:var(--brand-ink);background:var(--brand-soft);padding:.16rem .6rem;border-radius:999px;
  min-width:3.2rem;text-align:center}
.field .hint{font-size:.83rem;color:var(--muted);line-height:1.45}

input[type=range]{-webkit-appearance:none;appearance:none;width:100%;
  height:22px;background:transparent;cursor:pointer;margin:0}
input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:var(--line)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;
  width:20px;height:20px;margin-top:-7px;border-radius:50%;background:var(--brand);
  border:3px solid #fff;box-shadow:0 1px 5px rgba(10,16,20,.28)}
input[type=range]::-moz-range-track{height:6px;border-radius:999px;background:var(--line)}
input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;
  background:var(--brand);border:3px solid #fff;box-shadow:0 1px 5px rgba(10,16,20,.28)}
input[type=range]:focus-visible{outline:none}
input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 32%,transparent)}
input[type=range]:focus-visible::-moz-range-thumb{box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 32%,transparent)}

.calc-out{background:linear-gradient(165deg,#0F1F1A,#0B1512 60%);color:#EAF2EE;
  padding:clamp(1.6rem,3vw,2.3rem);display:grid;align-content:center;gap:.1rem}
.calc-out .cap-sm{font-size:.76rem;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;color:#7E938C}
.calc-out .huge{margin-top:.5rem;font-size:clamp(2.6rem,1.8rem + 3.4vw,4rem);font-weight:700;
  letter-spacing:-.045em;line-height:1;color:#fff;font-variant-numeric:tabular-nums}
.calc-out .huge .unit{font-size:.4em;font-weight:600;letter-spacing:-.02em;color:#A9BAB3}
.calc-out .days{margin-top:.55rem;color:#A9BAB3;font-size:.98rem}
.calc-out .days b{color:#fff;font-weight:700}
.calc-out .rows{margin-top:1.5rem;border-top:1px solid rgba(255,255,255,.12);display:grid}
.calc-out .rows div{display:flex;justify-content:space-between;gap:1rem;
  padding:.7rem 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:.93rem;color:#A9BAB3}
.calc-out .rows div:last-child{border-bottom:0}
.calc-out .rows b{color:#fff;font-weight:600;font-variant-numeric:tabular-nums}

.calc-note{margin-top:1.1rem;font-size:.88rem;color:var(--muted);max-width:74ch;line-height:1.6}
.calc-note b{color:var(--ink-2);font-weight:600}

/* the countable version of the same argument */
.fields-block{margin-top:clamp(2.5rem,5vw,3.5rem);border:1px solid var(--line);
  border-radius:var(--r);background:var(--bg-soft);padding:clamp(1.4rem,3vw,2rem)}
.fields-block h3{font-size:clamp(1.15rem,1rem + .6vw,1.45rem)}
.fields-block>p{margin-top:.4rem;color:var(--ink-2);font-size:.95rem}
.pills{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1.1rem}
.pills span{font-size:.84rem;background:var(--bg);border:1px solid var(--line);
  border-radius:999px;padding:.28rem .75rem;color:var(--muted);
  text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--brand) 55%,transparent);
  text-decoration-thickness:1.5px}

/* ── price ────────────────────────────────────────────────────
   Three bands on one flat price per mandate. Which band is
   highlighted comes from the volume the visitor set in the
   calculator above — their number against a published band, so
   the emphasis states a fact rather than steering. */
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem}
@media (max-width:860px){.tiers{grid-template-columns:1fr}}
.tier{position:relative;background:var(--bg);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:1.7rem 1.6rem;box-shadow:var(--shadow-sm);
  transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease}
.tier.is-mine{border-color:var(--brand);box-shadow:var(--shadow-lg);transform:translateY(-4px)}
.tier .mine{position:absolute;top:-.72rem;left:1.6rem;opacity:0;
  background:var(--brand);color:#fff;font-size:.7rem;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;padding:.26rem .7rem;
  border-radius:999px;transition:opacity .25s ease;pointer-events:none}
.tier.is-mine .mine{opacity:1}
.tier h3{font-size:.83rem;font-weight:700;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted)}
.tier .price{margin-top:.7rem;display:flex;align-items:baseline;gap:.35rem;color:var(--ink)}
.tier .price .cur{font-size:1rem;font-weight:600;color:var(--muted)}
.tier .price b{font-size:clamp(2.4rem,2rem + 1.4vw,3rem);font-weight:700;
  letter-spacing:-.045em;line-height:1;font-variant-numeric:tabular-nums}
.tier .price .per{font-size:.95rem;color:var(--muted)}
.tier .per-mandate{font-size:.88rem;color:var(--muted);margin-top:.15rem}
.tier .vol{margin-top:1.1rem;padding-top:1.1rem;border-top:1px solid var(--line-soft);
  font-weight:600;font-size:.98rem}
.tier .for{margin-top:.35rem;font-size:.9rem;color:var(--ink-2);line-height:1.5}
.tiers-note{margin-top:1.1rem;font-size:.88rem;color:var(--muted);max-width:70ch}

.incl{margin-top:clamp(2.5rem,5vw,3.5rem);background:var(--bg);border:1px solid var(--line);
  border-radius:var(--r);padding:clamp(1.5rem,3vw,2.1rem)}
.incl h3{font-size:1.15rem}
.incl .checks{margin-top:1.1rem;grid-template-columns:repeat(2,auto);
  column-gap:2.5rem;font-size:.95rem}
@media (max-width:800px){.incl .checks{grid-template-columns:1fr}}

.fineprint{margin-top:1.5rem;display:grid;gap:.45rem;font-size:.89rem;color:var(--muted);max-width:70ch}
.fineprint b{color:var(--ink-2);font-weight:600}

/* the calculator hands the reader on to the price */
.jump{margin-top:1.4rem;font-size:.95rem;font-weight:600}
.jump a{color:var(--brand-ink);border-bottom:1px solid color-mix(in srgb,var(--brand) 35%,transparent);
  padding-bottom:1px}
.jump a:hover{border-bottom-color:var(--brand)}
@media (prefers-reduced-motion:reduce){.tier.is-mine{transform:none}}
