/* ============================================================
   Infinity (infyits.com): shared stylesheet for every page.
   Light theme (14 October 2026): bright white surfaces with vivid Infinity
   brand gradients (blue, cyan, teal; violet as a sparing accent). Mobile-first, min-width queries only (640 / 768 / 1024 / 1200).
   Motion: sections 20 to 23. Only transform, translate, rotate, scale, opacity,
   clip-path, background-position and custom properties are animated (FAQ height excepted).
   Ambient loops (aurora, marquee, pulses) run only while --play is "running": the
   script sets .is-live on a block while it is on screen and the tab is visible.
   Rules: tokens only (no new hex or rgba outside :root),
   amber/gold only on FawtaraX elements (--fx-*).
   Rules for one page only go in that page's PAGE block at the end.
   ============================================================ */

/* ---------------- 1. Tokens ---------------- */
@property --spin{syntax:'<angle>';inherits:false;initial-value:0deg;}
:root{
  color-scheme:light;
  /* Surfaces: white and cool, clearly blue-tinted neutrals (light theme, 14 October 2026) */
  --bg-0:#ffffff; --bg-1:#eef4ff; --bg-2:#e6eeff; --bg-3:#dce7ff; --bg-deep:#f2f6ff;
  --tint-band:linear-gradient(180deg,#edf3ff 0%,#e9f7fd 100%);
  --card:#ffffff; --field:#ffffff; --field-line:#7d8bab; --header-pill:#ffffffd6; --menu-bg:#fffffff7;
  /* Infinity brand */
  --brand-navy:#1f346d; --brand-navy-deep:#152449; --brand-blue:#2f5aa8; --brand-cyan:#3fa7dc;
  /* Vivid accents: *-300 = text strength (AA on white and the tints), *-400 = decoration only */
  --cyan-300:#0369a1; --cyan-400:#0ea5e9; --teal-300:#0f766e; --teal-400:#14b8a6;
  --blue-300:#1d4ed8; --blue-400:#2563eb; --violet-300:#6d28d9; --violet-400:#7c3aed;
  /* Text (AA on every light surface: see the light-theme report) */
  --text:#0b1530; --text-muted:#344260; --text-soft:#4f5b75;
  /* Lines and glass */
  --on-dark-line:rgba(255,255,255,.14);   /* hairline on the coloured demo band */
  --line:#1e3a8a1f; --line-soft:#1e3a8a14; --line-strong:#1e3a8a3d; --grid-line:#2563eb17;
  --glass:#ffffffbf; --glass-2:#ffffff; --sheen:#ffffff59;
  --card-border:linear-gradient(160deg,#b9cdf7,#dfe7f5 38%,#e2e9f6 62%,#ade0f3);
  --card-sheen:linear-gradient(180deg,#f3f7ff,#ffffff00 42%);
  --ring-stops:transparent 0 55%,#0ea5e9 70%,#2563eb 80%,#14b8a6 88%,transparent 100%;   /* used as conic-gradient(from var(--spin),...) where --spin animates */
  --ring-stops-band:transparent 0 50%,#ffffffe6 68%,#a5f3fc 80%,#ffffffb3 90%,transparent 100%;
  /* Gradients (every stop of --grad-cta and --grad-band keeps white text at 4.5:1 or more) */
  --grad-cta:linear-gradient(110deg,#1d4ed8 0%,#2563eb 25%,#0e7490 50%,#0f766e 75%,#1d4ed8 100%);
  --grad-band:linear-gradient(125deg,#1d4ed8 0%,#2563eb 34%,#0369a1 68%,#0f766e 100%);
  --grad-text:linear-gradient(100deg,#1d4ed8 0%,#2563eb 20%,#0284c7 40%,#0d9488 60%,#6d28d9 80%,#1d4ed8 100%);   /* large text only (3:1) */
  --grad-text-sm:linear-gradient(100deg,#1d4ed8 0%,#0369a1 50%,#0f766e 100%);   /* small text (4.5:1) */
  --grad-head:linear-gradient(180deg,#0b1530 30%,#1e3a8a 100%);
  --grad-line:linear-gradient(90deg,transparent,#0ea5e9 25%,#2563eb 55%,#14b8a6 80%,transparent);
  /* Glows (pre-rendered radial layers; moved with transform only) */
  --glow-cyan:#0ea5e940; --glow-blue:#2563eb33; --glow-teal:#14b8a633; --glow-violet:#7c3aed29;
  --aurora-1:#2563eb80; --aurora-2:#06b6d480; --aurora-3:#14b8a670; --aurora-4:#7c3aed59; --aurora-soft:#0ea5e929;
  --band-glow-1:#7c3aed80; --band-glow-2:#0e749099; --band-glow-3:#1e40afb3;
  --on-band:#ffffff;
  /* FawtaraX brand: FawtaraX elements only (rich gold on cream) */
  --fx-gold:#c8962e; --fx-gold-deep:#a8771f; --fx-gold-text:#8a5a12; --fx-name:#4a3208; --fx-mark-bg:#ffffff;
  --fx-surface:#fffaf0; --fx-surface-2:#fcefd2; --fx-border:#d4a24ca6; --fx-glow:#f0b44752; --fx-scrim:#1c1405bf;
  /* Status (coral is for form errors only) */
  --success-bg:#dcfce7; --success-text:#166534; --danger-bg:#fee2e2; --danger-text:#b91c1c; --wa-green:#128c7e;
  /* Icon tiles: teal, blue, violet (+ cyan default). Solid gradient tile, white icon (3:1 or more on every stop). No amber, no coral. */
  --tile-teal-fg:#0f766e;   --tile-teal-bg:#d5f5ef;   --tile-teal-line:#14b8a666;   --tile-teal-grad:linear-gradient(135deg,#0f766e,#0d9488 55%,#0891b2);
  --tile-blue-fg:#1d4ed8;   --tile-blue-bg:#dfe9ff;   --tile-blue-line:#2563eb59;   --tile-blue-grad:linear-gradient(135deg,#1d4ed8,#3b82f6);
  --tile-violet-fg:#6d28d9; --tile-violet-bg:#ede5ff; --tile-violet-line:#7c3aed59; --tile-violet-grad:linear-gradient(135deg,#6d28d9,#8b5cf6);
  --tile-cyan-fg:#0369a1;   --tile-cyan-bg:#d9f1fc;   --tile-cyan-line:#0ea5e966;   --tile-cyan-grad:linear-gradient(135deg,#2563eb,#0891b2);
  /* Focus */
  --focus-ring:#1d4ed8; --focus-ring-band:#ffffff;
  /* Layout */
  --maxw:1200px;
  --gutter:clamp(1rem,.5rem + 2vw,1.5rem);
  --header-h:64px;
  --section-y:clamp(4rem,2.5rem + 6vw,7.5rem);
  --section-y-tight:clamp(2.5rem,1.5rem + 3vw,4rem);
  --space-1:.25rem; --space-2:.5rem; --space-3:.75rem; --space-4:1rem;
  --space-5:1.5rem; --space-6:2rem; --space-7:3rem; --space-8:4rem;
  /* Type scale */
  --text-xs:.8125rem; --text-sm:.9375rem; --text-base:1rem;
  --text-md:clamp(1.0625rem,1rem + .3vw,1.1875rem);
  --text-lg:clamp(1.125rem,1.05rem + .3vw,1.25rem);
  --text-xl:clamp(1.5rem,1.25rem + 1vw,2rem);
  --text-2xl:clamp(1.875rem,1.3rem + 2.4vw,3rem);
  --text-3xl:clamp(2.125rem,1.3rem + 3.4vw,3.75rem);
  --text-display:clamp(2.375rem,1.1rem + 4.4vw,4.25rem);
  --font-head:'Sora',system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-body:'Inter',system-ui,-apple-system,"Segoe UI",sans-serif;
  --lh-tight:1.08; --lh-snug:1.3; --lh-body:1.65;
  /* Radius */
  --radius-sm:10px; --radius:16px; --radius-lg:24px; --radius-xl:32px; --radius-pill:999px;
  /* Shadow: soft, cool, coloured */
  --shadow-sm:0 1px 2px #0b15300d,0 10px 28px -16px #1e3a8a47;
  --shadow-md:0 22px 48px -24px #1e3a8a52;
  --shadow-lg:0 40px 90px -36px #1e3a8a6b,0 8px 24px -12px #1e3a8a24;
  --shadow-cta:0 10px 28px -10px #2563eba6,0 2px 6px -1px #1d4ed84d;
  --shadow-band:0 40px 90px -34px #1d4ed8a6,0 12px 32px -16px #0f766e66;
  --shot-glow:0 34px 80px -30px #2563eb8c,0 14px 44px -18px #0ea5e980,0 2px 8px -2px #1e3a8a26;
  --shot-glow-hover:0 44px 90px -30px #2563eba6,0 18px 54px -16px #0ea5e999,0 2px 8px -2px #1e3a8a26;
  /* Motion */
  --dur-fast:140ms; --dur-base:220ms; --dur-mid:360ms; --dur-slow:560ms; --dur-long:900ms;
  --ease-out:cubic-bezier(.16,1,.3,1); --ease-in-out:cubic-bezier(.65,0,.35,1); --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --rise:36px; --slide:48px; --stagger:80ms;
  /* Reveal budget: a target is fully visible within --delay-max + --dur-reveal (1040ms) of entering the viewport */
  --dur-reveal:640ms; --delay-max:400ms;
  --play:paused;
}
@media (min-width:1024px){ :root{ --header-h:72px; } }

/* ---------------- 2. Base ---------------- */
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + var(--space-4));-webkit-text-size-adjust:100%;background:var(--bg-0);}
body{margin:0;font:400 var(--text-base)/var(--lh-body) var(--font-body);color:var(--text);background:var(--bg-0);-webkit-font-smoothing:antialiased;overflow-x:clip;}
h1,h2,h3{font-family:var(--font-head);font-weight:700;letter-spacing:-.025em;line-height:var(--lh-tight);color:inherit;text-wrap:balance;margin:0;}
h1{font-size:var(--text-3xl);letter-spacing:-.04em;}
h2{font-size:var(--text-2xl);letter-spacing:-.035em;}
h3{font-size:var(--text-lg);font-weight:600;line-height:var(--lh-snug);letter-spacing:-.015em;}
p{margin:0;text-wrap:pretty;}
:where(ul[class],ol[class]){margin:0;padding:0;list-style:none;}   /* zero specificity: component margins win */
img,svg{max-width:100%;}
img{display:block;height:auto;}
svg{flex:none;}
picture{display:contents;}
button{font:inherit;}
::selection{background:var(--brand-blue);color:#fff;}
[id]{scroll-margin-top:calc(var(--header-h) + var(--space-4));}

a{color:inherit;text-decoration:none;}
.inline-link{color:var(--blue-300);text-decoration:underline;text-decoration-color:var(--tile-blue-line);text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-color var(--dur-base) var(--ease-out);}
.inline-link:hover{text-decoration-color:currentColor;text-decoration-thickness:2px;}

:focus{outline:none;}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:var(--radius-sm);}
main:focus-visible{outline:none;}   /* focus target of the skip link, not a control */

.skip-link{position:absolute;left:var(--space-4);top:-100px;z-index:200;padding:var(--space-3) var(--space-4);background:var(--text);color:var(--bg-0);border-radius:var(--radius-sm);font-weight:600;}
.skip-link:focus{top:var(--space-3);}

.sr-only{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.wm,.nowrap{white-space:nowrap;}
.wm-big{font-size:1.16em;}
.on-dark{color:var(--text);}

/* ---------------- 3. Layout ---------------- */
.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);}
.section{position:relative;isolation:isolate;padding-block:var(--section-y);overflow-x:clip;}   /* side-slide reveals never widen the page */
.section.tight{padding-block:var(--section-y-tight);}
.section.tint{background:var(--tint-band);border-block:1px solid var(--line-soft);view-timeline-name:--band;}
/* a soft light pool at the top of every tinted band (parallax where scroll timelines exist) */
.section.tint::before{content:"";position:absolute;left:50%;top:-1px;z-index:-1;width:min(1100px,140vw);height:420px;translate:-50% 0;background:radial-gradient(closest-side,var(--aurora-soft),transparent);opacity:.9;pointer-events:none;}
.section.tint::after{content:"";position:absolute;inset:-1px 0 auto;height:2px;background:var(--grad-line);opacity:.7;pointer-events:none;}

.grid-3,.grid-2{display:grid;gap:var(--space-5);grid-template-columns:minmax(0,1fr);}
@media (min-width:640px){
  .grid-3,.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));}
  .grid-3.five > :last-child{grid-column:1/-1;}
}
@media (min-width:1024px){
  .grid-3{grid-template-columns:repeat(3,minmax(0,1fr));}
  .grid-3.five{grid-template-columns:repeat(6,minmax(0,1fr));}
  .grid-3.five > *,.grid-3.five > :last-child{grid-column:span 2;}
  .grid-3.five > :nth-child(4){grid-column:2 / span 2;}
}

/* ---------------- 4. Header: flat at the top, a floating glass pill once scrolled ---------------- */
.site-header{position:sticky;top:0;z-index:80;}
.site-header::before{content:"";position:absolute;inset:0;z-index:-1;border-bottom:1px solid var(--line-soft);background:linear-gradient(180deg,var(--bg-0),transparent);opacity:.9;transition:opacity var(--dur-mid) var(--ease-out);pointer-events:none;}
.site-header.is-scrolled::before{opacity:0;}
.scroll-progress{display:none;position:absolute;inset:0 0 auto 0;height:2px;background:linear-gradient(90deg,var(--teal-400),var(--cyan-400),var(--blue-400));transform:scaleX(0);transform-origin:left;pointer-events:none;}
.js .scroll-progress{display:block;}
.nav-bar{position:relative;display:flex;align-items:center;gap:var(--space-3);min-height:var(--header-h);}
.nav-bar::before{content:"";position:absolute;inset:8px calc(var(--gutter) - 12px);z-index:-1;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--header-pill);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(16px) saturate(150%);backdrop-filter:blur(16px) saturate(150%);opacity:0;transform:scale(.97) translateY(-6px);transition:opacity var(--dur-mid) var(--ease-out),transform var(--dur-mid) var(--ease-out);pointer-events:none;}
.is-scrolled .nav-bar::before{opacity:1;transform:none;}
.brand{display:flex;align-items:center;gap:var(--space-3);flex:none;min-height:44px;color:var(--text);}
.brand img{height:34px;width:auto;flex:none;transform-origin:left center;transition:transform var(--dur-mid) var(--ease-out);}
.is-scrolled .brand img{transform:scale(.9);}
.brand-text{display:block;line-height:var(--lh-tight);}
.brand-name{display:block;font:700 var(--text-lg)/var(--lh-tight) var(--font-head);letter-spacing:-.02em;white-space:nowrap;}
.brand small{display:none;font:400 var(--text-xs)/1.3 var(--font-body);color:var(--text-soft);white-space:nowrap;}
.nav-right{display:flex;align-items:center;gap:var(--space-2);margin-left:auto;flex:none;}
.nav-cta{flex:none;gap:.3em;}   /* the gap stands in for the space after "Request a" */

.nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid var(--line);background:var(--glass);border-radius:50%;color:var(--text);cursor:pointer;}
.nav-toggle-bars,.nav-toggle-bars::before,.nav-toggle-bars::after{display:block;width:18px;height:2px;background:currentColor;border-radius:2px;transition:transform var(--dur-base) var(--ease-out),opacity var(--dur-fast);}
.nav-toggle-bars{position:relative;}
.nav-toggle-bars::before,.nav-toggle-bars::after{content:"";position:absolute;left:0;}
.nav-toggle-bars::before{top:-6px;}
.nav-toggle-bars::after{top:6px;}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars{background:transparent;}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars::before{transform:translateY(6px) rotate(45deg);}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars::after{transform:translateY(-6px) rotate(-45deg);}

.nav-links{position:absolute;inset:calc(100% + 4px) calc(var(--gutter) - 12px) auto;display:flex;flex-direction:column;padding:var(--space-2) var(--space-4) var(--space-3);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--menu-bg);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);max-height:calc(100dvh - var(--header-h) - 16px);overflow-y:auto;}
.js .nav-links{display:none;}
.js .site-header.nav-open .nav-links{display:flex;--ry:-10px;--rs:.98;animation:reveal-in var(--dur-mid) var(--ease-out);}
.nav-links a{display:flex;align-items:center;min-height:48px;border-bottom:1px solid var(--line-soft);font:500 var(--text-base) var(--font-body);color:var(--text-muted);transition:color var(--dur-base) var(--ease-out);}
.nav-links a:last-child{border-bottom:0;}
.nav-links a:hover,.nav-links a[aria-current="page"]{color:var(--text);}
.nav-links a[aria-current="page"]{font-weight:600;}
/* no JS: no toggle, links always listed under the bar */
html:not(.js) .nav-toggle{display:none;}
html:not(.js) .site-header{position:static;background:var(--bg-0);}
html:not(.js) .nav-bar{flex-wrap:wrap;}
html:not(.js) .nav-links{position:static;order:3;flex:1 1 100%;box-shadow:none;border:0;background:none;padding-inline:0;max-height:none;}
@media (max-width:399.98px){
  .nav-cta-pre{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
}
@media (min-width:1024px){
  .brand img{height:38px;}
  .nav-toggle{display:none;}
  html .site-header .nav-links{position:static;display:flex;flex-direction:row;flex:0 1 auto;order:0;gap:var(--space-1);margin-left:auto;padding:0;background:none;border:0;box-shadow:none;max-height:none;overflow:visible;-webkit-backdrop-filter:none;backdrop-filter:none;}
  html .site-header.nav-open .nav-links{animation:none;}
  .nav-links a{position:relative;display:inline-flex;min-height:44px;padding-inline:var(--space-3);border:0;border-radius:var(--radius-pill);font-size:var(--text-sm);white-space:nowrap;}
  .nav-links a::after{content:"";position:absolute;left:50%;bottom:4px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--cyan-400);box-shadow:0 0 8px var(--cyan-400);opacity:0;transform:scale(0);transition:opacity var(--dur-base),transform var(--dur-mid) var(--ease-spring);}
  .nav-links a:hover::after,.nav-links a[aria-current="page"]::after{opacity:1;transform:none;}
  .nav-right{margin-left:var(--space-4);}
}
@media (min-width:1200px){ .brand small{display:block;} }

