/* ==========================================================================
   BizBoard marketing site — design system
   --------------------------------------------------------------------------
   Written against one rule: nothing here may look like a template. That means
   a real typeface, an ink-led palette where the brand blue is an accent rather
   than a wash, restraint with shadow, and product screenshots given the space
   that icon grids used to take.

   Sections
     1. Tokens          6. Sections & editorial
     2. Reset & base    7. Product / feature rows
     3. Typography      8. Cards, lists, tables
     4. Layout          9. Pricing, FAQ, CTA
     5. Header & nav   10. Footer, prose, utilities
   ========================================================================== */

/* -- 1. Tokens ----------------------------------------------------------- */
:root{
  /* Ink carries the page. The old site put a saturated cyan behind everything,
     which is the single loudest "template" signal; here blue is spent only on
     links, the primary button and the odd accent rule. */
  --ink-900:#0a0b0d;
  --ink-800:#15181d;
  --ink-700:#2a2f38;
  --ink-600:#454c58;
  --ink-500:#626a78;
  --ink-400:#858d9b;
  --ink-300:#aab1bd;

  /* Warm off-whites. Pure #fff everywhere reads cheap; paper has a little heat. */
  --paper:#fbfaf8;
  --surface:#ffffff;
  --raise:#f4f2ee;
  --sunken:#efece7;
  --line:#e7e4de;
  --line-strong:#d6d2ca;

  --accent:#1350e8;
  --accent-ink:#0e3fba;
  --accent-soft:#eef2fe;
  --accent-line:#c8d6fb;

  --pos:#12704a;      /* money in, healthy */
  --pos-soft:#e8f5ee;
  --warn:#9a5b00;
  --warn-soft:#fdf2e0;
  --neg:#b4322a;
  --neg-soft:#fcedeb;

  --focus:#1350e8;

  /* Surfaces that are meant to be dark in BOTH themes. The ink scale inverts for
     dark mode — that is right for text and wrong for a panel, and using --ink-900
     as a background is what turned the closing CTA white-on-white. */
  --panel:#0a0b0d;
  --on-panel:#ffffff;
  --on-panel-muted:rgba(255,255,255,.66);

  /* Type. Instrument Sans sets the headings — it has proportions with an
     opinion. Inter carries the reading text and, crucially, the figures. */
  --font-display:"Instrument Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --font-text:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;

  /* A fluid modular scale. Body sits at ~17px, not 16 — a small thing that
     separates a considered page from a default one. */
  --t--2:.75rem;
  --t--1:.8125rem;
  --t-0:1.0625rem;
  --t-1:1.1875rem;
  --t-2:clamp(1.3rem,1.22rem + .35vw,1.5rem);
  --t-3:clamp(1.55rem,1.4rem + .7vw,2rem);
  --t-4:clamp(1.95rem,1.65rem + 1.4vw,2.85rem);
  --t-5:clamp(2.45rem,1.85rem + 2.7vw,4.1rem);

  --sp-1:.25rem; --sp-2:.5rem;  --sp-3:.75rem; --sp-4:1rem;
  --sp-5:1.5rem; --sp-6:2rem;   --sp-7:3rem;   --sp-8:4rem;
  --sp-9:6rem;   --sp-10:8rem;

  --r-sm:6px; --r-md:10px; --r-lg:14px; --r-xl:20px; --r-pill:999px;

  /* Shadows stay quiet. One soft lift, one for genuinely floating things. */
  --sh-1:0 1px 2px rgba(10,11,13,.04),0 1px 1px rgba(10,11,13,.03);
  --sh-2:0 2px 4px rgba(10,11,13,.04),0 8px 24px -8px rgba(10,11,13,.10);
  --sh-3:0 4px 8px rgba(10,11,13,.05),0 24px 56px -16px rgba(10,11,13,.18);

  --measure:68ch;
  --w-page:1180px;
  --w-prose:44rem;
}

[data-theme="dark"]{
  --ink-900:#f4f5f7; --ink-800:#e6e8ec; --ink-700:#cdd2da; --ink-600:#a8afba;
  --ink-500:#8b94a1; --ink-400:#6f7784; --ink-300:#565e6a;
  --paper:#0b0c0e; --surface:#111317; --raise:#171a1f; --sunken:#1d2127;
  --line:#242830; --line-strong:#333944;
  --accent:#6b9bff; --accent-ink:#8fb4ff; --accent-soft:#151d30; --accent-line:#2a3a5c;
  --pos:#4ec08a; --pos-soft:#11241c; --warn:#d69b4a; --warn-soft:#241c10;
  --neg:#e8776c; --neg-soft:#2a1614;
  --focus:#6b9bff;
  --sh-1:0 1px 2px rgba(0,0,0,.4);
  --sh-2:0 2px 4px rgba(0,0,0,.3),0 8px 24px -8px rgba(0,0,0,.6);
  --sh-3:0 4px 8px rgba(0,0,0,.35),0 24px 56px -16px rgba(0,0,0,.7);
}

@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ink-900:#f4f5f7; --ink-800:#e6e8ec; --ink-700:#cdd2da; --ink-600:#a8afba;
    --ink-500:#8b94a1; --ink-400:#6f7784; --ink-300:#565e6a;
    --paper:#0b0c0e; --surface:#111317; --raise:#171a1f; --sunken:#1d2127;
    --line:#242830; --line-strong:#333944;
    --accent:#6b9bff; --accent-ink:#8fb4ff; --accent-soft:#151d30; --accent-line:#2a3a5c;
    --pos:#4ec08a; --pos-soft:#11241c; --warn:#d69b4a; --warn-soft:#241c10;
    --neg:#e8776c; --neg-soft:#2a1614;
    --focus:#6b9bff;
    --sh-1:0 1px 2px rgba(0,0,0,.4);
    --sh-2:0 2px 4px rgba(0,0,0,.3),0 8px 24px -8px rgba(0,0,0,.6);
    --sh-3:0 4px 8px rgba(0,0,0,.35),0 24px 56px -16px rgba(0,0,0,.7);
  }
}

/* -- 2. Reset & base ----------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink-700);
  font-family:var(--font-text);
  font-size:var(--t-0);
  line-height:1.6;
  font-feature-settings:"cv05" 1,"cv11" 1,"ss01" 1;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:3px}
::selection{background:var(--accent);color:#fff}
hr{border:0;border-top:1px solid var(--line);margin:var(--sp-7) 0}

/* Money and any figure a reader compares down a column must not jitter. */
.num,.tabular,td.num,.stat-v,.price-amt{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

/* -- 3. Typography ------------------------------------------------------- */
h1,h2,h3,h4,h5{
  font-family:var(--font-display);
  color:var(--ink-900);
  font-weight:600;
  line-height:1.12;
  letter-spacing:-.022em;
  margin:0 0 var(--sp-4);
  text-wrap:balance;
}
h1{font-size:var(--t-5);letter-spacing:-.035em;line-height:1.04}
h2{font-size:var(--t-4);letter-spacing:-.03em;line-height:1.08}
h3{font-size:var(--t-2);letter-spacing:-.02em}
h4{font-size:var(--t-1);letter-spacing:-.015em}
p{margin:0 0 var(--sp-4);max-width:var(--measure)}
p:last-child{margin-bottom:0}
strong,b{font-weight:600;color:var(--ink-900)}
small{font-size:var(--t--1)}

/* The lede does a lot of work on this site: it is the sentence that has to
   land before anyone scrolls. Slightly larger, slightly lighter, narrower. */
.lede{font-size:var(--t-1);line-height:1.5;color:var(--ink-500);max-width:52ch}
.lede-lg{font-size:clamp(1.15rem,1.05rem + .5vw,1.4rem);line-height:1.45;color:var(--ink-500);max-width:46ch}

/* An eyebrow with a rule instead of a coloured pill. The pill is the tell. */
.eyebrow{
  display:flex;align-items:center;gap:var(--sp-3);
  font-family:var(--font-text);
  font-size:var(--t--1);font-weight:600;
  letter-spacing:.09em;text-transform:uppercase;
  color:var(--ink-400);
  margin:0 0 var(--sp-4);
}
.eyebrow::before{content:"";width:22px;height:1px;background:var(--line-strong);flex:0 0 auto}
.eyebrow.center{justify-content:center;max-width:none}
.eyebrow.center::after{content:"";width:22px;height:1px;background:var(--line-strong);flex:0 0 auto}

.link{color:var(--accent);font-weight:500;text-decoration:underline;
  text-decoration-thickness:1px;text-underline-offset:.2em;
  text-decoration-color:var(--accent-line);transition:text-decoration-color .15s}
.link:hover{text-decoration-color:var(--accent)}
.link-arrow{display:inline-flex;align-items:center;gap:.4em;color:var(--accent);font-weight:550}
.link-arrow::after{content:"→";transition:transform .18s ease}
.link-arrow:hover::after{transform:translateX(3px)}

.muted{color:var(--ink-500)}
.fine{font-size:var(--t--1);color:var(--ink-400);line-height:1.5}

/* -- 4. Layout ----------------------------------------------------------- */
.container{width:100%;max-width:var(--w-page);margin-inline:auto;padding-inline:var(--sp-5)}
@media (max-width:640px){.container{padding-inline:var(--sp-4)}}
.prose-width{max-width:var(--w-prose);margin-inline:auto}

.section{padding-block:clamp(3.5rem,2.5rem + 4vw,6.5rem)}
.section-tight{padding-block:clamp(2.5rem,2rem + 2vw,4rem)}
.section-alt{background:var(--raise)}
.section-ink{background:var(--panel);color:var(--on-panel-muted)}
.section-ink h1,.section-ink h2,.section-ink h3{color:var(--on-panel)}
.section + .section-alt,.section-alt + .section{border-top:1px solid var(--line)}

.stack > * + *{margin-top:var(--sp-4)}
.stack-lg > * + *{margin-top:var(--sp-6)}

.section-head{max-width:46rem;margin-bottom:clamp(2rem,1.5rem + 2vw,3.5rem)}
.section-head.center{margin-inline:auto;text-align:center}
.section-head.center p{margin-inline:auto}
.section-head p{color:var(--ink-500);font-size:var(--t-1);line-height:1.5}

.grid{display:grid;gap:var(--sp-5)}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:920px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}}

.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,1rem + 4vw,4.5rem);align-items:center}
.split-wide{grid-template-columns:1.1fr .9fr}
@media (max-width:900px){.split,.split-wide{grid-template-columns:minmax(0,1fr)}}

