/*
 * Kobo Publishing design TOKENS: the one source of colour, type, spacing, radius and shadow values (ops#544/#610 redesign, 28 Oct 2026).
 * Used by the static site (build.py puts this in front of kobo.css) and by the app (vue/src/assets/kobo-tokens.css is a synced copy:
 * run scripts/sync-design.sh; a test fails when the copy differs). Values are the front page's, exactly. Change a value here and it flows to every page.
 */
:root{
 /* colour */
 --o:#C94D00;--o2:#A83F00;--brand:#E85C00;--ink:#1f1e33;--mut:#4d4c66;--line:#e6e4ee;--soft:#fbf6f2;--bg:#fff;
 --ink-footer:#1f1e33;--ink-footer-text:#d9d8e6;--ink-footer-mut:#b4b3c8;
 --ok:#1b6b3a;--ok-bg:#e8f5ed;--warn:#8a5a00;--warn-bg:#fff3d6;--err:#a4262c;--err-bg:#fdeaea;--focus:#1f1e33;
 /* neutral and accent steps (the app's utility classes map onto these) */
 --n-50:#fbf6f2;--n-100:#f4efeb;--n-200:#e6e4ee;--n-300:#cfcddc;--n-400:#8c8aa6;--n-500:#6a6985;--n-600:#4d4c66;--n-700:#3c3b55;--n-800:#2b2a42;--n-900:#1f1e33;
 --o-100:#fff1e8;--o-200:#ffd9bf;--o-300:#ffb98a;--o-400:#f58a45;--o-500:#E85C00;--o-600:#C94D00;--o-700:#A83F00;
 /* type */
 --font:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
 --fs-body:17px;--fs-body-d:18px;--lh-body:1.55;--fs-h1:30px;--fs-h1-d:44px;--fs-h2:25px;--fs-h3:18px;--fs-small:14px;--fs-lead:18px;
 /* shape and space */
 --r-btn:10px;--r-card:14px;--r-pill:999px;--r-lg:18px;--wrap:1040px;
 --sp-1:6px;--sp-2:12px;--sp-3:18px;--sp-4:28px;--sp-5:44px;
 --sh-1:0 1px 2px rgba(31,30,51,.06),0 6px 18px rgba(31,30,51,.08);--sh-2:0 2px 4px rgba(31,30,51,.08),0 14px 34px rgba(31,30,51,.14);
}

/*
 * Kobo Publishing design system, SHARED components (ops#544/#610). Used by the static site (kobopublishing.com) AND by the app (vue/src/assets/kobo-shared.css is a
 * synced copy: scripts/sync-design.sh). Each component has its legacy front-page class and a "k-" class that is the same rule, so the app and the site cannot drift:
 * a change to a button, card, brand mark or footer here changes it on every page of both. Tokens come from kobo-tokens.css.
 */