/* ---------------- 5. Buttons: glowing gradient primary, glass outline ---------------- */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:48px;padding:0 var(--space-5);border:1px solid transparent;border-radius:var(--radius-pill);font:600 var(--text-sm)/1 var(--font-body);letter-spacing:.005em;white-space:nowrap;cursor:pointer;isolation:isolate;transform:translate3d(var(--mgx,0px),var(--mgy,0px),0);transition:transform var(--dur-mid) var(--ease-out),border-color var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out),background-position var(--dur-slow) var(--ease-out);}
.btn-sm{min-height:44px;padding:0 var(--space-4);}
.btn-block{width:100%;}
.btn-primary{background:var(--grad-cta) 0 0/200% 100%;color:#fff;box-shadow:var(--shadow-cta);}
/* glow layer (opacity only) and a sheen that sweeps across on hover */
.btn-primary:not(.btn-block)::before{content:"";position:absolute;inset:-6px;z-index:-1;border-radius:inherit;background:radial-gradient(closest-side,var(--glow-cyan),transparent);opacity:0;transition:opacity var(--dur-mid) var(--ease-out);pointer-events:none;}
.btn-primary::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(105deg,transparent 38%,var(--sheen) 50%,transparent 62%) 160% 0/260% 100% no-repeat;pointer-events:none;}
@media (hover:hover){
  .btn:hover{transform:translate3d(var(--mgx,0px),calc(var(--mgy,0px) - 2px),0);}
  .btn-primary:hover{background-position:100% 0;}
  .btn-primary:hover::before{opacity:1;}
  .btn-primary:hover::after{background-position:-60% 0;transition:background-position var(--dur-long) var(--ease-out);}
}
.btn:active{transform:translate3d(var(--mgx,0px),var(--mgy,0px),0) scale(.97);}
.btn-outline{background:linear-gradient(var(--card),var(--card)) padding-box,linear-gradient(var(--tile-blue-line),var(--tile-blue-line)) border-box;color:var(--text);box-shadow:var(--shadow-sm);}
.btn-outline:hover,.btn-outline:focus-visible{background:linear-gradient(var(--bg-1),var(--bg-1)) padding-box,conic-gradient(from var(--spin),var(--ring-stops)) border-box;animation:spin 2.4s linear infinite;}
.btn[disabled]{opacity:.6;cursor:progress;transform:none;}
.btn.is-sending::before{content:"";flex:none;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-icon 700ms linear 90;}

/* ---------------- 6. Eyebrow, section head, shared text ---------------- */
.eyebrow{font:600 var(--text-xs)/1.4 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--blue-300);margin-bottom:var(--space-4);}
/* pill eyebrows above big headings, with a glowing dot */
:is(.section-head,.hero-copy,.page-header .wrap) > .eyebrow{display:inline-flex;align-items:center;gap:.6em;padding:.45em 1em;border:1px solid var(--tile-blue-line);border-radius:var(--radius-pill);background:var(--glass);box-shadow:var(--shadow-sm);}
:is(.section-head,.hero-copy,.page-header .wrap) > .eyebrow::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--tile-cyan-grad);box-shadow:0 0 0 3px var(--glow-cyan),0 0 10px var(--cyan-400);}
.section-head{margin-bottom:var(--space-7);max-width:760px;}
.section-head h2{background:var(--grad-head);-webkit-background-clip:text;background-clip:text;color:transparent;padding-bottom:.06em;}
.section-head p:not(.eyebrow){margin-top:var(--space-4);font-size:var(--text-md);color:var(--text-muted);max-width:62ch;}
.section-head.center{margin-inline:auto;text-align:center;}
.section-head.center p:not(.eyebrow){margin-inline:auto;}
.h-xl{font-size:var(--text-xl);}
.lead{margin-top:var(--space-5);font-size:var(--text-md);color:var(--text-muted);max-width:58ch;}
.hero-cta{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-6);}
.hero-cta .btn{flex:1 1 auto;}
.hero-cta.center{justify-content:center;}
/* trust row (home hero, e-invoicing page header) and the small hedged note under page-header buttons (e-invoicing) */
.trust-row{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);margin-top:var(--space-6);font:500 var(--text-sm) var(--font-body);color:var(--text-muted);} .page-header .trust-row{margin-top:var(--space-5);}
.trust-row li{display:inline-flex;align-items:center;gap:var(--space-2);} .trust-row svg{flex:none;width:16px;height:16px;color:var(--teal-300);}
.ph-note{margin-top:var(--space-4);max-width:62ch;font-size:var(--text-sm);color:var(--text-soft);}
@media (min-width:640px){ .hero-cta .btn{flex:0 0 auto;} }