/* -- 5. Buttons ---------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  font-family:var(--font-text);font-size:var(--t-0);font-weight:550;
  line-height:1;letter-spacing:-.01em;
  padding:.78em 1.15em;border-radius:var(--r-md);
  border:1px solid transparent;cursor:pointer;white-space:nowrap;
  transition:background .15s ease,border-color .15s ease,color .15s ease,transform .1s ease,box-shadow .15s ease;
}
.btn:active{transform:translateY(.5px)}
.btn-primary{background:var(--ink-900);color:var(--paper);box-shadow:var(--sh-1)}
.btn-primary:hover{background:var(--ink-800);box-shadow:var(--sh-2)}
.btn-accent{background:var(--accent);color:#fff;box-shadow:var(--sh-1)}
.btn-accent:hover{background:var(--accent-ink);box-shadow:var(--sh-2)}
.btn-secondary{background:var(--surface);color:var(--ink-800);border-color:var(--line-strong)}
.btn-secondary:hover{border-color:var(--ink-400);background:var(--surface)}
.btn-quiet{background:transparent;color:var(--ink-600);padding-inline:.6em}
.btn-quiet:hover{color:var(--ink-900);background:var(--raise)}
.btn-lg{font-size:var(--t-1);padding:.92em 1.5em;border-radius:var(--r-md)}
.btn-sm{font-size:var(--t--1);padding:.6em .9em}
.btn-row{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center}
.section-ink .btn-primary{background:#fff;color:var(--panel)}
.section-ink .btn-secondary{background:transparent;color:#fff;border-color:rgba(255,255,255,.28)}
.section-ink .btn-secondary:hover{border-color:rgba(255,255,255,.6)}

/* -- 6. Header & nav ----------------------------------------------------- */
.site-header{
  position:sticky;top:0;z-index:60;
  background:color-mix(in srgb,var(--paper) 82%,transparent);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .2s ease,background .2s ease;
}
.site-header.is-stuck{border-bottom-color:var(--line)}
.site-header .container{display:flex;align-items:center;gap:var(--sp-5);height:62px}

.brand{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-display);
  font-weight:600;font-size:1.22rem;letter-spacing:-.035em;color:var(--ink-900);flex:0 0 auto}
.brand-mark{width:22px;height:22px;flex:0 0 auto}

.nav{display:flex;align-items:center;gap:var(--sp-1);flex:1 1 auto;min-width:0}
.nav-link{display:inline-flex;align-items:center;gap:.35em;padding:.45rem .6rem;border-radius:var(--r-sm);
  font-size:.94rem;font-weight:500;color:var(--ink-600);white-space:nowrap;transition:color .14s,background .14s}
.nav-link:hover{color:var(--ink-900);background:var(--raise)}
.nav-link[aria-current="page"]{color:var(--ink-900)}
.nav-actions{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2);flex:0 0 auto}

/* Dropdown: a real menu of real pages, not an anchor list. */
.nav-group{position:relative}
.nav-group > .nav-link::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-1px);margin-left:.15em;opacity:.55}
.nav-menu{
  position:absolute;top:calc(100% + 8px);left:-8px;z-index:70;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--sh-3);padding:var(--sp-3);min-width:560px;
  display:grid;grid-template-columns:1fr 1fr;gap:2px;
  opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity .16s ease,transform .16s ease,visibility .16s;
}
.nav-group:hover .nav-menu,.nav-group:focus-within .nav-menu{opacity:1;visibility:visible;transform:none}
.nav-menu a{display:block;padding:.6rem .7rem;border-radius:var(--r-md);transition:background .13s}
.nav-menu a:hover{background:var(--raise)}
.nav-menu .t{display:block;font-weight:550;color:var(--ink-900);font-size:.94rem;margin-bottom:.1rem}
.nav-menu .d{display:block;font-size:var(--t--1);color:var(--ink-500);line-height:1.4}
@media (max-width:1060px){.nav-menu{min-width:420px;grid-template-columns:1fr}}

.nav-toggle{display:none;background:none;border:1px solid var(--line-strong);border-radius:var(--r-sm);
  padding:.45rem .55rem;cursor:pointer;line-height:0}
.nav-toggle svg{width:18px;height:18px}

/* Only ever seen inside the open drawer on a small screen. */
.nav-drawer-actions{display:none}

@media (max-width:980px){
  .nav{display:none}
  .nav-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
  .nav-actions .lang-btn,.nav-actions .btn{min-height:44px}
  /* The drawer is the screen while it is open, not a panel of whatever height its
     contents happen to come to. With the sections closed that was about half the
     window, with the page showing through underneath it. */
  .site-header.nav-open .nav{
    display:flex;position:fixed;top:62px;left:0;right:0;flex-direction:column;align-items:stretch;
    background:var(--surface);border-bottom:1px solid var(--line);padding:var(--sp-4);gap:2px;
    height:calc(100dvh - 62px);max-height:calc(100dvh - 62px);
    overflow-y:auto;overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    padding-bottom:calc(var(--sp-4) + env(safe-area-inset-bottom));box-shadow:var(--sh-2)}
  .site-header.nav-open .nav-link{padding:.7rem .6rem;font-size:1rem;min-height:44px}
  .nav-menu{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;
    min-width:0;padding:0 0 0 var(--sp-4);grid-template-columns:1fr;background:transparent}
  .nav-group > .nav-link::after{display:none}

  /* Signing in is the most common reason anyone opens this site on a phone, so the
     two buttons are the first thing in the drawer, not the last. They used to sit
     under twenty-three expanded submenu entries — about four screens of scrolling
     from the menu button to "Log in". */
  .site-header.nav-open .nav-drawer-actions{
    display:flex;flex-direction:column;gap:var(--sp-2);order:-1;
    margin-bottom:var(--sp-3);padding-bottom:var(--sp-3);border-bottom:1px solid var(--line)}
  /* The language switcher is the least urgent thing in the drawer, so `order`
     inside the block puts it under the two buttons rather than above them, and
     it is closed behind its own name like every other section. */
  .drawer-lang-group{order:1;margin-top:var(--sp-2)}
  .drawer-lang-toggle{
    display:flex;align-items:center;width:100%;min-height:44px;
    background:none;border:0;cursor:pointer;
    padding:.7rem .6rem;border-radius:var(--r-sm);
    font-family:var(--font-text);font-size:1rem;font-weight:550;
    color:var(--ink-800);text-align:left}
  .drawer-lang-current{display:inline-flex;align-items:center;gap:.5em}
  /* Hidden only inside the group that carries the button which opens it. Scoped
     this way the flat list still shows if this stylesheet reaches a page whose
     markup has not caught up — otherwise the languages vanish with no way back. */
  .drawer-langs{display:flex;flex-wrap:wrap;gap:var(--sp-1)}
  .drawer-lang-group .drawer-langs{display:none;padding:var(--sp-1) 0 0 var(--sp-4)}
  .drawer-lang-group.is-open .drawer-langs{display:flex}
  .drawer-langs a{display:inline-flex;align-items:center;gap:.4em;min-height:44px;
    padding:.5rem .7rem;border:1px solid var(--line);border-radius:var(--r-sm);
    font-size:var(--t--1);font-weight:600;color:var(--ink-600)}
  .drawer-langs a:hover{border-color:var(--line-strong);color:var(--ink-900)}
  .nav-drawer-actions .btn{width:100%;justify-content:center;min-height:44px}

  /* A submenu is a list of destinations, not a page of prose. The one-line
     description under each entry is what made the drawer four screens long;
     on a phone the titles alone are what people are reading. */
  .site-header.nav-open .nav-menu{gap:0}
  .site-header.nav-open .nav-menu .d{display:none}
  .site-header.nav-open .nav-menu a{padding:.55rem .7rem;min-height:44px;display:flex;align-items:center}
  .site-header.nav-open .nav-menu .t{margin-bottom:0;font-weight:500;color:var(--ink-600);font-size:.92rem}

  /* …and each section is closed until it is asked for. Even as bare titles the
     four lists come to twenty-three entries, which is still a drawer you scroll
     rather than read. Tapping a section name opens that one; the chevron says
     which way it will go. Handled in wwwroot/js/marketing.js, which turns the
     section's own link into the toggle below 980px — the first entry inside it
     is that same page, so nothing becomes unreachable. */
  /* "Pricing" has no submenu and so is not in a .nav-group; without this it was
     the one line in the drawer set lighter than the rest, which reads as
     disabled rather than as simpler. */
  .site-header.nav-open .nav > .nav-link,
  .site-header.nav-open .nav-group > .nav-link{
    justify-content:space-between;width:100%;font-weight:550;color:var(--ink-800)}
  .site-header.nav-open .nav-group > .nav-link::after{
    display:block;content:"";flex:0 0 auto;
    width:7px;height:7px;margin:0 .3rem 0 auto;
    border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;
    transform:rotate(45deg) translateY(-2px);
    opacity:.45;transition:transform .2s var(--ease-out)}
  .site-header.nav-open .nav-group.is-open > .nav-link::after{
    transform:rotate(-135deg) translateY(-2px)}
  .site-header.nav-open .nav-group.is-open > .nav-link{color:var(--ink-900)}
  .site-header.nav-open .nav-menu{display:none}
  .site-header.nav-open .nav-group.is-open .nav-menu{display:grid}

  /* Tapping the page behind an open drawer should close it. */
  .site-header.nav-open::after{
    content:"";position:fixed;inset:62px 0 0;z-index:-1;
    background:color-mix(in srgb,var(--ink-900) 32%,transparent)}
  body.nav-locked{overflow:hidden}
}

/* The bar cannot hold the brand, the language switcher, both buttons and the menu
   button at once: on a 360px screen they come to 388px, which pushed the menu button
   off the edge and made every page scroll sideways.

   What went into the drawer, though, was everything — including "Log in", which is
   the one thing a phone visitor is most often here for. The language picker and
   "Start free" move instead; "Log in" stays on the bar, where it is one tap from
   any page. Brand + theme + Log in + menu comes to about 270px of the 328px a
   360px screen leaves, so it still fits. */
@media (max-width:560px){
  .nav-actions .lang{display:none}
  /* The second button, whichever it is — never the only one. Signed out that is
     "Start free" and "Log in" stays; signed in there is only "Go to dashboard",
     and it stays. A blanket rule on .btn-primary would have hidden that one. */
  .nav-actions .btn + .btn{display:none}
  .nav-actions{gap:var(--sp-1)}
  .nav-actions .btn-secondary{padding-inline:.7rem;white-space:nowrap}
  .brand{font-size:1.08rem}
}

/* Below this even that is tight, so the brand drops to the mark alone rather than
   the login button dropping off. */
@media (max-width:380px){
  .brand{font-size:0;gap:0}
  .brand-mark{width:24px;height:24px}
}

/* Language switcher */
.lang{position:relative}
.lang-btn{display:inline-flex;align-items:center;gap:.4em;background:none;border:1px solid var(--line);
  border-radius:var(--r-sm);padding:.42rem .6rem;font-size:var(--t--1);font-weight:600;
  color:var(--ink-600);cursor:pointer;transition:border-color .14s,color .14s}
.lang-btn:hover{border-color:var(--line-strong);color:var(--ink-900)}
.lang-menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-3);padding:var(--sp-2);
  min-width:170px;z-index:70;opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity .15s,transform .15s,visibility .15s}
.lang:hover .lang-menu,.lang:focus-within .lang-menu{opacity:1;visibility:visible;transform:none}
.lang-menu a{display:flex;align-items:center;gap:.55em;padding:.45rem .55rem;border-radius:var(--r-sm);
  font-size:.9rem;color:var(--ink-700)}
.lang-menu a:hover{background:var(--raise);color:var(--ink-900)}
.flag{width:1.35em;height:.95em;border-radius:2px;flex:0 0 auto;
  box-shadow:0 0 0 1px rgba(10,11,13,.08);object-fit:cover}

/* -- 7. Hero & product shots --------------------------------------------- */
.hero{padding-block:clamp(3rem,2rem + 4vw,5.5rem) clamp(2rem,1.5rem + 2vw,3.5rem);position:relative;overflow:hidden}
/* One faint plotted grid instead of a coloured glow. It reads as drafting
   paper — appropriate for a book-keeping product, and it is not a gradient. */
