/* =====================================================================
   ExitDelay — PRECISION design system for inner pages        v20260928
   ---------------------------------------------------------------------
   Source of truth: the landing (/index.php, redesign A "Precision").
   Tokens, surfaces, radii, type scale and motion are copied 1:1 from it.

   Load (in <head>, after the Vazirmatn font <link>):
     <link rel="stylesheet" href="/assets/css/precision.css?v=20260928">
     <script src="/assets/js/precision.js?v=20260928" defer></script>
   and put class="p-page" on <body>.  Docs: /assets/css/PRECISION.md

   NAMING
   · Every component is namespaced "p-" (p-card, p-hero, p-prose …) so it
     cannot collide with the class names the pages already use.
   · EXCEPTION — the top nav keeps the landing's names (.ed-nav, .nav-left,
     .nav-logo, .nav-links, .nav-item, .nav-item-gold, .nav-auth,
     .nav-lang, .nav-btn, .hamburger, .mobile-auth, .m-auth-btn), always
     scoped under .ed-nav, and #scroll-progress, because
     several pages' own scripts toggle them (#navbar.scrolled/.hidden,
     #navLinks.active, #hamburgerBtn.open).
   · Keyframes are prefixed "p-", the animated angle is --p-bang.
   · Never use .p-title / .p-desc: the landing/pricing modal owns them.
   · Nothing here styles a generic class (.card .btn .container .nav .hero
     .section .grid .title .badge .hidden .show …) — pages keep theirs.

   DIRECTION — RTL-first. Logical properties everywhere; the few physical
   bits (gradient angles, mirrored chevrons) treat any <html> that is not
   dir="ltr" as RTL, and html[dir="ltr"] as LTR.
   ===================================================================== */

/* ---------------------------------------------------------------------
   0. TOKENS (identical values to the landing :root)
   --------------------------------------------------------------------- */
:root {
  /* brand (legacy names the landing also uses) */
  --bg:         #04090b;
  --bg-2:       #061417;
  --teal-deep:  #0f2e2e;
  --teal-glow:  #2ceaa3;
  --teal-mid:   #1bbd82;
  --teal-acc:   #206d68;
  --gold:       #ffcc00;
  --gold-lt:    #ffe184;
  --txt:        #eef6f5;
  --muted:      #94a6a9;
  --ease-out:   cubic-bezier(0.16,1,0.3,1);
  --ease-spring:cubic-bezier(0.175,0.885,0.32,1.275);

  /* surfaces */
  --sf-0:       #070d0f;   /* sunken: table head, inputs, code */
  --sf-1:       #0a1315;   /* card */
  --sf-2:       #0e181b;   /* card gradient top / raised */
  --line:       rgba(255,255,255,.07);
  --line-2:     rgba(255,255,255,.12);
  --line-teal:  rgba(44,234,163,.32);

  /* ink (contrast on --sf-1: ink-1 ≈ 17:1, ink-2 ≈ 7.2:1, ink-3 ≈ 4.9:1) */
  --ink-1:      #eef6f5;
  --ink-2:      #94a6a9;
  --ink-3:      #76888c;

  /* accents — teal = links/icons/active; gold = ONLY "hot" items */
  --teal:       #2ceaa3;
  --teal-hi:    #5cf0bb;
  --teal-ink:   #03231a;   /* text on solid teal */
  --teal-a06:   rgba(44,234,163,.06);
  --teal-a12:   rgba(44,234,163,.12);
  --gold-ink:   #1d1500;   /* text on solid gold */
  --gold-a06:   rgba(255,204,0,.06);
  --gold-a12:   rgba(255,204,0,.12);
  --bad:        #e58585;
  --bad-a12:    rgba(229,133,133,.12);

  /* radii */
  --r-sm:  10px;
  --r-md:  14px;
  --r-lg:  20px;
  --r-btn: 12px;
  --r-pill:999px;

  /* spacing (8px grid) */
  --s-1: 4px;  --s-2: 8px;  --s-3: 12px; --s-4: 16px; --s-5: 24px;
  --s-6: 32px; --s-7: 48px; --s-8: 64px; --s-9: 96px; --s-10: 120px;
  --container: 1120px;
  --narrow:    760px;
  --gutter:    32px;
  --nav-h:     64px;

  /* elevation */
  --e-1: inset 0 1px 0 rgba(255,255,255,.045), 0 1px 2px rgba(0,0,0,.4);
  --e-2: inset 0 1px 0 rgba(255,255,255,.05), 0 18px 40px -24px rgba(0,0,0,.9);
  --e-3: inset 0 1px 0 rgba(255,255,255,.07), 0 30px 60px -28px rgba(0,0,0,.95), 0 0 0 1px rgba(44,234,163,.06);

  /* type */
  --fs-micro: 12px;
  --fs-cap:   13px;
  --fs-sm:    14px;
  --fs-body:  14.5px;
  --fs-md:    16px;
  --fs-card:  17.5px;
  --fs-sub:   clamp(19px, 2vw, 22px);
  --fs-h2:    clamp(30px, 3.5vw, 46px);
  --fs-hero:  clamp(40px, 5.4vw, 70px);   /* landing hero only */
  --fs-page:  clamp(34px, 4.6vw, 60px);   /* inner-page H1 (.p-hero-title) */
  --fs-prose: 16px;

  --font-fa:   "Vazirmatn", "Segoe UI", Tahoma, sans-serif;
  --font-en:   "HighSpirited", "Segoe UI", Tahoma, sans-serif;
  --font-ui:   "Vazirmatn", "Segoe UI", system-ui, -apple-system, sans-serif;
  --font-mono: ui-monospace, "Cascadia Code", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}
@media (max-width:768px) { :root { --gutter:16px; --nav-h:60px; } }

/* animated angle for the spinning conic rings */
@property --p-bang { syntax:'<angle>'; initial-value:0deg; inherits:false; }
@keyframes p-ringSpin     { to { --p-bang:360deg; } }
@keyframes p-hairlineFlow { to { background-position:200% 0; } }
@keyframes p-blink        { 50% { opacity:0; } }
@keyframes p-sweep        { to { background-position:-200% 0; } }
@keyframes p-spin         { to { transform:rotate(360deg); } }
@keyframes p-pulse        { 0% { transform:scale(1); opacity:.6; } 100% { transform:scale(1.35); opacity:1; } }
@keyframes p-bob          { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-6px); } }
@keyframes p-shine        { from { transform:translateX(-130%) skewX(-22deg); } to { transform:translateX(330%) skewX(-22deg); } }
@keyframes p-pulseRing    { 0% { transform:scale(1); opacity:.85; } 70%,100% { transform:scale(1.08,1.5); opacity:0; } }
@keyframes p-sepSweep     { from { inset-inline-start:0; } to { inset-inline-start:calc(100% - 140px); } }
@keyframes p-aurora       { from { transform:translate(0,0) scale(1); } to { transform:translate(6vw,5vh) scale(1.12); } }
@keyframes p-ctaSweep     { to { transform:rotate(360deg); } }
@keyframes p-orb          { from { transform:translate(0,0); opacity:.4; } to { transform:translate(18px,-22px); opacity:.9; } }
@keyframes p-enter        { from { opacity:0; transform:translateY(22px); filter:blur(6px); } }

/* ---------------------------------------------------------------------
   1. BASE — only <html> and body.p-page are touched globally
   --------------------------------------------------------------------- */
html { scroll-padding-top:calc(var(--nav-h) + 24px); -webkit-text-size-adjust:100%; text-size-adjust:100%; }
@media (prefers-reduced-motion: no-preference) { html:has(body.p-page) { scroll-behavior:smooth; } }
/* safety net: a leftover page rule like  html, body { background:… }  would stop body's background from
   propagating to the canvas, so body would paint over the aurora + dot-grid layers (z-index:-1/-2) */
html:has(> body.p-page) { background:none; }

/* zero-specificity base (:where) — any page rule wins over these */
:where(body.p-page, body.p-page *),
:where(body.p-page, body.p-page *)::before,
:where(body.p-page, body.p-page *)::after { box-sizing:border-box; }