/* ---------------- 7. Ambient backgrounds (hero, page header, demo panel) ---------------- */
/* Aurora: pre-softened radial layers drifting with transform only. Grid: hairlines with a radial fade. */
.hero-bg{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;}
.aurora{position:absolute;inset:-25% -15% -10%;}
/* static colour mesh: behind the screenshot (bottom on phones, right half from 1024px); the copy column stays light for contrast */
.hero-bg::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 30% at 100% 100%,var(--aurora-3),transparent 70%);}
@media (min-width:1024px){ .hero-bg::before{background:radial-gradient(34% 42% at 88% 4%,var(--aurora-4),transparent 70%),radial-gradient(30% 36% at 62% 0%,var(--aurora-2),transparent 70%),radial-gradient(34% 40% at 100% 62%,var(--aurora-3),transparent 70%),radial-gradient(26% 30% at 70% 88%,var(--aurora-1),transparent 70%);} }
.aurora i{position:absolute;display:block;width:min(62vmax,900px);aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,var(--c),transparent);will-change:transform;animation:drift var(--t,22s) var(--ease-in-out) infinite alternate;animation-play-state:var(--play);}
.aurora i:nth-child(1){--c:var(--aurora-soft);left:-8%;top:0;}
.aurora i:nth-child(2){--c:var(--aurora-1);right:-6%;top:-6%;--t:26s;--dx:-90px;--dy:70px;--ds:1.2;}
.aurora i:nth-child(3){--c:var(--aurora-3);left:46%;top:58%;--t:19s;--dx:120px;--dy:-60px;--ds:.85;}   /* phones: behind the screenshot, below the copy */
@media (min-width:1024px){ .aurora i:nth-child(3){top:34%;} }
.grid-bg,.page-header::after{position:absolute;inset:0;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:56px 56px;background-position:center top;-webkit-mask-image:radial-gradient(ellipse 75% 65% at 50% 25%,black 20%,transparent 75%);mask-image:radial-gradient(ellipse 75% 65% at 50% 25%,black 20%,transparent 75%);pointer-events:none;}

/* ---------------- 8. Page header (inner pages, 404) ---------------- */
.page-header{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(3rem,2rem + 5vw,6.5rem) clamp(3rem,2rem + 4vw,5.5rem);border-bottom:1px solid var(--line-soft);}
.js .page-header,.js .hero{margin-top:calc(var(--header-h) * -1);}   /* the aurora runs behind the transparent header */
.js .page-header{padding-top:calc(var(--header-h) + clamp(3rem,2rem + 5vw,6.5rem));}
.page-header::before{content:"";position:absolute;inset:-35% -20% -20%;z-index:-2;background:radial-gradient(38% 46% at 18% 34%,var(--aurora-soft),transparent 70%),radial-gradient(34% 44% at 84% 26%,var(--aurora-1),transparent 70%),radial-gradient(30% 40% at 66% 84%,var(--aurora-3),transparent 70%),radial-gradient(26% 34% at 96% 70%,var(--aurora-4),transparent 70%),radial-gradient(28% 30% at 58% 6%,var(--aurora-2),transparent 70%);will-change:transform;animation:drift 20s var(--ease-in-out) infinite alternate;animation-play-state:var(--play);pointer-events:none;}
.page-header::after{content:"";z-index:-1;}
.page-header > .wrap{position:relative;}
.page-header h1{max-width:880px;}
.page-header .lead{max-width:64ch;}
/* orbit rings on the right (desktop): one pre-painted layer, turned with the rotate property only */
.ph-orb{display:none;}
@media (min-width:1024px){
  .ph-orb{display:block;position:absolute;right:-160px;top:50%;z-index:-1;width:600px;aspect-ratio:1;translate:0 -50%;border-radius:50%;background:conic-gradient(var(--cyan-400),transparent 28%,var(--blue-400) 52%,transparent 78%,var(--violet-400));-webkit-mask:radial-gradient(closest-side,transparent 62%,black 62.5% 63.2%,transparent 63.7% 84%,black 84.4% 84.9%,transparent 85.4%);mask:radial-gradient(closest-side,transparent 62%,black 62.5% 63.2%,transparent 63.7% 84%,black 84.4% 84.9%,transparent 85.4%);opacity:.7;will-change:rotate;animation:orb-turn 40s linear infinite;animation-play-state:var(--play);pointer-events:none;}
}
@keyframes orb-turn{to{rotate:360deg;}}
.crumb{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-muted);margin-bottom:var(--space-4);}
.crumb li+li::before{content:"/";content:"/" / "";margin-right:var(--space-2);opacity:.6;}
.crumb a{display:inline-block;padding-block:var(--space-3);color:var(--text-muted);}
.crumb a:hover{color:var(--text);text-decoration:underline;}

/* ---------------- 9. Cards: glass, 1px gradient border, spotlight, tilt ---------------- */
.card{position:relative;isolation:isolate;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);border:1px solid transparent;border-radius:var(--radius-lg);background:var(--card-sheen) padding-box,linear-gradient(var(--card),var(--card)) padding-box,var(--card-border) border-box;box-shadow:var(--shadow-sm);color:var(--text);transform:perspective(1100px) translateY(var(--lift,0px)) rotateX(var(--tly,0deg)) rotateY(var(--tlx,0deg));transition:transform var(--dur-mid) var(--ease-out);}
/* spotlight that follows the pointer (--mx/--my are set by the script) */
.card::before,.arch-node::before,.stat-banner::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:radial-gradient(380px circle at var(--mx,50%) var(--my,-20%),var(--glow-cyan),transparent 62%);opacity:0;transition:opacity var(--dur-mid) var(--ease-out);pointer-events:none;}
/* animated gradient ring on hover and keyboard focus */
.card::after,.cta-panel::after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:conic-gradient(from var(--spin),var(--ring-stops));-webkit-mask:linear-gradient(black 0 0) content-box,linear-gradient(black 0 0);-webkit-mask-composite:xor;mask:linear-gradient(black 0 0) content-box exclude,linear-gradient(black 0 0);opacity:0;transition:opacity var(--dur-mid) var(--ease-out);pointer-events:none;}
.card p{font-size:var(--text-sm);color:var(--text-muted);}
.card .eyebrow{margin-bottom:0;font-size:var(--text-xs);}
.card .partner-badge{align-self:flex-start;position:relative;z-index:1;}   /* above a card's stretched link */
@media (hover:hover){
  .card:hover::before,.arch-node:hover::before,.stat-banner:hover::before{opacity:1;}
  .card:hover::after{opacity:1;animation:spin 4s linear infinite;}
  .card.is-link:hover{--lift:-6px;}
  .card.is-link:hover .learn-more svg{transform:translateX(4px);}
  .card:hover .icon-circle,a.contact-item:hover .icon-circle{transform:translateY(-2px) scale(1.06) rotate(-4deg);}
  .customdev-card:hover .customdev-num{background-position:100% 0;}
}
.card:focus-within::after{opacity:1;}

.icon-circle,.icon-circle.chip-teal{--tg:var(--tile-teal-grad);--ln:var(--tile-teal-line);}
.icon-circle{display:flex;align-items:center;justify-content:center;flex:none;width:48px;height:48px;border-radius:14px;color:var(--on-band);background:var(--tg);box-shadow:0 10px 22px -8px var(--ln),0 0 0 4px var(--glass),inset 0 1px 0 var(--sheen);transition:transform var(--dur-mid) var(--ease-spring);}
.icon-circle svg{width:22px;height:22px;}
:is(.stat-item,.contact-item,.cta-panel) .icon-circle{--tg:var(--tile-cyan-grad);--ln:var(--tile-cyan-line);}
.icon-circle.chip-blue{--tg:var(--tile-blue-grad);--ln:var(--tile-blue-line);}
.icon-circle.chip-violet{--tg:var(--tile-violet-grad);--ln:var(--tile-violet-line);}

.learn-more{display:inline-flex;align-items:center;gap:var(--space-2);margin-top:auto;padding-top:var(--space-3);font:600 var(--text-sm) var(--font-body);color:var(--blue-300);}
.learn-more svg{width:14px;height:14px;transition:transform var(--dur-base) var(--ease-out);}
.overview-card .learn-more::after{content:"";position:absolute;inset:0;border-radius:var(--radius-lg);}

.module-card-head,.customdev-card-top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-2);}
.tag{padding:.3em .8em;border:1px solid var(--line);border-radius:var(--radius-pill);font:600 var(--text-xs) var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);}
.module-card .check-list{margin-top:var(--space-1);}
.customdev-card{padding:var(--space-6);}
.customdev-num{font:700 var(--text-3xl)/1 var(--font-head);letter-spacing:-.04em;background:var(--grad-text) 0 0/200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;transition:background-position var(--dur-long) var(--ease-out);}

.card-cta{grid-column:1/-1;align-items:flex-start;background:radial-gradient(120% 160% at 0% 0%,var(--aurora-soft),transparent 60%) padding-box,radial-gradient(80% 140% at 100% 100%,var(--glow-teal),transparent 60%) padding-box,linear-gradient(var(--bg-1),var(--bg-1)) padding-box,var(--card-border) border-box;}
.card-cta p{margin-top:var(--space-1);}
@media (min-width:768px){ .card-cta{flex-direction:row;align-items:center;justify-content:space-between;gap:var(--space-6);} }
@media (min-width:1024px){ .card{padding:var(--space-6);} }

/* ---------------- 10. Stat banner (glass strip) ---------------- */
.stat-banner{position:relative;isolation:isolate;display:grid;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--card-sheen),var(--card);box-shadow:var(--shadow-md);color:var(--text);}
.stat-item{display:flex;gap:var(--space-4);align-items:flex-start;padding:var(--space-5);}
.stat-item+.stat-item{border-top:1px solid var(--line-soft);}
.stat-item-label{font:600 var(--text-lg)/var(--lh-snug) var(--font-head);letter-spacing:-.015em;color:var(--text);}
.stat-item-desc{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--text-muted);}
@media (min-width:768px){
  .stat-banner{grid-template-columns:repeat(3,minmax(0,1fr));}
  .stat-item{padding:var(--space-6);}
  .stat-item+.stat-item{border-top:0;border-left:1px solid var(--line-soft);}
}

