/* =====================================================================
   Assured Business Solutions — Concept 3 "Four questions"
   Design system ab3. Qualifier funnel led. Bright, rounded, orange first.

   Colours sampled from her own assets, never chosen:
     --o    #FE9105  the Precision Bookkeeper logo fill
     --gold #D49C09  the tick in the ASSURED roundel
     --slate#3C494E  her live site CSS token, hsl(197 12.86% 27%)
   --o-txt is the same hue darkened to pass 4.5:1 on white, because the
   brand orange is unreadable as text. Buttons use ink on orange (7.66:1).
   ===================================================================== */

:root{
  --o:#FE9105;
  --o-lt:#FFF4E6;
  --o-mid:#FFE0B8;
  --o-txt:#A85E00;      /* 4.92:1 on white */
  --o-deep:#C86F00;
  --gold:#D49C09;
  --gold-txt:#7A5800;
  --slate:#3C494E;      /* 9.31:1 on white */
  --slate-mid:#5A6C73;  /* 5.49:1 on white */
  --ink:#161B1D;
  --bg:#FFFDFA;
  --bg2:#FFF7ED;
  --line:#EFE6DA;
  --white:#fff;

  --f-display:"Kanit",system-ui,sans-serif;
  --f-head:"Roboto",system-ui,sans-serif;
  --f-body:"Open Sans",system-ui,sans-serif;

  --wrap:1120px;
  --hd:72px;
  --r:16px;
  --r-sm:11px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--f-body);font-size:17px;line-height:1.65;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{max-width:100%;display:block;height:auto}
section[id]{scroll-margin-top:92px}
[hidden]{display:none !important}
a{color:var(--o-txt)}
h1,h2,h3,h4{font-family:var(--f-display);font-weight:600;line-height:1.14;margin:0;letter-spacing:-.02em}
p{margin:0 0 1em}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 24px}

/* ---------- concept note ---------- */
.cnote{
  background:var(--ink);color:#E5E9EB;font-size:13.5px;line-height:1.5;
  display:flex;gap:14px;align-items:flex-start;padding:11px 20px;
}
.cnote span{flex:1}
.cnote strong{color:var(--o)}
.cnote button{
  flex:none;background:transparent;border:1px solid rgba(255,255,255,.34);color:#E5E9EB;
  border-radius:8px;cursor:pointer;font-size:18px;line-height:1;min-width:40px;min-height:40px;
}
.cnote button:hover{background:rgba(255,255,255,.12)}