.hero::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),
                   linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:52px 52px;
  -webkit-mask-image:radial-gradient(120% 80% at 50% 0%,#000 0%,transparent 72%);
  mask-image:radial-gradient(120% 80% at 50% 0%,#000 0%,transparent 72%);
  opacity:.55;
}
.hero > *{position:relative;z-index:1}
.hero h1{max-width:16ch}
.hero-center{text-align:center}
.hero-center h1,.hero-center .lede{margin-inline:auto}
.hero-center .btn-row{justify-content:center}

.trust-row{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-5);align-items:center;
  font-size:var(--t--1);color:var(--ink-500);margin-top:var(--sp-5)}
.trust-row .t{display:inline-flex;align-items:center;gap:.45em}
.trust-row svg{width:15px;height:15px;color:var(--pos);flex:0 0 auto}

/* Screenshot frame. No traffic-light dots, no fake URL bar — those were the
   most dated thing on the old page. A hairline, a radius and real depth. */
.shot{
  border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  background:var(--surface);box-shadow:var(--sh-3);
  position:relative;isolation:isolate;
}
.shot img{width:100%;display:block}
.shot-label{position:absolute;left:var(--sp-3);bottom:var(--sp-3);z-index:2;
  background:color-mix(in srgb,var(--panel) 88%,transparent);color:var(--on-panel);
  font-size:var(--t--2);font-weight:600;letter-spacing:.02em;
  padding:.3rem .55rem;border-radius:var(--r-sm);backdrop-filter:blur(6px)}
.shot-bleed{margin-inline:calc(var(--sp-5) * -1)}
@media (min-width:900px){.shot-bleed{margin-inline:0}}
/* The hero shot is allowed to run past the fold — it implies depth without a
   carousel, and a carousel of screenshots is the other template tell. */
.shot-crop{max-height:min(62vh,560px);overflow:hidden}
.shot-crop img{object-fit:cover;object-position:top center}

/* -- 8. Feature rows, cards, stats --------------------------------------- */
/* Alternating prose + product. This replaces the 12-icon-card grid, which is
   what made the old page read as generated. */
.frow{display:grid;grid-template-columns:.92fr 1.08fr;gap:clamp(2rem,1rem + 4vw,4.5rem);align-items:center;
  padding-block:clamp(2.5rem,2rem + 2vw,4rem)}
.frow + .frow{border-top:1px solid var(--line)}
.frow.flip > .frow-media{order:-1}
@media (max-width:900px){.frow{grid-template-columns:minmax(0,1fr);gap:var(--sp-6)}.frow.flip > .frow-media{order:0}}

.steplist{list-style:none;padding:0;margin:var(--sp-5) 0 0;counter-reset:s}
.steplist li{counter-increment:s;position:relative;padding-left:2.4rem;margin-bottom:var(--sp-4)}
.steplist li::before{
  content:counter(s,decimal-leading-zero);position:absolute;left:0;top:.05em;
  font-family:var(--font-mono);font-size:var(--t--2);font-weight:600;
  color:var(--accent);letter-spacing:.04em;
  border:1px solid var(--accent-line);background:var(--accent-soft);
  border-radius:var(--r-sm);padding:.2rem .35rem;line-height:1;
}
.steplist b{display:block;color:var(--ink-900);font-weight:600;margin-bottom:.1rem}
.steplist span{color:var(--ink-500);font-size:.97rem;line-height:1.55}

.checks{list-style:none;padding:0;margin:0}
.checks li{position:relative;padding-left:1.7rem;margin-bottom:.55rem;color:var(--ink-600);line-height:1.5}
.checks li::before{content:"";position:absolute;left:0;top:.52em;width:11px;height:6px;
  border-left:1.8px solid var(--pos);border-bottom:1.8px solid var(--pos);transform:rotate(-45deg)}
.checks.tight li{margin-bottom:.35rem;font-size:.95rem}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:var(--sp-5);transition:border-color .16s ease,box-shadow .16s ease}
.card:hover{border-color:var(--line-strong);box-shadow:var(--sh-2)}
.card h3{font-size:var(--t-1);margin-bottom:.4rem}
.card p{color:var(--ink-500);font-size:.97rem;margin:0}
.card-link{display:block}
.card-link:hover h3{color:var(--accent)}
.card-flat{background:transparent;border:0;padding:0}
.card-flat:hover{box-shadow:none}

/* A restrained glyph. Monochrome, hairline, no pastel rounded square. */
.glyph{width:26px;height:26px;color:var(--ink-900);margin-bottom:var(--sp-4);stroke-width:1.5}
.card:hover .glyph{color:var(--accent)}

/* Big figures used as design elements — the thing a finance site should do
   and the old one never did. */
.stat-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-5)}
@media (max-width:820px){.stat-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stat{border-top:2px solid var(--ink-900);padding-top:var(--sp-3)}
.stat-v{display:block;font-family:var(--font-display);font-size:clamp(1.9rem,1.5rem + 1.6vw,2.9rem);
  font-weight:600;letter-spacing:-.04em;color:var(--ink-900);line-height:1}
.stat-l{display:block;margin-top:.5rem;font-size:var(--t--1);color:var(--ink-500);line-height:1.45}

/* Quiet pill used for formats and integrations. */
.chips{display:flex;flex-wrap:wrap;gap:.45rem}
.chip{display:inline-flex;align-items:center;gap:.4em;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-pill);padding:.35rem .75rem;
  font-size:var(--t--1);font-weight:500;color:var(--ink-600)}
.chip svg{width:13px;height:13px;opacity:.6}

.badge{display:inline-flex;align-items:center;gap:.35em;border-radius:var(--r-pill);
  padding:.2rem .55rem;font-size:var(--t--2);font-weight:600;letter-spacing:.01em}
.badge-accent{background:var(--accent-soft);color:var(--accent-ink);border:1px solid var(--accent-line)}
.badge-pos{background:var(--pos-soft);color:var(--pos)}
.badge-warn{background:var(--warn-soft);color:var(--warn)}

/* A quote that does not pretend. Used only where a real, named person said it. */
.quote{border-left:2px solid var(--ink-900);padding-left:var(--sp-5)}
.quote p{font-family:var(--font-display);font-size:var(--t-2);line-height:1.35;
  letter-spacing:-.02em;color:var(--ink-900);font-weight:500}
.quote footer{display:flex;align-items:center;gap:.7rem;margin-top:var(--sp-4);
  font-size:var(--t--1);color:var(--ink-500)}
.quote footer b{color:var(--ink-800);font-weight:600}

.note{border:1px solid var(--line);border-left:2px solid var(--accent);background:var(--surface);
  border-radius:0 var(--r-md) var(--r-md) 0;padding:var(--sp-4) var(--sp-5)}
.note p{font-size:.97rem;color:var(--ink-600);margin:0}

/* -- 9. Tables, pricing, FAQ, CTA ---------------------------------------- */
.table-wrap{border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--surface)}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.tbl{width:100%;border-collapse:collapse;font-size:.96rem}
table.tbl th,table.tbl td{padding:.9rem 1.1rem;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
table.tbl thead th{background:var(--raise);font-family:var(--font-display);font-weight:600;
  font-size:var(--t--1);letter-spacing:.02em;color:var(--ink-700);white-space:nowrap}
table.tbl tbody tr:last-child td{border-bottom:0}
table.tbl td.c{text-align:center}
table.tbl .yes{color:var(--pos);font-weight:600}
table.tbl .no{color:var(--ink-300)}
table.tbl th.us{color:var(--accent-ink)}

.price-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-4);align-items:stretch}
@media (max-width:1000px){.price-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.price-grid{grid-template-columns:minmax(0,1fr)}}
.tier{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:var(--sp-5)}
.tier-pop{border-color:var(--ink-900);box-shadow:var(--sh-2);position:relative}
.tier-pop::before{content:attr(data-tag);position:absolute;top:-.7rem;left:var(--sp-5);
  background:var(--panel);color:var(--on-panel);font-size:var(--t--2);font-weight:600;
  letter-spacing:.03em;padding:.22rem .6rem;border-radius:var(--r-sm)}
.tier h3{font-size:var(--t-1);margin-bottom:.25rem}
.tier-desc{color:var(--ink-500);font-size:.93rem;min-height:2.8em;margin:0 0 var(--sp-4)}
.price-amt{font-family:var(--font-display);font-size:clamp(1.9rem,1.6rem + 1vw,2.5rem);font-weight:600;
  letter-spacing:-.04em;color:var(--ink-900);line-height:1}
.price-per{font-size:var(--t--1);color:var(--ink-400);font-weight:500}
.tier-seats{display:flex;align-items:center;gap:.45em;font-size:var(--t--1);font-weight:550;
  color:var(--ink-600);margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--line)}
.tier-seats.free{color:var(--pos)}
.tier ul{margin:var(--sp-4) 0 var(--sp-5);flex:1 1 auto}
.tier .btn{width:100%}
.tier-extra{font-size:var(--t--2);color:var(--ink-400);margin:var(--sp-3) 0 0;text-align:center}

.faq-list{max-width:var(--w-prose);margin-inline:auto}
.faq-item{border-bottom:1px solid var(--line)}
.faq-item summary{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-4);
  cursor:pointer;list-style:none;padding:var(--sp-5) 0;
  font-family:var(--font-display);font-size:var(--t-1);font-weight:550;letter-spacing:-.015em;
  color:var(--ink-900)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:hover{color:var(--accent)}
.faq-item summary::after{content:"";flex:0 0 auto;width:11px;height:11px;margin-top:.45em;
  border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;
  transform:rotate(45deg);transition:transform .2s ease;opacity:.5}
.faq-item[open] summary::after{transform:rotate(-135deg)}
.faq-item .a{padding:0 0 var(--sp-5);color:var(--ink-500);max-width:60ch}
.faq-item .a p{margin-bottom:var(--sp-3)}

.cta{background:var(--panel);color:var(--on-panel-muted);border-radius:var(--r-xl);
  padding:clamp(2.5rem,2rem + 3vw,4.5rem) clamp(1.5rem,1rem + 3vw,4rem);text-align:center;
  position:relative;overflow:hidden}