/* ---------------- 11. Check list ---------------- */
.check-list{display:grid;gap:var(--space-3);}
.check-item{display:flex;gap:var(--space-3);align-items:flex-start;font-size:var(--text-sm);line-height:1.6;color:var(--text-muted);}
.check-item svg{width:18px;height:18px;margin-top:3px;padding:3px;box-sizing:content-box;border-radius:50%;background:var(--tile-teal-grad);color:var(--on-band);}

/* ---------------- 12. FAQ ---------------- */
.faq-list{display:grid;gap:var(--space-3);max-width:820px;margin-inline:auto;}
.faq-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--glass);transition:border-color var(--dur-mid) var(--ease-out),background-color var(--dur-mid) var(--ease-out);}
.faq-item:hover{border-color:var(--line-strong);}
.faq-item[open]{border-color:var(--tile-cyan-line);background:var(--glass-2);}
.faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:64px;padding:var(--space-4) var(--space-5);cursor:pointer;list-style:none;border-radius:inherit;font:600 var(--text-lg)/var(--lh-snug) var(--font-head);letter-spacing:-.015em;color:var(--text);}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{content:"";flex:none;width:9px;height:9px;margin-right:var(--space-1);border-right:2px solid var(--cyan-300);border-bottom:2px solid var(--cyan-300);transform:translateY(-2px) rotate(45deg);transition:transform var(--dur-mid) var(--ease-spring);}
.faq-item[open] summary::after{transform:translateY(2px) rotate(-135deg);}
.faq-answer{padding:0 var(--space-5) var(--space-5);}
.faq-answer p{font-size:var(--text-base);color:var(--text-muted);max-width:68ch;}
/* open / close: height via ::details-content where supported, a short fade-down elsewhere */
@supports selector(::details-content){
  .faq-item{interpolate-size:allow-keywords;}
  .faq-item::details-content{block-size:0;overflow:clip;opacity:0;transition:block-size var(--dur-mid) var(--ease-out),opacity var(--dur-mid) var(--ease-out),content-visibility var(--dur-mid) allow-discrete;}
  .faq-item[open]::details-content{block-size:auto;opacity:1;}
}
@supports not selector(::details-content){ .faq-item[open] .faq-answer{--ry:-6px;animation:reveal-in var(--dur-mid) var(--ease-out);} }

/* ---------------- 13. Contact section and form ---------------- */
.contact-grid{display:grid;gap:var(--space-6);}
.contact-grid .contact-form{order:-1;}
.contact-list{display:grid;gap:var(--space-3);}
.contact-item{display:flex;align-items:center;gap:var(--space-4);min-height:68px;padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--glass);transition:border-color var(--dur-base) var(--ease-out),background-color var(--dur-base) var(--ease-out);}
a.contact-item:hover{border-color:var(--tile-cyan-line);background:var(--glass-2);}
.contact-item .label{display:block;font:600 var(--text-xs) var(--font-body);letter-spacing:.04em;color:var(--text-soft);}
.contact-item .value{display:block;font:600 var(--text-base) var(--font-body);color:var(--text);overflow-wrap:anywhere;}

.contact-form{position:relative;padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--card-sheen),var(--card);box-shadow:var(--shadow-lg);color:var(--text);}
.form-hint{margin-bottom:var(--space-4);font-size:var(--text-xs);color:var(--text-soft);}
.form-row{display:grid;gap:0 var(--space-4);}
.field{margin-bottom:var(--space-4);}
.field label{display:block;margin-bottom:var(--space-2);font:500 var(--text-sm) var(--font-body);color:var(--text);transition:color var(--dur-base) var(--ease-out);}
.field input,.field textarea{display:block;width:100%;min-height:48px;padding:var(--space-3) var(--space-4);font:400 1rem/1.4 var(--font-body);color:var(--text);background:var(--field);border:1px solid var(--field-line);border-radius:var(--radius-sm);transition:border-color var(--dur-base) var(--ease-out),background-color var(--dur-base) var(--ease-out);}
.field:focus-within label{color:var(--cyan-300);}
.field ::placeholder{color:var(--text-soft);opacity:1;}
.field textarea{min-height:120px;resize:vertical;}
.field input:hover,.field textarea:hover{border-color:var(--blue-400);}
.field input:focus-visible,.field textarea:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-color:var(--blue-400);background:var(--card);}
.field input:user-invalid,.field textarea:user-invalid{border-color:var(--danger-text);box-shadow:inset 0 0 0 1px var(--danger-text);}
.form-note{margin-top:var(--space-3);font-size:var(--text-xs);color:var(--text-soft);}
.form-note.form-success{padding:var(--space-3);background:var(--success-bg);border-radius:var(--radius-sm);color:var(--success-text);font-weight:600;}
.form-note.form-error{padding:var(--space-3);background:var(--danger-bg);border-radius:var(--radius-sm);color:var(--danger-text);font-weight:600;}
.form-hp{display:none;}
/* Phone: country-code picker + number. Without JS the native select shows; PHONE_SCRIPT swaps in .cc-btn + .cc-pop */
.phone-input{position:relative;display:flex;gap:var(--space-2);} .phone-input > input{flex:1 1 auto;min-width:0;} .cc-select{flex:0 0 auto;max-width:9.5rem;min-height:48px;padding:0 var(--space-3);font:400 1rem/1.4 var(--font-body);color:var(--text);background:var(--field);border:1px solid var(--field-line);border-radius:var(--radius-sm);}
.cc-select[hidden],.cc-pop[hidden],.cc-list li[hidden]{display:none;} .cc-btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:0 var(--space-3);font:600 1rem/1 var(--font-body);color:var(--text);background:var(--field);border:1px solid var(--field-line);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;transition:border-color var(--dur-base) var(--ease-out),background-color var(--dur-base) var(--ease-out);} .cc-btn:hover,.cc-select:hover{border-color:var(--blue-400);} .cc-btn[aria-expanded="true"]{border-color:var(--blue-400);background:var(--card);} .cc-btn:focus-visible,.cc-select:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-color:var(--blue-400);background:var(--card);}
.cc-iso{font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;color:var(--text-soft);} .cc-chev{color:var(--text-soft);transition:transform var(--dur-base) var(--ease-out);} .cc-btn[aria-expanded="true"] .cc-chev{transform:rotate(180deg);} .cc-pop{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;padding:var(--space-2);background:var(--card);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow-lg);} .cc-pop.cc-up{top:auto;bottom:calc(100% + 6px);} .field .cc-search{min-height:44px;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);} .cc-list{max-height:14rem;margin:var(--space-2) 0 0;padding:0;list-style:none;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;} .cc-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:40px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text);cursor:pointer;} .cc-list li.is-active,.cc-list li:hover{background:var(--tile-blue-bg);} .cc-list li[aria-selected="true"]{font-weight:600;} .cc-list li[aria-selected="true"] .cc-code{color:var(--tile-blue-fg);} .cc-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} .cc-code{flex:0 0 auto;font-variant-numeric:tabular-nums;color:var(--text-soft);} .cc-list li.cc-empty{justify-content:center;color:var(--text-soft);cursor:default;background:none;}
.form-row{grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));}
@media (min-width:768px){
  .contact-grid{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:var(--space-7);align-items:start;}
  .contact-grid .contact-form{order:0;}
  .contact-form{padding:var(--space-6);}
}

/* ---------------- 14. Demo panel (inner pages): aurora glass with a turning gradient ring ---------------- */
.cta-panel{position:relative;isolation:isolate;overflow:hidden;display:grid;gap:var(--space-6);padding:var(--space-6) var(--space-5);border:1px solid var(--on-dark-line);border-radius:var(--radius-xl);background:var(--grad-band);box-shadow:var(--shadow-band);color:var(--on-band);--focus-ring:var(--focus-ring-band);--ring-stops:var(--ring-stops-band);}
.cta-panel::before{content:"";position:absolute;inset:-40%;z-index:-1;background:radial-gradient(30% 34% at 22% 30%,var(--band-glow-3),transparent 70%),radial-gradient(26% 30% at 70% 72%,var(--band-glow-2),transparent 70%),radial-gradient(22% 26% at 82% 18%,var(--band-glow-1),transparent 70%);will-change:transform;animation:drift 18s var(--ease-in-out) infinite alternate;animation-play-state:var(--play);--dx:-60px;--dy:40px;pointer-events:none;}
.cta-panel::after{inset:0;opacity:.9;animation:spin 9s linear infinite;animation-play-state:var(--play);}
.cta-panel > *{position:relative;z-index:1;}
.cta-copy h2{color:var(--on-band);padding-bottom:.06em;}
.cta-copy p{margin-top:var(--space-3);font-size:var(--text-md);color:var(--on-band);max-width:44ch;}
.cta-contacts{display:grid;gap:var(--space-1);margin-top:var(--space-5);}
.cta-contacts a{display:inline-flex;align-items:center;gap:var(--space-3);min-height:44px;font-weight:600;color:var(--on-band);overflow-wrap:anywhere;}
.cta-contacts a:hover{text-decoration:underline;}
.cta-contacts svg{color:var(--on-band);}
.cta-panel .contact-form{background:var(--card-sheen),var(--card);border-color:var(--on-dark-line);--focus-ring:var(--blue-300);}
@media (min-width:1024px){ .cta-panel{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:var(--space-7);padding:var(--space-7);align-items:center;} }

/* ---------------- 15. Related-links strip ---------------- */
.related-strip{border-top:1px solid var(--line-soft);}
.related-links{display:grid;gap:var(--space-3);}
.related-links .learn-more{min-height:48px;margin-top:0;padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--glass);font:500 var(--text-sm)/1.4 var(--font-body);color:var(--text);transition:border-color var(--dur-base) var(--ease-out),background-color var(--dur-base) var(--ease-out),transform var(--dur-mid) var(--ease-out);}
.related-links .learn-more svg{color:var(--cyan-300);}
@media (hover:hover){
  .related-links .learn-more:hover{border-color:var(--tile-cyan-line);background:var(--glass-2);transform:translateY(-2px);}
  .related-links .learn-more:hover svg{transform:translateX(4px);}
}
@media (min-width:640px){ .related-links{display:flex;flex-wrap:wrap;} .related-links .learn-more{border-radius:var(--radius-pill);padding-inline:var(--space-5);} }