/* ---------- header ---------- */
.hd{
  position:sticky;top:0;z-index:60;background:rgba(255,253,250,.93);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line);
}
.hd-in{display:flex;align-items:center;gap:20px;height:var(--hd)}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}
.brand img{height:42px;width:auto}
.brand b{font-family:var(--f-display);font-weight:600;font-size:15.5px;display:block;line-height:1.15}
.brand i{font-style:normal;font-size:10.5px;color:var(--o-txt);letter-spacing:.15em;text-transform:uppercase;display:block;font-family:var(--f-head);font-weight:700}
.nav{margin-left:auto;display:flex;gap:6px}
.nav a{
  color:var(--slate);text-decoration:none;font-size:14px;font-weight:600;font-family:var(--f-head);
  padding:9px 14px;border-radius:99px;transition:.22s;
}
.nav a:hover{background:var(--o-lt);color:var(--o-txt)}
.burger{display:none;background:transparent;border:1px solid var(--line);border-radius:10px;width:46px;height:44px;cursor:pointer;position:relative}
.burger span,.burger span::before,.burger span::after{
  content:"";position:absolute;left:13px;width:20px;height:2px;background:var(--ink);border-radius:2px;transition:.25s;
}
.burger span{top:21px}
.burger span::before{top:-6px;left:0}
.burger span::after{top:6px;left:0}
.burger[aria-expanded=true] span{background:transparent}
.burger[aria-expanded=true] span::before{transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded=true] span::after{transform:translateY(-6px) rotate(-45deg)}
.mnav{display:none;background:var(--bg);border-bottom:1px solid var(--line)}
.mnav.open{display:block}
.mnav a{display:block;padding:15px 24px;border-top:1px solid var(--line);color:var(--ink);text-decoration:none;font-weight:600;font-family:var(--f-head)}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--f-head);font-weight:700;font-size:15px;text-decoration:none;
  padding:15px 26px;border-radius:99px;border:2px solid transparent;cursor:pointer;
  transition:.2s;min-height:52px;
}
.btn:active{transform:translateY(1px)}
.btn-pri{background:var(--o);color:var(--ink);box-shadow:0 6px 20px rgba(254,145,5,.34)}
.btn-pri:hover{background:#FF9E22;box-shadow:0 10px 28px rgba(254,145,5,.45);transform:translateY(-2px)}
.btn-pri:disabled{opacity:.42;box-shadow:none;cursor:not-allowed;transform:none}
.btn-gho{background:#fff;color:var(--slate);border-color:var(--line)}
.btn-gho:hover{border-color:var(--o);color:var(--o-txt)}
.btn-sm{padding:11px 19px;font-size:13.5px;min-height:44px}

/* ---------- hero ---------- */
.hero{position:relative;padding:60px 0 70px;overflow:hidden}
.hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(680px 420px at 88% 4%,rgba(254,145,5,.19),transparent 62%),
    radial-gradient(520px 380px at 2% 96%,rgba(212,156,9,.13),transparent 62%);
}
.hero-in{position:relative;display:grid;grid-template-columns:.92fr 1.08fr;gap:52px;align-items:center}
.eyebrow{
  display:inline-flex;align-items:center;gap:9px;font-family:var(--f-head);font-size:12px;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;color:var(--o-txt);background:var(--o-lt);
  border:1px solid var(--o-mid);border-radius:99px;padding:7px 15px;margin:0 0 20px;
}
h1.hh{font-size:clamp(38px,5.6vw,62px);line-height:1.04;letter-spacing:-.03em}
h1.hh .w{display:inline-block;overflow:hidden;vertical-align:bottom}
h1.hh .w > span{display:inline-block;transform:translateY(105%);transition:transform .78s cubic-bezier(.16,.84,.28,1)}
.js h1.hh.in .w > span{transform:none}
h1.hh em{font-style:normal;color:var(--o-txt)}
.hsub{font-size:19px;color:var(--slate-mid);max-width:31em;margin:20px 0 28px}
.hlist{list-style:none;margin:0 0 30px;padding:0;display:grid;gap:11px}
.hlist li{display:flex;gap:11px;align-items:flex-start;font-size:16px;color:var(--slate);font-family:var(--f-head);font-weight:500}
.hlist svg{width:20px;height:20px;color:var(--o);flex:none;margin-top:2px}
.hnote{font-size:13.5px;color:var(--slate-mid);margin:0}

/* ---------- the qualifier ---------- */
.qz{
  background:#fff;border:1px solid var(--line);border-radius:22px;
  box-shadow:0 26px 64px rgba(22,27,29,.11);overflow:hidden;position:relative;
}
/* the client's own logo sits on top of the enquiry form — house standard */
.qz-brand{display:flex;justify-content:center;padding:24px 28px 4px;background:linear-gradient(180deg,var(--o-lt),#fff)}
.qz-brand img{height:96px;width:auto}
.qz-top{padding:20px 28px 0}
.qz-prog{display:flex;gap:7px;margin-bottom:18px}
.qz-prog i{flex:1;height:6px;border-radius:99px;background:var(--o-lt);border:1px solid var(--o-mid);transition:background .35s}
.qz-prog i.on{background:var(--o);border-color:var(--o)}
.qz-step{font-family:var(--f-head);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--o-txt);margin:0 0 8px}
.qz-q{font-size:clamp(21px,2.6vw,27px);margin:0 0 4px}
.qz-hint{font-size:14px;color:var(--slate-mid);margin:6px 0 0}
.qz-body{padding:20px 28px 26px}
.opts{display:grid;gap:10px}
.opt{
  display:flex;align-items:center;gap:14px;width:100%;text-align:left;font:inherit;color:inherit;
  background:#fff;border:2px solid var(--line);border-radius:var(--r-sm);padding:16px 18px;cursor:pointer;
  transition:.2s;min-height:60px;
}
.opt:hover{border-color:var(--o);background:var(--o-lt)}
.opt.on{border-color:var(--o);background:var(--o-lt);box-shadow:0 4px 16px rgba(254,145,5,.2)}
.opt-mark{
  width:26px;height:26px;border-radius:50%;border:2px solid var(--line);flex:none;
  display:flex;align-items:center;justify-content:center;transition:.2s;
}
.opt-mark svg{display:block;width:14px;height:14px;color:var(--ink);opacity:0;transform:scale(.5);transition:.22s}
.opt.on .opt-mark{background:var(--o);border-color:var(--o)}
.opt.on .opt-mark svg{opacity:1;transform:none}
.opt b{display:block;font-family:var(--f-head);font-size:16px;font-weight:600}
/* :not(.opt-mark) — a bare ".opt span" outranks ".opt-mark" and knocks the
   tick circle out of flex, dropping the tick to the bottom left. */
.opt span:not(.opt-mark){display:block;font-size:13.5px;color:var(--slate-mid);margin-top:2px}
.qz-foot{display:flex;gap:12px;align-items:center;padding:18px 28px 24px;border-top:1px solid var(--line);background:var(--bg2)}
.qz-back{
  background:transparent;border:0;font:inherit;font-family:var(--f-head);font-weight:600;font-size:14px;
  color:var(--slate-mid);cursor:pointer;padding:11px 6px;min-height:44px;
}
.qz-back:hover{color:var(--ink);text-decoration:underline}
.qz-foot .btn{margin-left:auto}
.qz-priv{font-size:12.5px;color:var(--slate-mid);padding:0 28px 22px;margin:0;text-align:center}

/* result */
.qz-res{display:none;padding:28px 28px 30px}
.qz-res.on{display:block;animation:pop .5s cubic-bezier(.16,.84,.28,1)}
@keyframes pop{from{opacity:0;transform:translateY(14px)}}
.res-badge{
  display:inline-flex;align-items:center;gap:9px;font-family:var(--f-head);font-size:11.5px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--ink);background:var(--o);
  border-radius:99px;padding:7px 15px;margin-bottom:16px;
}
.qz-res h3{font-size:25px;margin-bottom:12px}
.qz-res > p{font-size:16.5px;color:var(--slate-mid)}
.res-list{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:12px}
.res-list li{
  display:flex;gap:13px;align-items:flex-start;background:var(--bg2);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:16px 17px;
}
.res-n{
  width:28px;height:28px;border-radius:50%;background:var(--o);color:var(--ink);flex:none;
  display:flex;align-items:center;justify-content:center;font-family:var(--f-head);font-weight:700;font-size:13px;
}
.res-list b{display:block;font-family:var(--f-head);font-size:15.5px;margin-bottom:3px}
.res-list p{margin:0;font-size:14.5px;color:var(--slate-mid)}
.res-cta{display:flex;gap:11px;flex-wrap:wrap;margin-top:24px}
.res-cta .btn{flex:1;min-width:190px}
.res-disc{font-size:12.5px;color:var(--slate-mid);margin:18px 0 0;border-top:1px solid var(--line);padding-top:15px}

/* ---------- sections ---------- */
.sec{padding:80px 0}
.sec-warm{background:var(--bg2)}
.sec-dark{background:var(--ink);color:#C8D1D5}
.sec-dark h2,.sec-dark h3{color:#fff}
.shead{max-width:700px;margin:0 auto 44px;text-align:center}
.shead h2{font-size:clamp(28px,4vw,42px)}
.shead p{font-size:18px;color:var(--slate-mid);margin-top:14px}
.sec-dark .shead p{color:#A6B4BA}

/* ---------- cards ---------- */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.card{
  background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:30px 28px;
  transition:transform .3s cubic-bezier(.2,.7,.3,1),box-shadow .3s;
}
.card:hover{transform:translateY(-5px);box-shadow:0 20px 46px rgba(22,27,29,.1)}
.card-ico{
  width:52px;height:52px;border-radius:14px;background:var(--o-lt);border:1px solid var(--o-mid);
  display:flex;align-items:center;justify-content:center;margin-bottom:18px;
}
.card-ico svg{width:25px;height:25px;color:var(--o-txt)}
.card h3{font-size:20px;margin-bottom:9px}
.card p{margin:0;font-size:15.5px;color:var(--slate-mid)}

/* ---------- services pills ---------- */
.pills{display:flex;flex-wrap:wrap;gap:11px;justify-content:center;max-width:840px;margin:0 auto}
.pill{
  background:#fff;border:1px solid var(--line);border-radius:99px;padding:13px 22px;
  font-family:var(--f-head);font-weight:600;font-size:15px;color:var(--slate);
  display:flex;align-items:center;gap:10px;transition:.24s;
}
.pill:hover{border-color:var(--o);color:var(--o-txt);transform:translateY(-2px)}
.pill i{width:7px;height:7px;border-radius:50%;background:var(--o);flex:none;font-style:normal}

/* ---------- kristen ---------- */
.kris{display:grid;grid-template-columns:.8fr 1.2fr;gap:48px;align-items:center}
.kris-fig{position:relative}
.kris-fig img{width:100%;border-radius:20px;aspect-ratio:1/1;object-fit:cover;box-shadow:0 22px 54px rgba(22,27,29,.16)}
.kris-tag{
  position:absolute;right:-16px;bottom:22px;background:var(--o);color:var(--ink);border-radius:14px;
  padding:14px 18px;box-shadow:0 14px 32px rgba(254,145,5,.4);max-width:180px;
}
.kris-tag b{display:block;font-family:var(--f-display);font-size:21px;line-height:1}
.kris-tag span{display:block;font-size:12px;margin-top:5px;line-height:1.4;font-family:var(--f-head);font-weight:600}
.kris-copy .eyebrow{margin-bottom:16px}
.kris-copy h2{font-size:clamp(26px,3.4vw,38px)}
.kris-q{font-family:var(--f-display);font-weight:300;font-size:21px;line-height:1.55;color:var(--ink);margin:18px 0 16px;border-left:4px solid var(--o);padding-left:20px}
.kris-copy p{color:var(--slate-mid);font-size:16.5px}

/* ---------- mock label ---------- */
.mocklab{
  display:inline-flex;align-items:center;gap:9px;font-family:var(--f-head);font-size:11.5px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--ink);background:var(--gold);
  border-radius:99px;padding:6px 14px;margin-bottom:16px;
}

/* ---------- cta band ---------- */
.band{text-align:center;max-width:640px;margin:0 auto}
.band h2{font-size:clamp(28px,4vw,42px);margin-bottom:14px}
.band p{font-size:18px;color:#A6B4BA}
.band-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:28px}
.band-ct{display:flex;gap:26px;justify-content:center;flex-wrap:wrap;margin-top:34px;padding-top:26px;border-top:1px solid #2A3337}
.band-ct a,.band-ct span{color:#fff;text-decoration:none;font-size:15.5px;display:inline-flex;align-items:center;gap:9px;padding:8px 0;min-height:40px}
.band-ct a:hover{color:var(--o)}
.band-ct svg{width:18px;height:18px;color:var(--o);flex:none}
.hours-line{margin-top:20px;font-size:14px;color:#788E97}

/* ---------- footer ---------- */
.ft{background:#0F1416;color:#8F9EA4;padding:56px 0 26px;font-size:14.5px}
.ft-top{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:40px;padding-bottom:34px;border-bottom:1px solid #232C30}
.ft img{height:50px;width:auto;margin-bottom:16px}
.ft h4{color:#fff;font-size:16.5px;margin-bottom:5px}
.fsub{font-family:var(--f-head);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--o);margin-bottom:13px}
.ft ul{list-style:none;margin:0;padding:0;display:grid;gap:3px}
.ft ul a{color:#8F9EA4;text-decoration:none;display:inline-block;padding:7px 0;min-height:40px;min-width:44px;line-height:26px}
.ft ul a:hover{color:var(--o)}
.disc{font-size:12.5px;line-height:1.75;color:#7E8E95;margin:24px 0 0}
.ft-bot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:22px;padding-top:20px;border-top:1px solid #232C30;font-size:13px}
.by{color:#7E8E95;text-decoration:none;padding:9px 0;display:inline-block;min-height:40px;line-height:22px}
.by b{color:var(--o);font-weight:700}
.by:hover b{text-decoration:underline}

/* ---------- motion ---------- */
.sprog{position:fixed;left:0;top:0;height:3px;width:100%;background:var(--o);transform:scaleX(0);transform-origin:left;z-index:100}
.reveal{opacity:0;transform:translateY(22px);filter:blur(7px);transition:opacity .8s,transform .8s,filter .8s;transition-timing-function:cubic-bezier(.16,.84,.28,1)}
.reveal.in{opacity:1;transform:none;filter:none}
.reveal[data-d="1"]{transition-delay:.09s}
.reveal[data-d="2"]{transition-delay:.18s}
.reveal[data-d="3"]{transition-delay:.27s}
html:not(.js) .reveal{opacity:1;transform:none;filter:none}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1 !important;transform:none !important;filter:none !important;transition:none}
  h1.hh .w > span{transform:none !important}
  .qz-res.on{animation:none}
}

/* ---------- responsive ---------- */
@media (max-width:1000px){
  .hero-in{grid-template-columns:1fr;gap:40px}
  .cards{grid-template-columns:1fr}
  .kris{grid-template-columns:1fr;gap:34px}
  .kris-fig{max-width:380px}
  .kris-tag{right:auto;left:16px}
  .ft-top{grid-template-columns:1fr 1fr}
}
@media (max-width:820px){
  .nav{display:none}
  .burger{display:block;margin-left:auto}
  .hd-cta{display:none}
}
@media (max-width:640px){
  body{font-size:16px}
  section[id]{scroll-margin-top:84px}
  .sec{padding:54px 0}
  .wrap{padding:0 18px}
  .hero{padding:38px 0 46px}
  .hsub{font-size:17px;margin:16px 0 22px}
  .qz-brand{padding:18px 18px 2px}
  .qz-brand img{height:74px}
  .qz-top{padding:16px 18px 0}
  .qz-body{padding:16px 18px 22px}
  .qz-foot{padding:15px 18px 20px}
  .qz-priv{padding:0 18px 18px}
  .qz-res{padding:22px 18px 24px}
  .opt{padding:14px 15px;gap:12px}
  .opt b{font-size:15px}
  .qz-foot{flex-direction:column-reverse;align-items:stretch;gap:8px}
  .qz-foot .btn{margin-left:0;width:100%}
  .qz-back{width:100%}
  .res-cta{flex-direction:column}
  .res-cta .btn{width:100%;min-width:0}
  .kris-fig{max-width:none}
  .kris-tag{position:static;max-width:none;margin-top:14px;display:flex;align-items:center;gap:14px}
  .kris-tag b{font-size:19px}
  .ft-top{grid-template-columns:1fr;gap:28px}
  .ft-bot{flex-direction:column;gap:6px}
  .band-cta .btn{width:100%}
  .band-ct{flex-direction:column;gap:6px;align-items:center}
  .pill{font-size:14px;padding:11px 18px}
}

/* =====================================================================
   Xero client portal module — DEMO
   Blue is Xero's, orange stays hers. Xero blue #13B5EA is unusable as a
   button fill under white text (2.31:1), so --x-btn is the same hue
   darkened to 5.39:1 and the bright blue is kept for marks, bars,
   borders and glow where contrast does not apply.
   ===================================================================== */
:root{
  --x:#13B5EA;
  --x-btn:#0A7292;      /* 5.39:1 with white */
  --x-btn-h:#0C86AE;
  --x-txt:#0A6C8F;      /* 5.9:1 on white */
  --x-lt:#EAF8FE;
  --x-mid:#BFE7F7;
  --x-deep:#062A38;
}

/* ---------- section shell ---------- */
.pt{position:relative;overflow:hidden;background:linear-gradient(180deg,#F6FCFF 0%,var(--x-lt) 46%,#F6FCFF 100%)}
.pt::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(700px 420px at 92% 0%,rgba(19,181,234,.20),transparent 62%),
    radial-gradient(520px 360px at 4% 100%,rgba(254,145,5,.10),transparent 62%);
}
.pt .wrap{position:relative}
.pt .mocklab{background:var(--x);color:#04202B}

/* ---------- browser window mock ---------- */
.pt-win{
  max-width:1020px;margin:0 auto;background:#fff;border:1px solid var(--x-mid);
  border-radius:20px;box-shadow:0 30px 74px rgba(6,42,56,.18);overflow:hidden;
}
.pt-bar{display:flex;align-items:center;gap:12px;padding:11px 14px;background:#F1FAFE;border-bottom:1px solid var(--x-mid)}
.pt-dots{display:flex;gap:6px;flex:none}
.pt-dots i{width:10px;height:10px;border-radius:50%;background:#CFE7F1;display:block}
.pt-url{
  flex:1;min-width:0;background:#fff;border:1px solid var(--x-mid);border-radius:99px;padding:6px 14px;
  font-family:var(--f-head);font-size:12.5px;font-weight:600;color:var(--slate-mid);
  display:flex;align-items:center;gap:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
}
.pt-url svg{width:13px;height:13px;flex:none;color:var(--x-txt)}
.pt-tag{
  flex:none;font-family:var(--f-head);font-size:10.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--x-txt);background:var(--x-lt);border:1px solid var(--x-mid);
  border-radius:99px;padding:5px 10px;
}
.pt-body{position:relative}

/* ---------- locked state ---------- */
.pt-lock{position:relative;min-height:436px}
/* the dashboard sitting behind frosted glass, waiting to be unlocked */
.pt-blur{position:absolute;inset:0;padding:22px;display:flex;flex-direction:column;gap:12px;filter:blur(7px)}
.pg-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;flex:none}
.pg-tiles i{display:block;height:88px;border-radius:14px;background:#fff;border:1px solid var(--x-mid);position:relative;overflow:hidden}
.pg-tiles i::before{content:"";position:absolute;left:16px;top:19px;width:52%;height:9px;border-radius:4px;background:#D5EBF5}
.pg-tiles i::after{content:"";position:absolute;left:16px;top:39px;width:64%;height:24px;border-radius:6px;background:#9BD7EF}
.pg-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:12px;flex:1;min-height:0}
.pg-panel{background:#fff;border:1px solid var(--x-mid);border-radius:14px;padding:18px;display:flex;align-items:flex-end;gap:8px}
.pg-panel b{flex:1;border-radius:4px 4px 0 0;background:linear-gradient(180deg,#5FD3F6,#13B5EA);display:block}
.pg-ring{align-items:center;justify-content:center}
.pg-ring em{width:104px;height:104px;border-radius:50%;border:12px solid var(--x);border-right-color:var(--x-lt);border-bottom-color:var(--x-lt);display:block}
.pg-feed{flex:none;height:86px;flex-direction:column;align-items:stretch;justify-content:center;gap:11px}
.pg-feed b{height:11px;border-radius:4px;background:#DCEFF8;flex:none}
.pg-feed b:nth-child(1){width:62%}
.pg-feed b:nth-child(2){width:48%}
.pg-feed b:nth-child(3){width:70%}
.pt-cta{
  position:relative;z-index:2;min-height:436px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;text-align:center;padding:46px 26px;backdrop-filter:blur(2px);
  background:radial-gradient(closest-side at 50% 50%,rgba(255,255,255,.95),rgba(255,255,255,.78));
}
.pt-cta h3{font-size:clamp(21px,2.7vw,29px);max-width:15em;margin:22px 0 10px}
.pt-cta > p{font-size:16px;color:var(--slate-mid);max-width:34em;margin:0 0 24px}
.pt-notes{list-style:none;display:flex;flex-wrap:wrap;gap:8px 18px;justify-content:center;margin:22px 0 0;padding:0}
.pt-notes li{font-family:var(--f-head);font-size:12.5px;font-weight:600;color:var(--x-txt);display:flex;align-items:center;gap:7px}
.pt-notes li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--x);flex:none}

/* ---------- the real Xero logo ----------
   Xero's logo is the "xero" wordmark, not a circle with an X. Their app icon
   is that wordmark knocked out of a #13B5EA rounded square, so .xtile is a
   faithful reproduction of it and .xw is the bare wordmark. */
.xw{display:block;width:100%;height:auto;color:currentColor}
.xtile{
  display:inline-flex;align-items:center;justify-content:center;flex:none;
  background:var(--x);color:#fff;border-radius:22%;
}
.xtile .xw{width:74%}
.xtile-lg{width:82px;height:82px;filter:drop-shadow(0 12px 26px rgba(19,181,234,.5));animation:xfloat 4.6s ease-in-out infinite}
.xtile-md{width:54px;height:54px}
.xtile-sm{width:26px;height:26px;border-radius:7px}
.xtile-sm .xw{width:80%}
@keyframes xfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
.xpulse{position:relative;display:inline-flex}
.xpulse::before,.xpulse::after{
  content:"";position:absolute;inset:-6px;border-radius:26%;border:2px solid rgba(19,181,234,.55);
  animation:xring 2.8s cubic-bezier(.2,.7,.3,1) infinite;
}
.xpulse::after{animation-delay:1.4s}
@keyframes xring{0%{transform:scale(.92);opacity:.8}100%{transform:scale(1.7);opacity:0}}

/* ---------- Xero buttons ---------- */
.btn-x{background:var(--x-btn);color:#fff;box-shadow:0 8px 26px rgba(19,181,234,.42)}
.btn-x:hover{background:var(--x-btn-h);box-shadow:0 12px 34px rgba(19,181,234,.55);transform:translateY(-2px)}
.btn-x:disabled{opacity:.4;box-shadow:none;cursor:not-allowed;transform:none}
.btn-xg{background:#fff;color:var(--x-txt);border-color:var(--x-mid)}
.btn-xg:hover{border-color:var(--x);background:var(--x-lt)}

/* ---------- connected dashboard ---------- */
.pt-dash{padding:22px}
.pt-dhead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.pt-org{
  display:inline-flex;align-items:center;gap:9px;background:var(--x-lt);border:1px solid var(--x-mid);
  border-radius:99px;padding:6px 16px 6px 8px;font-family:var(--f-head);font-weight:700;font-size:14px;color:var(--x-deep);
}
.pt-live{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-head);font-size:12.5px;font-weight:600;color:var(--slate-mid)}
.pt-live i{width:9px;height:9px;border-radius:50%;background:#0F9D58;flex:none;box-shadow:0 0 0 0 rgba(15,157,88,.6);animation:xbeat 2.2s infinite}
@keyframes xbeat{70%{box-shadow:0 0 0 9px rgba(15,157,88,0)}100%{box-shadow:0 0 0 0 rgba(15,157,88,0)}}
.pt-dc{
  margin-left:auto;background:#fff;border:1px solid var(--line);border-radius:99px;font:inherit;
  font-family:var(--f-head);font-weight:600;font-size:13px;color:var(--slate-mid);padding:9px 16px;min-height:40px;cursor:pointer;
}
.pt-dc:hover{border-color:var(--x);color:var(--x-txt)}

.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:12px}
.tile{
  position:relative;background:#fff;border:1px solid var(--x-mid);border-radius:14px;padding:16px 16px 14px;
  opacity:0;transform:translateY(16px);
  transition:opacity .55s,transform .55s cubic-bezier(.16,.84,.28,1),box-shadow .3s,border-color .3s;
}
.live .tile{opacity:1;transform:none}
.live .tile:nth-child(2){transition-delay:.07s}
.live .tile:nth-child(3){transition-delay:.14s}
.live .tile:nth-child(4){transition-delay:.21s}
.tile.focus{border-color:var(--x);box-shadow:0 0 0 4px rgba(19,181,234,.18),0 14px 32px rgba(19,181,234,.22)}
.tile.focus::after{
  content:"You asked for this first";position:absolute;top:-10px;right:10px;background:var(--x);color:#04202B;
  font-family:var(--f-head);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  border-radius:99px;padding:4px 10px;white-space:nowrap;
}
.tile > span{display:block;font-family:var(--f-head);font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--slate-mid)}
.tile b{
  display:block;font-family:var(--f-display);font-weight:600;font-size:clamp(22px,3vw,29px);color:var(--x-deep);
  margin:7px 0 4px;letter-spacing:-.02em;font-variant-numeric:tabular-nums;
}
.tile em{font-style:normal;font-size:12.5px;color:var(--slate-mid);font-family:var(--f-head);font-weight:600}
.tile em.up{color:#0B6E43}

.panel{
  background:#fff;border:1px solid var(--x-mid);border-radius:14px;padding:18px;
  opacity:0;transform:translateY(18px);
  transition:opacity .6s .2s,transform .6s .2s cubic-bezier(.16,.84,.28,1);
}
.live .panel{opacity:1;transform:none}
.panel-h{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.panel-h h4{font-family:var(--f-head);font-weight:700;font-size:15.5px;letter-spacing:0}
.legend{margin-left:auto;display:flex;align-items:center;gap:6px;font-family:var(--f-head);font-size:12px;font-weight:600;color:var(--slate-mid)}
.legend i{width:9px;height:9px;border-radius:3px;display:inline-block;flex:none}
.legend i.in{background:var(--x)}
.legend i.out{background:var(--o);margin-left:8px}
.pt-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:12px;margin-bottom:12px}

/* chart */
.bars{display:flex;align-items:flex-end;gap:8px;height:152px}
.bargrp{flex:1;min-width:0;display:flex;align-items:flex-end;justify-content:center;gap:3px;height:100%}
.bar{width:44%;max-width:11px;border-radius:4px 4px 0 0;height:0;transition:height .9s cubic-bezier(.16,.84,.28,1)}
.bar.in{background:linear-gradient(180deg,#4ACDF5,#13B5EA)}
.bar.out{background:linear-gradient(180deg,#FFB755,#FE9105)}
.live .bar{height:var(--h)}
.xlab{display:flex;gap:8px;margin-top:9px}
.xlab span{flex:1;min-width:0;text-align:center;font-family:var(--f-head);font-size:10.5px;font-weight:700;color:var(--slate-mid)}

/* reconciliation ring */
.ring{position:relative;width:132px;height:132px;margin:0 auto 16px}
.ring svg{transform:rotate(-90deg);width:100%;height:100%;display:block}
.ring circle{fill:none;stroke-width:11;stroke-linecap:round}
.ring .rbg{stroke:var(--x-lt)}
.ring .rfg{stroke:var(--x);stroke-dasharray:339.3;stroke-dashoffset:339.3;transition:stroke-dashoffset 1.5s cubic-bezier(.16,.84,.28,1) .3s}
.live .ring .rfg{stroke-dashoffset:var(--off)}
.ring-num{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-family:var(--f-display);font-weight:600;font-size:31px;color:var(--x-deep);font-variant-numeric:tabular-nums;line-height:1;
}
.ring-num i{font-style:normal;font-family:var(--f-head);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--slate-mid);margin-top:6px}
.recon-list{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.recon-list li{display:flex;gap:9px;align-items:flex-start;font-size:13.5px;color:var(--slate-mid);line-height:1.5}
.recon-list svg{width:16px;height:16px;flex:none;margin-top:3px;color:var(--x)}

/* activity feed */
.feed ul{list-style:none;margin:0;padding:0}
.feed li{
  display:flex;gap:13px;align-items:center;padding:12px 2px;border-top:1px solid var(--line);
  opacity:0;transform:translateX(-12px);transition:opacity .5s,transform .5s cubic-bezier(.16,.84,.28,1);
}
.feed li:first-child{border-top:0}
.live .feed li{opacity:1;transform:none}
.feed li > div{min-width:0;flex:1}
.fico{width:34px;height:34px;border-radius:10px;background:var(--x-lt);border:1px solid var(--x-mid);display:flex;align-items:center;justify-content:center;flex:none}
.fico svg{width:16px;height:16px;color:var(--x-txt)}
.feed b{display:block;font-family:var(--f-head);font-size:14.5px;font-weight:700}
.feed p{margin:0;font-size:13px;color:var(--slate-mid)}
.feed time{font-family:var(--f-head);font-size:12px;font-weight:600;color:var(--slate-mid);white-space:nowrap;flex:none}
.pt-foot{max-width:1020px;margin:20px auto 0;font-size:12.5px;line-height:1.75;color:var(--slate-mid);text-align:center}

/* ---------- the connect modal ---------- */
.xm{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}
.xm-bd{position:absolute;inset:0;background:rgba(6,42,56,.55);backdrop-filter:blur(6px);opacity:0;transition:opacity .34s;cursor:pointer}
.xm.on .xm-bd{opacity:1}
.xm-card{
  position:relative;width:100%;max-width:520px;max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);
  overflow-y:auto;-webkit-overflow-scrolling:touch;background:#fff;border-radius:22px;
  box-shadow:0 40px 92px rgba(6,42,56,.44);opacity:0;transform:translateY(28px) scale(.94);
  transition:opacity .38s,transform .5s cubic-bezier(.16,.9,.3,1);
}
.xm.on .xm-card{opacity:1;transform:none}
.xm-x{
  position:absolute;top:12px;right:12px;z-index:3;width:42px;height:42px;border-radius:50%;
  border:1px solid var(--line);background:#fff;color:var(--slate);font-size:20px;line-height:1;cursor:pointer;
}
.xm-x:hover{background:var(--x-lt);border-color:var(--x-mid);color:var(--x-txt)}

.xm-brand{display:flex;align-items:center;justify-content:center;padding:30px 24px 4px}
.xm-tile{
  width:64px;height:64px;border-radius:18px;background:#fff;border:1px solid var(--line);
  box-shadow:0 8px 22px rgba(6,42,56,.11);display:flex;align-items:center;justify-content:center;flex:none;
}
.xm-tile img{width:38px;height:auto}
/* the right-hand tile IS Xero's app icon, so it becomes the blue tile itself */
.xm-tile-x{background:var(--x);border-color:var(--x);color:#fff;box-shadow:0 8px 22px rgba(19,181,234,.4)}
.xm-tile-x .xw{width:74%}
.xm-wire{position:relative;width:86px;height:2px;background:repeating-linear-gradient(90deg,var(--x-mid) 0 6px,transparent 6px 12px)}
.xm-pkt{position:absolute;top:-3px;left:-6px;width:8px;height:8px;border-radius:50%;background:var(--x);box-shadow:0 0 10px rgba(19,181,234,.95);animation:xflow 1.9s linear infinite}
.xm-pkt:nth-child(2){animation-delay:.63s}
.xm-pkt:nth-child(3){animation-delay:1.26s}
@keyframes xflow{0%{transform:translateX(0);opacity:0}14%{opacity:1}86%{opacity:1}100%{transform:translateX(90px);opacity:0}}

.xm-step{display:none;padding:16px 26px 26px}
.xm-step.on{display:block;animation:xin .46s cubic-bezier(.16,.84,.28,1)}
@keyframes xin{from{opacity:0;transform:translateX(18px)}}
.xm-h{text-align:center;margin-bottom:18px}
.xm-h h3{font-size:23px;margin-bottom:8px}
.xm-h p{font-size:14.5px;color:var(--slate-mid);margin:0}

.xf{display:grid;gap:14px}
.xf label{display:block;font-family:var(--f-head);font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--slate);margin-bottom:7px}
.xf input[type=text],.xf input[type=email],.xf select{
  width:100%;font:inherit;font-size:16px;padding:13px 14px;border:2px solid var(--line);border-radius:11px;
  background:#fff;color:var(--ink);min-height:52px;transition:border-color .18s,box-shadow .18s;
}
.xf input:focus,.xf select:focus{outline:0;border-color:var(--x);box-shadow:0 0 0 4px rgba(19,181,234,.2)}
.xf select{
  appearance:none;-webkit-appearance:none;padding-right:42px;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230A6C8F' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:17px;
}
/* .xf-chk is itself a <label>, so it has to opt out of the uppercase
   field-label styling above or the consent sentence shouts. */
.xf label.xf-chk{
  display:flex;gap:12px;align-items:flex-start;background:var(--x-lt);border:1px solid var(--x-mid);
  border-radius:12px;padding:14px;cursor:pointer;transition:border-color .2s,background .2s;
  text-transform:none;letter-spacing:normal;font-family:var(--f-body);font-weight:400;margin-bottom:0;
}
.xf-chk:hover{border-color:var(--x)}
.xf-chk input{width:22px;height:22px;flex:none;accent-color:var(--x-btn);margin:1px 0 0;cursor:pointer}
.xf-chk span{font-size:13.5px;color:var(--x-deep);line-height:1.55}
.xf-note{font-size:12.5px;color:var(--slate-mid);text-align:center;margin:14px 0 0;line-height:1.6}
.xm-foot{display:flex;gap:10px;margin-top:18px}
.xm-foot .btn{flex:1;min-width:0}

.xm-spinwrap{position:relative;width:96px;height:96px;margin:4px auto 20px;display:flex;align-items:center;justify-content:center}
.xm-orb{position:absolute;inset:0;border-radius:50%;border:3px solid var(--x-lt);border-top-color:var(--x);animation:xspin 1s linear infinite}
@keyframes xspin{to{transform:rotate(360deg)}}
.xm-prog{height:8px;border-radius:99px;background:var(--x-lt);overflow:hidden;margin:0 0 18px}
.xm-prog i{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,#4ACDF5,var(--x));transition:width .55s ease}
.xm-list{list-style:none;margin:0;padding:0;display:grid;gap:11px;text-align:left}
.xm-li{display:flex;gap:12px;align-items:center;font-family:var(--f-head);font-size:14.5px;font-weight:600;color:var(--slate-mid);opacity:.45;transition:opacity .3s,color .3s}
.xm-li.act{opacity:1;color:var(--ink)}
.xm-li.done{opacity:1;color:var(--slate)}
.xm-dot{width:24px;height:24px;border-radius:50%;border:2px solid var(--line);flex:none;display:flex;align-items:center;justify-content:center;transition:background .25s,border-color .25s}
.xm-li.act .xm-dot{border-color:var(--x);border-top-color:transparent;animation:xspin .8s linear infinite}
.xm-li.done .xm-dot{background:var(--x);border-color:var(--x);animation:none}
.xm-dot svg{width:13px;height:13px;color:#fff;opacity:0;transform:scale(.4);transition:.26s}
.xm-li.done .xm-dot svg{opacity:1;transform:none}

.xm-check{width:88px;height:88px;border-radius:50%;background:var(--x-lt);border:2px solid var(--x-mid);display:flex;align-items:center;justify-content:center;margin:6px auto 18px;animation:xpop .62s cubic-bezier(.2,1.5,.4,1)}
@keyframes xpop{from{transform:scale(.4);opacity:0}}
.xm-check svg{width:42px;height:42px;color:var(--x);stroke-dasharray:48;stroke-dashoffset:48;animation:xdraw .58s .2s cubic-bezier(.16,.84,.28,1) forwards}
@keyframes xdraw{to{stroke-dashoffset:0}}
.xm-sum{display:grid;gap:9px;margin:18px 0 0;text-align:left}
.xm-sum div{display:flex;gap:11px;align-items:center;background:var(--bg2);border:1px solid var(--line);border-radius:11px;padding:12px 14px;font-size:14px;color:var(--slate)}
.xm-sum svg{width:17px;height:17px;color:var(--x);flex:none}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  .xtile-lg,.xpulse::before,.xpulse::after,.xm-pkt,.xm-orb,.xm-li.act .xm-dot,.pt-live i,.xm-check,.xm-check svg{animation:none !important}
  .xm-check svg{stroke-dashoffset:0}
  .xm-step.on{animation:none}
  .tile,.panel,.feed li{opacity:1 !important;transform:none !important;transition:none !important}
  .bar{transition:none !important}
  .ring .rfg{transition:none !important}
  .xm-bd,.xm-card{transition:none !important}
}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .hd-cta{display:none}
}
@media (max-width:900px){
  .pt-grid{grid-template-columns:1fr}
  .tiles{grid-template-columns:repeat(2,1fr)}
  .pt-blur i{height:64px}
}
@media (max-width:640px){
  .pt-dash{padding:15px}
  .pt-lock,.pt-cta{min-height:0}
  .pt-cta{padding:38px 18px}
  .pt-tag{display:none}
  .pt-blur{padding:16px;gap:10px}
  .tiles{gap:10px}
  .tile{padding:14px 13px 12px}
  .tile.focus::after{content:"Asked for first";right:auto;left:10px;font-size:9px;padding:3px 8px}
  .panel{padding:15px}
  .bars{height:118px}
  .xlab span{font-size:9.5px}
  .feed time{font-size:11px}
  .feed li{gap:11px}
  .xm{padding:12px}
  .xm-card{max-height:calc(100dvh - 24px)}
  .xm-brand{padding:26px 18px 2px}
  .xm-tile{width:56px;height:56px}
  .xm-wire{width:62px}
  @keyframes xflow{0%{transform:translateX(0);opacity:0}14%{opacity:1}86%{opacity:1}100%{transform:translateX(66px);opacity:0}}
  .xm-step{padding:14px 18px 22px}
  .xm-h h3{font-size:21px}
  .xm-foot{flex-direction:column-reverse}
  .xm-spinwrap{width:82px;height:82px}
}