.k-brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:17px;white-space:nowrap;color:var(--ink);text-decoration:none}
.k-brand i{display:inline-flex;width:34px;height:34px;border-radius:50%;background:var(--brand);color:#fff;align-items:center;justify-content:center;font-style:normal;font-size:20px}
.k-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border-radius:10px;font-weight:700;font-size:17px;text-decoration:none;border:2px solid var(--o);background:var(--o);color:#fff}
.k-btn:hover{background:var(--o2);border-color:var(--o2)}
.k-btn.ghost{background:#fff;color:var(--o2)}
.k-btn.ghost:hover{background:var(--soft)}
.k-btn.sm{min-height:42px;padding:0 12px;font-size:14px;white-space:nowrap}
.k-card{border:1px solid var(--line);border-radius:14px;padding:16px;background:#fff}
.k-card b{display:block;font-size:18px;margin-bottom:2px}
.k-footer{background:var(--ink-footer);color:var(--ink-footer-text);padding:40px 0 28px;font-size:15px;line-height:1.5}
.k-footer a{color:#fff;text-decoration:none}
.k-footer a:hover{text-decoration:underline}
.k-footer ul{list-style:none;margin:0;padding:0}
.k-footer h2{font-size:13px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-footer-mut);margin:0 0 8px}
.k-footer .k-brand{color:#fff;font-size:18px;min-height:44px}
.kf-social a{min-width:44px}
.kf-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px 18px}
.kf-brand,.kf-talk{grid-column:1/-1}
.kf-brand p{margin:12px 0 10px;max-width:22em}
.kf-social{display:flex;flex-wrap:wrap;gap:0 18px}
.kf-col li a,.kf-social a,.kf-bottom li a{display:inline-flex;align-items:center;min-height:44px}
.kf-talk dl{margin:0;display:grid;gap:6px}
.kf-talk dt{font-size:13px;font-weight:400;color:var(--ink-footer-mut)}
.kf-talk dd{margin:0}
.kf-talk dd a{display:inline-flex;align-items:center;min-height:44px;font-weight:700;word-break:break-word}
.kf-pay{margin:26px 0 0;padding-top:18px;border-top:1px solid rgba(255,255,255,.14)}
.kf-bottom{display:flex;flex-wrap:wrap;align-items:center;gap:4px 22px;margin-top:8px}
.kf-bottom p{margin:0}
.kf-bottom ul{display:flex;flex-wrap:wrap;gap:0 18px}
.kf-bottom .small{flex-basis:100%}
@media(min-width:760px){
 .kf-grid{grid-template-columns:1.4fr 1fr 1fr 1fr;gap:28px}
 .kf-brand{grid-column:auto}
 .kf-talk{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:start;padding-top:22px;border-top:1px solid rgba(255,255,255,.14)}
 .kf-talk h2{margin:12px 0 0}
 .kf-talk dl{grid-template-columns:repeat(3,auto);justify-content:start;column-gap:44px}
 .kf-col li a,.kf-social a,.kf-bottom li a{min-height:34px}
}
.k-footer .small{font-size:13px;color:var(--ink-footer-mut);margin-top:8px}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}
.k-skip{position:absolute;left:-999px;top:8px;background:#fff;color:var(--ink);padding:8px 12px;border-radius:8px;z-index:20}
.k-skip:focus{left:8px}
.k-kicker{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--o2);margin:0 0 8px}
.k-btn.lg{min-height:52px;padding:0 26px;font-size:18px}
.k-btn.block{display:flex;width:100%}
.k-btn.light{background:#fff;color:var(--o2);border-color:#fff}
.k-btn.light:hover{background:var(--soft);border-color:var(--soft)}
.k-btn.outline-light{background:transparent;color:#fff;border-color:#fff}
.k-btn.outline-light:hover{background:rgba(255,255,255,.12)}
.k-ico{width:28px;height:28px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.k-ico-bubble{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:var(--soft);color:var(--o)}
.k-ico-bubble .k-ico{width:26px;height:26px}
.k-alert{border:1px solid var(--line);border-left-width:5px;border-radius:10px;padding:12px 14px;background:#fff}
.k-alert.ok{border-left-color:var(--ok)}.k-alert.warn{border-left-color:var(--warn)}.k-alert.err{border-left-color:var(--err)}
.k-badge{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;border-radius:var(--r-pill);padding:3px 10px;background:var(--soft);color:var(--o2)}
.k-badge.dark{background:var(--ink);color:#fff}
.k-table{width:100%;border-collapse:collapse;font-size:16px}
.k-table th{text-align:left;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);padding:10px 12px;border-bottom:2px solid var(--ink)}
.k-table td{padding:12px;border-top:1px solid var(--line)}
.k-table tr:nth-child(even) td{background:var(--soft)}
.k-field{display:grid;gap:6px;margin:0 0 14px}
.k-field label{font-weight:700;font-size:15px}
.k-field input,.k-field select,.k-field textarea,.k-field input,.k-field select,.k-field textarea{font:inherit;min-height:48px;padding:10px 12px;border:1.5px solid #b9b7cb;border-radius:var(--r-btn);background:#fff;color:var(--ink)}
.k-field textarea{min-height:120px}
.k-field input:focus,.k-field select:focus,.k-field textarea:focus,.k-field input:focus,.k-field select:focus,.k-field textarea:focus{outline:3px solid var(--focus);outline-offset:1px;border-color:var(--o)}
.k-field .hint{font-size:13px;color:var(--mut)}
.k-empty{text-align:center;border:1.5px dashed #c9c6da;border-radius:var(--r-card);padding:34px 18px;color:var(--mut)}
.k-empty b{display:block;color:var(--ink);font-size:18px;margin-bottom:4px}
.k-wrap{max-width:var(--wrap);margin:0 auto;padding:0 18px}

/*
 * Kobo Publishing design system: THE one source of tokens and components (ops#544/#610 redesign, 28 Oct 2026).
 * Tokens are in kobo-tokens.css. Sections 2 and 3 are the front page exactly as it was (extracted, not redesigned). Section 4+ are components built only from the tokens.
 * A later change to the front page is a change in this file and flows to every page that uses these classes. Do not put page styling anywhere else.
 * Documented in companies/kobo.md; see it live at /styleguide/ (not indexed, not linked).
 */
/* tokens live in kobo-tokens.css (build.py puts them first) */
/* 2. base and 3. front page components (verbatim from the front page) */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;color-scheme:light}
body{margin:0;background:#fff;color:var(--ink);font:var(--fs-body)/var(--lh-body) var(--font)}
a{color:var(--o2)}
header{position:sticky;top:0;z-index:5;background:#fff;border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:60px}
nav.top{display:none}
.hero{padding:26px 0 8px;background:linear-gradient(#fff,var(--soft))}
.hero .k-wrap{display:grid;gap:14px}
h1{font-size:var(--fs-h1);line-height:1.15;margin:0 0 10px;letter-spacing:-.01em}
.lead{font-size:18px;color:var(--mut);margin:0 0 18px}
.cta{display:flex;flex-wrap:wrap;gap:10px}
.cta .k-btn{flex:1 1 220px}
.note{font-size:14px;color:var(--mut);margin:12px 0 0}
.hero img{width:100%;height:auto;max-width:520px;justify-self:center}
section{padding:34px 0}
h2{font-size:var(--fs-h2);line-height:1.2;margin:0 0 8px}
.sub{color:var(--mut);margin:0 0 20px}
.steps{display:grid;gap:12px;list-style:none;padding:0;margin:0;counter-reset:s}
.steps li{counter-increment:s;border:1px solid var(--line);border-radius:14px;padding:16px 16px 16px 62px;position:relative;background:#fff}
.steps li:before{content:counter(s);position:absolute;left:16px;top:16px;width:32px;height:32px;border-radius:50%;background:var(--brand);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center}
.steps b{display:block;font-size:18px;margin-bottom:2px}
.grid2{display:grid;gap:12px}
.alt{background:var(--soft)}
.calc{display:grid;gap:14px;align-items:center}
.contact{display:grid;gap:10px}
@media(min-width:760px){
 body{font-size:var(--fs-body-d)}
 nav.top{display:flex;gap:20px;align-items:center}
 nav.top a{color:var(--ink);text-decoration:none;font-weight:600;font-size:16px}
 nav.top a:hover{color:var(--o2)}
 .hero{padding:48px 0 30px}
 .hero .k-wrap{grid-template-columns:1.15fr .85fr;align-items:center;gap:32px}
 h1{font-size:var(--fs-h1-d)}
 .steps{grid-template-columns:repeat(5,1fr)}
 .steps li{padding:62px 14px 16px}
 .steps li:before{left:14px;top:14px}
 .grid2{grid-template-columns:1fr 1fr}
 .calc{grid-template-columns:1.4fr 1fr}
 .contact{grid-template-columns:repeat(3,1fr)}
}
/* 4. shared components (new, token-based) */
.h2-center{text-align:center}
.sec-head{max-width:720px;margin:0 0 22px}
.sec-head.center{margin-left:auto;margin-right:auto;text-align:center}
.sec-head h2{margin:0 0 8px}
.sec-head .sub{margin:0}
/* hero with a visual on the right */
.hero2{padding:26px 0 30px;background:linear-gradient(#fff,var(--soft))}
.hero2 .k-wrap{display:grid;gap:26px;align-items:center}
.hero2 h1{margin:0 0 12px}
.hero2 .lead{max-width:34em}
.hero2 .cta .k-btn{flex:0 1 auto}
/* mock of a Kobo book page */
.mock{position:relative;max-width:360px;margin:6px auto 0;transform:rotate(-2deg)}
.mock-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--sh-2);overflow:hidden}
.mock-bar{display:flex;align-items:center;gap:6px;padding:9px 12px;background:var(--soft);border-bottom:1px solid var(--line)}
.mock-bar i{width:9px;height:9px;border-radius:50%;background:#d9d6e4;display:block}
.mock-bar span{margin-left:8px;font-size:12px;color:var(--mut);background:#fff;border:1px solid var(--line);border-radius:999px;padding:2px 10px}
.mock-body{padding:16px;display:grid;grid-template-columns:104px 1fr;gap:14px}
.cover{aspect-ratio:2/3;border-radius:6px 10px 10px 6px;background:linear-gradient(160deg,var(--o2),var(--brand));color:#fff;padding:10px 8px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:inset 6px 0 0 rgba(0,0,0,.14),var(--sh-1)}
.cover b{font-size:13px;line-height:1.15;letter-spacing:.02em}
.cover small{font-size:9px;opacity:.9;letter-spacing:.08em;text-transform:uppercase}
.mock h3{margin:0 0 2px;font-size:17px;line-height:1.2}
.mock .by{font-size:13px;color:var(--mut);margin:0 0 8px}
.mock .price{font-size:22px;font-weight:800;margin:0 0 8px}
.bundles{display:flex;gap:6px;flex-wrap:wrap}
.bundles span{font-size:12px;font-weight:700;border:1.5px solid var(--line);border-radius:8px;padding:4px 8px;color:var(--ink)}
.bundles span.on{border-color:var(--o);color:var(--o2);background:var(--soft)}
.mock-foot{padding:0 16px 16px}
.bar-track{height:12px;border-radius:var(--r-pill);background:#ece9f3;overflow:hidden}
.bar-fill{height:100%;border-radius:var(--r-pill);background:var(--o)}
.mock-foot p{margin:8px 0 0;font-size:14px}
.mock-foot .meta{color:var(--mut);font-size:13px}
.mock-cta{display:block;margin:12px 16px 16px;text-align:center;background:var(--o);color:#fff;border-radius:var(--r-btn);padding:11px;font-weight:700;font-size:15px}
.wa{position:absolute;right:-6px;bottom:-14px;display:flex;align-items:center;gap:8px;background:var(--ink);color:#fff;border-radius:16px 16px 16px 4px;padding:9px 14px 9px 10px;font-size:13px;font-weight:700;box-shadow:var(--sh-2);transform:rotate(2deg)}
.wa .k-ico{width:20px;height:20px;color:#fff}
/* trust strip */
.trust{background:#fff;border-bottom:1px solid var(--line);padding:18px 0}
.trust ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.trust li{display:flex;gap:12px;align-items:center;font-size:15px;line-height:1.3}
.trust li b{display:block;font-size:15px}
.trust .k-ico-bubble{width:42px;height:42px}
.trust .k-ico-bubble .k-ico{width:22px;height:22px}
/* three step cards */
.cards3{display:grid;gap:14px}
.step-card{position:relative;border:1px solid var(--line);border-radius:var(--r-card);padding:22px 20px 20px;background:#fff;box-shadow:var(--sh-1)}
.step-card .num{font-size:44px;font-weight:800;line-height:1;color:var(--brand);margin:0 0 8px;letter-spacing:-.02em}
.step-card h3{font-size:19px;margin:10px 0 6px;line-height:1.25}
.step-card p{margin:0;color:var(--mut)}
.step-card .k-ico-bubble{position:absolute;right:16px;top:16px}
/* profit card */
.profit{border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--sh-1);overflow:hidden}
.profit-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 20px;border-top:1px solid var(--line);font-size:17px}
.profit-row:first-child{border-top:0}
.profit-row b{font-weight:800;white-space:nowrap}
.profit-row.minus b{color:var(--mut)}
.profit-keep{background:var(--soft);padding:20px;border-top:2px solid var(--ink);text-align:center}
.profit-keep .label{font-weight:800;margin:0 0 2px}
.profit-keep .big{font-size:clamp(40px,9vw,58px);font-weight:800;line-height:1.05;color:var(--o);letter-spacing:-.02em;margin:0}
.profit-keep .second{margin:8px 0 0;color:var(--mut);font-size:16px}
.profit-keep .second b{color:var(--ink)}
.fine{font-size:14px;color:var(--mut);margin:14px 0 0}
/* two column split */
.split{display:grid;gap:22px;align-items:center}
/* list with icons */
.iconlist{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.iconlist li{display:flex;gap:14px;align-items:flex-start;border:1px solid var(--line);border-radius:var(--r-card);padding:14px 16px;background:#fff}
.iconlist .k-ico-bubble{width:42px;height:42px}
.iconlist .k-ico-bubble .k-ico{width:22px;height:22px}
.iconlist b{display:block}
/* accordion */
.faq{max-width:820px;margin:0 auto}
.faq details{border:1px solid var(--line);border-radius:12px;background:#fff;margin:0 0 10px;overflow:hidden}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:14px;padding:15px 16px;font-weight:700;font-size:17px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";flex:none;width:30px;height:30px;border-radius:50%;background:var(--soft);color:var(--o2);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;line-height:1}
.faq details[open] summary::after{content:"\2212";background:var(--o);color:#fff}
.faq details[open]{border-color:var(--o);box-shadow:var(--sh-1)}
.faq .ans{padding:0 16px 16px;color:var(--mut)}
.faq .ans p{margin:0}
/* call to action band */
.band{background:var(--ink);color:#fff;border-radius:22px;padding:34px 22px;text-align:center}
.band h2{color:#fff;margin:0 0 8px}
.band p{color:#d9d8e6;margin:0 0 18px}
.band-wrap{padding:6px 0 40px}
/* sticky mobile call to action */
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:30;background:#fff;border-top:1px solid var(--line);padding:10px 14px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -6px 20px rgba(31,30,51,.1)}
.sticky-cta .k-btn{width:100%}
body.has-sticky{padding-bottom:78px}
/* alerts, badges, tables, forms, empty states */
.prose{max-width:760px}
.prose h2{margin-top:32px}
.prose h3{font-size:19px;margin:22px 0 6px}
.prose ul,.prose ol{padding-left:22px}
.prose li{margin:4px 0}
.page-title{padding:30px 0 10px;background:linear-gradient(#fff,var(--soft))}
.page-title h1{margin:0 0 8px}
.crumbs{font-size:14px;color:var(--mut);margin:0 0 8px}
.crumbs a{color:var(--mut)}
.nav-cur{color:var(--o2)!important}
@media(min-width:760px){
 .hero2{padding:54px 0 44px}
 .hero2 .k-wrap{grid-template-columns:1.1fr .9fr;gap:44px}
 .hero2 h1{font-size:46px}
 .mock{margin:0 auto}
 .trust ul{grid-template-columns:repeat(4,1fr);gap:18px}
 .trust li{align-items:flex-start}
 .cards3{grid-template-columns:repeat(3,1fr);gap:18px}
 .split{grid-template-columns:1fr 1fr;gap:36px}
 .band{padding:48px 40px}
 .sticky-cta{display:none}
 body.has-sticky{padding-bottom:0}
 section.tight{padding:26px 0}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{.sticky-cta,header nav,.wa{display:none!important}}
@media(min-width:760px){.iconlist.two{grid-template-columns:1fr 1fr}.cards3.tight{gap:14px}}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.k-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.btn-row{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0 0}
.btn-row .k-btn{flex:1 1 220px}
@media(min-width:560px){.btn-row .k-btn{flex:0 0 auto}}
/* "Get your book done in 5 simple steps" (ops#544 design fix, owner spec 28 Oct): five boxes joined by brand arrows, a progress line that fills on scroll,
   Step 5 ends the flow with the Sell your book button. Desktop: one row; tablet: 3 + 2 with an elbow connector; phone: one column with downward arrows. */
.steps-sec{padding:80px 0}
/* (ops#544 polish, 28 Oct) the steps section now uses the same container as the hero, calculator and services sections */
.steps-sec .eyebrow{margin:0 0 8px;font-size:13px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--o-700)}
.steps-sec h2{font-size:clamp(32px,4vw,40px);line-height:1.15;margin:0 0 10px}
.steps-sec .sub{margin:0 0 40px}
.flow-wrap{position:relative;--p:1}
.flow{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;row-gap:44px;position:relative;z-index:1}
.flow-card{position:relative;display:flex;flex-direction:column;height:100%;box-sizing:border-box;background:#fff;border:1px solid var(--line);border-radius:16px;padding:28px;
 box-shadow:0 1px 2px rgba(31,30,51,.05),0 4px 12px rgba(31,30,51,.06),0 16px 32px rgba(31,30,51,.05);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.flow-card:hover{transform:translateY(-4px);border-color:var(--o);box-shadow:0 2px 4px rgba(31,30,51,.07),0 10px 22px rgba(31,30,51,.10),0 24px 44px rgba(31,30,51,.10)}
.flow-top{display:flex;align-items:center;justify-content:space-between;margin:0 0 18px}
.flow-num{font-size:14px;font-weight:800;letter-spacing:.04em;color:var(--o)}
.flow-ico{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;background:var(--o-100);color:var(--o)}
.flow-ico .k-ico{width:24px;height:24px}
.flow-card h3{font-size:19px;font-weight:600;line-height:1.3;margin:0 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.flow-card>p{margin:0;font-size:15.5px;line-height:1.6;color:var(--mut)}
.flow-badge{align-self:flex-start;margin-top:14px;padding:4px 10px;border-radius:var(--r-pill);background:var(--o-100);color:var(--o-700);font-size:13px;font-weight:700}
.flow-new{padding:2px 8px;border-radius:var(--r-pill);background:var(--o);color:#fff;font-size:11.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.flow-card--end{background:var(--o-100);border-color:var(--o-300)}
.flow-card--end>p{color:#3f3e57}
.flow-card--end .flow-ico{background:#fff}
.flow-card .flow-cta{margin:20px 0 0;padding-top:0}
.flow-cta .k-btn{width:100%;box-sizing:border-box;text-align:center;white-space:nowrap;padding-left:8px;padding-right:8px;font-size:15px}
.flow-card .flow-note{margin:8px 0 0;font-size:13.5px;color:var(--mut);text-align:center}
.steps-sec a:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
/* connectors: an arrow in the gap after each card (phone: pointing down) */
.flow-link{position:absolute;color:var(--o);width:32px;height:14px;left:50%;top:100%;margin:15px 0 0 -16px;transform:rotate(90deg);z-index:2}
.flow-elbow{display:none}
/* progress line behind the boxes, fills as the visitor scrolls (phone: vertical) */
.flow-progress{position:absolute;z-index:0;left:50%;top:40px;bottom:40px;width:3px;margin-left:-1.5px;background:var(--o-200);border-radius:3px;overflow:hidden}
.flow-progress span{display:block;width:100%;height:100%;background:var(--o);transform-origin:top;transform:scaleY(var(--p))}
/* fade up one after another (JS adds .flow-js only when motion is allowed) */
.flow-js .flow-card{opacity:0;transform:translateY(14px)}
.flow-js .flow-card.in{opacity:1;transform:none;transition:opacity .45s ease calc(var(--i) * 60ms),transform .45s ease calc(var(--i) * 60ms),box-shadow .2s ease,border-color .2s ease}
.flow-js .flow-card.in:hover{transform:translateY(-4px);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
@media(prefers-reduced-motion:reduce){.flow-card,.flow-card:hover{transition:none;transform:none}.flow-wrap{--p:1!important}}
/* tablet: 3 + 2, the connector runs from the end of row 1 down and back into row 2 */
@media(min-width:640px) and (max-width:1023px){
 .flow{grid-template-columns:repeat(6,minmax(0,1fr));column-gap:32px;row-gap:0}
 .flow-card{grid-column:span 2}
 .flow-card:nth-child(5){grid-column:2/4}
 .flow-card:nth-child(6){grid-column:4/6}
 .flow-link{left:100%;top:50%;margin:-7px 0 0 0;transform:none}
 .flow-card:nth-child(3) .flow-link{display:none}
 .flow-elbow{display:block;grid-column:1/-1;position:relative;height:56px;list-style:none}
 .flow-elbow span{position:absolute;background:var(--o)}
 .flow-elbow .e1{left:calc(5 * (100% - 160px) / 6 + 4.5 * 32px - 1px);top:0;width:2.5px;height:50%}
 .flow-elbow .e2{left:calc(2 * (100% - 160px) / 6 + 1.5 * 32px);right:calc(100% - (5 * (100% - 160px) / 6 + 4.5 * 32px) - 1.5px);top:calc(50% - 1px);height:2.5px}
 .flow-elbow .e3{left:calc(2 * (100% - 160px) / 6 + 1.5 * 32px - 1px);top:calc(50% - 1px);width:2.5px;height:calc(50% - 6px)}
 .flow-elbow .e3::after{content:"";position:absolute;left:-5px;bottom:-9px;border:6px solid transparent;border-top:10px solid var(--o);border-bottom:0}
 .flow-progress{display:none}
}
/* desktop: one row of five, arrows centred between the boxes, progress line across the row */
@media(min-width:1024px){
 .flow{grid-template-columns:repeat(5,minmax(0,1fr));column-gap:36px}
 .flow-link{left:100%;top:50%;margin:-7px 0 0 2px;transform:none}
 .flow-progress{left:10%;right:10%;top:50%;bottom:auto;width:auto;height:3px;margin:-1.5px 0 0}
 .flow-progress span{transform-origin:left;transform:scaleX(var(--p))}
}

/* ---- ops#544 design polish, 28 Oct: nav, footer links, alignment, services buttons (site-only; the app's synced copies are untouched) ---- */
@media(min-width:760px){
 nav.top{gap:18px}
 nav.top a{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 2px;font-size:15px;font-weight:500;color:var(--ink);text-decoration:none;
  text-decoration-line:underline;text-decoration-color:transparent;text-decoration-thickness:2px;text-underline-offset:7px;transition:color .2s ease,text-decoration-color .2s ease}
 nav.top a:hover{color:var(--o2);text-decoration-color:var(--o)}
 nav.top a[aria-current=page],nav.top a.nav-cur{color:var(--o2)!important;font-weight:600;text-decoration-color:var(--o)}
 nav.top a:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}
}
@media(min-width:1024px){nav.top{gap:30px}nav.top a{font-size:16px}}
.k-footer .kf-col li a,.k-footer .kf-bottom li a,.k-footer .kf-social a{font-weight:500;text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:2px;text-underline-offset:5px;transition:color .2s ease,text-decoration-color .2s ease}
.k-footer .kf-col li a:hover,.k-footer .kf-bottom li a:hover,.k-footer .kf-social a:hover,.k-footer .kf-talk dd a:hover{color:var(--o-300);text-decoration:underline;text-decoration-color:var(--o-300)}
.k-footer .kf-col li+li{margin-top:2px}
.k-footer :focus-visible{outline:3px solid #fff;outline-offset:3px;border-radius:4px}
@media(prefers-reduced-motion:reduce){nav.top a,.k-footer a{transition:none}}
/* hero illustration sits on the hero tint (transparent image, no white box) */
.hero img{background:transparent}
/* "Explore our services" + one consistent pair of secondary buttons */
.svc-more{margin:28px 0 0}
.svc-more .label{margin:0 0 10px;font-size:14px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--o2)}
.btn-pair{display:grid;grid-template-columns:1fr;gap:12px;margin:0}
.btn-pair .k-btn{width:100%;box-sizing:border-box}
@media(min-width:560px){.btn-pair{grid-template-columns:repeat(2,minmax(0,280px))}.btn-pair .k-btn{white-space:nowrap}}
/* the 5 boxes inside the hero-width container (1004px of content): a little less padding and gap on desktop so text, badge and button fit */
.flow-badge{white-space:nowrap}
@media(min-width:1024px){
 .flow{column-gap:28px}
 .flow-card{padding:24px 18px}
 .flow-link{width:24px;margin-left:2px}
 .flow-cta .k-btn{font-size:14.5px;padding-left:6px;padding-right:6px}
}