.cta::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:52px 52px;
  -webkit-mask-image:radial-gradient(100% 90% at 50% 0%,#000,transparent 75%);
  mask-image:radial-gradient(100% 90% at 50% 0%,#000,transparent 75%)}
.cta > *{position:relative}
.cta h2{color:var(--on-panel);max-width:20ch;margin-inline:auto}
.cta p{color:var(--on-panel-muted);max-width:44ch;margin-inline:auto}
.cta .btn-row{justify-content:center;margin-top:var(--sp-5)}
.cta .btn-primary{background:#fff;color:var(--panel)}
.cta .btn-primary:hover{background:#eceae6}
.cta .btn-secondary{background:transparent;color:var(--on-panel);border-color:rgba(255,255,255,.34)}
.cta .btn-secondary:hover{border-color:rgba(255,255,255,.65);background:rgba(255,255,255,.06)}

/* -- 10. Footer ---------------------------------------------------------- */
.site-footer{background:var(--surface);border-top:1px solid var(--line);
  padding-block:clamp(3rem,2rem + 3vw,4.5rem) var(--sp-6);margin-top:var(--sp-7)}
.footer-grid{display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:var(--sp-6) var(--sp-5)}
@media (max-width:980px){.footer-grid{grid-template-columns:1fr 1fr 1fr}}
@media (max-width:620px){.footer-grid{grid-template-columns:1fr 1fr}}
.footer-brand p{color:var(--ink-500);font-size:.93rem;max-width:32ch;margin:var(--sp-3) 0 0}
.footer-col h4{font-family:var(--font-text);font-size:var(--t--1);font-weight:600;letter-spacing:.07em;
  text-transform:uppercase;color:var(--ink-400);margin:0 0 var(--sp-3)}
.footer-col a{display:block;padding:.28rem 0;font-size:.94rem;color:var(--ink-600);transition:color .13s}
.footer-col a:hover{color:var(--ink-900)}
.footer-bottom{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-5);justify-content:space-between;
  align-items:center;border-top:1px solid var(--line);margin-top:var(--sp-7);padding-top:var(--sp-5);
  font-size:var(--t--1);color:var(--ink-400)}
.footer-legal{display:flex;flex-wrap:wrap;gap:var(--sp-4)}
/* The EU's twelve stars, small: says where BizBoard is made without naming a city it may not stay in. */
.footer-made{display:inline-flex;align-items:center;gap:.5rem;color:var(--ink-500);font-weight:500}
.footer-made .eu-mark{width:18px;height:18px;flex:0 0 auto;border-radius:50%}

/* -- 11. Prose (blog, legal, guides) ------------------------------------- */
.prose{max-width:var(--w-prose);margin-inline:auto;font-size:1.09rem;line-height:1.72;color:var(--ink-700)}
.prose > * + *{margin-top:1.15em}
.prose h2{font-size:var(--t-3);margin:2.2em 0 .6em;letter-spacing:-.025em}
.prose h3{font-size:var(--t-1);margin:1.8em 0 .4em}
.prose h2:first-child,.prose h3:first-child{margin-top:0}
.prose p{max-width:none;margin:0}
.prose ul,.prose ol{padding-left:1.35em;margin:0}
.prose li{margin-bottom:.5em}
.prose li::marker{color:var(--ink-300)}
.prose a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;
  text-underline-offset:.18em;text-decoration-color:var(--accent-line)}
.prose a:hover{text-decoration-color:var(--accent)}
.prose blockquote{border-left:2px solid var(--line-strong);padding-left:var(--sp-5);
  margin-inline:0;color:var(--ink-500);font-style:normal}
.prose code{font-family:var(--font-mono);font-size:.88em;background:var(--raise);
  border:1px solid var(--line);border-radius:4px;padding:.1em .35em}
.prose pre{background:var(--panel);color:#e6e8ec;border-radius:var(--r-md);
  padding:var(--sp-4) var(--sp-5);overflow-x:auto;font-size:.88rem;line-height:1.6}
.prose pre code{background:none;border:0;padding:0;color:inherit;font-size:1em}
.prose img{border:1px solid var(--line);border-radius:var(--r-md)}
.prose table{width:100%;border-collapse:collapse;font-size:.97rem}
.prose th,.prose td{padding:.65rem .8rem;border-bottom:1px solid var(--line);text-align:left}
.prose th{font-weight:600;color:var(--ink-900)}
.prose hr{margin:2.2em 0}

/* -- 12. Blog listing ---------------------------------------------------- */
.post-list{display:grid;gap:0}
.post-item{display:grid;grid-template-columns:8.5rem 1fr;gap:var(--sp-5);
  padding-block:var(--sp-5);border-top:1px solid var(--line);align-items:baseline}
.post-item:last-child{border-bottom:1px solid var(--line)}
@media (max-width:680px){.post-item{grid-template-columns:1fr;gap:var(--sp-2)}}
.post-meta{font-size:var(--t--1);color:var(--ink-400);font-variant-numeric:tabular-nums}
.post-item h3{font-size:var(--t-2);margin-bottom:.35rem;letter-spacing:-.025em}
.post-item:hover h3{color:var(--accent)}
.post-item p{color:var(--ink-500);font-size:.99rem;margin:0;max-width:62ch}
.post-tags{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.6rem}
.post-tag{font-size:var(--t--2);font-weight:600;letter-spacing:.03em;text-transform:uppercase;
  color:var(--ink-400)}

.post-header{max-width:var(--w-prose);margin-inline:auto}
.post-header h1{font-size:var(--t-4);letter-spacing:-.03em;margin-bottom:var(--sp-4)}

/* -- 13. Utilities ------------------------------------------------------- */
.center{text-align:center}
/* A <p> carries max-width:68ch for readable line length. Centring the text
   inside that box is not the same as centring the box on the page, which is
   how the hero eyebrow and the FAQ footer link both ended up left of centre. */
p.center,.fine.center{max-width:none;margin-inline:auto}
.mt-0{margin-top:0}.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}
.mt-6{margin-top:var(--sp-6)}.mt-7{margin-top:var(--sp-7)}
.mb-0{margin-bottom:0}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:var(--sp-4);top:-3rem;z-index:100;background:var(--panel);
  color:#fff;padding:.6rem 1rem;border-radius:var(--r-sm);transition:top .15s}
.skip-link:focus{top:var(--sp-4)}

/* -- 14. Motion ----------------------------------------------------------
   Restraint is the whole point. Things arrive once, from 10px below, on a
   single easing curve; nothing loops, nothing bounces, nothing slides in from
   the side. The page must still read perfectly with JavaScript off and with
   reduced motion on, so the resting state is the visible state and .reveal is
   only ever added by script once it knows an observer exists.
   ----------------------------------------------------------------------- */
:root{
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-in-out:cubic-bezier(.65,0,.35,1);
}

/* Set by JS on <html> the moment it decides to animate. Without it every
   [data-reveal] stays at its natural opacity, which is what no-JS gets. */
.js-motion [data-reveal]{
  opacity:0;
  transform:translate3d(0,10px,0);
  transition:opacity .62s var(--ease-out),transform .62s var(--ease-out);
  transition-delay:var(--reveal-delay,0ms);
  will-change:opacity,transform;
}
.js-motion [data-reveal].is-in{opacity:1;transform:none}
.js-motion [data-reveal].is-in{will-change:auto}

/* A group whose children arrive one after another. The delay is set per child
   in script so it survives any number of items. */
.js-motion [data-reveal-group] > *{
  opacity:0;
  transform:translate3d(0,12px,0);
  transition:opacity .58s var(--ease-out),transform .58s var(--ease-out);
  transition-delay:var(--reveal-delay,0ms);
}
.js-motion [data-reveal-group].is-in > *{opacity:1;transform:none}

/* The hero shot earns a slightly longer, slightly larger move — it is the one
   element the eye is waiting for. */
.js-motion [data-reveal="shot"]{transform:translate3d(0,22px,0) scale(.985);transition-duration:.85s}
.js-motion [data-reveal="shot"].is-in{transform:none}

@media (prefers-reduced-motion:reduce){
  .js-motion [data-reveal],
  .js-motion [data-reveal-group] > *{opacity:1!important;transform:none!important;transition:none!important}
}

/* Header: a hairline and a little more opacity once the page has moved. */
.site-header{will-change:background-color}

/* Nav underline that grows from the left rather than fading in. */
.nav-link{position:relative}
.nav-link::before{
  content:"";position:absolute;left:.6rem;right:.6rem;bottom:.18rem;height:1.5px;
  background:currentColor;transform:scaleX(0);transform-origin:left;opacity:.5;
  transition:transform .28s var(--ease-out);
}
.nav-link[aria-current="page"]::before{transform:scaleX(1)}
@media (hover:hover){.nav-link:hover::before{transform:scaleX(1)}}
@media (max-width:980px){.nav-link::before{display:none}}

/* Buttons get a real press, not a colour swap. */
.btn{transform:translateZ(0)}
.btn-primary,.btn-accent{position:relative;overflow:hidden}
.btn-primary::after,.btn-accent::after{
  content:"";position:absolute;inset:0;background:rgba(255,255,255,.14);
  opacity:0;transition:opacity .2s var(--ease-out);
}
.btn-primary:hover::after,.btn-accent:hover::after{opacity:1}

/* Cards lift by one pixel. Any more and it reads as a template. */
.card{transform:translateZ(0)}
@media (hover:hover){
  .card:hover{transform:translateY(-1px)}
  .card{transition:border-color .16s ease,box-shadow .16s ease,transform .16s var(--ease-out)}
}

/* The screenshot frame responds to the pointer just enough to feel alive. */
@media (hover:hover){
  .shot{transition:box-shadow .35s var(--ease-out),transform .35s var(--ease-out)}
  .shot:hover{transform:translateY(-2px)}
}

/* FAQ answers open rather than appear. details cannot be transitioned, so the
   inner block carries the motion after the browser has done the toggling. */
.faq-item[open] .a{animation:faq-in .34s var(--ease-out) both}
@keyframes faq-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.faq-item[open] .a{animation:none}}

/* A figure that counts up on arrival. The element keeps its final value in the
   markup, so no-JS and reduced-motion readers simply see the number. */
.stat-v{font-variant-numeric:tabular-nums}

/* The one piece of ambient motion on the site: a hairline that draws itself
   across a section break. Slow, once, and only when it scrolls into view. */
.rule-draw{height:1px;background:var(--line-strong);transform:scaleX(0);transform-origin:left;
  transition:transform 1s var(--ease-out)}
.rule-draw.is-in{transform:scaleX(1)}
@media (prefers-reduced-motion:reduce){.rule-draw{transform:none}}

/* Mobile menu slides down under its own header rather than popping. */
@media (max-width:980px){
  .site-header.nav-open .nav{animation:menu-in .26s var(--ease-out) both}
  @keyframes menu-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
}
@media (prefers-reduced-motion:reduce){
  .site-header.nav-open .nav{animation:none}
}

/* Dropdown menus: already transitioned above; give the items a touch of stagger. */
.nav-menu a{transition:background .13s ease,transform .18s var(--ease-out)}
@media (hover:hover){.nav-menu a:hover{transform:translateX(2px)}}

/* -- 15. Corrections after the first look --------------------------------
   Three things the first live pass got wrong.
   ----------------------------------------------------------------------- */

/* 1. The hero screenshot was ~530px wide holding a 2880px dashboard, which
      made every figure in it illegible — and an unreadable screenshot reads as
      a mock-up rather than as the product. The hero now stacks: the argument,
      then the product across the full width, large enough to actually read. */
.hero-stack{text-align:center}
.hero-stack h1{max-width:19ch;margin-inline:auto}
.hero-stack .lede-lg{margin-inline:auto;max-width:56ch}
.hero-stack .btn-row,.hero-stack .trust-row{justify-content:center}
/* .eyebrow is a <p>, so it inherited p{max-width:68ch}. justify-content then
   centred it inside that 68ch box rather than on the page, which put the label
   visibly left of the headline above it. */
.hero-stack .eyebrow{justify-content:center;max-width:none}
.hero-stack .eyebrow::after{content:"";width:22px;height:1px;background:var(--line-strong);flex:0 0 auto}

.shot-hero{
  margin-top:clamp(2.5rem,2rem + 2vw,4rem);
  border-radius:var(--r-lg);
  /* A little wider than the text column, so it reads as the subject of the
     page rather than as an illustration beside it. */
  max-width:1180px;margin-inline:auto;
}
/* Shown whole. At 1180px wide the capture is about 740px tall, which fits — and
   a screenshot sliced through the middle of a row reads as unfinished, which was
   the first thing wrong with it. */
.shot-hero .shot-inner{border-radius:inherit;overflow:hidden}
.shot-hero img{width:100%;display:block}

/* 2. The FAQ was set at the heading scale, which made six questions eat a
      whole screen on the home page. The compact variant is for pages where the
      FAQ is a footnote rather than the point. */