/* ---------------- 16. Footer ---------------- */
.site-footer{position:relative;background:var(--bg-deep);color:var(--text-muted);padding-block:var(--space-8) calc(var(--space-5) + 72px);border-top:1px solid var(--line-soft);overflow:hidden;}
.site-footer::before{content:"";position:absolute;inset:-1px 0 auto;height:2px;background:var(--grad-line);}
.site-footer::after{content:"";position:absolute;left:50%;top:0;width:min(900px,120vw);height:260px;translate:-50% -60%;background:radial-gradient(closest-side,var(--glow-blue),transparent);opacity:.5;pointer-events:none;}
.site-footer > .wrap{position:relative;z-index:1;}
.footer-grid{display:grid;gap:var(--space-6);}
.site-footer .brand-line{display:flex;align-items:center;gap:var(--space-3);font:700 var(--text-lg) var(--font-head);letter-spacing:-.02em;color:var(--text);}
.site-footer .brand-line img{height:44px;width:auto;}
.site-footer .brand-line small{display:block;font:400 var(--text-xs) var(--font-body);letter-spacing:0;color:var(--text-soft);}
.footer-brand p{margin-top:var(--space-4);font:600 var(--text-md)/1.4 var(--font-head);letter-spacing:-.01em;background:var(--grad-text-sm);-webkit-background-clip:text;background-clip:text;color:transparent;}
.footer-social{display:flex;gap:var(--space-3);margin-top:var(--space-4);}
.footer-social a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--line-soft);border-radius:var(--radius-pill);color:var(--text-muted);transition:color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out);}
.footer-social a:hover{color:var(--text);border-color:var(--line);}
.footer-col-title{font:600 var(--text-xs) var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--text-soft);margin-bottom:var(--space-2);}
.footer-links + .footer-col-title{margin-top:var(--space-5);}
.footer-links a{display:block;padding-block:var(--space-3);font-size:var(--text-sm);line-height:var(--lh-snug);color:var(--text-muted);overflow-wrap:anywhere;transition:color var(--dur-base) var(--ease-out);}
.footer-links a:hover,.footer-links a[aria-current="page"],.footer-legal a:hover,.footer-legal a[aria-current="page"]{color:var(--text);text-decoration:underline;}
.footer-bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-5);margin-top:var(--space-7);padding-top:var(--space-5);border-top:1px solid var(--line-soft);font-size:var(--text-xs);color:var(--text-soft);}
.footer-legal{display:flex;flex-wrap:wrap;gap:0 var(--space-5);}
.footer-legal a{display:inline-block;padding-block:var(--space-3);color:var(--text-soft);}
@media (min-width:640px){
  .site-footer{padding-bottom:var(--space-5);}
  .footer-grid{grid-template-columns:1fr 1fr;}
  .footer-brand{grid-column:1/-1;}
  .footer-bottom{padding-right:72px;}   /* keeps the bar clear of the WhatsApp button */
}
@media (min-width:1024px){
  .footer-grid{grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--space-7);}
  .footer-brand{grid-column:auto;}
}

/* ---------------- 17. WhatsApp button ---------------- */
.whatsapp-fab{position:fixed;right:var(--space-4);bottom:var(--space-4);z-index:70;display:flex;align-items:center;justify-content:center;width:56px;height:56px;border:2px solid transparent;border-radius:50%;background:var(--wa-green);color:#fff;box-shadow:var(--shadow-md);transition:transform var(--dur-mid) var(--ease-spring);animation:fab-in var(--dur-slow) var(--ease-spring) 1.2s backwards;}
.whatsapp-fab::after{content:"";position:absolute;inset:-2px;border-radius:50%;border:2px solid var(--wa-green);opacity:0;pointer-events:none;animation:fab-ring 1.8s var(--ease-out) 2.4s 3;}
.whatsapp-fab:focus-visible{border-color:#fff;}   /* inner ring: visible whatever is behind the button */
.whatsapp-fab svg{width:28px;height:28px;}
@media (hover:hover){ .whatsapp-fab:hover{transform:scale(1.08);} }
@media (min-width:1024px){ .whatsapp-fab{right:var(--space-5);bottom:var(--space-5);} }

/* ---------------- 18. FawtaraX: certificate bar, partner badge, certificate popup, partnership panel (gold lives here only) ---------------- */
.seal{flex:none;width:18px;height:18px;color:var(--fx-gold);}
.cert-bar{background:linear-gradient(90deg,var(--fx-surface-2),var(--fx-surface) 30% 70%,var(--fx-surface-2));border-bottom:1px solid var(--fx-border);}
.cert-bar-link{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-1) var(--space-2);min-height:44px;padding:var(--space-2) var(--gutter);font:500 var(--text-xs)/1.35 var(--font-body);color:var(--fx-name);text-align:center;} .cert-bar-link:focus-visible{outline-offset:-4px;}
.cert-bar strong{font-weight:600;color:var(--fx-gold-text);} .cert-bar-long{display:none;}
.cert-bar-cta,.pb-cta{display:inline-flex;align-items:center;gap:var(--space-1);font-weight:600;color:var(--fx-gold-text);text-decoration:underline;text-decoration-color:var(--fx-border);text-underline-offset:3px;white-space:nowrap;} .cert-bar-cta svg,.pb-cta svg{transition:transform var(--dur-base) var(--ease-out);}
@media (hover:hover){ .cert-bar-link:hover .cert-bar-cta,.partner-badge:hover .pb-cta{text-decoration-color:currentColor;} .cert-bar-link:hover .cert-bar-cta svg,.partner-badge:hover .pb-cta svg{transform:translateX(3px);} .partner-badge:hover{transform:translateY(-2px);box-shadow:0 14px 30px -12px var(--fx-gold);} }
@media (min-width:768px){ .cert-bar-link{font-size:var(--text-sm);} .cert-bar-long{display:inline;} .cert-bar-short{display:none;} }
.partner-badge{display:inline-flex;align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-2) var(--space-5) var(--space-2) var(--space-2);border:1px solid var(--fx-border);border-radius:var(--radius-pill);background:linear-gradient(120deg,var(--fx-surface-2),var(--fx-surface));box-shadow:0 8px 24px -10px var(--fx-glow);color:var(--fx-name);transition:transform var(--dur-mid) var(--ease-out),box-shadow var(--dur-mid) var(--ease-out);}
.pb-mark-wrap{position:relative;flex:none;} .pb-mark-wrap .seal{position:absolute;right:-6px;bottom:-5px;width:17px;height:17px;}
.partner-badge .pb-mark{height:36px;width:auto;flex:none;padding:3px;border-radius:50%;background:var(--fx-mark-bg);box-shadow:0 0 0 1px var(--fx-border);}
.partner-badge .pb-eyebrow{display:block;font:600 var(--text-xs)/1.3 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--fx-gold-text);}
.partner-badge .pb-name{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--space-3);font:700 var(--text-sm)/1.35 var(--font-head);color:var(--fx-name);} .pb-cta{font:600 var(--text-xs)/1.35 var(--font-body);}
.cert-facts{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-6);margin:0;}.cert-facts dt{font:600 var(--text-xs)/1.3 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--fx-gold-text);}.cert-facts dd{margin:0;font:700 var(--text-md)/1.3 var(--font-head);color:var(--fx-name);}
/* the shared certificate popup (native <dialog>): Escape, backdrop click and Close shut it; the page stays put behind */
.cert-dialog{width:min(62rem,calc(100% - 2 * var(--gutter)));max-width:none;max-height:calc(100dvh - 2 * var(--gutter));padding:0;overflow:auto;overscroll-behavior:contain;border:1px solid var(--fx-border);border-radius:var(--radius-lg);background:linear-gradient(160deg,var(--fx-surface-2),var(--fx-surface) 45%);color:var(--text);box-shadow:var(--shadow-lg);}
.cert-dialog::backdrop{background:var(--fx-scrim);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);} :root:has(.cert-dialog[open]){overflow:hidden;scrollbar-gutter:stable;}
.cert-dialog[open]{--ry:16px;--rs:.97;animation:reveal-in var(--dur-mid) var(--ease-out);} .cert-dialog[open]::backdrop{animation:fade-in var(--dur-mid) var(--ease-out);}
.cert-dialog-box{display:grid;gap:var(--space-4);padding:var(--space-4);} .cert-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);} .cert-dialog h2{font-size:var(--text-xl);color:var(--fx-name);}
.cert-dialog-eyebrow{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);font:600 var(--text-xs)/1.4 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--fx-gold-text);}
.cert-dialog-close{display:inline-flex;align-items:center;gap:var(--space-2);flex:none;min-height:44px;padding:0 var(--space-4);border:1px solid var(--fx-border);border-radius:var(--radius-pill);background:var(--fx-mark-bg);color:var(--fx-name);font-weight:600;font-size:var(--text-sm);cursor:pointer;transition:background-color var(--dur-base) var(--ease-out);} .cert-dialog-close:hover{background:var(--fx-surface-2);}
.cert-dialog-img{border:1px solid var(--fx-border);border-radius:var(--radius-sm);overflow:hidden;background:var(--fx-mark-bg);box-shadow:var(--shadow-md);aspect-ratio:1600 / 1131;} .cert-dialog-img img{width:100%;}
.cert-dialog-cap{font-size:var(--text-sm);color:var(--text-muted);} .cert-dialog-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3) var(--space-6);}
.cert-dialog-full{display:inline-flex;align-items:center;min-height:44px;font-weight:600;font-size:var(--text-sm);color:var(--fx-gold-text);text-decoration:underline;text-underline-offset:3px;}
@media (min-width:768px){ .cert-dialog-box{gap:var(--space-5);padding:var(--space-6);} }
.partnership-panel{position:relative;overflow:hidden;display:grid;gap:var(--space-6);align-items:center;padding:var(--space-6) var(--space-5);border:1px solid var(--fx-border);border-radius:var(--radius-xl);background:radial-gradient(60% 90% at 100% 50%,var(--fx-glow),transparent 70%),linear-gradient(135deg,var(--fx-surface-2),var(--fx-surface));}
.partnership-copy{min-width:0;}
.partnership-panel .eyebrow{color:var(--fx-gold-text);}
.partnership-panel h2{color:var(--fx-name);}
.partnership-panel p:not(.eyebrow){margin-top:var(--space-4);font-size:var(--text-md);color:var(--text-muted);max-width:60ch;}
.partner-mark-xl{order:-1;width:clamp(96px,14vw,176px);height:auto;padding:clamp(10px,1.4vw,18px);border-radius:50%;background:var(--fx-mark-bg);box-shadow:0 0 0 1px var(--fx-border),0 0 0 8px var(--fx-glow),0 0 70px -10px var(--fx-gold);}
@media (min-width:768px){
  .partnership-panel{grid-template-columns:minmax(0,1fr) auto;padding:var(--space-7);}
  .partner-mark-xl{order:0;justify-self:center;margin-right:var(--space-5);}
}