body.p-page {
  margin:0; min-height:100vh; min-height:100dvh;
  font-family:var(--font-ui);
  font-size:16px; line-height:1.8;
  color:var(--ink-1);
  background-color:var(--bg);
  /* teal glow at the top of the document (scrolls away with the hero) */
  background-image:
    radial-gradient(1100px 620px at 50% -160px, rgba(32,109,104,.30), transparent 70%),
    radial-gradient(640px 380px at 50% -60px, rgba(44,234,163,.07), transparent 70%);
  background-repeat:no-repeat;
  overflow-x:clip;             /* clip (not hidden): keeps position:sticky working */
  color-scheme:dark;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  -webkit-tap-highlight-color:transparent;
}
:where(body.p-page) :where(button, input, select, textarea) { font-family:inherit; }
:where(body.p-page) :where(img, svg, video) { max-width:100%; }
body.p-page ::selection { background:rgba(44,234,163,.28); color:#fff; }

/* focus: one visible teal ring for everything keyboard-reachable */
body.p-page :where(a, button, summary, input, select, textarea, [tabindex], [role="button"]):focus-visible {
  outline:2px solid var(--teal); outline-offset:3px;
}

/* ---------------------------------------------------------------------
   2. BACKGROUND — CSS-only equivalent of the landing's layers
      base glow (body) → aurora (::before, drifts) → dot-grid (::after)
      no Three.js; aurora + dot-grid are desktop-only like the landing
   --------------------------------------------------------------------- */
body.p-page::before {
  content:""; position:fixed; inset:-20%; z-index:-2; pointer-events:none; opacity:.55;
  background:
    radial-gradient(26vw 26vw at 22% 24%, rgba(32,109,104,.30), transparent 62%),
    radial-gradient(26vw 26vw at 78% 78%, rgba(255,204,0,.07), transparent 60%),
    radial-gradient(ellipse 60% 40% at 50% 100%, rgba(44,234,163,.10), transparent 60%);
  animation:p-aurora 28s ease-in-out infinite alternate;
  will-change:transform;
}
body.p-page::after {
  content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background-image:radial-gradient(circle, rgba(44,234,163,.06) 1px, transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(ellipse 65% 60% at 50% 38%, #000 25%, transparent 72%);
          mask-image:radial-gradient(ellipse 65% 60% at 50% 38%, #000 25%, transparent 72%);
}
@media (max-width:768px) { body.p-page::before, body.p-page::after { display:none; } }

/* thin progress bar (landing hook: <div id="scroll-progress">, driven by the page's own script).
   Physical left:0 + 90deg on purpose: identical to the landing in FA and EN (grows left → right). */
#scroll-progress {
  position:fixed; top:0; left:0; height:3px; width:0%; z-index:9000;
  background:linear-gradient(90deg, var(--teal-glow), var(--gold));
  box-shadow:0 0 10px var(--teal-glow);
  transition:width .05s linear;
}

/* ---------------------------------------------------------------------
   3. LAYOUT WRAPPERS
   --------------------------------------------------------------------- */
.p-main { display:block; position:relative; }
.p-container {
  width:100%; max-width:calc(var(--container) + 2 * var(--gutter));
  margin-inline:auto; padding-inline:var(--gutter);
}
.p-container.is-narrow, .p-narrow { max-width:calc(var(--narrow) + 2 * var(--gutter)); }
/* display/min-height/overflow reset = safety net against the landing-copied
   section { min-height:100vh; display:flex; align-items:center; overflow:hidden } many pages carry
   (overflow:hidden would also break a sticky .p-toc inside the section) */
.p-section { position:relative; display:block; min-height:0; overflow:visible; padding-block:72px; }
.p-section.is-tight { padding-block:40px; }
.p-section + .p-section { padding-top:24px; }
.p-sep {
  width:calc(100% - 2 * var(--gutter)); max-width:var(--container); height:1px; margin:0 auto;
  background:var(--line); position:relative; overflow:hidden;
}
.p-container .p-sep { width:100%; }                        /* inside a container: full column width */
.p-sep::before {
  content:""; position:absolute; top:0; inset-inline-start:0; width:140px; height:1px;
  background:linear-gradient(90deg, transparent, rgba(44,234,163,.7), transparent);
  animation:p-sepSweep 9s ease-in-out infinite alternate;
}

.p-grid { display:grid; gap:16px; grid-template-columns:repeat(3, minmax(0,1fr)); }
.p-grid.p-cols-1 { grid-template-columns:minmax(0,1fr); }
.p-grid.p-cols-2 { grid-template-columns:repeat(2, minmax(0,1fr)); }
.p-grid.p-cols-3 { grid-template-columns:repeat(3, minmax(0,1fr)); }
.p-grid.p-cols-4 { grid-template-columns:repeat(4, minmax(0,1fr)); }
.p-grid.p-cols-auto { grid-template-columns:repeat(auto-fill, minmax(min(100%, 260px), 1fr)); }

.p-stack   { display:flex; flex-direction:column; gap:var(--p-gap, 16px); }
.p-cluster { display:flex; flex-wrap:wrap; align-items:center; gap:var(--p-gap, 8px); }
.p-split   { display:grid; grid-template-columns:minmax(0,4fr) minmax(0,7fr); column-gap:64px; row-gap:32px; align-items:start; }
.p-center  { text-align:center; margin-inline:auto; }

/* ---------------------------------------------------------------------
   4. NAV — the landing's markup & class names (JS hooks), same look
      <nav class="ed-nav" id="navbar" data-p-nav> logo · .nav-links · .nav-auth · .hamburger
   --------------------------------------------------------------------- */
.ed-nav {
  position:fixed; top:0; left:0; right:0; height:var(--nav-h); z-index:2000;
  padding:0 max(24px, calc((100% - 1200px) / 2));
  display:flex; justify-content:space-between; align-items:center; gap:24px;
  background:transparent; border-bottom:1px solid transparent;
  transform:translateY(0);
  transition:transform .45s var(--ease-out), background .4s, border-color .4s, opacity .8s var(--ease-out);
  font-family:var(--font-ui);
}
.ed-nav.hidden { transform:translateY(-110%); }
.ed-nav.hidden:has(:focus-visible) { transform:none; }      /* Tab back into an auto-hidden bar shows it */
.ed-nav.scrolled,
.ed-nav[data-p-nav]:not(.p-nav-js) {       /* no-JS fallback: always the solid bar */
  background:rgba(5,11,13,.8);
  -webkit-backdrop-filter:blur(18px) saturate(160%);
          backdrop-filter:blur(18px) saturate(160%);
  border-bottom-color:var(--line);
}
.ed-nav .nav-left { display:flex; align-items:center; flex:none; }
.ed-nav .nav-logo {
  display:block; width:34px; height:auto; cursor:pointer; border-radius:9px; flex:none;
  transition:transform .45s var(--ease-out);
}
.ed-nav .nav-logo:hover { transform:rotate(-8deg); }
/* keyboard-reachable logo link (the landing's <img onclick> can't take focus):
   <a class="nav-left" href="/"><img src="/logo.png" alt="ExitDelay" class="nav-logo"></a> — same look */
.ed-nav a.nav-left { border-radius:10px; text-decoration:none; }
.ed-nav a.nav-left:hover .nav-logo { transform:rotate(-8deg); }

.ed-nav .nav-links { display:flex; align-items:center; gap:2px; }
.ed-nav .nav-item {
  position:relative; color:var(--ink-2); text-decoration:none;
  font-size:14px; font-weight:500; line-height:1; white-space:nowrap;
  padding:10px 12px; border-radius:8px;
  transition:color .2s, background .2s;
}
/* underline grows from the centre */
.ed-nav .nav-item::after {
  content:""; position:absolute; bottom:3px; left:12px; right:12px; height:1px;
  background:var(--teal); border-radius:1px;
  transform:scaleX(0); transition:transform .35s var(--ease-out);
}
.ed-nav .nav-item:hover, .ed-nav .nav-item.active, .ed-nav .nav-item[aria-current="page"] { color:var(--ink-1); }
.ed-nav .nav-item:hover::after, .ed-nav .nav-item.active::after, .ed-nav .nav-item[aria-current="page"]::after { transform:scaleX(1); }
.ed-nav .nav-item:is(.nav-item-gold, .nav-gold) { color:var(--gold-lt); }
.ed-nav .nav-item:is(.nav-item-gold, .nav-gold)::after { background:var(--gold); }

.ed-nav .nav-auth { display:flex; align-items:center; gap:8px; flex:none; }
/* pages without an EN version have no .nav-lang: keep its 40px slot on desktop, so the link row and the
   button sit exactly where the landing puts them (otherwise they shift 24px between pages).
   .is-no-lang on .nav-auth does the same for browsers without :has(). */
@media (min-width:769px) {
  .ed-nav .nav-auth:not(:has(.nav-lang))::before { content:""; flex:none; width:40px; }
  .ed-nav .nav-auth.is-no-lang::before { content:""; flex:none; width:40px; }
}
.ed-nav .nav-lang {
  display:inline-grid; place-items:center; height:34px; min-width:40px; padding:0 10px;
  border:1px solid var(--line-2); border-radius:var(--r-sm);
  color:var(--ink-2); font-size:12px; font-weight:700; letter-spacing:.08em; line-height:1; text-decoration:none;
  transition:color .2s, border-color .2s, background .2s;
}
.ed-nav .nav-lang:hover { color:var(--gold-lt); border-color:rgba(255,204,0,.4); background:var(--gold-a06); }
.ed-nav .nav-btn {
  display:inline-flex; align-items:center; height:34px; padding:0 16px;
  border-radius:var(--r-sm); border:1px solid var(--line-2);
  background:rgba(255,255,255,.03); color:var(--ink-1);
  font-size:13.5px; font-weight:600; line-height:1; text-decoration:none; white-space:nowrap;
  transition:border-color .25s, color .25s, background .25s;
}
.ed-nav .nav-btn:hover { border-color:var(--line-teal); color:var(--teal); background:var(--teal-a06); }

.ed-nav .hamburger {
  display:none; background:none; border:none; cursor:pointer; z-index:2001; padding:8px 4px; color:var(--ink-1);
}
.ed-nav .hamburger span {
  display:block; width:22px; height:1.75px; border-radius:2px;
  background:currentColor; margin:5px 0;
  transition:transform .4s var(--ease-out), opacity .3s;
  transform-origin:center;
}
.ed-nav .hamburger:is(.open, [aria-expanded="true"]) span:nth-child(1) { transform:translateY(6.75px) rotate(45deg); }
.ed-nav .hamburger:is(.open, [aria-expanded="true"]) span:nth-child(2) { opacity:0; transform:scaleX(0); }
.ed-nav .hamburger:is(.open, [aria-expanded="true"]) span:nth-child(3) { transform:translateY(-6.75px) rotate(-45deg); }

.ed-nav .mobile-auth { display:none; }
.ed-nav :is(.m-auth-btn, .mobile-auth-btn) {
  display:flex; align-items:center; justify-content:center; height:46px; margin-top:16px;
  border-radius:var(--r-btn); background:var(--teal); color:var(--teal-ink);
  font-size:15px; font-weight:700; text-decoration:none;
}

/* ---------------------------------------------------------------------
   5. PAGE HERO — top of every inner page
      eyebrow pill · H1 (+ accent line) · lead · actions/meta
   --------------------------------------------------------------------- */
.p-hero {
  position:relative; isolation:isolate;
  display:flex; flex-direction:column; align-items:center; text-align:center;
  padding:calc(var(--nav-h) + 64px) var(--gutter) 56px;
}
/* fine engineering grid behind the title (same texture as the landing CTA banner / download tile) */
.p-hero::before {
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background-image:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size:32px 32px; background-position:center -1px;
  -webkit-mask-image:radial-gradient(ellipse 52% 72% at 50% 42%, #000 8%, transparent 70%);
          mask-image:radial-gradient(ellipse 52% 72% at 50% 42%, #000 8%, transparent 70%);
}
.p-hero > * { max-width:880px; }
.p-hero.is-start {
  align-items:flex-start; text-align:start;
  padding-inline:max(var(--gutter), calc((100% - var(--container)) / 2));
}
.p-hero.is-start::before {
  -webkit-mask-image:radial-gradient(ellipse 60% 80% at 50% 30%, #000 5%, transparent 70%);
          mask-image:radial-gradient(ellipse 60% 80% at 50% 30%, #000 5%, transparent 70%);
}
.p-hero.is-compact { padding-bottom:32px; }

/* pill badge with blinking dot (= landing .hero-badge) */
.p-eyebrow {
  display:inline-flex; align-items:center; gap:10px; min-height:32px;
  padding:5px 14px; margin:0 0 24px;
  border:1px solid var(--line-2); border-radius:var(--r-pill);
  background:rgba(7,13,15,.72);
  color:var(--ink-2); font-size:13px; font-weight:500; line-height:1.5;
}
.p-eyebrow::before {
  content:""; flex:none; width:6px; height:6px; border-radius:50%;
  background:var(--teal); box-shadow:0 0 0 3px rgba(44,234,163,.16);
  animation:p-blink 1.2s step-end infinite;
}
.p-eyebrow.is-gold::before { background:var(--gold); box-shadow:0 0 0 3px rgba(255,204,0,.16); }

/* logo mark with the landing's spinning ring (decorative, optional) */
.p-hero-mark {
  position:relative; display:grid; place-items:center;
  width:96px; height:96px; margin:0 0 22px; flex:none;
}
.p-hero-mark::before {           /* soft pulse */
  content:""; position:absolute; inset:6px; border-radius:50%;
  background:radial-gradient(circle, rgba(44,234,163,.13) 0%, transparent 70%);
  animation:p-pulse 3.5s ease-in-out infinite alternate;
}
.p-hero-ring {
  position:absolute; inset:0; border-radius:50%;
  border:1px solid rgba(44,234,163,.16);
  animation:p-spin 18s linear infinite;
}
.p-hero-ring::before {
  content:""; position:absolute; top:-3px; left:50%;
  width:5px; height:5px; margin-left:-2.5px; border-radius:50%;
  background:var(--teal); box-shadow:0 0 10px rgba(44,234,163,.9);
}
.p-hero-ring::after { content:""; position:absolute; inset:11px; border-radius:50%; border:1px dashed rgba(255,255,255,.07); }
.p-hero-mark img {
  position:relative; z-index:1; display:block; width:58px; height:auto;
  filter:drop-shadow(0 10px 24px rgba(44,234,163,.22));
  animation:p-bob 6s ease-in-out infinite;
}
/* icon variant: the page's own icon instead of the logo (download, learn, kahesh-ping; gold on pricing)
   <div class="p-hero-mark" aria-hidden="true"><span class="p-hero-ring"></span><span class="p-icon">…icon…</span></div> */
.p-hero-mark > .p-icon {
  position:relative; z-index:1; width:56px; height:56px; border-radius:16px;
  border-color:var(--line-teal);
  background:linear-gradient(180deg, rgba(44,234,163,.12), rgba(44,234,163,.03));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08), 0 10px 30px -8px rgba(44,234,163,.35);
  animation:p-bob 6s ease-in-out infinite;
}
.p-hero-mark > .p-icon .p-ico { width:26px; height:26px; stroke-width:2; }
.p-hero-mark > .p-icon.is-gold {
  border-color:rgba(255,204,0,.3);
  background:linear-gradient(180deg, rgba(255,204,0,.11), rgba(255,204,0,.025));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08), 0 10px 30px -8px rgba(255,204,0,.28);
}
/* quiet "back" link in the hero's first slot (contact / privacy / terms: the old top bar's «بازگشت به سایت») */
.p-back-link {
  display:inline-flex; align-items:center; gap:6px; min-height:36px; padding:6px 0; margin:0 0 16px;
  color:var(--ink-2); font-size:13.5px; font-weight:500; line-height:1.4; text-decoration:none; white-space:nowrap;
  border-radius:8px; transition:color .2s;
}
.p-back-link .p-ico { width:16px; height:16px; stroke-width:2; transition:transform .35s var(--ease-out); }
.p-back-link:hover { color:var(--teal); }
html:not([dir="ltr"]) .p-back-link:hover .p-ico.p-ico-back { transform:scaleX(-1) translateX(-3px); }
html[dir="ltr"] .p-back-link:hover .p-ico.p-ico-back { transform:translateX(-3px); }

.p-hero-title {
  margin:0 0 20px; color:var(--ink-1);
  font-size:var(--fs-page); font-weight:800; line-height:1.3; text-wrap:balance;
}
.p-hero-title:lang(en) { letter-spacing:-.025em; line-height:1.12; }
/* second headline line (a span/element right after the H1, or inside it) */
.p-hero-accent { display:block; margin:0 0 22px; font-size:var(--fs-page); font-weight:800; line-height:1.3; text-wrap:balance; }
.p-hero-title .p-hero-accent { margin:0; font-size:inherit; }
.p-hero-title:has(+ .p-hero-accent) { margin-bottom:0; }
.p-hero-lead {
  max-width:640px; margin:0; color:var(--ink-2);
  font-size:clamp(15px, 1.5vw, 17.5px); line-height:1.95; text-wrap:pretty;
}
.p-hero.is-start .p-hero-lead { max-width:680px; }
.p-hero-actions { margin-top:32px; }
.p-hero-meta { margin-top:24px; display:flex; flex-wrap:wrap; gap:8px; justify-content:center; }
.p-hero.is-start .p-hero-meta { justify-content:flex-start; }
.p-hero .p-breadcrumb { margin-bottom:20px; }

/* gradient text accents (landing .line-gold / .section-title span) */
.p-hl, .p-hl-gold {
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent;
  background-size:200% 100%;
  animation:p-sweep 6s linear infinite;
}
.p-hl      { background-image:linear-gradient(110deg, var(--teal) 0%, #c4ffea 30%, var(--teal) 55%, var(--teal) 100%); }
.p-hl-gold { background-image:linear-gradient(110deg, var(--gold) 0%, #fff4c4 30%, var(--gold) 60%, var(--gold-lt) 100%); animation-duration:5s; }
.p-sec-title .p-hl, .p-sec-title .p-hl-gold { white-space:nowrap; }

/* ---------------------------------------------------------------------
   6. SECTION HEADER — identical anatomy to the landing's .sec-head
      [big outlined number] [kicker · H2 (one accent span) · lead]
   --------------------------------------------------------------------- */
.p-sec-head {
  position:relative; width:100%; max-width:var(--container); margin:0 auto 48px;
  display:flex; align-items:flex-start; gap:32px; text-align:start;
}
.p-sec-head.is-center { flex-direction:column; align-items:center; text-align:center; gap:0; }
.p-sec-main { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; align-items:flex-start; }
.p-sec-head.is-center .p-sec-main { align-items:center; }
.p-sec-num {
  flex:none; font-size:112px; font-weight:900; line-height:.84; letter-spacing:-.02em;
  color:transparent; -webkit-text-fill-color:transparent;
  -webkit-text-stroke:1.5px rgba(44,234,163,.55);
  background:linear-gradient(180deg, rgba(44,234,163,.24), rgba(44,234,163,0) 78%);
  -webkit-background-clip:text; background-clip:text;
  font-variant-numeric:tabular-nums; user-select:none; pointer-events:none;
}
.p-sec-num:lang(fa) { letter-spacing:0; margin-top:-6px; }
/* numbered divider for a main section that has no heading of its own (pricing's services block):
   <div class="p-sec-head is-rule" aria-hidden="true"><span class="p-sec-num">۱</span><div class="p-sec-main"><span class="p-kicker"></span></div></div> */
.p-sec-head.is-rule { align-items:center; margin-bottom:32px; }
.p-sec-head.is-rule .p-kicker { margin:0; }

/* kicker = the landing's .section-badge (dot · label · hairline) */
.p-kicker {
  display:flex; align-items:center; gap:10px; width:100%; margin:0 0 20px;
  color:var(--teal); font-size:13px; font-weight:600; line-height:1.6;
}
.p-kicker:lang(en) { text-transform:uppercase; letter-spacing:.1em; font-size:12px; }
.p-kicker::before {
  content:""; flex:none; width:6px; height:6px; border-radius:50%;
  background:var(--teal); box-shadow:0 0 0 3px rgba(44,234,163,.14);
  animation:p-blink .9s step-end infinite;
}
.p-kicker::after {
  content:""; flex:1 1 auto; height:1px; margin-inline-start:6px;
  background:linear-gradient(90deg, var(--line-2), transparent 80%);
}
html:not([dir="ltr"]) .p-kicker::after { background:linear-gradient(270deg, var(--line-2), transparent 80%); }
.p-kicker.is-gold { color:var(--gold-lt); }
.p-kicker.is-gold::before { background:var(--gold); box-shadow:0 0 0 3px rgba(255,204,0,.14); }
.p-sec-head.is-center .p-kicker { width:auto; }
.p-sec-head.is-center .p-kicker::after { display:none; }

.p-sec-title {
  max-width:900px; margin:0; text-align:inherit;
  color:var(--ink-1); font-size:var(--fs-h2); font-weight:800; line-height:1.32; text-wrap:balance;
}
.p-sec-title:lang(en) { letter-spacing:-.02em; line-height:1.14; }
.p-sec-lead {
  max-width:640px; margin:18px 0 0; text-align:inherit;
  color:var(--ink-2); font-size:clamp(15px, 1.4vw, 17px); line-height:1.95; text-wrap:pretty;
}
.p-sec-lead a { color:var(--teal); text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(44,234,163,.4); }

/* small in-section heading (landing .sub-h) */
.p-sub-h {
  display:flex; align-items:center; gap:12px; margin:64px 0 20px;
  color:var(--ink-1); font-size:var(--fs-sub); font-weight:700; line-height:1.5; text-align:start;
}
.p-sub-h::before { content:""; flex:none; width:16px; height:2px; border-radius:2px; background:var(--teal); }
.p-sub-h:first-child { margin-top:0; }

/* ---------------------------------------------------------------------
   7. ICONS — inline SVG 24×24, stroke 1.75, currentColor (see PRECISION.md)
   --------------------------------------------------------------------- */
.p-ico { display:block; flex:none; width:20px; height:20px; }
html[dir="ltr"] .p-ico-dir { transform:scaleX(-1); }       /* 'chev'/'arrow-fwd' point "forward" (left in RTL, right in LTR) */
html:not([dir="ltr"]) .p-ico-back { transform:scaleX(-1); } /* same icons pointing "back" (right in RTL, left in LTR) */

/* 40px squircle icon tile (landing .feature-icon-wrap / .portal-icon-wrap) */
.p-icon {
  position:relative; flex:none; width:40px; height:40px; display:grid; place-items:center;
  border-radius:var(--r-sm); border:1px solid var(--line-2);
  background:linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.012));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
  color:var(--teal);
  transition:border-color .3s, background .3s, color .3s, transform .5s var(--ease-spring);
}
.p-icon .p-ico { width:20px; height:20px; }
.p-icon.is-gold { color:var(--gold); }
.p-icon.is-muted { color:var(--ink-2); }
.p-icon.is-lg { width:52px; height:52px; border-radius:var(--r-md); }
.p-icon.is-lg .p-ico { width:24px; height:24px; }
.p-icon.is-sm { width:32px; height:32px; border-radius:8px; }
.p-icon.is-sm .p-ico { width:16px; height:16px; }
.p-icon.is-round { border-radius:50%; }
/* conic ring (::after) + halo (::before) — shown on card/tile hover */
.p-icon::after {
  content:""; position:absolute; inset:-1px; border-radius:inherit; padding:1px; pointer-events:none;
  background:conic-gradient(from var(--p-bang), var(--teal), rgba(255,204,0,.6), transparent 60%, var(--teal));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  opacity:0; transition:opacity .35s var(--ease-out);
}
.p-icon::before {
  content:""; position:absolute; inset:-12px; z-index:-1; border-radius:50%; pointer-events:none;
  background:radial-gradient(closest-side, rgba(44,234,163,.26), transparent);
  opacity:0; transition:opacity .35s var(--ease-out);
}
.p-icon.is-gold::after { background:conic-gradient(from var(--p-bang), var(--gold), rgba(44,234,163,.55), transparent 60%, var(--gold)); }
.p-icon.is-gold::before { background:radial-gradient(closest-side, rgba(255,204,0,.2), transparent); }

/* ---------------------------------------------------------------------
   8. CARD — landing .feature-card anatomy
      [icon tile · index] → title → text → [tag | link]
      hover: 1px spotlight ring under the cursor (--mx/--my from precision.js
      via [data-p-spot]), soft inner glow, top hairline, icon ring spin
   --------------------------------------------------------------------- */
.p-card {
  --mx:50%; --my:50%;
  position:relative; isolation:isolate; min-width:0;
  display:flex; flex-direction:column; align-items:stretch;
  padding:28px;
  background:linear-gradient(180deg, var(--sf-2), var(--sf-1));
  border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--e-2);
  color:inherit; text-decoration:none; text-align:start;
  transition:transform .55s var(--ease-out), box-shadow .35s var(--ease-out);
}
a.p-card { scroll-margin-top:96px; }
.p-card::before, .p-tile::before {
  content:""; position:absolute; inset:-1px; border-radius:inherit; padding:1px; pointer-events:none;
  background:radial-gradient(240px circle at var(--mx) var(--my), rgba(44,234,163,.8), rgba(44,234,163,.14) 45%, rgba(255,255,255,.06) 75%);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  opacity:0; transition:opacity .35s var(--ease-out);
}
.p-card::after, .p-tile::after {
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none; z-index:-1;
  background:radial-gradient(420px circle at var(--mx) var(--my), rgba(44,234,163,.07), transparent 45%);
  opacity:0; transition:opacity .35s var(--ease-out);
}
.p-card:hover, .p-tile:hover { box-shadow:var(--e-3); }
.p-card:is(:hover, :focus-visible)::before, .p-card:hover::after,
.p-tile:is(:hover, :focus-visible)::before, .p-tile:hover::after { opacity:1; }
.p-card:hover .p-icon, .p-tile:hover .p-icon { border-color:var(--line-teal); background:var(--teal-a06); }
.p-card:hover .p-icon.is-gold, .p-tile:hover .p-icon.is-gold { border-color:rgba(255,204,0,.35); background:var(--gold-a06); }

.p-card-top {
  display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:22px;
}
/* top hairline that opens from the start edge on hover */
.p-card-top::before {
  content:""; position:absolute; top:-1px; left:24px; right:24px; height:1px; pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--teal) 30%, var(--teal-hi) 50%, var(--teal) 70%, transparent);
  transform:scaleX(0); transform-origin:left center; transition:transform .5s var(--ease-out);
}
html:not([dir="ltr"]) .p-card-top::before { transform-origin:right center; }
.p-card-idx { color:var(--ink-3); font-size:12px; font-weight:600; font-variant-numeric:tabular-nums; letter-spacing:.06em; }

.p-card-body { flex:1 1 auto; display:flex; flex-direction:column; gap:8px; }
.p-card-body:not(:last-child) { padding-bottom:24px; }
.p-card-title { margin:0; color:var(--ink-1); font-size:var(--fs-card); font-weight:700; line-height:1.6; text-wrap:balance; }
.p-card-text  { margin:0; color:var(--ink-2); font-size:var(--fs-body); line-height:1.9; text-wrap:pretty; }
.p-card-text a, .p-card-body a:not([class]) { color:var(--teal); text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(44,234,163,.4); }
.p-card-foot {
  margin-top:auto; padding-top:16px; border-top:1px solid var(--line);
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
}
.p-card-link {
  display:inline-flex; align-items:center; gap:6px;
  color:var(--teal); font-size:13px; font-weight:600; white-space:nowrap; text-decoration:none;
  transition:transform .35s var(--ease-out), color .2s;
}
.p-card-link { border-radius:8px; }
.p-card-link:focus-visible { outline-offset:4px; }
.p-card-link .p-ico { width:15px; height:15px; stroke-width:2; }
.p-card:hover .p-card-link { transform:translateX(-3px); }
html[dir="ltr"] .p-card:hover .p-card-link { transform:translateX(3px); }

/* hot (gold) card — only for plans / sanctions / the ExitDelay route */
.p-card.is-hot { box-shadow:inset 0 1px 0 rgba(255,204,0,.2), 0 18px 40px -24px rgba(0,0,0,.9); }
.p-card.is-hot::before { background:radial-gradient(240px circle at var(--mx) var(--my), rgba(255,204,0,.8), rgba(255,204,0,.16) 45%, rgba(255,255,255,.06) 75%); }
.p-card.is-hot::after  { background:radial-gradient(420px circle at var(--mx) var(--my), rgba(255,204,0,.06), transparent 45%); }
.p-card.is-hot .p-card-top::before,
.p-card:has(.p-icon.is-gold) .p-card-top::before { background:linear-gradient(90deg, transparent, var(--gold) 30%, var(--gold-lt) 50%, var(--gold) 70%, transparent); }
.p-card.is-hot .p-card-link { color:var(--gold-lt); }
/* static card: same surface, no hover motion */
.p-card.is-static:hover { box-shadow:var(--e-2); }
.p-card.is-static::before, .p-card.is-static::after { display:none; }

/* ---------------------------------------------------------------------
   9. TILE — landing .portal-card anatomy (a whole-card link)
      [icon tile · ↗ circle] → title → text → CTA row (always visible)
      hover: spinning conic ring in the 1px border, diagonal sheen, icon pop
   --------------------------------------------------------------------- */
.p-tile {
  --mx:50%; --my:50%;
  position:relative; isolation:isolate; min-width:0;
  display:flex; flex-direction:column; align-items:stretch;
  padding:28px; cursor:pointer;
  background:linear-gradient(180deg, var(--sf-2), var(--sf-1));
  border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--e-2);
  color:inherit; text-decoration:none; text-align:start;
  transition:transform .55s var(--ease-out), box-shadow .35s var(--ease-out);
}
/* a tile that is not itself a link (it holds several links/buttons): <div class="p-tile"> — no pointer cursor,
   and no .p-tile-go arrow / .p-tile-cta row (use a .p-btn-row instead) */
:where(div, article, section, li).p-tile { cursor:auto; }
.p-tile::before {
  background:
    radial-gradient(240px circle at var(--mx) var(--my), rgba(44,234,163,.85), rgba(44,234,163,.16) 45%, transparent 72%),
    conic-gradient(from var(--p-bang), rgba(44,234,163,.62), rgba(255,204,0,.36), rgba(44,234,163,.05) 36%, transparent 50%, rgba(255,204,0,.2) 76%, rgba(44,234,163,.62));
}
.p-tile-deco { position:absolute; inset:0; z-index:-1; pointer-events:none; border-radius:inherit; overflow:hidden; }
.p-tile-deco::after {        /* diagonal sheen */
  content:""; position:absolute; top:-12%; bottom:-12%; left:0; width:38%;
  background:linear-gradient(105deg, transparent, rgba(255,255,255,.055) 38%, rgba(255,255,255,.11) 50%, rgba(255,255,255,.055) 62%, transparent);
  transform:translateX(-170%) skewX(-16deg);
  transition:transform .85s cubic-bezier(.45,.05,.25,1);
}
.p-tile-top { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:24px; }
.p-tile-go {
  flex:none; width:32px; height:32px; border-radius:50%; display:grid; place-items:center;
  border:1px solid var(--line-2); color:var(--ink-2);
  transition:transform .45s var(--ease-out), color .25s, background .25s, border-color .25s;
}
.p-tile-go .p-ico { width:15px; height:15px; stroke-width:2; }
html:not([dir="ltr"]) .p-tile-go .p-ico { transform:scaleX(-1); }
.p-tile:is(:hover, :focus-visible) .p-tile-go { transform:rotate(45deg); background:var(--teal); border-color:var(--teal); color:var(--teal-ink); }
html:not([dir="ltr"]) .p-tile:is(:hover, :focus-visible) .p-tile-go { transform:rotate(-45deg); }
.p-tile-title { margin:0 0 8px; color:var(--ink-1); font-size:var(--fs-card); font-weight:700; line-height:1.6; text-wrap:balance; }
.p-tile-text  { margin:0; color:var(--ink-2); font-size:var(--fs-sm); line-height:1.85; text-wrap:pretty; }
.p-tile-cta {
  margin-top:auto; padding-top:20px; align-self:flex-start;
  display:inline-flex; align-items:center; gap:6px;
  color:var(--teal); font-size:13.5px; font-weight:600;
}
.p-tile-cta .p-ico { width:15px; height:15px; stroke-width:2; transition:transform .35s var(--ease-out); }
.p-tile:hover .p-tile-cta .p-ico { transform:translateX(-3px); }
html[dir="ltr"] .p-tile:hover .p-tile-cta .p-ico.p-ico-dir { transform:scaleX(-1) translateX(-3px); }

/* hot tile (gold) — e.g. "buy a plan" */
.p-tile.is-hot { box-shadow:inset 0 1px 0 rgba(255,204,0,.22), 0 18px 40px -24px rgba(0,0,0,.9); }
.p-tile.is-hot .p-icon { color:var(--gold); }
.p-tile.is-hot .p-tile-cta { color:var(--gold-lt); }
.p-tile.is-hot::before {
  background:
    radial-gradient(240px circle at var(--mx) var(--my), rgba(255,204,0,.8), rgba(255,204,0,.16) 45%, transparent 72%),
    conic-gradient(from var(--p-bang), rgba(255,204,0,.62), rgba(44,234,163,.32), rgba(255,204,0,.05) 36%, transparent 50%, rgba(44,234,163,.22) 76%, rgba(255,204,0,.62));
}
.p-tile.is-hot::after { background:radial-gradient(420px circle at var(--mx) var(--my), rgba(255,204,0,.06), transparent 45%); }
.p-tile.is-hot:hover .p-icon { border-color:rgba(255,204,0,.35); background:var(--gold-a06); }
.p-tile.is-hot:is(:hover, :focus-visible) .p-tile-go { background:var(--gold); border-color:var(--gold); color:var(--gold-ink); }

/* feature tile (landing .tile-dl): teal corner light + grid texture + big title + solid CTA */
.p-tile.is-feature {
  background:
    radial-gradient(90% 70% at 0% 0%, rgba(44,234,163,.1), transparent 60%),
    linear-gradient(180deg, var(--sf-2), var(--sf-1));
}
html:not([dir="ltr"]) .p-tile.is-feature {
  background:
    radial-gradient(90% 70% at 100% 0%, rgba(44,234,163,.1), transparent 60%),
    linear-gradient(180deg, var(--sf-2), var(--sf-1));
}
.p-tile.is-feature .p-tile-deco::before {
  content:""; position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
  background-size:28px 28px; background-position:-1px -1px;
  -webkit-mask-image:radial-gradient(ellipse 65% 75% at 100% 0%, #000 10%, transparent 70%);
          mask-image:radial-gradient(ellipse 65% 75% at 100% 0%, #000 10%, transparent 70%);
}
html:not([dir="ltr"]) .p-tile.is-feature .p-tile-deco::before {
  -webkit-mask-image:radial-gradient(ellipse 65% 75% at 0% 0%, #000 10%, transparent 70%);
          mask-image:radial-gradient(ellipse 65% 75% at 0% 0%, #000 10%, transparent 70%);
}
.p-tile.is-feature .p-tile-top { margin-bottom:32px; }
.p-tile.is-feature .p-tile-top > .p-icon { width:52px; height:52px; border-radius:var(--r-md); }
.p-tile.is-feature .p-tile-top > .p-icon .p-ico { width:24px; height:24px; }
.p-tile.is-feature .p-tile-top > .p-tile-go { width:40px; height:40px; }
.p-tile.is-feature .p-tile-title { font-size:clamp(24px, 2.4vw, 30px); font-weight:800; line-height:1.35; margin-bottom:12px; }
.p-tile.is-feature .p-tile-title:lang(en) { letter-spacing:-.02em; }
.p-tile.is-feature .p-tile-text { font-size:15px; max-width:440px; }
.p-tile.is-feature .p-tile-cta {
  padding:0 20px; height:46px; gap:8px; border-radius:var(--r-btn);
  background:var(--teal); color:var(--teal-ink); font-size:15px; font-weight:700;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35), 0 10px 28px -14px rgba(44,234,163,.7);
  transition:background .25s;
}
.p-tile.is-feature:hover .p-tile-cta { background:var(--teal-hi); }

/* ---------------------------------------------------------------------
   10. PANEL · STATS · STEPS · CHECKLIST · MEDIA · QUOTE
   --------------------------------------------------------------------- */
/* static surface (landing .glass-b) */
.p-panel {
  position:relative; min-width:0; padding:28px; text-align:start;
  background:linear-gradient(180deg, var(--sf-2), var(--sf-1));
  border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--e-1);
}
.p-panel.is-flush { padding:0; }
.p-panel.is-raised { box-shadow:var(--e-2); }
/* animated top hairline (landing .ping-demo / .panel) */
.p-panel.is-lit::before, .p-toc.is-lit::before {
  content:""; position:absolute; top:0; left:0; right:0; height:1px; border-radius:inherit; pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--teal-glow), var(--gold), var(--teal-glow), transparent);
  background-size:200% 100%;
  animation:p-hairlineFlow 6s linear infinite; opacity:.55;
}
.p-panel-head {
  display:flex; align-items:center; gap:14px;
  padding-bottom:20px; margin-bottom:20px; border-bottom:1px solid var(--line);
}
.p-panel-title { margin:0; color:var(--ink-1); font-size:17px; font-weight:700; line-height:1.5; }
.p-panel-title.is-lg { font-size:var(--fs-sub); font-weight:800; }
/* numbered clause head (privacy/terms "۱ · title"): <header class="p-panel-head"><span class="p-step-num">۱</span><h2 class="p-panel-title is-lg">…</h2></header> */
.p-panel-head > .p-step-num { flex:none; margin:0; }

/* stats: hairline-divided cells (1px gap over --line) */
.p-stats {
  display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:1px;
  background:var(--line); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden;
  box-shadow:var(--e-1);
}
.p-stats.is-rail { grid-template-columns:minmax(0,1fr); grid-auto-rows:1fr; }
.p-stat {
  display:flex; flex-direction:column; justify-content:center; gap:6px; min-width:0;
  padding:22px 24px; background:var(--sf-1); text-align:start;
}
.p-stat-val {
  display:block; color:var(--ink-1); font-size:clamp(26px, 2.6vw, 34px); font-weight:800; line-height:1.15;
  font-variant-numeric:tabular-nums; white-space:nowrap;
}
.p-stat-val:lang(fa) { font-variant-numeric:proportional-nums; }   /* «۷۰٪» not «۷ ۰ ٪» */
.p-stat-label { display:block; color:var(--ink-2); font-size:13px; line-height:1.6; }
.p-stat.is-hot .p-stat-val { color:var(--gold); }
.p-stat.is-teal .p-stat-val { color:var(--teal); }

/* steps timeline (landing .steps-tl): numbered nodes on a hairline */
.p-steps { display:grid; grid-template-columns:repeat(var(--p-steps, 3), minmax(0,1fr)); gap:24px; list-style:none; margin:0; padding:0; }
.p-step { position:relative; min-width:0; text-align:start; }
.p-step-num {
  position:relative; z-index:1;
  width:40px; height:40px; border-radius:50%; display:grid; place-items:center; margin-bottom:18px;
  border:1px solid var(--line-teal); background:var(--sf-1);
  box-shadow:0 0 0 5px rgba(44,234,163,.05);
  color:var(--teal); font-size:15px; font-weight:700; font-variant-numeric:tabular-nums;
}
.p-step:not(:last-child)::after {
  content:""; position:absolute; top:20px; height:1px;
  inset-inline-start:52px; inset-inline-end:-12px;
  background:linear-gradient(90deg, var(--line-teal), var(--line-2));
}
html:not([dir="ltr"]) .p-step:not(:last-child)::after { background:linear-gradient(270deg, var(--line-teal), var(--line-2)); }
.p-step-title { margin:0 0 6px; color:var(--ink-1); font-size:16px; font-weight:700; line-height:1.6; }
.p-step-text  { margin:0; padding-inline-end:12px; color:var(--ink-2); font-size:var(--fs-sm); line-height:1.85; }
.p-step-text a { color:var(--teal); text-decoration:underline; text-underline-offset:3px; }

/* checklist — teal tick circles (.is-x = muted red crosses) */
.p-checklist { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; }
.p-checklist li { position:relative; padding-inline-start:32px; color:var(--ink-2); font-size:var(--fs-body); line-height:1.85; text-align:start; }
.p-checklist li::before {
  content:""; position:absolute; inset-inline-start:0; top:.2em; width:20px; height:20px; border-radius:50%;
  background:var(--teal-a12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232ceaa3' stroke-width='2.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 12px no-repeat;
}
.p-checklist.is-x li::before {
  background:var(--bad-a12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e58585' stroke-width='2.75' stroke-linecap='round'%3E%3Cpath d='m6.5 6.5 11 11M17.5 6.5l-11 11'/%3E%3C/svg%3E") center / 11px no-repeat;
}
.p-checklist.is-gold li::before {
  background:var(--gold-a12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffcc00' stroke-width='2.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 12px no-repeat;
}
.p-checklist li strong { color:var(--ink-1); }
.p-checklist a { color:var(--teal); text-decoration:underline; text-underline-offset:3px; }

/* media object: icon/avatar + title + sub */
.p-media { display:flex; align-items:center; gap:16px; min-width:0; text-align:start; }
.p-media-body { min-width:0; display:flex; flex-direction:column; gap:2px; }
.p-media-title { margin:0; color:var(--ink-1); font-size:var(--fs-sub); font-weight:800; line-height:1.45; }
.p-media-sub { color:var(--ink-3); font-size:13px; font-weight:500; line-height:1.6; }

/* pull quote */
.p-quote {
  position:relative; margin:0; padding:18px 22px;
  border-inline-start:2px solid var(--teal);
  border-start-end-radius:var(--r-md); border-end-end-radius:var(--r-md);
  background:linear-gradient(90deg, var(--teal-a06), transparent 75%);
  color:var(--ink-1); font-size:clamp(16.5px, 1.6vw, 19px); font-weight:700; line-height:1.85; text-wrap:balance;
}
html:not([dir="ltr"]) .p-quote { background:linear-gradient(270deg, var(--teal-a06), transparent 75%); }
.p-quote.is-gold { border-inline-start-color:var(--gold); color:var(--gold-lt); background:linear-gradient(90deg, var(--gold-a06), transparent 75%); }
html:not([dir="ltr"]) .p-quote.is-gold { background:linear-gradient(270deg, var(--gold-a06), transparent 75%); }
.p-quote cite, .p-quote footer { display:block; margin-top:8px; color:var(--ink-3); font-size:13px; font-weight:500; font-style:normal; }

/* ---------------------------------------------------------------------
   11. BUTTONS — primary = solid teal; secondary = dark hairline;
       gold = hairline gold (hot: plans); ghost = transparent
   --------------------------------------------------------------------- */
.p-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  height:48px; padding:0 22px; border-radius:var(--r-btn); border:1px solid transparent;
  font-family:inherit; font-size:15px; font-weight:600; line-height:1; white-space:nowrap; text-decoration:none;
  cursor:pointer; position:relative; overflow:hidden; isolation:isolate; vertical-align:middle;
  transition:background .25s, border-color .25s, color .25s, box-shadow .25s;
}
.p-btn .p-ico { width:18px; height:18px; }
.p-btn-primary {
  overflow:visible;
  background:var(--teal); color:var(--teal-ink); border-color:var(--teal);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35), 0 10px 28px -14px rgba(44,234,163,.7);
}
.p-btn-primary .p-ico { stroke-width:2; }
.p-btn-primary:hover {
  background:var(--teal-hi); border-color:var(--teal-hi); color:var(--teal-ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4), 0 14px 34px -12px rgba(44,234,163,.8);
}
/* sheen layer (put <span class="p-btn-fx" aria-hidden="true"></span> first inside the button) */
.p-btn-fx { position:absolute; inset:0; z-index:-1; border-radius:inherit; overflow:hidden; pointer-events:none; }
.p-btn-fx::before {
  content:""; position:absolute; top:0; bottom:0; left:0; width:45%;
  background:linear-gradient(105deg, transparent, rgba(255,255,255,.5), transparent);
  transform:translateX(-130%) skewX(-22deg); opacity:0; transition:opacity .3s;
}
/* pulse ring outside the primary button */
.p-btn-primary::before {
  content:""; position:absolute; inset:-1px; z-index:-1; pointer-events:none;
  border-radius:calc(var(--r-btn) + 1px); border:1px solid rgba(44,234,163,.85);
  box-shadow:0 0 0 4px rgba(44,234,163,.16), 0 0 16px rgba(44,234,163,.28);
  opacity:0;
}
.p-btn-secondary { background:rgba(8,15,17,.82); color:var(--ink-1); border-color:var(--line-2); }
.p-btn-secondary:hover { background:rgba(10,31,27,.9); border-color:var(--line-teal); color:var(--teal); }
.p-btn-gold { background:rgba(8,15,17,.82); color:var(--gold-lt); border-color:rgba(255,204,0,.32); }
.p-btn-gold:hover { background:rgba(27,23,7,.9); border-color:rgba(255,204,0,.6); color:var(--gold); }
.p-btn-gold.is-solid { background:var(--gold); border-color:var(--gold); color:var(--gold-ink); box-shadow:inset 0 1px 0 rgba(255,255,255,.35), 0 10px 28px -14px rgba(255,204,0,.6); }
.p-btn-gold.is-solid:hover { background:var(--gold-lt); border-color:var(--gold-lt); color:var(--gold-ink); }
.p-btn-ghost { background:transparent; color:var(--ink-2); border-color:var(--line-2); }
.p-btn-ghost:hover { background:rgba(255,255,255,.05); color:var(--ink-1); }
.p-btn.is-sm { height:40px; padding:0 16px; font-size:13.5px; border-radius:var(--r-sm); gap:8px; }
.p-btn.is-sm .p-ico { width:16px; height:16px; }
.p-btn.is-lg { height:54px; padding:0 28px; font-size:16px; }
.p-btn.is-block { display:flex; width:100%; }
.p-btn:is([disabled], [aria-disabled="true"], .is-disabled) { opacity:.5; pointer-events:none; cursor:not-allowed; box-shadow:none; }

.p-btn-row { display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
.p-btn-row.is-center { justify-content:center; }

/* text button / inline link */
.p-text-btn {
  display:inline-flex; align-items:center; gap:8px; padding:8px 2px;
  color:var(--teal); font-size:14px; font-weight:600; text-decoration:none; white-space:nowrap;
  transition:color .2s;
}
.p-text-btn .p-ico { width:17px; height:17px; }
.p-text-btn:hover { color:var(--ink-1); }
.p-link { color:var(--teal); text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(44,234,163,.4); transition:color .2s, text-decoration-color .2s; }
.p-link:hover { color:var(--ink-1); text-decoration-color:currentColor; }

/* ---------------------------------------------------------------------
   12. TAGS & CHIPS
   --------------------------------------------------------------------- */
.p-tag {
  display:inline-flex; align-items:center; gap:6px; min-height:24px; padding:2px 10px;
  border-radius:var(--r-pill); border:1px solid rgba(44,234,163,.22); background:var(--teal-a06);
  color:var(--teal); font-size:var(--fs-micro); font-weight:600; line-height:1.4;
  max-width:100%; overflow-wrap:anywhere;
}
.p-tag.is-gold { border-color:rgba(255,204,0,.3); background:var(--gold-a06); color:var(--gold-lt); }
.p-tag.is-grey { border-color:var(--line-2); background:transparent; color:var(--ink-2); }
.p-tag.is-bad  { border-color:rgba(229,133,133,.3); background:var(--bad-a12); color:var(--bad); }
.p-tag.is-dot::before { content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }

.p-chips { display:flex; flex-wrap:wrap; gap:8px; }
.p-chips.is-center { justify-content:center; }
.p-chip {
  display:inline-flex; align-items:center; gap:8px; min-height:38px; padding:6px 15px;
  border:1px solid var(--line-2); border-radius:var(--r-pill);
  background:rgba(7,13,15,.78);
  color:var(--ink-1); font-size:13.5px; font-weight:500; line-height:1.5; text-decoration:none;
  transition:border-color .25s, background .25s, color .25s;
}
.p-chip .p-ico { width:15px; height:15px; color:var(--teal); }
.p-chip.is-text { display:inline-block; line-height:24px; }        /* «Label: <b>1.8.5</b> (100 MB)» flows as text */
.p-chip.is-text.is-sm { line-height:22px; }
a.p-chip:hover, button.p-chip:hover { border-color:var(--line-teal); background:rgba(44,234,163,.07); }
.p-chip.is-sm { min-height:32px; padding:4px 12px; font-size:13px; background:rgba(255,255,255,.025); }
.p-chip.is-active, .p-chip[aria-pressed="true"], .p-chip[aria-current] { border-color:var(--line-teal); background:var(--teal-a06); color:var(--teal); }
.p-chip.is-gold { border-color:rgba(255,204,0,.32); color:var(--gold-lt); background:var(--gold-a06); }
.p-chip.is-gold .p-ico { color:var(--gold); }

/* ---------------------------------------------------------------------
   13. TABLES — real tables on a hairline panel
   --------------------------------------------------------------------- */
.p-table-wrap {
  width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch;
  background:linear-gradient(180deg, var(--sf-2), var(--sf-1));
  border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--e-1);
  scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.18) transparent;
}
.p-table { width:100%; border-collapse:separate; border-spacing:0; font-size:var(--fs-sm); line-height:1.8; }
.p-table :is(th, td) { padding:16px 20px; text-align:start; vertical-align:top; border-top:1px solid var(--line); }
.p-table thead :is(th, td) {
  border-top:0; padding-block:13px; background:var(--sf-0);
  color:var(--ink-3); font-size:12px; font-weight:600; line-height:1.6; white-space:nowrap; vertical-align:middle;
}
.p-table thead :is(th, td):lang(en) { text-transform:uppercase; letter-spacing:.08em; font-size:11px; }
.p-table tbody th { color:var(--ink-1); font-weight:700; }
.p-table td { color:var(--ink-2); }
.p-table td strong, .p-table td b { color:var(--ink-1); }
.p-table tbody tr { transition:background .2s; }
.p-table tbody tr:hover > * { background:rgba(255,255,255,.018); }
.p-table .is-hot { color:var(--ink-1); background:rgba(44,234,163,.045); }
.p-table thead .is-hot { color:var(--teal); background:rgba(44,234,163,.08); box-shadow:inset 0 2px 0 var(--teal); }
.p-table .is-gold { color:var(--gold-lt); }
.p-table .is-num, .p-table .num { font-variant-numeric:tabular-nums; white-space:nowrap; }
.p-table .is-end { text-align:end; }
.p-table a { color:var(--teal); text-decoration:underline; text-underline-offset:3px; }

/* ---------------------------------------------------------------------
   14. FAQ / ACCORDION — <details class="p-faq-item">; "+" turns into "×"
   --------------------------------------------------------------------- */
.p-faq { display:flex; flex-direction:column; border-top:1px solid var(--line); text-align:start; }
.p-faq-item { border-bottom:1px solid var(--line); transition:border-color .3s; }
.p-faq-item[open] { border-bottom-color:var(--line-2); }
.p-faq-item > summary {
  list-style:none; cursor:pointer;
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  padding:22px 0; color:var(--ink-1); font-size:16px; font-weight:600; line-height:1.7;
  transition:color .2s;
}
.p-faq-item > summary::-webkit-details-marker { display:none; }
.p-faq-item > summary:hover { color:var(--teal); }
.p-faq-item > summary:focus-visible { outline-offset:4px; border-radius:6px; }
.p-faq-chev {
  flex:none; width:30px; height:30px; padding:6px; border-radius:50%;
  border:1px solid var(--line-2); color:var(--ink-2);
  transition:transform .35s var(--ease-spring), color .25s, border-color .25s, background .25s;
}
.p-faq-item > summary:hover .p-faq-chev { border-color:var(--line-teal); color:var(--teal); }
.p-faq-item[open] .p-faq-chev { transform:rotate(135deg); color:var(--teal); border-color:var(--line-teal); background:var(--teal-a06); }
.p-faq-answer { max-width:68ch; margin:0; padding:0 0 24px; color:var(--ink-2); font-size:15px; line-height:2; }
.p-faq-answer a { color:var(--teal); text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(44,234,163,.4); }
.p-faq-answer a:hover { color:var(--ink-1); }
.p-faq-answer > * + * { margin-top:.8em; }

/* ---------------------------------------------------------------------
   15. FORMS
   --------------------------------------------------------------------- */
.p-form { display:grid; gap:20px; }
.p-form-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:20px; }
.p-form-grid > .is-full, .p-field.is-full { grid-column:1 / -1; }
.p-field { display:flex; flex-direction:column; gap:8px; min-width:0; text-align:start; }
.p-label { color:var(--ink-1); font-size:13.5px; font-weight:600; line-height:1.5; }
.p-label .p-req { color:var(--teal); margin-inline-start:2px; }
.p-label .p-opt { color:var(--ink-3); font-weight:500; }
.p-input, .p-select, .p-textarea {
  display:block; width:100%; min-height:48px; margin:0; padding:11px 14px;
  border-radius:var(--r-sm); border:1px solid var(--line-2);
  background:var(--sf-0); color:var(--ink-1);
  font-family:inherit; font-size:15px; line-height:1.6; text-align:start;
  box-shadow:inset 0 1px 2px rgba(0,0,0,.35);
  transition:border-color .2s, box-shadow .2s, background .2s;
  -webkit-appearance:none; appearance:none;
}
.p-input::placeholder, .p-textarea::placeholder { color:var(--ink-3); opacity:1; }
.p-input:hover, .p-select:hover, .p-textarea:hover { border-color:rgba(255,255,255,.2); }
.p-input:focus, .p-select:focus, .p-textarea:focus {
  outline:2px solid transparent; outline-offset:0;       /* transparent outline = visible in forced-colors */
  border-color:var(--teal); background:#081113;
  box-shadow:0 0 0 3px rgba(44,234,163,.18);
}
.p-input[aria-invalid="true"], .p-select[aria-invalid="true"], .p-textarea[aria-invalid="true"],
.p-field.is-error :is(.p-input, .p-select, .p-textarea) { border-color:rgba(229,133,133,.7); }
.p-input[aria-invalid="true"]:focus, .p-textarea[aria-invalid="true"]:focus,
.p-field.is-error :is(.p-input, .p-select, .p-textarea):focus { box-shadow:0 0 0 3px rgba(229,133,133,.2); }
.p-input:disabled, .p-select:disabled, .p-textarea:disabled { opacity:.55; cursor:not-allowed; }
.p-textarea { min-height:140px; resize:vertical; }
.p-select {
  padding-inline-end:42px; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2394a6a9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-size:16px 16px; background-position:left 14px center;
}
html[dir="ltr"] .p-select { background-position:right 14px center; }
.p-select option { background:var(--sf-1); color:var(--ink-1); }
/* LTR data (email, phone, url, numbers) inside an RTL form keeps its own direction but the RTL alignment */
html:not([dir="ltr"]) .p-input:is([type="email"], [type="tel"], [type="url"], [type="number"], .is-ltr) { direction:ltr; text-align:right; }
.p-input:-webkit-autofill, .p-input:-webkit-autofill:hover, .p-input:-webkit-autofill:focus {
  -webkit-text-fill-color:var(--ink-1); caret-color:var(--ink-1);
  box-shadow:0 0 0 1000px var(--sf-0) inset; transition:background-color 9999s;
}
.p-input[type="file"] { padding:8px; min-height:auto; cursor:pointer; color:var(--ink-2); }
.p-input[type="file"]::file-selector-button {
  height:34px; margin-inline-end:12px; padding:0 14px; border-radius:8px; cursor:pointer;
  border:1px solid var(--line-2); background:rgba(255,255,255,.04); color:var(--ink-1);
  font:inherit; font-size:13px; font-weight:600;
}
.p-help  { color:var(--ink-3); font-size:12.5px; line-height:1.7; }
.p-error { color:var(--bad);   font-size:12.5px; line-height:1.7; }
.p-check { display:flex; align-items:flex-start; gap:10px; color:var(--ink-2); font-size:14px; line-height:1.8; cursor:pointer; text-align:start; }
.p-check input { flex:none; width:18px; height:18px; margin:.3em 0 0; accent-color:var(--teal); cursor:pointer; }
.p-check a { color:var(--teal); text-decoration:underline; text-underline-offset:3px; }
.p-input-group { display:flex; gap:8px; align-items:stretch; }
.p-input-group > .p-input { flex:1 1 auto; min-width:0; }
.p-form-actions { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:4px; }

/* ---------------------------------------------------------------------
   16. ALERTS & NOTES
   --------------------------------------------------------------------- */
.p-alert {
  display:flex; align-items:flex-start; gap:12px; margin:0; padding:16px 18px; text-align:start;
  border:1px solid var(--line-2); border-radius:var(--r-md); background:rgba(255,255,255,.02);
  color:var(--ink-2); font-size:14px; line-height:1.85;
}
.p-alert > .p-ico { width:18px; height:18px; margin-top:.3em; color:var(--ink-2); }
.p-alert-title { display:block; margin:0 0 2px; color:var(--ink-1); font-weight:700; }
.p-alert a { color:var(--teal); text-decoration:underline; text-underline-offset:3px; }
.p-alert.is-info, .p-alert.is-success { border-color:rgba(44,234,163,.26); background:rgba(44,234,163,.045); }
.p-alert.is-info > .p-ico, .p-alert.is-success > .p-ico { color:var(--teal); }
.p-alert.is-warn   { border-color:rgba(255,204,0,.3); background:var(--gold-a06); }
.p-alert.is-warn > .p-ico { color:var(--gold); }
.p-alert.is-danger { border-color:rgba(229,133,133,.34); background:rgba(229,133,133,.06); }
.p-alert.is-danger > .p-ico { color:var(--bad); }
.p-alert.is-danger .p-alert-title { color:#f3b1b1; }

/* dashed side note (landing .note) */
.p-note {
  display:flex; align-items:flex-start; gap:12px; margin:0; padding:16px 20px; text-align:start;
  border:1px dashed var(--line-2); border-radius:var(--r-md);
  color:var(--ink-2); font-size:13.5px; line-height:1.85;
}
.p-note > .p-ico { width:18px; height:18px; margin-top:3px; color:var(--ink-3); }
.p-note a { color:var(--teal); text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(44,234,163,.4); }
.p-note a:hover { color:var(--ink-1); }

/* ---------------------------------------------------------------------
   17. BREADCRUMBS & PAGINATION
   --------------------------------------------------------------------- */
.p-breadcrumb { font-size:13px; line-height:1.6; }
.p-breadcrumb ol { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; align-items:center; gap:4px 6px; }
.p-breadcrumb li { display:inline-flex; align-items:center; gap:6px; min-width:0; color:var(--ink-3); }
.p-breadcrumb li + li::before {
  content:""; flex:none; width:12px; height:12px; background:currentColor; opacity:.7;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
}
html[dir="ltr"] .p-breadcrumb li + li::before { transform:scaleX(-1); }
.p-breadcrumb a { color:var(--ink-2); text-decoration:none; transition:color .2s; }
.p-breadcrumb a:hover { color:var(--teal); }
.p-breadcrumb [aria-current] { color:var(--ink-1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:36ch; }

.p-pager { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:6px; list-style:none; margin:40px 0 0; padding:0; }
.p-pager-link {
  display:inline-flex; align-items:center; justify-content:center; gap:6px; min-width:40px; height:40px; padding:0 12px;
  border-radius:var(--r-sm); border:1px solid var(--line-2); background:rgba(255,255,255,.02);
  color:var(--ink-2); font-size:14px; font-weight:600; font-variant-numeric:tabular-nums; line-height:1; text-decoration:none;
  transition:border-color .2s, color .2s, background .2s;
}
.p-pager-link .p-ico { width:16px; height:16px; }
a.p-pager-link:hover { border-color:var(--line-teal); color:var(--teal); background:var(--teal-a06); }
.p-pager-link:is(.is-active, [aria-current="page"]) { border-color:var(--line-teal); color:var(--teal); background:var(--teal-a06); }
.p-pager-link.is-disabled { opacity:.4; pointer-events:none; }
.p-pager-gap { color:var(--ink-3); padding:0 4px; }

/* ---------------------------------------------------------------------
   18. PROSE — long-form article / legal HTML (DB content welcome)
       <div class="p-prose"> … h2 h3 h4 p ul ol li a strong blockquote code pre
       table img figure figcaption hr dl … </div>
   --------------------------------------------------------------------- */
.p-prose {
  color:var(--ink-2); font-size:var(--fs-prose); line-height:2.05; text-align:start;
  overflow-wrap:break-word; min-width:0;
}
.p-prose:lang(en) { line-height:1.8; }
.p-prose :where(h1, h2, h3, h4, h5, h6, p, ul, ol, dl, blockquote, pre, table, figure, hr, details, iframe, video) { margin-block:0; }
.p-prose :where(blockquote, figure) { margin-inline:0; }
.p-prose > * + *, .p-prose :where(li, blockquote, details, figure) > * + * { margin-block-start:1.15em; }
.p-prose :where(h1, h2) {
  margin-block-start:2.1em; color:var(--ink-1);
  font-size:clamp(22px, 2.4vw, 28px); font-weight:800; line-height:1.5; text-wrap:balance;
  scroll-margin-top:calc(var(--nav-h) + 24px);
}
.p-prose :where(h1, h2):lang(en) { letter-spacing:-.015em; line-height:1.3; }
.p-prose :where(h2)::before {
  content:""; display:inline-block; width:16px; height:2px; border-radius:2px; background:var(--teal);
  vertical-align:middle; margin-inline-end:12px; transform:translateY(-.12em);
}
.p-prose :where(h3) { margin-block-start:1.8em; color:var(--ink-1); font-size:clamp(18px, 1.8vw, 21px); font-weight:700; line-height:1.6; scroll-margin-top:calc(var(--nav-h) + 24px); }
.p-prose :where(h4, h5, h6) { margin-block-start:1.6em; color:var(--ink-1); font-size:16.5px; font-weight:700; line-height:1.7; }
.p-prose :where(h1, h2, h3, h4) + * { margin-block-start:.7em; }
.p-prose > :first-child { margin-block-start:0; }
.p-prose :where(strong, b) { color:var(--ink-1); font-weight:700; }
.p-prose :where(a) { color:var(--teal); text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(44,234,163,.4); transition:color .2s, text-decoration-color .2s; }
.p-prose :where(a):hover { color:var(--ink-1); text-decoration-color:currentColor; }
.p-prose :where(ul, ol) { padding-inline-start:1.5em; }
.p-prose :where(li) + li { margin-block-start:.55em; }
.p-prose :where(li) > :where(ul, ol) { margin-block-start:.55em; }
.p-prose :where(ul) > li::marker { color:var(--teal); }
.p-prose :where(ol) > li::marker { color:var(--teal); font-weight:700; font-variant-numeric:tabular-nums; }
.p-prose:lang(fa) :where(ol) { list-style-type:persian; }
.p-prose :where(li) { padding-inline-start:.2em; }
.p-prose :where(blockquote) {
  padding:16px 22px; border-inline-start:2px solid var(--teal);
  border-start-end-radius:var(--r-md); border-end-end-radius:var(--r-md);
  background:linear-gradient(90deg, var(--teal-a06), transparent 80%);
  color:var(--ink-1);
}
html:not([dir="ltr"]) .p-prose :where(blockquote) { background:linear-gradient(270deg, var(--teal-a06), transparent 80%); }
/* follow the quote's own direction (RTL DB text on an LTR page, dir="auto") where :dir() is supported */
.p-prose :where(blockquote):dir(rtl) { background:linear-gradient(270deg, var(--teal-a06), transparent 80%); }
.p-prose :where(blockquote):dir(ltr) { background:linear-gradient(90deg, var(--teal-a06), transparent 80%); }
.p-prose :where(code, kbd, samp) {
  font-family:var(--font-mono); font-size:.86em; padding:.12em .45em; border-radius:6px;
  background:var(--sf-0); border:1px solid var(--line-2); color:#c4ffea;
  direction:ltr; unicode-bidi:isolate; white-space:break-spaces;
}
.p-prose :where(pre) {
  direction:ltr; text-align:left; overflow-x:auto; padding:18px 20px;
  white-space:pre-wrap; overflow-wrap:anywhere;          /* long commands wrap instead of hiding behind a scroll */
  background:var(--sf-0); border:1px solid var(--line); border-radius:var(--r-md);
  font-family:var(--font-mono); font-size:13.5px; line-height:1.75; color:var(--ink-1);
  scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.18) transparent;
}
.p-prose :where(pre) :where(code) { padding:0; border:0; background:none; color:inherit; font-size:inherit; white-space:inherit; }
.p-prose :where(img, video) {
  display:block; max-width:100%; height:auto; margin-inline:auto;
  border-radius:var(--r-md); border:1px solid var(--line);
}
.p-prose :where(iframe) { display:block; width:100%; max-width:100%; aspect-ratio:16 / 9; height:auto; border:0; border-radius:var(--r-md); }
.p-prose :where(figcaption) { margin-block-start:10px; color:var(--ink-3); font-size:13px; text-align:center; }
.p-prose :where(hr) { height:1px; border:0; margin-block:2.4em; background:linear-gradient(90deg, transparent, var(--line-2), transparent); }
.p-prose :where(table) {
  width:100%; border-collapse:separate; border-spacing:0; font-size:var(--fs-sm); line-height:1.8;
  border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden;
  background:linear-gradient(180deg, var(--sf-2), var(--sf-1));
}
.p-prose :where(th, td) { padding:14px 18px; text-align:start; vertical-align:top; border-top:1px solid var(--line); }
.p-prose :where(thead) :where(th, td) { border-top:0; background:var(--sf-0); color:var(--ink-3); font-size:12px; font-weight:600; white-space:nowrap; }
.p-prose :where(tbody) :where(tr:first-child) > * { border-top:0; }
.p-prose :where(thead) + :where(tbody) :where(tr:first-child) > * { border-top:1px solid var(--line); }
.p-prose :where(td) { color:var(--ink-2); }
.p-prose :where(tbody th, td:first-child) { color:var(--ink-1); font-weight:600; }
.p-prose :where(dt) { color:var(--ink-1); font-weight:700; }
.p-prose :where(dd) { margin-inline-start:0; margin-block-start:.3em; }
.p-prose :where(mark) { background:var(--gold-a12); color:var(--gold-lt); padding:0 .2em; border-radius:4px; }
.p-prose :where(small) { color:var(--ink-3); }
.p-prose.is-lg { font-size:17px; }

/* ---------------------------------------------------------------------
   19. TABLE OF CONTENTS — sticky beside long legal/article pages
       <div class="p-with-toc"> <nav class="p-toc">…</nav> <div class="p-prose">…</div> </div>
   --------------------------------------------------------------------- */
.p-with-toc {
  display:grid; grid-template-columns:260px minmax(0,1fr); grid-template-areas:"toc body";
  column-gap:48px; align-items:start;
}
.p-with-toc > .p-toc { grid-area:toc; }
.p-with-toc > :not(.p-toc) { grid-area:body; min-width:0; }
.p-toc {
  position:sticky; top:calc(var(--nav-h) + 24px); align-self:start;
  max-height:calc(100vh - var(--nav-h) - 48px); overflow:auto; overscroll-behavior:contain;
  padding:20px 14px; text-align:start;
  background:linear-gradient(180deg, var(--sf-2), var(--sf-1));
  border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--e-1);
  scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.14) transparent;
}
.p-toc-title, .p-toc > summary {
  display:flex; align-items:center; gap:10px; margin:0 6px 12px;
  color:var(--teal); font-size:12.5px; font-weight:700; line-height:1.6; list-style:none;
}
.p-toc-title:lang(en), .p-toc > summary:lang(en) { text-transform:uppercase; letter-spacing:.1em; font-size:11.5px; }
.p-toc-title::before, .p-toc > summary::before {
  content:""; flex:none; width:6px; height:6px; border-radius:50%;
  background:var(--teal); box-shadow:0 0 0 3px rgba(44,234,163,.14);
}
.p-toc > summary { cursor:pointer; margin-bottom:0; }
.p-toc > summary::-webkit-details-marker { display:none; }
.p-toc[open] > summary { margin-bottom:12px; }
.p-toc :where(ol, ul) { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px; }
.p-toc :where(ol, ul) :where(ol, ul) { margin-block:2px 4px; padding-inline-start:12px; }
.p-toc a {
  display:block; padding:7px 10px; border-radius:8px;
  border-inline-start:2px solid transparent;
  color:var(--ink-2); font-size:13.5px; line-height:1.65; text-decoration:none;
  transition:color .2s, background .2s, border-color .2s;
}
.p-toc a:hover { color:var(--ink-1); background:rgba(255,255,255,.03); }
.p-toc a:is(.active, .is-active, [aria-current="true"], [aria-current="location"]) {
  color:var(--teal); background:var(--teal-a06); border-inline-start-color:var(--teal);
}

/* ---------------------------------------------------------------------
   20. CTA BANNER — dark panel, fine grid, rotating beam, top light line
   --------------------------------------------------------------------- */
.p-cta {
  position:relative; overflow:hidden; isolation:isolate; text-align:center;
  width:100%; max-width:var(--container); margin-inline:auto; padding:64px 48px;
  background:linear-gradient(180deg, var(--sf-2), #060c0e);
  border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--e-2);
}
.p-cta::before {
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background-image:
    linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
  background-size:32px 32px; background-position:center -1px;
  -webkit-mask-image:radial-gradient(ellipse 70% 90% at 50% 0%, #000 15%, transparent 72%);
          mask-image:radial-gradient(ellipse 70% 90% at 50% 0%, #000 15%, transparent 72%);
}
.p-cta::after {
  content:""; position:absolute; inset:-45%; z-index:-2; pointer-events:none;
  background:conic-gradient(from 0deg, transparent 0 40%, rgba(44,234,163,.09) 47%, rgba(255,204,0,.05) 52%, transparent 58%);
  animation:p-ctaSweep 18s linear infinite;
  filter:blur(40px);
}
.p-cta-line {
  position:absolute; top:-1px; left:18%; right:18%; height:1px; pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--teal), transparent);
}
.p-cta-line::after {
  content:""; position:absolute; left:20%; right:20%; top:0; height:48px;
  background:radial-gradient(ellipse 50% 100% at 50% 0%, rgba(44,234,163,.16), transparent 70%);
}
.p-cta-orb { position:absolute; border-radius:50%; pointer-events:none; z-index:0; opacity:.6; }
.p-cta-orb.is-1 { width:6px; height:6px; left:12%; top:32%; background:var(--teal-glow); box-shadow:0 0 12px var(--teal-glow); animation:p-orb 7s ease-in-out infinite alternate; }
.p-cta-orb.is-2 { width:5px; height:5px; right:14%; top:58%; background:var(--gold); box-shadow:0 0 10px var(--gold); animation:p-orb 9s ease-in-out infinite alternate-reverse; }
.p-cta-orb.is-3 { width:4px; height:4px; left:26%; bottom:22%; background:#b6ffe4; box-shadow:0 0 8px #b6ffe4; animation:p-orb 6s ease-in-out infinite alternate; }
.p-cta > :not(.p-cta-orb):not(.p-cta-line) { position:relative; z-index:1; }
.p-cta-title { margin:0 0 12px; color:var(--ink-1); font-size:clamp(26px, 3vw, 38px); font-weight:800; line-height:1.35; text-wrap:balance; }
.p-cta-title:lang(en) { letter-spacing:-.02em; line-height:1.2; }
.p-cta-text { max-width:560px; margin:0 auto 32px; color:var(--ink-2); font-size:16px; line-height:1.9; }
.p-cta.is-compact { padding:44px 32px; }

/* ---------------------------------------------------------------------
   21. FOOTER — <footer class="p-footer"><div class="p-footer-inner">…
   --------------------------------------------------------------------- */
.p-footer {
  position:relative; margin-top:72px; padding:40px var(--gutter) 44px;
  background:#030709; border-top:1px solid var(--line);
  color:var(--ink-3); font-size:13px; line-height:1.8; text-align:start;
}
.p-footer::before {
  content:""; position:absolute; top:-1px; left:0; right:0; height:1px;
  background:linear-gradient(90deg, transparent, var(--teal-glow), var(--gold), var(--teal-glow), transparent);
  background-size:200% 100%;
  animation:p-hairlineFlow 7s linear infinite; opacity:.4;
}
.p-footer-inner {
  max-width:var(--container); margin:0 auto;
  display:flex; align-items:center; justify-content:space-between; gap:16px 24px; flex-wrap:wrap;
}
.p-footer-brand { display:inline-flex; flex:none; border-radius:8px; }
.p-footer-logo { display:block; width:30px; height:auto; border-radius:8px; opacity:.75; transition:opacity .25s; }
/* clickable only when it is a link (a.p-footer-brand) or keeps the landing's onclick */
:is(a.p-footer-brand, .p-footer-logo[onclick]) { cursor:pointer; }
:is(a.p-footer-brand:hover .p-footer-logo, .p-footer-logo[onclick]:hover) { opacity:1; }
.p-footer-links { display:flex; flex-wrap:wrap; align-items:center; gap:4px 18px; margin:0; padding:0; list-style:none; }
.p-footer-links a { color:var(--ink-2); font-size:13.5px; text-decoration:none; transition:color .2s;
  padding-block:4px; border-radius:6px; }                 /* inline padding: ~28px tap target, same line box */
.p-footer-links a:hover { color:var(--teal); }
.p-footer-links a[aria-current] { color:var(--ink-1); }
.p-footer-links a .p-ico { display:inline-block; width:15px; height:15px; margin-inline-end:6px; vertical-align:-3px; color:var(--teal); }
/* logo + wordmark link (contact / privacy / terms: the old nav's Exit<b>Delay</b> brand link, moved here):
   <a class="p-footer-brand" href="/" aria-label="ExitDelay"><img class="p-footer-logo" …><span>Exit<b>Delay</b></span></a>
   padding + equal negative margin = same layout, but the focus ring gets air */
a.p-footer-brand { align-items:center; gap:10px; padding:5px 8px; margin:-5px -8px; border-radius:var(--r-sm); text-decoration:none; }
.p-footer-brand > span { color:var(--ink-2); font-size:14px; font-weight:800; line-height:1; letter-spacing:.01em; white-space:nowrap; transition:color .25s; }
.p-footer-brand > span b { color:var(--teal); font-weight:800; opacity:.85; }
a.p-footer-brand:hover > span { color:var(--ink-1); }
.p-footer-copy, .p-footer p { margin:0; color:var(--ink-3); font-size:13px; }

/* ---------------------------------------------------------------------
   22. MOTION — reveal-on-scroll + hero entrance
       [data-p-reveal] is only hidden after precision.js marks it .p-rv
       (and only when it starts below the fold) → visible without JS.
   --------------------------------------------------------------------- */
[data-p-reveal].p-rv {
  opacity:0; transform:translateY(28px);
  transition:opacity .8s var(--ease-out) var(--p-d, 0s), transform .8s var(--ease-out) var(--p-d, 0s);
}
[data-p-reveal="zoom"].p-rv { transform:scale(.96); }
[data-p-reveal="fade"].p-rv, [data-p-reveal][id].p-rv { transform:none; }   /* an anchor target only fades */
[data-p-reveal].p-rv.is-in { opacity:1; transform:none; }

@media (prefers-reduced-motion: no-preference) {
  .p-hero > * { animation:p-enter .9s var(--ease-out) both; }
  /* a gradient-text child keeps its sweep next to the entrance (declared BEFORE the staggered delays:
     the shorthand would otherwise reset animation-delay and the accent line would enter first) */
  .p-hero > .p-hl      { animation:p-enter .9s var(--ease-out) both, p-sweep 6s linear infinite; }
  .p-hero > .p-hl-gold { animation:p-enter .9s var(--ease-out) both, p-sweep 5s linear infinite; }
  .p-hero > :nth-child(2) { animation-delay:.07s; }
  .p-hero > :nth-child(3) { animation-delay:.14s; }
  .p-hero > :nth-child(4) { animation-delay:.21s; }
  .p-hero > :nth-child(5) { animation-delay:.28s; }
  .p-hero > :nth-child(n+6) { animation-delay:.35s; }
}

/* hover micro-motion — fine pointers only (transform / opacity / --p-bang) */
@media (hover:hover) and (pointer:fine) {
  .p-tile:hover::before { animation:p-ringSpin 3.2s linear infinite; }
  .p-tile:hover .p-tile-deco::after { transform:translateX(360%) skewX(-16deg); }
  .p-tile:hover .p-icon { transform:scale(1.1) rotate(6deg); }
  .p-tile:hover .p-icon::before { opacity:1; }

  .p-card:not(.is-static):hover .p-card-top::before { transform:scaleX(1); }
  .p-card:not(.is-static):hover .p-icon { transform:scale(1.1) rotate(-5deg); }
  .p-card:not(.is-static):hover .p-icon::after { opacity:1; animation:p-ringSpin 2.6s linear infinite; }
  .p-card:not(.is-static):hover .p-icon::before { opacity:1; }

  .p-btn-primary:hover::before { animation:p-pulseRing 1.8s ease-out infinite; }
  .p-btn-primary:hover .p-btn-fx::before { opacity:1; animation:p-shine 1.2s var(--ease-out) infinite; }
}

/* ---------------------------------------------------------------------
   23. UTILITIES
   --------------------------------------------------------------------- */
.p-sr-only {
  position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important;
  overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important;
}
.p-ltr   { direction:ltr; unicode-bidi:isolate; }
/* text typed in the admin panel / DB (titles, prices, URLs) on bilingual pages: own direction + no page widening */
.p-auto-dir { unicode-bidi:plaintext; overflow-wrap:anywhere; }
/* neutral list with teal dots (kicker style) — for lists that are neither ticks nor crosses */
.p-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.p-list > li { position:relative; padding-inline-start:20px; color:var(--ink-2); font-size:var(--fs-body); line-height:1.85; text-align:start; }
.p-list > li::before { content:""; position:absolute; inset-inline-start:2px; top:.8em; width:6px; height:6px; border-radius:50%; background:var(--teal); box-shadow:0 0 0 3px rgba(44,234,163,.14); }
/* short pages: <body class="p-page is-fill"> keeps the footer at the bottom of a tall window */
body.p-page.is-fill { display:flex; flex-direction:column; }
body.p-page.is-fill > .p-main { flex:1 0 auto; }
.p-num   { font-variant-numeric:tabular-nums; }
.p-muted { color:var(--ink-2); }
.p-faint { color:var(--ink-3); }
.p-strong{ color:var(--ink-1); }
.p-teal  { color:var(--teal); }
.p-hot   { color:var(--gold); }
.p-mt-0 { margin-top:0 !important; }
.p-mt-4 { margin-top:16px !important; }
.p-mt-6 { margin-top:32px !important; }
.p-mt-7 { margin-top:48px !important; }

/* ---------------------------------------------------------------------
   24. RESPONSIVE — after the base rules (landing breakpoints)
   --------------------------------------------------------------------- */
@media (max-width:1160px) {
  .ed-nav .nav-item { padding:10px 8px; font-size:13.5px; }
  .ed-nav .nav-item::after { left:8px; right:8px; }
  .p-grid.p-cols-4 { grid-template-columns:repeat(2, minmax(0,1fr)); }
}
@media (max-width:1024px) {
  .p-grid.p-cols-3 { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .p-split { grid-template-columns:1fr; }
  .p-with-toc { grid-template-columns:minmax(0,1fr); grid-template-areas:"toc" "body"; row-gap:32px; }
  .p-toc { position:static; top:auto; max-height:none; }
}
@media (min-width:769px) and (max-width:900px) {
  .ed-nav { padding:0 16px; gap:12px; }
  .ed-nav .nav-item { padding:10px 6px; font-size:13px; }
  .ed-nav .nav-item::after { left:6px; right:6px; }
  .ed-nav .nav-btn { padding:0 12px; font-size:13px; }
}

@media (max-width:768px) {
  /* nav → hamburger + drawer (closed drawer is display:none, so it never overflows) */
  .ed-nav { padding:0 16px; justify-content:flex-start; gap:8px; }
  .ed-nav .nav-auth { margin-inline-start:auto; }
  .ed-nav .hamburger { display:block; padding:11px; margin-inline-end:-11px; }
  .ed-nav .nav-links {
    position:fixed; top:var(--nav-h); right:0;
    width:min(300px, 86vw); height:calc(100vh - var(--nav-h)); height:calc(100dvh - var(--nav-h));
    display:none; flex-direction:column; align-items:stretch; gap:2px; padding:16px; overflow-y:auto;
    background:#070d0f; border-left:1px solid var(--line);
    transform:translateX(100%);
  }
  /* open: slides in via @starting-style (transition lives on the open state only, so a
     viewport resize never animates a closed drawer); .p-closing = slide-out set by precision.js */
  .ed-nav .nav-links.active { display:flex; transform:translateX(0); box-shadow:-30px 0 60px rgba(0,0,0,.6); transition:transform .45s var(--ease-out), box-shadow .45s; }
  .ed-nav .nav-links.p-closing:not(.active) { display:flex; transition:transform .35s var(--ease-out), box-shadow .35s; }
  .ed-nav .nav-links :is(.nav-item, .mobile-auth) {
    transition:opacity .35s var(--ease-out), transform .35s var(--ease-out), background .2s, color .2s;
  }
  .ed-nav .nav-links .nav-item { padding:14px 12px; font-size:15.5px; border-radius:var(--r-sm); }
  .ed-nav .nav-links .nav-item:hover { background:rgba(255,255,255,.035); }
  .ed-nav .nav-links .nav-item:is(.active, [aria-current="page"]) { background:var(--teal-a06); color:var(--teal); }
  .ed-nav .nav-links .nav-item:is(.nav-item-gold, .nav-gold):is(.active, [aria-current="page"]) { background:var(--gold-a06); color:var(--gold-lt); }
  .ed-nav .nav-links .nav-item::after { display:none; }
  .ed-nav .nav-links.active > *:nth-child(2) { transition-delay:.05s; }
  .ed-nav .nav-links.active > *:nth-child(3) { transition-delay:.1s; }
  .ed-nav .nav-links.active > *:nth-child(4) { transition-delay:.15s; }
  .ed-nav .nav-links.active > *:nth-child(5) { transition-delay:.2s; }
  .ed-nav .nav-links.active > *:nth-child(6) { transition-delay:.25s; }
  .ed-nav .nav-links.active > *:nth-child(n+7) { transition-delay:.3s; }
  .ed-nav .mobile-auth { display:block; }
  /* drawer open at the very top of the page: give the bar the solid .scrolled look so the drawer
     doesn't hang under a see-through strip */
  .ed-nav:has(> .nav-links.active) {
    background:rgba(5,11,13,.92);
    -webkit-backdrop-filter:blur(18px) saturate(160%);
            backdrop-filter:blur(18px) saturate(160%);
    border-bottom-color:var(--line);
  }
  .ed-nav .nav-lang { height:40px; min-width:44px; }
  .ed-nav .nav-btn { height:40px; padding:0 12px; font-size:13px; }
  .ed-nav:has(.mobile-auth) .nav-auth .nav-btn { display:none; }   /* the drawer carries the login button */
  /* drawer + items slide in (progressive: browsers without @starting-style just show it) */
  @starting-style {
    .ed-nav .nav-links.active { transform:translateX(100%); }
    .ed-nav .nav-links.active :is(.nav-item, .mobile-auth) { opacity:0; transform:translateX(26px); }
  }

  .p-section { padding-block:48px; }
  .p-section + .p-section { padding-top:16px; }
  .p-sep { width:calc(100% - 32px); }
  .p-hero { padding:calc(var(--nav-h) + 44px) var(--gutter) 40px; }
  .p-hero::before {
    -webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 40%, #000 8%, transparent 70%);
            mask-image:radial-gradient(ellipse 90% 70% at 50% 40%, #000 8%, transparent 70%);
  }
  .p-hero-mark { width:84px; height:84px; margin-bottom:18px; }
  .p-hero-mark img { width:50px; }
  .p-hero-mark > .p-icon { width:50px; height:50px; border-radius:14px; }
  .p-hero-mark > .p-icon .p-ico { width:24px; height:24px; }
  .p-eyebrow { font-size:12.5px; margin-bottom:20px; }

  /* section header: the big number moves to the top-end corner (landing phone rule) */
  .p-sec-head { display:block; margin-bottom:32px; }
  .p-sec-num { position:absolute; top:-8px; inset-inline-end:0; font-size:56px; -webkit-text-stroke-width:1.2px; }
  .p-sec-num:lang(fa) { margin-top:0; }
  .p-sec-head:has(.p-sec-num) .p-sec-main > :first-child { padding-inline-end:64px; }
  .p-sec-head:has(.p-sec-num) .p-sec-main > .p-kicker:first-child { padding-inline-end:0; width:calc(100% - 64px); }
  .p-sec-head.is-rule { display:flex; align-items:center; min-height:44px; margin-bottom:24px; }
  .p-sec-head.is-rule .p-sec-main { width:100%; }
  .p-kicker { margin-bottom:16px; }
  .p-sub-h { margin-top:48px; }

  .p-grid, .p-grid.p-cols-2, .p-grid.p-cols-3, .p-grid.p-cols-4 { grid-template-columns:minmax(0,1fr); gap:12px; }
  .p-card, .p-tile, .p-panel { padding:24px; }
  .p-tile.is-feature .p-tile-cta { align-self:stretch; justify-content:center; }

  .p-btn-row.is-stack { flex-direction:column; align-items:stretch; width:100%; max-width:380px; margin-inline:auto; }
  .p-btn-row > .p-btn { height:auto; min-height:48px; padding-block:10px; white-space:normal; line-height:1.45; text-align:center; }
  .p-btn-row > .p-btn.is-sm { min-height:44px; }

  /* steps → vertical timeline */
  .p-steps { grid-template-columns:minmax(0,1fr); gap:0; }
  .p-step { display:grid; grid-template-columns:40px minmax(0,1fr); column-gap:16px; padding-bottom:24px; }
  .p-step:last-child { padding-bottom:0; }
  .p-step-num { margin:0; grid-row:1 / span 3; }
  .p-step > :not(.p-step-num) { grid-column:2; }
  .p-step-title { padding-top:8px; }
  .p-step:not(:last-child)::after, html:not([dir="ltr"]) .p-step:not(:last-child)::after {
    top:48px; bottom:6px; height:auto; width:1px;
    inset-inline-start:19.5px; inset-inline-end:auto;
    background:linear-gradient(180deg, var(--line-teal), var(--line-2));
  }

  .p-faq-item > summary { padding:18px 0; font-size:15px; gap:16px; }
  .p-faq-answer { font-size:14.5px; }

  .p-table :is(th, td) { padding:14px 16px; }
  .p-prose { font-size:15.5px; line-height:2; }
  .p-prose :where(th, td) { padding:12px 14px; }
  /* wide article tables scroll inside themselves instead of widening the page */
  .p-prose :where(table) { display:block; width:max-content; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }

  .p-cta { padding:48px 20px; }
  .p-cta.is-compact { padding:36px 20px; }
  .p-cta::after { display:none; }
  .p-cta-orb.is-1 { left:8%; top:30px; }
  .p-cta-orb.is-2 { right:10%; top:auto; bottom:24px; }
  .p-cta-orb.is-3 { left:auto; right:26%; top:26px; bottom:auto; }

  .p-footer { margin-top:56px; padding:32px 16px 36px; }
  .p-footer-inner { justify-content:center; flex-direction:column; gap:12px; text-align:center; }
  .p-footer-links { justify-content:center; }
}

@media (max-width:640px) {
  .p-form-grid { grid-template-columns:minmax(0,1fr); }
  .p-stats:not(.is-rail) { grid-template-columns:repeat(auto-fit, minmax(96px, 1fr)); }
  .p-stat { padding:18px 16px; }
  /* opt-in stacked table: <table class="p-table is-stack"> with <td data-label="…"> */
  .p-table.is-stack thead { display:none; }
  .p-table.is-stack, .p-table.is-stack tbody, .p-table.is-stack tr { display:block; width:100%; }
  .p-table.is-stack tr { padding:14px 16px; border-top:1px solid var(--line); }
  .p-table.is-stack tbody tr:first-child { border-top:0; }
  .p-table.is-stack :is(th, td) { display:block; padding:4px 0; border-top:0; }
  .p-table.is-stack td[data-label]::before {
    content:attr(data-label); display:block; color:var(--ink-3); font-size:var(--fs-micro); font-weight:600;
  }
}
@media (max-width:480px) {
  .p-sec-num { font-size:50px; }
  .p-hero-title, .p-hero-accent { font-size:clamp(28px, 8.4vw, 36px); }
}
@media (max-width:400px) {
  .p-sec-title { font-size:28px; }
  .p-card, .p-tile, .p-panel { padding:20px; }
  .p-chip { padding:5px 12px; }
}

/* ---------------------------------------------------------------------
   25. ACCESSIBILITY MODES & PRINT
   --------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  body.p-page *, body.p-page *::before, body.p-page *::after {
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  body.p-page::before { animation:none; }
  body.p-page :is(.p-card, .p-tile) { transform:none !important; }   /* page scripts' inline card tilt */
}

/* Windows High Contrast / forced colours: keep borders, focus and text visible */
@media (forced-colors: active) {
  :is(.p-card, .p-tile, .p-panel, .p-stats, .p-stat, .p-cta, .p-table-wrap, .p-toc, .p-alert, .p-note, .p-quote, .p-eyebrow) { border:1px solid CanvasText; }
  :is(.p-btn, .p-chip, .p-tag, .p-pager-link, .p-tile-go, .p-icon, .p-input, .p-select, .p-textarea, .p-faq-chev) { border:1px solid ButtonText; }
  .ed-nav :is(.nav-lang, .nav-btn) { border:1px solid ButtonText; }
  .p-card::before, .p-card::after, .p-tile::before, .p-tile::after, .p-icon::before, .p-icon::after, .p-cta::after { display:none; }
  .p-hl, .p-hl-gold { background:none; color:CanvasText; -webkit-text-fill-color:CanvasText; }
  .p-sec-num { forced-color-adjust:none; color:transparent; -webkit-text-fill-color:transparent; -webkit-text-stroke-color:CanvasText; background:none; }
  .ed-nav .hamburger span { background:ButtonText; }
  body.p-page :where(a, button, summary, input, select, textarea, [tabindex], [role="button"]):focus-visible,
  :is(.p-card, .p-tile):focus-visible { outline:3px solid Highlight; outline-offset:2px; }
  .p-toc a:is(.active, .is-active, [aria-current="true"]) { border-inline-start-color:Highlight; }
}

@media print {
  /* dark-theme ink would be near-white on paper, and with "background graphics" on the dark surfaces would stay:
     dark ink, white surfaces with hairlines, darker accents (teal/gold-lt are ~1.5:1 on white) */
  :root { --ink-1:#111; --ink-2:#333; --ink-3:#555; --line:#ccc; --line-2:#bbb;
          --teal:#0a6e4c; --teal-hi:#0a6e4c; --gold:#7a5c00; --gold-lt:#7a5c00; }
  body.p-page { background:#fff; color:#111; }
  .p-prose :where(code, kbd, samp) { color:#111; }
  body.p-page::before, body.p-page::after, .ed-nav, .p-footer::before, .p-cta::after, .p-hero::before,
  .p-cta-orb, .p-cta-line, #scroll-progress { display:none !important; }
  :is(.p-card, .p-tile, .p-panel, .p-stats, .p-stat, .p-cta, .p-table-wrap, .p-toc, .p-footer, .p-eyebrow, .p-chip, .p-tag,
      .p-icon, .p-alert, .p-note, .p-quote, .p-btn, .p-step-num),
  .p-prose :where(table, thead, tr, th, td, pre, code, kbd, blockquote) { background:#fff !important; box-shadow:none !important; }
  :is(.p-card, .p-tile, .p-panel, .p-cta, .p-table-wrap, .p-toc, .p-btn) { border:1px solid #bbb !important; }
  .p-btn { color:#111 !important; }
  .p-sec-num { -webkit-text-stroke-color:#999; background:none; }
  [data-p-reveal].p-rv { opacity:1 !important; transform:none !important; }
  .p-hero { padding-top:0; }
  .p-prose, .p-prose :where(strong, h2, h3, h4, blockquote), .p-hero-title, .p-sec-title { color:#111; }
  .p-hl, .p-hl-gold { -webkit-text-fill-color:currentColor; color:#111; background:none; }
  .p-toc { position:static; }
}