.faq-compact summary{font-size:1.02rem;font-weight:550;padding:var(--sp-4) 0;letter-spacing:-.01em}
.faq-compact summary::after{width:9px;height:9px;margin-top:.4em}
.faq-compact .a{padding-bottom:var(--sp-4);font-size:.96rem;line-height:1.6}
.faq-compact .a p{margin-bottom:var(--sp-2)}
/* Two columns on a wide screen, so six questions are one screen-third, not one
   screen. Each column keeps its own border so the rhythm survives the split. */
@media (min-width:860px){
  .faq-compact{max-width:none;columns:2;column-gap:var(--sp-7)}
  .faq-compact .faq-item{break-inside:avoid;page-break-inside:avoid}
}

/* 3. Feature-row screenshots get the same treatment as the hero: a fixed crop
      so the interesting part is at a readable scale instead of the whole page
      being squeezed into a third of the width. */
.frow-media .shot img,.frow-media.shot img{display:block}
.shot-tall{max-height:420px;overflow:hidden}
.shot-tall img{object-fit:cover;object-position:top left}

/* -- 16. Country panel ----------------------------------------------------
   The first version put a 110px flag in the middle of an empty white box,
   which looked like a placeholder waiting for a real image. A country pack's
   substance is the facts, so the panel shows the flag at a size worth showing
   and then the facts themselves, set like a specification.
   ----------------------------------------------------------------------- */
.country-card{
  border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  background:var(--surface);box-shadow:var(--sh-3);
}
.country-flag{
  position:relative;aspect-ratio:3/2;overflow:hidden;background:var(--raise);
  border-bottom:1px solid var(--line);
}
.country-flag svg{width:100%;height:100%;display:block;object-fit:cover}
/* A hairline of shade along the bottom so a white flag field (CZ, FR, CH) does
   not simply dissolve into the card under it. */
.country-flag::after{
  content:"";position:absolute;inset:auto 0 0 0;height:38%;
  background:linear-gradient(to top,rgba(10,11,13,.16),transparent);
}
.country-flag .country-name{
  position:absolute;left:var(--sp-5);bottom:var(--sp-4);z-index:2;
  font-family:var(--font-display);font-size:clamp(1.4rem,1.1rem + 1vw,2rem);
  font-weight:600;letter-spacing:-.03em;color:#fff;
  text-shadow:0 1px 14px rgba(10,11,13,.5);
}
.country-facts{display:grid;grid-template-columns:1fr 1fr;gap:0}
.country-facts div{padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--line)}
.country-facts div:nth-child(odd){border-right:1px solid var(--line)}
.country-facts dt{font-size:var(--t--2);font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-400);margin:0 0 .25rem}
.country-facts dd{margin:0;font-family:var(--font-display);font-weight:600;
  font-size:1.05rem;letter-spacing:-.02em;color:var(--ink-900);
  font-variant-numeric:tabular-nums}

/* The flag on the country index cards, given room rather than tucked in a corner. */
.country-tile-flag{display:block;width:100%;aspect-ratio:3/2;border-radius:var(--r-md);
  overflow:hidden;border:1px solid var(--line);margin-bottom:var(--sp-4)}
.country-tile-flag svg{width:100%;height:100%;display:block}

/* -- 14. Phones and tablets ----------------------------------------------- */
/* The grids in section 4 already collapse, and most sizes here are clamped
   against the viewport. What was left is the part that only shows up with a
   thumb: targets under 44px, comparison tables squeezing instead of scrolling,
   and call-to-action rows splitting into two half-width buttons. */

@media (max-width: 640px) {
  /* A button on a phone is hit, not clicked. 44px is the floor Apple and
     Google both publish, and everything here sat just under it. */
  .btn { min-height: 44px; padding-block: .85em; }
  .btn-sm { min-height: 40px; }
  .btn-lg { min-height: 50px; width: 100%; }

  /* A pair of calls to action side by side gives each about 150px, which is
     narrower than the labels want and too narrow to hit reliably. Stacked,
     each one is the width of the screen and the order reads top to bottom. */
  .btn-row { gap: var(--sp-2); }
  .btn-row > .btn { flex: 1 1 100%; }
  /* …except a quiet link, which is not a target the same way and reads better
     centred under the buttons than stretched across. */
  .btn-row > .btn-quiet { flex: 1 1 auto; }

  /* Lists of links in the footer need vertical room between them or the wrong
     one gets tapped. */
  .footer-col a, .footer-legal a { display: block; padding-block: .3rem; min-height: 38px; }
}

/* A comparison table is the one thing on this site that cannot be made narrow:
   five columns of ticks against a column of sentences. The wrapper was already
   set to scroll, but the table is `width:100%`, so it shrank to fit instead and
   the feature column came out three words to a line. A floor on its width makes
   the scroll the wrapper offers actually happen. */
@media (max-width: 760px) {
  .table-scroll > table.tbl { min-width: 620px; }
  table.tbl th, table.tbl td { padding: .7rem .8rem; font-size: .9rem; }
  /* What each row is about should stay readable while the ticks scroll past it. */
  .table-scroll > table.tbl th:first-child,
  .table-scroll > table.tbl td:first-child {
    position: sticky; left: 0; z-index: 1;
    background: var(--surface);
    box-shadow: 1px 0 0 var(--line);
    min-width: 200px; white-space: normal;
  }
  .table-scroll > table.tbl thead th:first-child { background: var(--raise); z-index: 2; }
  /* An edge that is cut off rather than faded looks like the end of the table. */
  .table-scroll { scrollbar-width: thin; overscroll-behavior-x: contain; }
}

@media (max-width: 560px) {
  /* Two columns of facts on a country page come to about 150px each, which is
     not enough for "QR-Rechnung and ISO 20022". */
  .country-facts { grid-template-columns: 1fr; }
  .country-facts div:nth-child(odd) { border-right: 0; }
  /* The eyebrow rules take a third of the line away from a short label. */
  .eyebrow { gap: var(--sp-2); }
  .eyebrow.center::before, .eyebrow.center::after { width: 14px; }
}

/* iOS zooms in on any field under 16px and does not zoom back out. Nothing on
   the marketing site takes much typing, but the contact form and the newsletter
   box do, and both inherit the site's body size. */
@media (max-width: 991.98px) {
  input, select, textarea { font-size: max(16px, 1rem); }
}

/* -- 17. Home: a working demo ------------------------------------------------
   The home page proves the product by letting the visitor use it on demo
   figures: book in a bill, sell a burger, reprice a dish. Every demo card
   carries a "Demo figures" pill and the plan it needs.
   ----------------------------------------------------------------------- */

/* Hero: the argument on the left, the chain that makes it on the right. */
.hx-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,1rem + 4vw,4.5rem);align-items:center}
.hx h1{max-width:14ch}
.hx .lede-lg{max-width:44ch}
.hx-terms{margin-top:var(--sp-4);max-width:52ch}
@media (max-width:900px){.hx-grid{grid-template-columns:minmax(0,1fr)}.hx h1{font-size:clamp(2.15rem,1.6rem + 3vw,3rem)}
  .hx-grid{gap:var(--sp-4)}.hx-copy{display:contents}.hx-copy > *{margin:0}.chain{margin:var(--sp-3) 0}.hx-copy > .eyebrow,.hx-copy > h1,.hx-copy > .lede-lg{order:0}.chain{order:1}.hx-copy > .btn-row{order:2;margin-top:0}.hx-copy > .hx-terms{order:3;margin-top:0}}

/* A demo card: the product's own look, small enough to read at once. */
.dcard{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);
  box-shadow:var(--sh-3);padding:clamp(1.25rem,1rem + 1vw,1.75rem);color:var(--ink-700)}
.dcard p{margin:0;max-width:none}
.dcard-sub{font-size:var(--t--2);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-400);margin-bottom:var(--sp-4)!important}
.demo-pill{position:absolute;top:var(--sp-3);right:var(--sp-3);font-size:var(--t--2);font-weight:600;
  padding:.15rem .55rem;border-radius:var(--r-pill);background:var(--raise);color:var(--ink-500);border:1px solid var(--line)}
.plan-tag{display:inline-block;margin-top:var(--sp-4);font-size:var(--t--2);font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-line);
  padding:.1rem .5rem;border-radius:var(--r-sm)}
.pill{display:inline-flex;align-items:center;font-size:var(--t--2);font-weight:600;padding:.18rem .6rem;
  border-radius:var(--r-pill);background:var(--raise);color:var(--ink-600);border:1px solid var(--line);white-space:nowrap}
.pill-pos{background:var(--pos-soft);color:var(--pos);border-color:transparent}
.pill-warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.pill-accent{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent-line)}
.neg{color:var(--neg)}
.link-btn{background:none;border:0;padding:var(--sp-3) 0 0;color:var(--accent);font-weight:550;cursor:pointer;min-height:44px}
.demo-honest{margin-top:var(--sp-4);max-width:70ch}
.demo-notes{list-style:none;padding:0;margin:var(--sp-5) 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-4)}
.demo-notes li{font-size:var(--t--1);color:var(--ink-500);line-height:1.5;padding-left:var(--sp-4);border-left:2px solid var(--line-strong)}
@media (max-width:820px){.demo-notes{grid-template-columns:minmax(0,1fr)}}

/* S1 chain */
.chain{max-width:480px;justify-self:end;width:100%}
@media (max-width:900px){.chain{justify-self:stretch;max-width:none}}
.chain-rows{list-style:none;margin:0;padding:0;position:relative}
.chain-rows::before{content:"";position:absolute;left:17px;top:18px;bottom:18px;width:2px;background:var(--line-strong)}
.chain-row{display:grid;grid-template-columns:36px 1fr;gap:var(--sp-4);padding:var(--sp-3) 0;position:relative}
.chain-ico{width:36px;height:36px;border-radius:50%;background:var(--surface);border:1px solid var(--line-strong);
  display:grid;place-items:center;color:var(--ink-600);position:relative;z-index:1}
.chain-ico.is-neg{background:var(--neg-soft);border-color:transparent;color:var(--neg)}
.chain-ico svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.chain-k{font-size:var(--t--1);color:var(--ink-400);font-weight:550}
.chain-v{color:var(--ink-700);font-size:.98rem;line-height:1.45}
.chain-v.strong{color:var(--ink-900);font-weight:600}
.chain-big{font-family:var(--font-display);font-size:var(--t-3);font-weight:600;letter-spacing:-.03em;line-height:1.15}
.chain-money{font-weight:700;font-size:1.02rem;
  margin-top:var(--sp-2)!important;font-variant-numeric:tabular-nums}
.chain.is-playing .chain-row{opacity:0;transform:translateY(8px);transition:opacity .3s ease-out,transform .3s ease-out}
.chain.is-playing .chain-row.is-in{opacity:1;transform:none}

/* S2 bill */
.billdemo{display:grid;grid-template-columns:5fr 7fr;gap:clamp(1.5rem,1rem + 2vw,3rem);align-items:start}
@media (max-width:900px){.billdemo{grid-template-columns:minmax(0,1fr)}}
.bill{position:relative;overflow:hidden;background:var(--raise);border:1px solid var(--line-strong);border-radius:var(--r-md);
  padding:var(--sp-5);font-family:var(--font-mono);font-size:.84rem;color:var(--ink-800);box-shadow:var(--sh-2);transform:rotate(-.6deg)}