/* ---------------- 19. Architecture flow: the invoice journey ---------------- */
.arch-diagram-wrap{position:relative;isolation:isolate;padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--card-sheen),var(--bg-1);box-shadow:var(--shadow-lg);overflow:hidden;}
.arch-diagram-wrap::before{content:"";position:absolute;inset:0;z-index:-1;background-image:radial-gradient(var(--line) 1px,transparent 1px);background-size:22px 22px;-webkit-mask-image:radial-gradient(ellipse at center,black,transparent 75%);mask-image:radial-gradient(ellipse at center,black,transparent 75%);pointer-events:none;}
.arch-flow{display:grid;gap:var(--space-2);}
.arch-node{position:relative;isolation:isolate;padding:var(--space-5);border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--card-sheen),var(--card);color:var(--text);box-shadow:var(--shadow-sm);}
.arch-node-eyebrow{font:600 var(--text-xs) var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--text-soft);margin-bottom:var(--space-3);}
.arch-node-title{display:flex;align-items:center;gap:var(--space-3);font:600 var(--text-lg)/var(--lh-snug) var(--font-head);}
.arch-node-title img{width:32px;height:32px;flex:none;padding:3px;border-radius:50%;background:var(--fx-mark-bg);box-shadow:0 0 0 1px var(--fx-border);}
.arch-node-sub{margin-top:var(--space-1);font-size:var(--text-sm);}
.arch-chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4);}
.arch-chips li{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--tile-cyan-line);border-radius:var(--radius-pill);background:var(--tile-cyan-bg);color:var(--cyan-300);font:500 var(--text-xs) var(--font-body);}
.arch-core{display:grid;grid-template-columns:auto 1fr;gap:0 var(--space-3);align-items:center;padding:var(--space-4);border-radius:var(--radius);background:var(--grad-cta) 0 0/200% 100%;color:#fff;box-shadow:var(--shadow-cta);}
.arch-core img{grid-area:1 / 1 / span 2 / auto;width:auto;height:32px;padding:3px;background:#fff;border-radius:var(--radius-sm);}
.arch-core strong{grid-area:1 / 2;font:600 var(--text-base)/var(--lh-snug) var(--font-head);}
.arch-core > span{grid-area:2 / 2;font-size:var(--text-xs);color:var(--on-band);}
.arch-node-platform{border-color:var(--tile-blue-line);}
.arch-node-asp{background:radial-gradient(90% 80% at 50% 0%,var(--fx-glow),transparent 70%),var(--fx-surface);border-color:var(--fx-border);color:var(--fx-name);}
.arch-node-asp .arch-node-eyebrow{color:var(--fx-gold-text);}
.arch-node-ota{background:radial-gradient(90% 80% at 50% 0%,var(--glow-cyan),transparent 70%),var(--card);border-color:var(--tile-cyan-line);}
.arch-node-ota .arch-node-eyebrow{color:var(--text-muted);}
.arch-node-ota svg{color:var(--cyan-300);}
/* node glow: a pre-rendered ring whose opacity lights up as the invoice arrives */
.arch-node::after{content:"";position:absolute;inset:-1px;border-radius:inherit;border:1px solid var(--cyan-400);box-shadow:0 0 0 4px var(--glow-cyan),0 0 40px -4px var(--cyan-400);opacity:0;pointer-events:none;}
.arch-node-asp::after{border-color:var(--fx-gold);box-shadow:0 0 0 4px var(--fx-glow),0 0 40px -4px var(--fx-gold);}
/* connector: a glowing line, an arrow head and a light pulse that travels along it (vertical when stacked) */
.arch-arrow{display:flex;align-items:center;justify-content:center;min-height:52px;color:var(--cyan-400);}
.arch-link{position:relative;flex:none;width:44px;height:14px;rotate:90deg;--travel:30px;}
.arch-link::before{content:"";position:absolute;inset:6px 4px 6px 0;background:linear-gradient(90deg,var(--blue-400),var(--cyan-400));border-radius:2px;box-shadow:0 0 10px var(--cyan-400);transform-origin:left;}
.arch-link::after{content:"";position:absolute;right:1px;top:3px;width:8px;height:8px;border-top:2px solid;border-right:2px solid;transform:rotate(45deg);}
.arch-link i{position:absolute;left:-4px;top:1px;width:12px;height:12px;border-radius:50%;background:var(--card);box-shadow:0 0 0 3px var(--blue-400),0 0 18px 4px var(--cyan-400);opacity:0;}
@media (min-width:768px){ .arch-diagram-wrap{padding:var(--space-6);} }
/* Side by side only from 1024px: below that the node titles overflow. */
@media (min-width:1024px){
  .arch-flow{grid-template-columns:minmax(0,1.6fr) auto minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;gap:var(--space-1);}
  .arch-node{display:flex;flex-direction:column;justify-content:center;}
  .arch-arrow{min-height:0;}
  .arch-link{rotate:none;width:60px;--travel:46px;}
}

/* ---------------- 19a. Long-form pages (guide, glossary, provider checklist) ---------------- */
.prose{max-width:46rem;margin-inline:auto;font-size:var(--text-md);color:var(--text-muted);}
.prose > * + *{margin-top:var(--space-4);}
.prose > h2{font-size:var(--text-xl);color:var(--text);}
.prose > * + h2{margin-top:var(--space-7);}
.prose h3{color:var(--text);}
.prose > * + h3{margin-top:var(--space-6);}
.prose strong{font-weight:600;color:var(--text);}
.prose :is(ul,ol):not([class]),.sources{display:grid;gap:var(--space-2);margin-bottom:0;padding-left:var(--space-5);}
.prose li::marker{color:var(--cyan-300);}
.sources{list-style:decimal;font-size:var(--text-base);}
.byline,.source-line{font-size:var(--text-sm);color:var(--text-soft);}
.source-line{margin-top:var(--space-5);font-size:var(--text-xs);}
.source-line.center{text-align:center;}
.callout{padding:var(--space-4) var(--space-5);border:1px solid var(--line);border-left:3px solid var(--blue-400);border-radius:var(--radius-sm);background:var(--bg-1);font-size:var(--text-base);}
.callout > * + *{margin-top:var(--space-2);}
.toc{padding:var(--space-4) var(--space-5);border:1px solid var(--line);border-radius:var(--radius);background:var(--card-sheen),var(--card);font-size:var(--text-base);}
.toc-title{font:600 var(--text-xs)/1.4 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--text-soft);}
.prose .toc ol{display:block;columns:2 15rem;column-gap:var(--space-6);margin-block:var(--space-2) 0;}
.toc li{padding-block:var(--space-1);break-inside:avoid;}
/* tables keep their shape and scroll inside their own wrapper on narrow screens, never the page */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);}
.data-table{width:100%;min-width:34rem;border-collapse:collapse;font-size:var(--text-sm);line-height:1.5;text-align:left;}
.data-table caption{padding:var(--space-3) var(--space-4);font-weight:600;color:var(--text);text-align:left;}
.data-table th,.data-table td{padding:var(--space-3) var(--space-4);border-top:1px solid var(--line-soft);vertical-align:top;}
.data-table thead th{background:var(--bg-3);font-weight:600;color:var(--text);}
.data-table tbody th{font-weight:600;color:var(--text);}
.data-table tbody tr{transition:background-color var(--dur-base);}
.data-table tbody tr:hover{background:var(--glass);}
.glossary{margin-bottom:0;}
.glossary dt{font:600 var(--text-lg)/var(--lh-snug) var(--font-head);letter-spacing:-.015em;color:var(--text);}
.glossary dt:not(:first-child){margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--line-soft);}
.glossary dd{margin:var(--space-2) 0 0;}
/* legal pages (privacy, terms, accessibility): table of contents beside the text, sticky on desktop */
.legal-grid{display:grid;gap:var(--space-6);}
.legal-aside{width:100%;max-width:46rem;margin-inline:auto;min-width:0;}
.legal-aside .toc ol{margin:var(--space-2) 0 0;padding-left:var(--space-5);}
.legal-aside .toc li::marker{color:var(--cyan-300);}
.page-header .byline{margin-top:var(--space-5);}
@media (min-width:1024px){
  .legal-grid{grid-template-columns:15rem minmax(0,1fr);gap:var(--space-8);align-items:start;}
  .legal-aside{position:sticky;top:calc(var(--header-h) + var(--space-5));margin:0;}
  .legal-grid .prose{margin-inline:0;}
}
/* about: "who we are" copy beside the facts list */
.about-grid{display:grid;gap:var(--space-6);}
.about-grid .section-head{margin-bottom:0;}
@media (min-width:1024px){ .about-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:var(--space-8);align-items:center;} }

/* ---------------- 19b. Product screenshots: glowing app frame (dots bar as on the home hero) + caption ---------------- */
.shot-grid{display:grid;gap:var(--space-7) var(--space-6);grid-template-columns:minmax(0,1fr);}
.shot-grid > :only-child{width:100%;max-width:62rem;margin-inline:auto;}
@media (min-width:768px){ .shot-grid.two{grid-template-columns:repeat(2,minmax(0,1fr));} }
.shot-figure{min-width:0;margin:0;}
.shot-frame{position:relative;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;background:var(--bg-2);box-shadow:var(--shot-glow);transition:transform var(--dur-mid) var(--ease-out),box-shadow var(--dur-mid) var(--ease-out);}
.shot-frame img,.shot-card-lg img{display:block;width:100%;height:auto;}
.shot-bar{display:flex;gap:6px;padding:11px 14px;background:var(--bg-3);border-bottom:1px solid var(--line);}
.shot-bar i{width:10px;height:10px;border-radius:50%;background:var(--line-strong);}
.shot-bar i:first-child{background:var(--teal-400);}
.shot-bar i:nth-child(2){background:var(--cyan-400);}
.shot-bar i:nth-child(3){background:var(--blue-400);}
.shot-figure figcaption{display:grid;gap:var(--space-2);justify-items:start;margin-top:var(--space-4);font-size:var(--text-sm);color:var(--text-muted);max-width:68ch;}
@media (hover:hover){ .shot-figure:hover .shot-frame{transform:translateY(-4px);box-shadow:var(--shot-glow-hover);} }

/* ---------------- 20. Scroll reveal ----------------
   Keyframes use opacity and the individual translate / scale properties, never transform,
   so hover transforms (lift, tilt, magnetic pull) keep working on revealed elements.
   .reveal        the element itself comes in (rise + scale by default)
   .reveal-seq    its direct children come in one after another
   data-reveal    "scale", "left", "right" (on .reveal) or "split" (on .reveal-seq with two columns)
   --d            extra delay; the script sets it to stagger elements that arrive together
   Nothing can stay hidden: no JS = never hidden; script did not start = shown after 3s by CSS;
   no IntersectionObserver = shown at once; reduced motion and print = shown at once.
   .reveal-done   final state with no animation: set by the script on the destination of a
                  #hash jump (Request a Demo) and on anything already scrolled past. */
@keyframes reveal-in{from{opacity:0;translate:var(--rx,0) var(--ry,var(--rise));scale:var(--rs,.96);}to{opacity:1;translate:none;scale:none;}}
@keyframes reveal-failsafe{to{opacity:1;}}
.js .reveal,.js .reveal-seq > *{opacity:0;}
.js:not(.reveal-ready) .reveal,.js:not(.reveal-ready) .reveal-seq > *{animation:reveal-failsafe 0s linear 3s forwards;}
.js .reveal.reveal-done,.js .reveal-seq.reveal-done > *{opacity:1;}
.js .reveal.in-view{animation:reveal-in var(--dur-reveal) var(--ease-out) both;animation-delay:min(var(--d,0ms),var(--delay-max));}
.js .reveal-seq.in-view > *{--ry:22px;--rs:1;animation:reveal-in var(--dur-reveal) var(--ease-out) both;animation-delay:min(calc(var(--d,0ms) + var(--stagger) * var(--n,0)),var(--delay-max));}
:is(.reveal-seq,.check-list,.trust-row,.arch-chips,.hero-copy,.page-header .wrap) > :nth-child(2){--n:1;}
:is(.reveal-seq,.check-list,.trust-row,.arch-chips,.hero-copy,.page-header .wrap) > :nth-child(3){--n:2;}
:is(.reveal-seq,.check-list,.arch-chips,.hero-copy,.page-header .wrap) > :nth-child(4){--n:3;}
:is(.reveal-seq,.check-list,.hero-copy,.page-header .wrap) > :nth-child(n+5){--n:4;}
[data-reveal~="scale"]{--ry:28px;--rs:.94;}
@media (min-width:768px){
  [data-reveal="left"],.js [data-reveal~="split"].in-view > :first-child{--rx:calc(var(--slide) * -1);--ry:0px;}
  [data-reveal="right"],.js [data-reveal~="split"].in-view > :last-child{--rx:var(--slide);--ry:0px;}
}

/* ---------------- 21. Motion layer ---------------- */
@keyframes word-in{from{translate:0 .55em;clip-path:inset(-25% -8% 58% -8%);}to{translate:none;clip-path:inset(-25% -8% -25% -8%);}}   /* never invisible */
@keyframes pop{from{opacity:0;scale:.6;}}
@keyframes draw{from{stroke-dasharray:1;stroke-dashoffset:1;}to{stroke-dasharray:1;stroke-dashoffset:0;}}
@keyframes draw-x{from{transform:scaleX(0);}}
@keyframes shot-rise{from{translate:0 80px;scale:.9;rotate:x 18deg;}}
@keyframes float{to{translate:0 -12px;}}
@keyframes drift{to{translate:var(--dx,-70px) var(--dy,50px);scale:var(--ds,1.15);}}
@keyframes text-pan{to{background-position:200% 0;}}
@keyframes spin{to{--spin:360deg;}}
@keyframes spin-icon{to{transform:rotate(360deg);}}
@keyframes progress{to{transform:scaleX(1);}}
@keyframes pulse-dot{50%{scale:1.6;opacity:.45;}}
@keyframes fab-in{from{opacity:0;scale:.5;}} @keyframes fade-in{from{opacity:0;}}
@keyframes fab-ring{from{opacity:.7;scale:1;}to{opacity:0;scale:1.8;}}
@keyframes arch-travel{0%{opacity:0;translate:0;}3%{opacity:1;}17%{opacity:1;translate:var(--travel);}21%,100%{opacity:0;translate:var(--travel);}}
@keyframes arch-ping{0%{opacity:0;}6%{opacity:1;}24%,100%{opacity:0;}}
@keyframes sheen-loop{0%,72%{background-position:160% 0;}100%{background-position:-60% 0;}}

/* Headline: the H1 rises in word by word from behind a mask line, readable from the first frame */
.words > .w{display:inline-block;animation:word-in 520ms var(--ease-out) calc(60ms + 35ms * var(--i,0)) backwards;}
.words > .w:nth-child(2){--i:1;} .words > .w:nth-child(3){--i:2;} .words > .w:nth-child(4){--i:3;} .words > .w:nth-child(5){--i:4;}
.words > .w:nth-child(6){--i:5;} .words > .w:nth-child(7){--i:6;} .words > .w:nth-child(8){--i:7;} .words > .w:nth-child(9){--i:8;} .words > .w:nth-child(n+10){--i:9;}
/* Load cascade in the first screen: the other first-screen blocks rise in after the eyebrow */
:is(.hero-copy,.page-header .wrap) > :not(h1){--ry:20px;--rs:1;animation:reveal-in var(--dur-slow) var(--ease-out) calc(80ms + var(--stagger) * var(--n,0)) backwards;}
.trust-row path{animation:draw var(--dur-slow) var(--ease-out) calc(800ms + var(--stagger) * var(--n,0)) backwards;}
:is(.hero-copy,.page-header .wrap) > .eyebrow::before{animation:pulse-dot 2.4s var(--ease-in-out) infinite;animation-play-state:var(--play);}
.hero .btn-primary::after{animation:sheen-loop 6s var(--ease-out) 2s infinite;animation-play-state:var(--play);}

/* On reveal: icon tiles pop and their strokes draw; check marks draw one after another. */
.js .in-view .icon-circle{animation:pop var(--dur-reveal) var(--ease-spring) min(calc(var(--d,0ms) + var(--stagger) * var(--n,0) + 120ms),var(--delay-max)) backwards;}
.js .in-view .icon-circle [pathLength]{animation:draw var(--dur-long) var(--ease-out) min(calc(var(--d,0ms) + var(--stagger) * var(--n,0) + 160ms),var(--delay-max)) backwards;}
.js .in-view .check-item path{animation:draw var(--dur-reveal) var(--ease-out) min(calc(var(--d,0ms) + var(--stagger) * var(--n,0) + 200ms),var(--delay-max)) backwards;}
.js .in-view .partner-mark-xl{animation:pop var(--dur-long) var(--ease-spring) min(calc(var(--d,0ms) + 160ms),var(--delay-max)) backwards;}

/* Architecture flow: nodes arrive in order, then the invoice travels: each node lights up as the pulse reaches it. */
.js .in-view .arch-chips li{animation:pop var(--dur-mid) var(--ease-spring) calc(200ms + var(--stagger) * var(--n,0)) backwards;}
.js .in-view .arch-link::before{animation:draw-x var(--dur-reveal) var(--ease-out) min(calc(var(--d,0ms) + var(--stagger) * var(--n,0) + 160ms),var(--delay-max)) backwards;}
.arch-flow > li{--cycle:4.5s;}
.arch-link i{animation:arch-travel var(--cycle) linear calc(.9s * var(--n,0)) infinite;animation-play-state:var(--play);}
.arch-node::after{animation:arch-ping var(--cycle) var(--ease-out) calc(.9s * var(--n,0)) infinite;animation-play-state:var(--play);}

/* Ambient: anything that loops reads --play, which is "running" only on an .is-live block. */
.is-live{--play:running;}

/* Scroll-driven enhancement (the IntersectionObserver reveals remain the baseline). */
@supports (animation-timeline:scroll()){
  @keyframes parallax{to{translate:0 var(--pl,120px);}}
  @keyframes band-pool{from{translate:-50% -60px;opacity:0;}50%{opacity:.4;}to{translate:-50% 80px;opacity:.15;}}
  .js .scroll-progress{animation:progress linear both;animation-timeline:scroll(root);}
  .hero-bg{animation:parallax linear both;animation-timeline:scroll(root);animation-range:0 100vh;--pl:160px;}
  .page-header > .wrap{animation:parallax linear both;animation-timeline:scroll(root);animation-range:0 70vh;--pl:60px;}
  .section.tint::before{animation:band-pool linear both;animation-timeline:--band;}
}

/* Same-site navigation: a quick cross-fade where the browser supports it. */
@media (prefers-reduced-motion:no-preference){
  @view-transition{navigation:auto;}
  ::view-transition-old(root),::view-transition-new(root){animation-duration:var(--dur-base);}
}

/* ---------------- 22. Reduced motion and print: everything simply appears ---------------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation:none !important;transition-duration:.001ms !important;}
  .js .reveal,.js .reveal-seq > *{opacity:1;}
  .btn,.btn:hover,.card,.card.is-link:hover,.card:hover .icon-circle,.is-scrolled .brand img,.related-links .learn-more:hover,.shot-figure:hover .shot-frame,.partner-badge:hover,.cert-float:hover{transform:none;}
  .js .scroll-progress,.btn-primary::after{display:none;}
}
@media print{
  .js .reveal,.js .reveal-seq > *{opacity:1 !important;animation:none !important;}
  .site-header{position:static;}
  .hero-bg,.marquee,.whatsapp-fab{display:none;}
}

/* ============================================================
   Page blocks. Rules used by a single page (or page group) live
   in its block, with a page prefix on new class names. Anything
   shared by two or more pages belongs in the sections above.
   ============================================================ */