.bill p{margin:0 0 var(--sp-2);max-width:none}
.bill-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-3);margin-bottom:var(--sp-4)}
.bill-qr{width:54px;height:54px;flex:0 0 auto;background:
  repeating-conic-gradient(var(--ink-900) 0 25%,transparent 0 50%) 0 0/9px 9px;border:3px solid var(--ink-900);opacity:.85}
.bill-lines{width:100%;border-collapse:collapse;margin-bottom:var(--sp-3)}
.bill-lines td{padding:.35rem .2rem;border-bottom:1px dashed var(--line-strong);white-space:nowrap}
.bill-lines td:first-child{white-space:normal}
.bill-lines td:last-child,.bill-lines td:nth-child(3){text-align:right}
.bill-all{display:none}
.bill-foot{font-size:.8rem;color:var(--ink-600)}
.bill-foot span{white-space:nowrap}
.bill-scan{position:absolute;left:0;right:0;top:-20%;height:18%;pointer-events:none;opacity:0;
  background:linear-gradient(to bottom,transparent,var(--accent-soft),transparent)}
[data-state="read"] .bill-scan{animation:billscan .7s ease-in-out}
@keyframes billscan{0%{top:-20%;opacity:1}100%{top:100%;opacity:1}}
@media (max-width:640px){
  .bill{transform:none;font-size:.8rem}
  .bill-lines .bill-more{display:none}
  .bill-all{display:block;margin-bottom:var(--sp-3)}
  .bill-all summary{cursor:pointer;color:var(--accent);min-height:36px}
  .bill-lines td:nth-child(3){display:none}
}
.bill-side{display:flex;flex-direction:column;gap:var(--sp-4)}
.bill-go{align-self:flex-start}
@media (max-width:640px){.bill-go{align-self:stretch}}
.fields{margin:0;display:grid;gap:.45rem}
.fields div{display:grid;grid-template-columns:9rem 1fr;gap:var(--sp-3);align-items:baseline;font-size:.93rem}
.fields dt{color:var(--ink-500)}
.fields dd{margin:0;color:var(--ink-900);font-variant-numeric:tabular-nums;display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline}
@media (max-width:480px){.fields div{grid-template-columns:minmax(0,1fr);gap:0}.fields dt{font-size:var(--t--2)}}
.tag{font-size:var(--t--2);font-weight:600;padding:.05rem .45rem;border-radius:var(--r-pill);background:var(--raise);color:var(--ink-500)}
.tag-pos{background:var(--pos-soft);color:var(--pos)}
.acct{margin-top:var(--sp-4)!important;font-weight:600;font-size:.95rem}
.acct-ok{color:var(--pos)}
.acct-bad{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--neg-soft);color:var(--neg)}
.acct-bad p{margin:0;font-weight:500}
.chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-4)}
.chip-in{font-size:var(--t--1);font-weight:600;padding:.2rem .6rem;border-radius:var(--r-pill);background:var(--pos-soft);color:var(--pos)}
.catches{display:flex;flex-direction:column;gap:var(--sp-3)}
.catch{border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);border:1px solid var(--line);background:var(--surface);border-left-width:4px}
.catch p{margin:0 0 .2rem;max-width:none}
.catch-neg{border-left-color:var(--neg);background:var(--neg-soft)}
.catch-warn{border-left-color:var(--warn);background:var(--warn-soft)}
.catch-pos{border-left-color:var(--pos);background:var(--pos-soft)}
.catch-k{font-size:var(--t--2);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-500)}
.catch-big{font-family:var(--font-display);font-weight:600;font-size:var(--t-1);color:var(--ink-900);letter-spacing:-.02em}
.catch-neg .catch-big{color:var(--neg);font-size:var(--t-2)}
.catch-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-3) 0 var(--sp-2)}
.switch{position:relative;display:flex;align-items:center;gap:var(--sp-3);cursor:pointer;font-size:.95rem;color:var(--ink-700);min-height:44px}
.switch input{position:absolute;opacity:0;width:1px;height:1px}
.switch-ui{width:42px;height:24px;border-radius:12px;background:var(--line-strong);position:relative;flex:0 0 auto;transition:background .2s}
.switch-ui::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .2s}
.switch input:checked + .switch-ui{background:var(--neg)}
.switch input:checked + .switch-ui::after{transform:translateX(18px)}
.switch input:focus-visible + .switch-ui{outline:2px solid var(--focus);outline-offset:2px}
.is-fraud .bill [data-iban]{color:var(--neg);font-weight:700}
/* Steps of the bill: hidden until reached. */
[data-state="start"] [data-step="read"],
[data-state="start"] [data-step="caught"],
[data-state="start"] [data-step="stock"],
[data-state="read"] [data-step="stock"],
[data-state="read"] [data-step="caught"],
[data-state="stock"] [data-step="caught"]{display:none}
.home-js [data-bill] [data-step]{animation:stepin .4s ease-out}
@keyframes stepin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* S3 till */
.till-grid{display:grid;grid-template-columns:4fr 8fr;gap:clamp(1.25rem,1rem + 2vw,2.5rem);align-items:center;margin-bottom:var(--sp-5)}
@media (max-width:760px){.till-grid{grid-template-columns:minmax(0,1fr)}}
.till-btn{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);width:100%;min-height:72px;
  border:0;border-radius:var(--r-lg);background:var(--ink-900);color:var(--paper);font:600 var(--t-1)/1.2 var(--font-display);
  padding:var(--sp-4);cursor:pointer;box-shadow:var(--sh-2);transition:transform .08s}
.till-btn span:first-child{font-size:1.6rem}
.till-btn:active{transform:scale(.98)}
.till-sold{text-align:center;margin-top:var(--sp-3)!important;color:var(--ink-500);font-size:var(--t--1);font-variant-numeric:tabular-nums}
.till-bars{display:flex;flex-direction:column;gap:var(--sp-3)}
.bar{position:relative;display:grid;grid-template-columns:1fr auto;gap:.3rem var(--sp-3);align-items:baseline}
.bar-k{font-size:.93rem;color:var(--ink-700)}
.bar-v{font-size:.93rem;color:var(--ink-500);font-variant-numeric:tabular-nums}
.bar-v b{color:var(--ink-900)}
.bar-track{grid-column:1/-1;height:8px;border-radius:4px;background:var(--raise);overflow:hidden}
.bar-track i{display:block;height:100%;background:var(--ink-700);border-radius:4px;transition:width .3s ease}
.fly{position:absolute;right:5.5rem;top:-.1rem;font-size:var(--t--2);font-weight:700;color:var(--neg);background:var(--neg-soft);
  padding:.05rem .45rem;border-radius:var(--r-pill);opacity:0;pointer-events:none}
.fly.is-on{animation:fly .9s ease-out}
@keyframes fly{0%{opacity:0;transform:translateY(-10px)}20%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0;transform:translateY(6px)}}
.bar-cola{font-size:var(--t--1);color:var(--ink-500);padding:.4rem .6rem;border-radius:var(--r-sm);background:var(--raise);animation:stepin .4s ease-out}
.till-line{font-size:.97rem;color:var(--ink-800);padding:.45rem 0;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}
.till-line.warn{color:var(--warn);font-weight:600}
.dcard .fine{margin-top:var(--sp-2)}
.tillstrip{margin-top:var(--sp-6)}
.tillstrip ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}
.tillstrip li{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;
  padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);font-size:.95rem}
.tillstrip li b{color:var(--ink-900);font-family:var(--font-display)}
.tills-head{font-size:var(--t--1);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-400);margin-bottom:var(--sp-3)}
@media (max-width:760px){.tillstrip ul{grid-template-columns:minmax(0,1fr)}}

/* S4 menu prices */
.menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5);align-items:start}
.menu-grid .mmap{grid-column:1/-1}
@media (max-width:900px){.menu-grid{grid-template-columns:minmax(0,1fr)}}
.worth-head{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);align-items:center;padding-bottom:var(--sp-4);
  border-bottom:1px solid var(--line);margin-bottom:var(--sp-4)!important;padding-right:6rem;font-family:var(--font-display);color:var(--ink-900)}
.worth-row{display:grid;grid-template-columns:1fr auto;gap:var(--sp-4);margin-bottom:var(--sp-4)}
.worth-row p{font-size:.93rem;line-height:1.5}
.worth-t{font-weight:600;color:var(--ink-900);font-size:1.02rem!important;margin-bottom:.3rem!important}
.worth-v{font-family:var(--font-display);font-weight:600;font-size:var(--t-3);color:var(--pos);letter-spacing:-.03em;
  text-align:right;line-height:1.1;font-variant-numeric:tabular-nums}
.worth-v small{display:block;font-size:var(--t--1);color:var(--ink-500);font-weight:500;letter-spacing:0}
@media (max-width:480px){.worth-row{grid-template-columns:minmax(0,1fr)}.worth-v{text-align:left}.worth-head{padding-right:0;padding-top:var(--sp-5)}}
.slider-k{font-weight:600;color:var(--ink-900);padding-right:6rem}
.slider-body{position:relative;width:170px;height:170px;margin:var(--sp-4) auto}
.ring{width:100%;height:100%;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:12}
.ring-bg{stroke:var(--raise)}
.ring-fg{stroke:var(--neg);stroke-linecap:round;transition:stroke-dashoffset .2s ease,stroke .2s}
[data-state="warn"] .ring-fg{stroke:var(--warn)}
[data-state="pos"] .ring-fg{stroke:var(--pos)}
.ring-mid{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring-mid b{font-family:var(--font-display);font-size:var(--t-3);color:var(--ink-900);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ring-mid span{font-size:var(--t--2);color:var(--ink-500);max-width:108px;text-align:center;line-height:1.25}
.slider-price{text-align:center;font-family:var(--font-display);font-size:var(--t-2);color:var(--ink-900);margin-bottom:var(--sp-2)!important}
.slider input[type=range],.calc2 input[type=range]{width:100%;height:44px;accent-color:var(--accent)}
.slider-mark{display:flex;justify-content:space-between;gap:var(--sp-2);font-size:var(--t--2);color:var(--ink-500)}
.slider-money{margin-top:var(--sp-4)!important;text-align:center;font-family:var(--font-display);font-weight:600;
  font-size:var(--t-2);color:var(--pos);font-variant-numeric:tabular-nums}
.mmap-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);
  padding:var(--sp-3) 0 var(--sp-6) var(--sp-6);margin-bottom:var(--sp-3)}
.mmap-y,.mmap-x{position:absolute;font-size:var(--t--2);font-weight:600;color:var(--ink-400);letter-spacing:.04em;text-transform:uppercase}
.mmap-y{left:0;top:50%;transform:translate(-42%,-50%) rotate(-90deg);white-space:nowrap}
.mmap-x{right:0;bottom:var(--sp-2)}
.mmap-dot{border:1px solid var(--line);border-radius:var(--r-md);background:var(--raise);padding:var(--sp-3) var(--sp-4)}
.mmap-dot summary{cursor:pointer;display:flex;align-items:center;gap:var(--sp-2);font-weight:600;color:var(--ink-900);min-height:32px;list-style:none}
.mmap-dot summary::-webkit-details-marker{display:none}
.mmap-head{margin-left:auto;font-size:var(--t--2);font-weight:600;color:var(--ink-500);white-space:nowrap}
.dot-mark{width:12px;height:12px;border-radius:50%;background:var(--ink-400);flex:0 0 auto}
.q-tr .dot-mark{background:var(--pos)}
.q-br .dot-mark{background:var(--neg)}
.q-tl .dot-mark{background:var(--accent)}
.q-bl .dot-mark{background:var(--ink-300)}
.mmap-dot p{margin-top:var(--sp-2)!important;font-size:.92rem;color:var(--ink-600);line-height:1.5}
.mmap-dot[open]{background:var(--surface);box-shadow:var(--sh-2)}
@media (max-width:640px){.mmap-grid{grid-template-columns:minmax(0,1fr);padding:var(--sp-5) 0 0}.mmap-y,.mmap-x{display:none}.mmap-dot summary{min-height:44px}}
.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3) var(--sp-5);margin-top:var(--sp-6)}
.cta-row p{margin:0}

/* S5 calculator on the dark band */
.section-ink .eyebrow{color:var(--on-panel-muted)}
.presets{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-5)}
.chip-btn{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-700);border-radius:var(--r-pill);
  padding:.45rem .9rem;font:550 var(--t--1)/1.2 var(--font-text);cursor:pointer;min-height:40px}
.chip-btn.is-on{background:var(--ink-900);color:var(--paper);border-color:var(--ink-900)}
.section-ink .chip-btn{background:transparent;color:var(--on-panel);border-color:rgba(255,255,255,.3)}
.section-ink .chip-btn.is-on{background:#fff;color:#0a0b0d;border-color:#fff}
.calc2{background:var(--surface);color:var(--ink-700);border-radius:var(--r-xl);padding:clamp(1.25rem,1rem + 2vw,2.25rem);
  display:flex;flex-direction:column;gap:var(--sp-4);box-shadow:0 30px 80px -30px rgba(0,0,0,.6)}
.calc2 .fine{margin:0}
.calc-field{display:flex;flex-direction:column;gap:var(--sp-2);font-size:var(--t--1);font-weight:600;color:var(--ink-600)}
.calc-field > span:first-child{display:flex;justify-content:space-between;gap:var(--sp-3)}
.calc-field b{color:var(--ink-900);font-variant-numeric:tabular-nums}
.calc-field small{font-weight:400;color:var(--ink-500)}
.calc-input{display:flex;align-items:center;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--paper);padding-right:var(--sp-4)}
.calc-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.calc-input input{flex:1;min-width:0;border:0;background:transparent;outline:0;color:var(--ink-900);
  font:600 var(--t-2)/1.2 var(--font-display);padding:.6rem var(--sp-4);font-variant-numeric:tabular-nums}
.calc-input b{color:var(--ink-500)}
.fc-bar{position:relative;display:flex;height:10px;border-radius:5px;background:var(--raise);margin:var(--sp-2) 0 var(--sp-4)}
.fc-ok{display:block;width:33.3%;background:var(--pos);border-radius:5px 0 0 5px}
.fc-over{display:block;background:var(--neg);transition:width .2s}
.fc-bar em{position:absolute;left:33.3%;top:12px;transform:translateX(-50%);font-style:normal;font-size:var(--t--2);color:var(--ink-500)}
.calc2-out{padding-top:var(--sp-4);border-top:1px solid var(--line)}
.calc2-out p{margin:0}
.calc2-big{font-family:var(--font-display);font-weight:600;font-size:clamp(1.7rem,1.3rem + 2vw,2.6rem);letter-spacing:-.03em;color:var(--ink-900);line-height:1.1;font-variant-numeric:tabular-nums}
.calc2-year{color:var(--ink-500);margin-top:.3rem!important}
.calc2-year span{color:var(--ink-900);font-weight:600}
.calc2-over{margin-top:var(--sp-3)!important;color:var(--neg);font-weight:600}
.calc2-ok{margin-top:var(--sp-3)!important;color:var(--pos);font-weight:600}

/* S6 moments */
.moments3{align-items:start}
.m3 > summary{list-style:none;cursor:default;display:flex;flex-direction:column;gap:var(--sp-2);padding-right:5.5rem}
.m3 > summary::-webkit-details-marker{display:none}
.m3 > summary h3{font-size:var(--t-1);margin:0}
.m3 > summary .plan-tag{margin-top:0;align-self:flex-start}
.m3 > .muted{margin:var(--sp-3) 0!important;font-size:.93rem}
@media (max-width:640px){
  .m3 > summary{cursor:pointer;padding-right:1.5rem;padding-top:var(--sp-5)}
  .m3 > summary::after{content:"+";position:absolute;right:var(--sp-4);bottom:var(--sp-4);font-size:1.3rem;color:var(--ink-400)}
  .m3[open] > summary::after{content:"\2212"}
}
.tips{margin-top:var(--sp-3)}
.lane{display:grid;grid-template-columns:3.5rem 1fr auto;gap:var(--sp-3);align-items:center;padding:.45rem 0;border-bottom:1px solid var(--line);font-size:.93rem}
.lane span{color:var(--ink-500);font-size:var(--t--1)}
.lane em{font-style:normal;font-weight:700;color:var(--pos);font-variant-numeric:tabular-nums}
.coins{list-style:none;padding:0;margin:var(--sp-3) 0;display:flex;flex-direction:column;gap:.3rem;font-size:var(--t--1);color:var(--ink-600)}
.is-running .coins li{opacity:.3;transition:opacity .3s}
.is-running .coins li.is-in{opacity:1}
.tips-sum{font-weight:600;color:var(--pos);font-size:.93rem;margin-bottom:var(--sp-3)!important}
.mail{margin-top:var(--sp-3);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);font-size:.93rem;display:flex;flex-direction:column;gap:.35rem}
.mail-removed{margin-top:var(--sp-2);padding-left:var(--sp-3);border-left:3px solid var(--neg)}
.mail-removed p{color:var(--ink-600)}
.fmt-tabs{display:flex;gap:var(--sp-2);overflow-x:auto;margin:var(--sp-3) 0;padding-bottom:2px;scrollbar-width:thin}
.fmt-tabs .chip-btn{flex:0 0 auto}
.tree{list-style:none;padding:0;margin:0 0 var(--sp-3);font-family:var(--font-mono);font-size:.82rem;color:var(--ink-700);display:flex;flex-direction:column;gap:.25rem}
.tree details summary{cursor:pointer;color:var(--accent)}
.tree details p{font-family:var(--font-text);font-size:var(--t--1);color:var(--ink-500);margin:.2rem 0 0 1.4rem}

/* S7 first weeks */
.weeks{max-width:46rem;margin-top:0}
.weeks li.is-key{background:var(--warn-soft);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-3) var(--sp-3) 3rem}
.weeks li.is-key::before{left:.8rem;top:calc(var(--sp-3) + .1em)}
.weeks .pill{display:table;margin:.35rem 0 .1rem;white-space:normal}

/* S8 prices, trust, close */
.prices3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-4);align-items:stretch}
@media (max-width:820px){.prices3{grid-template-columns:minmax(0,1fr)}.p3-pop{order:-1;margin-top:var(--sp-3)}}
.p3{position:relative;border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-5);background:var(--surface)}
.p3 p{margin:0}
.p3-pop{border:2px solid var(--accent);box-shadow:var(--sh-2)}
.p3-pop .pill{position:absolute;top:-.8rem;left:var(--sp-5)}
.p3-name{font-weight:700;color:var(--ink-900);letter-spacing:.02em}
.p3-amt{font-family:var(--font-display);font-size:var(--t-4);font-weight:600;color:var(--ink-900);letter-spacing:-.03em;margin:var(--sp-2) 0!important}
.p3-amt small{font-size:var(--t--1);font-family:var(--font-text);font-weight:500;color:var(--ink-500);letter-spacing:0}
.p3 .muted{font-size:.93rem;line-height:1.5}
.trust3{margin-top:var(--sp-7)}
.trust3 > div{border-top:2px solid var(--ink-900);padding-top:var(--sp-4)}
.trust3 h3{font-size:var(--t-1);margin-bottom:var(--sp-2)}
.trust3 p{color:var(--ink-500);font-size:.95rem;margin:0}
.cta-echo{font-family:var(--font-display);font-size:var(--t-2);color:#fff;margin-top:var(--sp-4)!important}
.cta-terms{color:var(--on-panel-muted);margin:var(--sp-4) auto 0!important}

@media (prefers-reduced-motion: reduce){
  .chain .chain-row,[data-step],.bar-track i,.fly,.ring-fg,.fc-over,.bar-cola,.bill-scan{animation:none!important;transition:none!important}
}

/* S4b AI: how it works, then try it.
   Three steps left to right — the figures, the AI reading them, the answers —
   with dots travelling along the wires between them. */
.ai-flow{display:grid;grid-template-columns:1fr 64px 1fr 64px 1fr;align-items:center;gap:0;margin-bottom:clamp(2.5rem,2rem + 2vw,4rem)}
.ai-step{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--sh-2);
  padding:var(--sp-5);height:100%;display:flex;flex-direction:column;gap:var(--sp-3)}
.ai-step p{margin:0}
.ai-step-n{display:flex;align-items:center;gap:var(--sp-2);font-family:var(--font-display);font-weight:600;font-size:var(--t-1);color:var(--ink-900)}
.ai-step-n span{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff;font-size:var(--t--1);flex:0 0 auto}
.ai-step-t{font-size:.93rem;color:var(--ink-500);line-height:1.5}
.ai-src{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.ai-src li{display:flex;align-items:center;gap:var(--sp-2);padding:.45rem .7rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--raise);font-size:.93rem;color:var(--ink-800)}
.ai-src i{font-style:normal}
.ai-step-core{align-items:center;text-align:center}
.ai-step-core .ai-step-n{justify-content:center}
.ai-core{position:relative;width:112px;height:112px;margin:var(--sp-3) auto;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 35% 30%,var(--accent),var(--accent-ink));color:#fff;
  font:700 2rem/1 var(--font-display);letter-spacing:-.03em;box-shadow:0 0 0 10px var(--accent-soft),0 18px 40px -12px var(--accent)}
.ai-core::after{content:"";position:absolute;inset:-10px;border-radius:50%;border:2px solid var(--accent-line);animation:aipulse 2.4s ease-out infinite}
@keyframes aipulse{0%{transform:scale(1);opacity:.9}100%{transform:scale(1.35);opacity:0}}
.ai-wire{position:relative;height:2px;background:var(--line-strong);margin:0 6px}
.ai-wire i{position:absolute;top:-3px;left:0;width:8px;height:8px;border-radius:50%;background:var(--accent);animation:aiwire 1.8s linear infinite}
.ai-wire i:nth-child(2){animation-delay:.6s}
.ai-wire i:nth-child(3){animation-delay:1.2s}
@keyframes aiwire{0%{left:0;opacity:0}15%{opacity:1}85%{opacity:1}100%{left:calc(100% - 8px);opacity:0}}
.ai-out{display:grid;gap:var(--sp-2)}
.ai-out-card{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .5rem;padding:.55rem .75rem;border-radius:var(--r-md);background:var(--raise);border:1px solid var(--line)}
.ai-out-card small{flex:1 1 100%;font-size:var(--t--2);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-400)}
.ai-out-card b{font-family:var(--font-display);font-size:1.08rem;color:var(--ink-900);letter-spacing:-.01em}
.ai-out-card b.pos{color:var(--pos)}
.ai-out-card span{font-size:var(--t--1);color:var(--ink-500)}
.pos{color:var(--pos)}
@media (max-width:980px){
  .ai-flow{grid-template-columns:minmax(0,1fr);gap:0}
  .ai-wire{width:2px;height:40px;margin:6px auto}
  .ai-wire i{left:-3px;top:0;animation-name:aiwirev}
}
@keyframes aiwirev{0%{top:0;opacity:0}15%{opacity:1}85%{opacity:1}100%{top:calc(100% - 8px);opacity:0}}