/* === PAGE: home === */
/* Hero: aurora + grid behind, display headline with a moving gradient accent, tilted screenshot, keyword marquee */
.hero{position:relative;isolation:isolate;overflow:hidden;padding-top:clamp(3rem,2rem + 6vw,6.5rem);}
.js .hero{padding-top:calc(var(--header-h) + clamp(3rem,2rem + 6vw,6.5rem));}
.hero::after{content:"";position:absolute;inset:auto 0 0;height:30%;z-index:-1;background:linear-gradient(transparent,var(--bg-0));pointer-events:none;}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr);}
.hero-copy{min-width:0;}
.hero h1{font-size:var(--text-display);font-weight:700;letter-spacing:-.045em;line-height:1.02;}
.hero-mark{background:var(--grad-text) 0 0/200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:text-pan 7s linear infinite;animation-play-state:var(--play);}
.hero-slogan{margin-top:var(--space-4);font:600 var(--text-lg)/var(--lh-snug) var(--font-head);letter-spacing:-.01em;color:var(--teal-300);}
.hero .partner-badge,.page-header .partner-badge{margin-top:var(--space-5);}
.hero-visual{position:relative;margin-top:var(--space-7);perspective:1800px;}
.hero-visual::before{content:"";position:absolute;inset:-12% -8%;z-index:-1;background:radial-gradient(closest-side,var(--aurora-2),transparent);pointer-events:none;}
.shot-card-lg{position:relative;width:100%;border:1px solid var(--tile-blue-line);border-radius:var(--radius);overflow:hidden;background:var(--bg-2);box-shadow:var(--shot-glow);transform-style:preserve-3d;animation:shot-rise 1.1s var(--ease-out) 150ms backwards,float 7s var(--ease-in-out) 1.4s infinite alternate;animation-play-state:running,var(--play);}   /* moves, never fades: the LCP image is painted at once */
@media (min-width:1024px){
  .hero-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:var(--space-7);align-items:center;}
  .hero-visual{margin-top:0;}
  .shot-card-lg{width:clamp(640px,54vw,860px);transform:rotateY(calc(-16deg + var(--px,0) * 12deg)) rotateX(calc(7deg - var(--py,0) * 10deg));transform-origin:left center;transition:transform var(--dur-long) var(--ease-out);}
}
/* keyword marquee (aria-hidden: every term is already on the site) */
.marquee{position:relative;margin-top:clamp(3rem,2rem + 5vw,6rem);padding-block:var(--space-5);border-top:1px solid var(--line-soft);overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,black 12%,black 88%,transparent);mask-image:linear-gradient(90deg,transparent,black 12%,black 88%,transparent);}
.marquee-track{display:flex;width:max-content;animation:marquee 46s linear infinite;animation-play-state:var(--play);}
.marquee:hover .marquee-track{animation-play-state:paused;}
.marquee-list{display:flex;gap:var(--space-7);padding-right:var(--space-7);}
.marquee-list li{display:inline-flex;align-items:center;gap:var(--space-3);font:500 var(--text-md)/1 var(--font-head);letter-spacing:-.01em;color:var(--text-muted);white-space:nowrap;}
.marquee-list li::before{content:"";width:7px;height:7px;rotate:45deg;border-radius:2px;background:linear-gradient(135deg,var(--cyan-400),var(--blue-400));box-shadow:0 0 10px var(--cyan-400);}
@keyframes marquee{to{translate:-50% 0;}}
/* pillars strip under the hero */
.hero + .section.tight{padding-top:var(--space-5);}
/* Platform bento: InfiTax leads (wide and tall), ERP and HRMS stack beside it, then two halves and the help card */
.home-platform .overview-card.featured h3{font-size:var(--text-xl);}
.home-platform .overview-card.featured > p:not(.eyebrow){max-width:60ch;}
@media (min-width:640px){ .bento > .featured{grid-column:1/-1;} }
@media (min-width:1024px){
  .bento{grid-template-columns:repeat(6,minmax(0,1fr));}
  .bento > .featured{grid-column:1 / span 4;grid-row:span 2;}
  .bento > :nth-child(2),.bento > :nth-child(3){grid-column:span 2;}
  .bento > :nth-child(4),.bento > :nth-child(5){grid-column:span 3;}
}
/* product screenshots inside the platform cards */
.overview-card .card-shot{margin-top:var(--space-4);box-shadow:var(--shadow-md);}
.overview-card .card-shot .shot-bar{padding:8px 10px;gap:5px;}
.overview-card .card-shot .shot-bar i{width:8px;height:8px;}
.overview-card.featured .card-shot{margin-top:var(--space-5);}
@media (min-width:1024px){
  .overview-card.featured .card-shot{flex:1 1 auto;display:flex;flex-direction:column;min-height:16rem;}
  .overview-card.featured .card-shot picture{flex:1 1 auto;display:block;min-height:0;position:relative;}
  .overview-card.featured .card-shot img{position:absolute;inset:0;height:100%;object-fit:cover;object-position:left top;}
}
@media (hover:hover){ .overview-card:hover .card-shot{transform:translateY(-3px);} }
/* FawtaraX certificate of appointment */
.cert-panel{display:grid;gap:var(--space-6);align-items:center;padding:var(--space-6) var(--space-5);border:1px solid var(--fx-border);border-radius:var(--radius-xl);background:radial-gradient(60% 90% at 100% 50%,var(--fx-glow),transparent 70%),linear-gradient(135deg,var(--fx-surface-2),var(--fx-surface));}
.cert-copy{display:grid;gap:var(--space-4);justify-items:start;}.cert-copy .eyebrow.cert-eyebrow{color:var(--fx-gold-text);}.cert-copy h2{color:var(--fx-name);}
.cert-frame{display:block;border:1px solid var(--fx-border);border-radius:var(--radius);overflow:hidden;background:var(--fx-mark-bg);box-shadow:0 24px 48px -24px var(--fx-glow),var(--shadow-md);transition:transform var(--dur-mid) var(--ease-out);}.cert-frame img{display:block;width:100%;height:auto;}
@media (hover:hover){.cert-frame:hover{transform:translateY(-4px);}}@media (min-width:1024px){.cert-panel{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);padding:var(--space-7);gap:var(--space-7);}}
/* hero: tilted certificate card over the screenshot's bottom-left corner; moves in (never fades), then floats with the hero */
.cert-float{position:absolute;z-index:2;left:var(--space-3);bottom:calc(var(--space-7) * -1);display:flex;align-items:center;gap:var(--space-3);width:min(18.5rem,calc(100% - 2 * var(--space-3)));padding:var(--space-2) var(--space-4) var(--space-2) var(--space-2);border:1px solid var(--fx-border);border-radius:var(--radius);background:linear-gradient(135deg,var(--fx-mark-bg),var(--fx-surface) 50%,var(--fx-surface-2));box-shadow:0 24px 44px -20px var(--fx-gold),var(--shadow-md);color:var(--fx-name);rotate:-3deg;transition:transform var(--dur-mid) var(--ease-out),box-shadow var(--dur-mid) var(--ease-out);animation:cert-in var(--dur-long) var(--ease-spring) .7s backwards,float 8s var(--ease-in-out) 1.8s infinite alternate;animation-play-state:running,var(--play);}
.cert-float-thumb{position:relative;flex:none;width:64px;border-radius:4px;background:var(--fx-mark-bg);box-shadow:0 0 0 1px var(--fx-border),var(--shadow-sm);} .cert-float-thumb img{width:100%;border-radius:inherit;} .cert-float-thumb .seal{position:absolute;right:-9px;bottom:-9px;width:26px;height:26px;}
.cert-float-text{display:grid;gap:3px;min-width:0;} .cert-float-ref{font:700 var(--text-base)/1.2 var(--font-head);letter-spacing:-.01em;} .cert-float-sub{font:500 var(--text-xs)/1.35 var(--font-body);color:var(--fx-gold-text);}
@media (hover:hover){ .cert-float:hover{transform:translateY(-4px) rotate(3deg);box-shadow:0 30px 56px -18px var(--fx-gold),var(--shadow-lg);} }
@keyframes cert-in{from{translate:0 32px;scale:.86;rotate:-12deg;}}
.hero-visual{margin-bottom:var(--space-7);} @media (min-width:640px){ .cert-float{gap:var(--space-4);padding:var(--space-3) var(--space-4) var(--space-3) var(--space-3);} .cert-float-thumb{width:80px;} }
@media (min-width:1024px){ .hero-visual{margin-bottom:0;} .cert-float{left:calc(var(--space-6) * -1);width:20rem;} .cert-float-thumb{width:100px;} }
/* === END PAGE: home === */

/* === PAGE: products-a (e-invoicing, erp-modules) === */
/* === END PAGE: products-a === */

/* === PAGE: products-b (hrms, fleet, custom-development, 404) === */
/* === END PAGE: products-b === */

/* === PAGE: guide (oman-e-invoicing-guide.html): status chips and the readiness checklist === */
/* Status label in the date tables: the word carries the meaning, colour only repeats it (no amber, no coral) */
.status-chip{display:inline-block;padding:.1em .6em;border:1px solid var(--line-strong);border-radius:var(--radius-pill);font:600 var(--text-xs)/1.5 var(--font-body);white-space:nowrap;} .status-chip.status-official{border-color:var(--tile-teal-line);background:var(--tile-teal-bg);color:var(--teal-300);} .status-chip.status-reported{border-color:var(--tile-blue-line);background:var(--tile-blue-bg);color:var(--blue-300);} .status-chip.status-neutral{background:var(--bg-1);color:var(--text-soft);}
/* Readiness checklist (readiness_section in build.py): fieldsets and radios, result added by its script. Logical properties; 16px inputs. */
.rc,.rc-questions{display:grid;gap:var(--space-5);} .rc-questions{gap:var(--space-4);margin:0;padding:0;list-style:none;} .rc-q{min-width:0;} .rc-fieldset{min-width:0;margin:0;padding:var(--space-4) var(--space-4) var(--space-5);border:1px solid var(--line);border-radius:var(--radius);background:var(--card-sheen),var(--card);box-shadow:var(--shadow-sm);}
.rc-legend{float:inline-start;display:flex;gap:var(--space-3);align-items:flex-start;inline-size:100%;padding:0;font:600 var(--text-base)/var(--lh-snug) var(--font-body);color:var(--text);} .rc-legend + *{clear:both;} .rc-num{flex:none;display:inline-grid;place-items:center;min-inline-size:1.75rem;block-size:1.75rem;border-radius:50%;background:var(--tile-blue-bg);color:var(--blue-300);font:600 var(--text-sm)/1 var(--font-body);}
.rc-hint{margin-block-start:var(--space-2);padding-inline-start:calc(1.75rem + var(--space-3));font-size:var(--text-sm);color:var(--text-soft);} .rc-options{display:grid;gap:var(--space-2);margin-block-start:var(--space-3);} .rc-option{display:flex;align-items:center;gap:var(--space-3);min-block-size:44px;padding:var(--space-2) var(--space-3);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--card);font-size:1rem;line-height:1.4;color:var(--text);cursor:pointer;transition:border-color var(--dur-base) var(--ease-out),background-color var(--dur-base) var(--ease-out);}
.rc-option:hover,.rc-option:has(input:checked){border-color:var(--blue-400);background:var(--bg-1);} .rc-option:has(input:checked){box-shadow:inset 0 0 0 1px var(--blue-400);} .rc-option input{flex:none;inline-size:1.25rem;block-size:1.25rem;margin:0;font-size:1rem;accent-color:var(--blue-300);} .rc-option input:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;}
.rc-bar,.rc-buttons{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-5);} .rc-buttons{gap:var(--space-3);} .rc-status:empty,.rc-result[hidden],.rc-skipped[hidden],.rc-meter[hidden],html:not(.js) .rc-js{display:none;} .rc-progress,.rc-status,.rc-skipped,.rc-note,.rc-privacy,.rc-noscript{font-size:var(--text-sm);color:var(--text-soft);} .rc-noscript{padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-1);}
.rc-result{display:grid;gap:var(--space-4);padding:var(--space-5);border:1px solid var(--tile-blue-line);border-inline-start:3px solid var(--blue-400);border-radius:var(--radius);background:var(--bg-1);} .rc-result h3{font-size:var(--text-lg);} .rc-score{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);font-size:var(--text-base);color:var(--text);} .rc-sub,.rc-guide > summary{font:600 var(--text-base)/var(--lh-snug) var(--font-body);color:var(--text);}
.rc-meter{-webkit-appearance:none;appearance:none;inline-size:min(100%,16rem);block-size:.875rem;border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:var(--card);overflow:hidden;} .rc-meter::-webkit-meter-bar{border:0;border-radius:var(--radius-pill);background:var(--card);} .rc-meter::-webkit-meter-optimum-value{border-radius:var(--radius-pill);background:var(--tile-teal-grad);} .rc-meter::-moz-meter-bar{border-radius:var(--radius-pill);background:var(--tile-teal-grad);}
.rc-steps{display:grid;gap:var(--space-2);margin:0;padding-inline-start:var(--space-5);font-size:var(--text-base);} .rc-steps li::marker{color:var(--cyan-300);} .rc-guide{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);} .rc-guide > summary{display:flex;align-items:center;min-block-size:48px;padding:var(--space-3) var(--space-5);border-radius:inherit;cursor:pointer;}
.rc-guide-body{padding:0 var(--space-5) var(--space-5);font-size:var(--text-base);} .rc-guide-body > * + *{margin-block-start:var(--space-3);} .rc-guide-q,.rc-when{color:var(--text);} .rc-when{font-weight:600;}
@media (min-width:640px){ .rc-fieldset{padding:var(--space-5);} .rc-options{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));} }
@media print{
  .rc-js,.rc-buttons,.rc-noscript{display:none !important;} .rc-fieldset,.rc-option{box-shadow:none;break-inside:avoid;}
  .rc-printing .site-header,.rc-printing .site-footer,.rc-printing .whatsapp-fab,.rc-printing .skip-link,.rc-printing main > section:not(.rc-section){display:none !important;}
}
/* === END PAGE: guide === */