.ai-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(1.5rem,1rem + 3vw,4rem);align-items:start}
@media (max-width:900px){.ai-grid{grid-template-columns:minmax(0,1fr)}}
.ai-try{font-size:var(--t-2);margin-bottom:var(--sp-4)}
.ai-points{list-style:none;padding:0;margin:0;display:grid;gap:var(--sp-4)}
.ai-points li{padding-left:var(--sp-5);position:relative;color:var(--ink-600);line-height:1.5}
.ai-points li::before{content:"";position:absolute;left:0;top:.5em;width:10px;height:10px;border-radius:50%;background:var(--accent)}
.ai-points b{display:block;color:var(--ink-900)}
.ai-chat{display:flex;flex-direction:column;gap:var(--sp-4)}
.ai-head{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--t--2);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-400);padding-right:7rem}
.ai-dot{width:9px;height:9px;border-radius:50%;background:var(--pos);box-shadow:0 0 0 3px var(--pos-soft)}
.ai-log{display:flex;flex-direction:column;gap:var(--sp-3);min-height:12rem}
.ai-msg{max-width:88%;padding:.7rem .95rem;border-radius:16px;line-height:1.5;font-size:.95rem;margin:0}
.ai-me{align-self:flex-end;background:var(--ink-900);color:var(--paper);border-bottom-right-radius:4px}
.ai-bot{align-self:flex-start;background:var(--accent-soft);color:var(--ink-800);border:1px solid var(--accent-line);border-bottom-left-radius:4px}
.ai-bot.is-typing:empty::after{content:"• • •";letter-spacing:.2em;color:var(--accent);animation:aitype 1s steps(3) infinite}
@keyframes aitype{0%{opacity:.3}50%{opacity:1}100%{opacity:.3}}
.ai-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.ai-chips .chip-btn{text-align:left;white-space:normal}
.ai-form{display:flex;gap:var(--sp-2)}
.ai-form input{flex:1;min-width:0;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--paper);color:var(--ink-900);padding:.6rem .8rem;font:inherit}
.ai-form input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.ai-chat .plan-tag{margin-top:0;align-self:flex-start}
@media (prefers-reduced-motion: reduce){.ai-core::after,.ai-wire i,.ai-bot.is-typing:empty::after{animation:none!important}.ai-wire i{display:none}}

/* S2 bill, as a modern invoice rather than a till receipt. */
.bill.inv{transform:none;font-family:var(--font-text);font-size:.93rem;background:var(--surface);color:var(--ink-800);
  border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--sh-3);padding:0;overflow:hidden}
.inv-top{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-5);
  background:linear-gradient(135deg,var(--accent-soft),var(--surface));border-bottom:1px solid var(--line)}
.inv-from{display:flex;align-items:center;gap:var(--sp-3)}
.inv-from b{display:block;color:var(--ink-900);font-family:var(--font-display);font-size:1.05rem}
.inv-from small,.inv-title small{display:block;font-size:var(--t--2);color:var(--ink-500);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.inv-logo{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--ink-900);color:var(--paper);
  font:700 .85rem/1 var(--font-display);letter-spacing:.02em;flex:0 0 auto}
.inv-title{text-align:right}
.inv-title b{font-family:var(--font-display);font-size:1.05rem;color:var(--ink-900);font-variant-numeric:tabular-nums}
.inv-lines{width:100%;border-collapse:collapse;margin:0}
.inv-lines th{font-size:var(--t--2);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-400);
  text-align:left;padding:var(--sp-3) var(--sp-5) var(--sp-2)}
.inv-lines td{padding:.6rem var(--sp-5);border-top:1px solid var(--line);font-variant-numeric:tabular-nums;white-space:nowrap}
.inv-lines td:first-child{white-space:normal;color:var(--ink-900);font-weight:550}
.inv-lines th:not(:first-child),.inv-lines td:not(:first-child){text-align:right;padding-left:var(--sp-2)}
.inv-lines td:not(:first-child){color:var(--ink-600)}
.inv-lines td:last-child{color:var(--ink-900);font-weight:600}
.inv .bill-all{padding:0 var(--sp-5)}
.inv .bill-all .inv-lines td{padding-left:0;padding-right:0}
.inv-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--sp-4) var(--sp-5);padding:var(--sp-5);
  border-top:1px solid var(--line);background:var(--raise)}
.inv-pay{display:flex;align-items:center;gap:var(--sp-3)}
.inv-pay p{margin:0;display:flex;flex-direction:column;gap:.1rem;font-variant-numeric:tabular-nums}
.inv-pay small{font-size:var(--t--2);color:var(--ink-500)}
.inv-pay span{font-weight:600;color:var(--ink-900);font-size:.88rem;white-space:nowrap}
.inv-qr{width:72px;height:72px;border-radius:6px;flex:0 0 auto;box-shadow:0 0 0 1px var(--line)}
.inv-sum{margin:0;display:grid;gap:.25rem;flex:1 1 12rem;min-width:0}
.inv-sum div{display:flex;justify-content:space-between;gap:var(--sp-4);font-size:.88rem;color:var(--ink-600);font-variant-numeric:tabular-nums}
.inv-sum dd{margin:0;white-space:nowrap}
.inv-sum .inv-total{margin-top:.3rem;padding-top:.45rem;border-top:1px solid var(--line-strong);color:var(--ink-900);font-weight:700;font-size:1.05rem}
.is-fraud .inv [data-iban]{color:var(--neg)}
@media (max-width:640px){
  .inv-top,.inv-bottom{padding:var(--sp-4)}
  .inv-lines th,.inv-lines td{padding-left:var(--sp-4);padding-right:var(--sp-4)}
  .inv-lines th:nth-child(3),.inv-lines td:nth-child(3){display:none}
  .inv .bill-all{padding:var(--sp-2) var(--sp-4)}
  .inv-bottom{flex-direction:column;align-items:stretch}
  .inv-sum{min-width:0}
  .inv-lines .bill-more{display:none}
}

/* S6, redrawn: the evening as a timeline, the morning email as an email, the pack as a ZIP. */
.tl{margin-top:var(--sp-4)}
.tl p{margin:0}
.tl-ruler{position:relative;height:18px;margin:0 3.4rem 0 3.4rem;font-size:var(--t--2);color:var(--ink-400);font-variant-numeric:tabular-nums}
.tl-ruler span{position:absolute;top:0;transform:translateX(-50%)}
.tl-ruler span:first-child{transform:none}
.tl-lane{display:grid;grid-template-columns:3rem 1fr 3.4rem;align-items:center;gap:.4rem;height:40px}
.tl-lane b{font-size:.9rem;color:var(--ink-900)}
.tl-lane em{font-style:normal;font-weight:700;color:var(--pos);text-align:right;font-size:.88rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.tl-track{position:relative;height:100%;border-bottom:1px dashed var(--line)}
.tl-shift{position:absolute;top:11px;height:16px;border-radius:8px;opacity:.9}
.tl-shift.s1{background:var(--accent-soft);border:1px solid var(--accent-line)}
.tl-shift.s2{background:var(--pos-soft);border:1px solid color-mix(in srgb,var(--pos) 30%,transparent)}
.tl-shift.s3{background:var(--warn-soft);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent)}
.tl-pool b{color:var(--ink-500);font-weight:600;font-size:.72rem;line-height:1.1}
.tl-pool em{color:var(--ink-500);font-weight:600;font-size:.78rem}
.coin{position:absolute;top:8px;transform:translateX(-50%);min-width:22px;height:22px;padding:0 5px;border-radius:11px;
  display:grid;place-items:center;background:#f5b700;color:#3a2a00;font:700 .68rem/1 var(--font-text);
  box-shadow:0 2px 6px rgba(160,110,0,.35);font-variant-numeric:tabular-nums}
.is-running .coin{opacity:0;transform:translate(-50%,-14px)}
.is-running .coin.is-in{opacity:1;transform:translate(-50%,0);transition:opacity .25s,transform .35s cubic-bezier(.3,1.6,.5,1)}
.tl-note{font-size:var(--t--2);color:var(--ink-400);margin:.4rem 0 .6rem 3.4rem!important}
.tl .tips-sum{margin:var(--sp-2) 0 var(--sp-3)!important}

.mail2{margin-top:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper);overflow:hidden}
.mail2 p{margin:0}
.mail2-head{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);background:var(--surface)}
.mail2-head b{display:block;font-size:.92rem;color:var(--ink-900)}
.mail2-head small{font-size:var(--t--2);color:var(--ink-500)}
.mail2-logo{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--ink-900);color:var(--paper);font:700 .9rem/1 var(--font-display)}
.mail2-subj{padding:var(--sp-4) var(--sp-4) var(--sp-3);font-family:var(--font-display);font-weight:600;font-size:1.02rem;color:var(--ink-900);line-height:1.35}
.mail2-kpis{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2);padding:0 var(--sp-4)}
.mail2-kpis div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:.5rem .7rem}
.mail2-kpis small{display:block;font-size:var(--t--2);color:var(--ink-500)}
.mail2-kpis b{font-family:var(--font-display);font-size:1.25rem;color:var(--ink-900);font-variant-numeric:tabular-nums}
.mail2-warn{margin:var(--sp-3) var(--sp-4) 0!important;padding:.45rem .7rem;border-radius:var(--r-md);background:var(--warn-soft);color:var(--warn);font-size:.88rem;font-weight:600}
.mail2-removed{margin:var(--sp-3) var(--sp-4) var(--sp-4);padding:.55rem .75rem;border-radius:var(--r-md);background:var(--neg-soft);font-size:.88rem;color:var(--ink-700)}
.mail2-removed p:first-child{color:var(--neg);margin-bottom:.15rem}

.zip{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-4);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper)}
.zip-ico{width:42px;height:48px;border-radius:6px 14px 6px 6px;display:grid;place-items:center;flex:0 0 auto;
  background:linear-gradient(160deg,#f5b700,#e08a00);color:#fff;font:800 .72rem/1 var(--font-display);letter-spacing:.06em}
.zip b{display:block;font-size:.88rem;color:var(--ink-900);word-break:break-all}
.zip small{font-size:var(--t--2);color:var(--ink-500)}
.fmt-seg{display:flex;flex-wrap:nowrap;gap:2px;margin:var(--sp-3) 0;padding:4px;border-radius:var(--r-md);background:var(--raise)}
.fmt-seg button{flex:1 1 auto;border:0;background:transparent;border-radius:7px;padding:.4rem .3rem;font:600 .74rem/1.2 var(--font-text);white-space:nowrap;color:var(--ink-600);cursor:pointer;min-height:34px}
.fmt-seg button.is-on{background:var(--surface);color:var(--ink-900);box-shadow:var(--sh-1)}
.files{list-style:none;padding:0;margin:0 0 var(--sp-3);display:flex;flex-direction:column}
.files li{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-3);padding:.4rem 0;border-bottom:1px solid var(--line);font-family:var(--font-mono);font-size:.8rem;color:var(--ink-700)}
.files li > i{font-style:normal;font-family:var(--font-text);font-weight:700;color:var(--pos)}
.files li.warn > i{color:var(--warn)}
.files details summary{cursor:pointer;color:var(--accent);list-style:none}
.files details p{font-family:var(--font-text);font-size:var(--t--1);color:var(--ink-500);margin:.2rem 0 0}
