/* Ekal public website: the pages' own styles (2026-10-28, the approved design;
   docs/WEBSITE.md) — the home page, and what the four audience pages share with it
   (they add ek-site-aud.css). The shell (tokens, buttons, header, panels, phone sheet,
   footer) is ek-site.css. Ported from the design preview
   (~/ekal-local/website-design/src/site.css) without the preview's own notes and
   without the certificate graphic (Ekal gives no certificates).

   Every rule applies under body.ek-site (the pages that link this file set it). Content is
   never hidden waiting for a script or a scroll: motion is CSS scroll-driven animation under
   @supports, the motion graphics are rendered at their final step, and nothing moves under
   prefers-reduced-motion. Like ek-site.css this is linked in <body>, after tailwind.css. */
@media (prefers-reduced-motion: no-preference) {
  html:has(> body.ek-site) { scroll-behavior: smooth; }
  /* the audience switch's pill travels between the pages (cross-document view transition) */
  @view-transition { navigation: auto; }
}
body.ek-site {
  font-size: var(--fs-body); line-height: var(--lh-body); color: var(--ink);
  background:
    radial-gradient(620px 520px at 104% 18%, rgba(99, 112, 255, .22) 0%, transparent 70%),
    radial-gradient(520px 420px at -6% 46%, rgba(236, 72, 153, .08) 0%, transparent 70%),
    radial-gradient(1100px 640px at 100% 0%, #e2e6ff 0%, transparent 60%),
    radial-gradient(900px 620px at 0% 100%, #ece4ff 0%, transparent 58%),
    linear-gradient(180deg, #f6f7fd, #eef1f9);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
.ek-site main :is(img, video, svg) { display: block; max-width: 100%; }
/* base.html keeps `nav { min-height: 4rem }` for the old pages' own <nav>s: not the audience switch */
.ek-site main nav { min-height: 0; }
.ek-site main h1, .ek-site main h2 { letter-spacing: var(--track-head); line-height: var(--lh-head); text-wrap: balance; }
.ek-site main p { text-wrap: pretty; }
.ek-site main :focus-visible { outline: 2px solid var(--navy-2); outline-offset: 3px; border-radius: 8px; }
/* without a script: no control that does nothing (play, pause, replay, the monthly/yearly switch) */
html:not(.js) .ek-site :is(.pp, .mg-pp, .replay, .cycle) { display: none; }
/* the yearly price, written out for a page read without a script (the switch shows it otherwise) */
.pl-alt { margin-top: 4px; font-size: 13.5px; color: var(--muted); }
.plan.is-pop .pl-alt { color: rgba(220, 225, 255, .75); }
html.js .pl-alt { display: none; }
/* decorative motion that is off screen waits (ek-site-pages.js sets .is-off): an infinite animation
   nobody sees still costs a phone a frame of work every 16 ms */
.is-off, .is-off * { animation-play-state: paused !important; }
/* an "Example" chip on illustrative content (the library cards when no article is published yet) */
.ex-chip { display: inline-block; font-size: 12px; font-weight: 700; color: var(--muted); padding: 3px 10px; border-radius: 999px; background: rgba(15, 23, 42, .05); }
.papers .papers-ex { position: absolute; z-index: 4; inset-block-end: 6px; inset-inline-end: 0; background: rgba(255, 255, 255, .85); box-shadow: 0 4px 14px rgba(34, 40, 110, .1); }
.paper h3 a { color: inherit; text-decoration: none; }
.paper h3 a:hover { color: var(--navy); text-decoration: underline; text-underline-offset: 4px; }
.paper h3 a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.home-faq { padding-top: 40px; }

/* ---------- hero ---------- */
.hero { position: relative; isolation: isolate; color: #fff; padding-block: 150px 96px; min-height: min(900px, 100svh); display: flex; align-items: center; overflow: clip;
  border-radius: 0 0 40px 40px; background: var(--night); }
.hero-bg { position: absolute; inset: 0; z-index: -2; }
.hero-bg img { width: 100%; height: 100%; object-fit: cover; object-position: center 62%; }
.hero-bg::after { content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10, 12, 42, .62) 0%, rgba(10, 12, 42, .18) 38%, rgba(10, 12, 42, .5) 100%),
              linear-gradient(90deg, rgba(10, 12, 42, .78) 0%, rgba(10, 12, 42, .35) 48%, rgba(10, 12, 42, .05) 100%); }
[dir="rtl"] .hero-bg::after { background: linear-gradient(180deg, rgba(10, 12, 42, .62) 0%, rgba(10, 12, 42, .18) 38%, rgba(10, 12, 42, .5) 100%),
              linear-gradient(270deg, rgba(10, 12, 42, .78) 0%, rgba(10, 12, 42, .35) 48%, rgba(10, 12, 42, .05) 100%); }
.hero-bg.no-photo { background: var(--sky), radial-gradient(900px 600px at 80% 20%, #3b45b0 0%, transparent 60%), radial-gradient(700px 500px at 10% 90%, #5b2a86 0%, transparent 60%), var(--night); }
.hero-grid { display: grid; grid-template-columns: minmax(0, 1.04fr) minmax(0, .96fr); gap: 56px; align-items: center; }
.hero-grid > *, .split > *, .theatre > *, .end-card > *, .sec-h > * { min-width: 0; }
.steps { min-width: 0; }
.hero h1 { font-size: clamp(38px, 4.4vw, 60px); font-weight: 700; }
.hero .lead { margin-top: 22px; font-size: 18.5px; color: rgba(229, 233, 255, .88); max-width: 34em; }
:root:lang(ar) .hero .lead { font-size: 19px; }
.hero-cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.proof { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 26px; margin-top: 34px; font-size: 14.5px; color: rgba(229, 233, 255, .85); }
.proof > span { display: inline-flex; align-items: center; gap: 8px; }
.proof .i { font-size: 20px; color: #7fe3bf; }
.pay { display: inline-flex; gap: 6px; }
.pay img { height: 26px; width: auto; padding: 5px 8px; border-radius: 7px; background: #fff; box-shadow: 0 2px 8px rgba(5, 8, 40, .25); }

/* Riyadh's skyline in hairlines along the hero's foot: the design's drawing (towers with their
   window rules, the Kingdom Centre's arch, Al Faisaliah's sphere), 1600x240 at 1:1, centred.
   A background layer of the backdrop, not an element: an element pinned to the hero's foot moved
   when the web font swapped in and the hero grew, and counted as a layout shift. */
:root { --sky: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 240' width='1600' height='240'%3E%3Cpath d='M4 240V170H66V240 M12 184H58 M12 200H58 M12 216H58 M12 232H58 M74 240V144H136V240 M82 158H128 M82 174H128 M82 190H128 M82 206H128 M82 222H128 M144 240V180H186V240 M152 194H178 M152 210H178 M152 226H178 M194 240V120H246V240 M202 134H238 M202 150H238 M202 166H238 M202 182H238 M202 198H238 M202 214H238 M202 230H238 M254 240V156H306V240 M262 170H298 M262 186H298 M262 202H298 M262 218H298 M314 240V100H366V240 M322 114H358 M322 130H358 M322 146H358 M322 162H358 M322 178H358 M322 194H358 M322 210H358 M322 226H358 M374 240V148H426V240 M382 162H418 M382 178H418 M382 194H418 M382 210H418 M382 226H418 M434 240V170H476V240 M442 184H468 M442 200H468 M442 216H468 M442 232H468 M484 240V128H536V240 M492 142H528 M492 158H528 M492 174H528 M492 190H528 M492 206H528 M492 222H528 M544 240V90H596V240 M552 104H588 M552 120H588 M552 136H588 M552 152H588 M552 168H588 M552 184H588 M552 200H588 M552 216H588 M552 232H588 M604 240V152H646V240 M612 166H638 M612 182H638 M612 198H638 M612 214H638 M612 230H638 M654 240V136H696V240 M662 150H688 M662 166H688 M662 182H688 M662 198H688 M662 214H688 M662 230H688 M704 240V164H756V240 M712 178H748 M712 194H748 M712 210H748 M712 226H748 M764 240V110H816V240 M772 124H808 M772 140H808 M772 156H808 M772 172H808 M772 188H808 M772 204H808 M772 220H808 M824 240V144H868V240 M832 158H860 M832 174H860 M832 190H860 M832 206H860 M832 222H860 M1124 240V148H1176V240 M1132 162H1168 M1132 178H1168 M1132 194H1168 M1132 210H1168 M1132 226H1168 M1184 240V116H1236V240 M1192 130H1228 M1192 146H1228 M1192 162H1228 M1192 178H1228 M1192 194H1228 M1192 210H1228 M1192 226H1228 M1244 240V160H1296V240 M1252 174H1288 M1252 190H1288 M1252 206H1288 M1252 222H1288 M1304 240V122H1356V240 M1312 136H1348 M1312 152H1348 M1312 168H1348 M1312 184H1348 M1312 200H1348 M1312 216H1348 M1312 232H1348 M1364 240V140H1416V240 M1372 154H1408 M1372 170H1408 M1372 186H1408 M1372 202H1408 M1372 218H1408 M1424 240V100H1476V240 M1432 114H1468 M1432 130H1468 M1432 146H1468 M1432 162H1468 M1432 178H1468 M1432 194H1468 M1432 210H1468 M1432 226H1468 M1484 240V156H1526V240 M1492 170H1518 M1492 186H1518 M1492 202H1518 M1492 218H1518 M1534 240V130H1578V240 M1542 144H1570 M1542 160H1570 M1542 176H1570 M1542 192H1570 M1542 208H1570 M1542 224H1570 M905 240L913 22Q950 150 987 22L995 240 M931 70H969M931 76H969 M1030 240L1062 46L1094 240M1062 46V8 M1053 74a9 9 0 1 0 18 0a9 9 0 1 0 -18 0 M0 240H1600' fill='none' stroke='%23c4ccff' stroke-opacity='.22' stroke-width='1'/%3E%3C/svg%3E") center bottom / 1600px 240px no-repeat; }
/* guilloche: engraved line work, as on licences and banknotes */
.guil { position: absolute; pointer-events: none; }
.guil path { fill: none; vector-effect: non-scaling-stroke; }
.hero .guil { width: 760px; height: 760px; inset-inline-end: -140px; top: 50%; translate: 0 -50%; opacity: .5;
  -webkit-mask: radial-gradient(closest-side, #000 55%, transparent); mask: radial-gradient(closest-side, #000 55%, transparent); }
.hero .guil path { stroke: rgba(205, 212, 255, .34); stroke-width: .7; }

/* the case sheet (illustrative, plays once) */
/* No backdrop-filter on the sheet: at 86-94 % white over the night hero the blur showed nothing,
   and every frame of the demo inside it re-blurred the hero (the most expensive paint on a phone). */
.case { position: relative; border-radius: var(--r-xl); padding: 16px; color: var(--ink);
  background: linear-gradient(180deg, rgba(255, 255, 255, .94), rgba(255, 255, 255, .86));
  border: 1px solid rgba(255, 255, 255, .75); box-shadow: inset 0 1px 0 #fff, 0 40px 90px rgba(4, 6, 30, .5), 0 2px 10px rgba(4, 6, 30, .2); }
.case-top { display: flex; align-items: center; gap: 8px; }
.steps { display: flex; gap: 4px; padding: 4px; border-radius: 14px; background: rgba(42, 48, 110, .06); }
.step { display: inline-flex; align-items: center; gap: 7px; height: 32px; padding-inline: 8px 11px; white-space: nowrap; border-radius: 10px; font-size: 13.5px; font-weight: 700; color: var(--muted); transition: background-color .35s, color .35s, box-shadow .35s; }
.step b { width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; font-size: 11.5px; background: rgba(42, 48, 110, .1); color: var(--navy); transition: background-color .35s, color .35s; }
.step.is-on { background: #fff; color: var(--navy); box-shadow: 0 4px 12px rgba(34, 40, 110, .12); }
.step.is-on b, .step.is-done b { background: var(--navy); color: #fff; }
.case-tag { margin-inline-start: auto; font-size: 12.5px; font-weight: 700; color: var(--muted); padding: 4px 10px; border-radius: 999px; background: rgba(15, 23, 42, .05); }
.replay { width: 32px; height: 32px; border-radius: 10px; border: 0; background: rgba(42, 48, 110, .07); color: var(--navy); display: grid; place-items: center; }
.replay .i { font-size: 16px; }
.blk { margin-top: 14px; }
.blk-l { font-size: 12.5px; font-weight: 700; color: var(--muted); margin-bottom: 6px; padding-inline: 4px; }
.typed { min-height: 86px; padding: 12px 14px; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 1px var(--line-2); font-size: 15.5px; line-height: 1.6; color: var(--ink); }
:root:lang(ar) .typed { font-size: 16px; line-height: 1.75; }
.typed.is-typing::after { content: ""; display: inline-block; width: 2px; height: 1.1em; margin-inline-start: 2px; vertical-align: text-bottom; background: var(--navy-2); animation: caret 1s steps(1) infinite; }
@keyframes caret { 50% { opacity: 0; } }
.reading { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 16px; background: linear-gradient(135deg, rgba(59, 69, 176, .08), rgba(59, 69, 176, .02)); box-shadow: inset 0 0 0 1px rgba(59, 69, 176, .12); }
.reading .emb { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: linear-gradient(180deg, var(--navy-2), var(--navy)); color: #fff; flex: none; }
.reading .emb .i { font-size: 22px; }
.reading strong { display: block; font-size: 15.5px; }
.reading small { display: block; font-size: 13px; color: var(--muted); }
.chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.chip { font-size: 13px; font-weight: 600; color: var(--navy); padding: 4px 11px; border-radius: 999px; background: #fff; box-shadow: inset 0 0 0 1px rgba(59, 69, 176, .2); }
.note { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 12px; color: var(--muted); padding-inline: 4px; }
.note .i { font-size: 14px; }
.lawyer { display: grid; grid-template-columns: auto 1fr auto; gap: 2px 12px; align-items: center; padding: 10px 12px; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 1px var(--line); }
.lawyer + .lawyer { margin-top: 8px; }
.ava { width: 46px; height: 46px; border-radius: 50%; grid-row: span 2; display: grid; place-items: center; font-weight: 700; font-size: 14px; color: #fff;
  background: linear-gradient(135deg, #5b66d6, #2a306e); box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .5); }
.ava.alt { background: linear-gradient(135deg, #3f8f8a, #1d4d5c); }
.lw-name { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: 15px; min-width: 0; }
.ver { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; font-weight: 700; color: var(--seal); background: var(--seal-soft); padding: 2px 8px 2px 6px; border-radius: 999px; white-space: nowrap; }
.ver .i { font-size: 14px; }
.lw-meta { display: flex; flex-wrap: wrap; gap: 2px 12px; font-size: 12.5px; color: var(--muted); }
.lw-meta span { display: inline-flex; align-items: center; gap: 4px; }
.lw-meta .i { font-size: 14px; }
.lw-side { grid-row: 1 / span 2; grid-column: 3; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
.rate { display: inline-flex; align-items: center; gap: 4px; font-size: 12.5px; font-weight: 700; }
.rate .i { color: #f5a524; font-size: 14px; }
.rate em { font-style: normal; font-weight: 500; color: var(--muted); }
.slot { font-size: 11.5px; color: var(--muted); text-align: end; line-height: 1.35; }
.slot b { display: block; color: var(--ink); font-size: 12.5px; }
.fee { font-size: 12.5px; color: var(--ink-2); font-weight: 600; }
/* demo states, only once the script runs */
.js .case .reveal { transition: opacity .5s var(--ease), transform .7s var(--spring); }
.js .case.is-run .reveal { opacity: 0; transform: translateY(10px); }
.js .case.is-run .reveal.is-in { opacity: 1; transform: none; }
.case.is-prime .reveal { transition: none !important; }

/* ---------- sections ---------- */
.sec { padding-block: 104px; }
.sec-h { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 24px; margin-bottom: 40px; }
.sec h2, .pro h2 { font-size: clamp(30px, 3.1vw, 42px); font-weight: 700; color: var(--ink); }
.sec .sub { margin-top: 14px; font-size: 18px; color: var(--muted); max-width: 40em; }
.link { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; color: var(--navy); white-space: nowrap; }
.link .i { font-size: 18px; transition: transform .35s var(--spring); }
.link:hover .i { transform: translateX(3px); }
[dir="rtl"] .link:hover .i { transform: scaleX(-1) translateX(3px); }
.areas { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 28px; }
.areas .area { padding: 18px 16px; border-radius: 18px; background: linear-gradient(var(--line), var(--line)) bottom / calc(100% - 32px) 1px no-repeat; }
.areas .area > .i { font-size: 30px; }
.areas .area b { font-size: 18.5px; }
.areas .area span { font-size: 15.5px; }

/* lawyers: dark band with real product recordings */
.pro { margin-inline: 12px; border-radius: 40px; color: #fff; padding-block: 96px 88px;
  background: radial-gradient(900px 520px at 88% -6%, rgba(99, 112, 255, .4), transparent 62%), radial-gradient(760px 520px at -4% 104%, rgba(168, 85, 247, .2), transparent 60%), linear-gradient(180deg, #161a48, var(--night)); }
.pro h2 { color: #fff; }
.pro .sub { color: rgba(220, 225, 255, .78); }
.theatre { display: grid; grid-template-columns: minmax(0, .82fr) minmax(0, 2fr); gap: 28px; align-items: start; }
.tabs { display: grid; gap: 4px; }
.tab { position: relative; text-align: start; border: 0; border-radius: 18px; padding: 14px 16px 16px; background: none; color: rgba(225, 230, 255, .72); overflow: hidden; transition: background-color .3s, color .3s; }
.tab strong { display: flex; align-items: center; gap: 10px; font-size: 16.5px; font-weight: 700; color: inherit; }
.tab strong .i { font-size: 22px; }
.tab span { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .45s var(--spring); font-size: 14.5px; line-height: 1.55; color: rgba(220, 225, 255, .72); }
.tab span > em { overflow: hidden; font-style: normal; min-height: 0; padding-inline-start: 32px; }
.tab:hover { background: rgba(255, 255, 255, .05); color: #fff; }
.tab[aria-selected="true"] { background: rgba(255, 255, 255, .09); color: #fff; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
.tab[aria-selected="true"] span { grid-template-rows: 1fr; margin-top: 6px; }
.tab .bar { position: absolute; inset-inline: 16px; bottom: 7px; height: 3px; border-radius: 3px; background: rgba(255, 255, 255, .1); overflow: hidden; display: none; }
.tab[aria-selected="true"] .bar { display: block; }
.tab .bar::after { content: ""; position: absolute; inset-block: 0; inset-inline-start: 0; width: calc(var(--p, 0) * 100%); background: linear-gradient(90deg, #8f9bff, #fff); border-radius: 3px; }
.stage { border-radius: 26px; padding: 10px; background: rgba(255, 255, 255, .07); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14), 0 40px 90px rgba(2, 4, 24, .55); }
.stage-bar { display: flex; align-items: center; gap: 10px; padding: 4px 6px 10px; font-size: 13px; color: rgba(220, 225, 255, .7); }
.stage-bar .url { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border-radius: 999px; background: rgba(255, 255, 255, .08); }
.stage-bar .url .i { font-size: 13px; }
.stage-bar .rec { margin-inline-start: auto; display: inline-flex; align-items: center; gap: 6px; }
.stage-bar .rec::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #ff5a5f; box-shadow: 0 0 0 3px rgba(255, 90, 95, .2); }
.screen { position: relative; aspect-ratio: 16 / 9; border-radius: 16px; overflow: hidden; background: #e9ecf8; }
.screen video { width: 100%; height: 100%; object-fit: cover; }
.pp { position: absolute; inset-inline-end: 12px; bottom: 12px; width: 40px; height: 40px; border-radius: 12px; border: 0; display: grid; place-items: center; color: #fff;
  background: rgba(15, 18, 50, .55); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.pp .i { font-size: 18px; }
.pro-foot { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 28px; align-items: center; margin-top: 44px; padding-top: 32px; border-top: 1px solid rgba(255, 255, 255, .1); }
.feats { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 28px; list-style: none; margin: 0; padding: 0; font-size: 15.5px; color: rgba(229, 233, 255, .88); }
.feats li { display: flex; align-items: center; gap: 10px; }
.feats .i { font-size: 20px; color: #9aa6ff; }
.pro-cta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; justify-content: flex-end; }
.pill-offer { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; color: #ffe2a3; padding: 8px 14px; border-radius: 999px; background: rgba(255, 196, 77, .12); box-shadow: inset 0 0 0 1px rgba(255, 196, 77, .3); }
.pill-offer .i { font-size: 17px; }

/* library */
.split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 72px; align-items: center; }
.ticks { list-style: none; margin: 26px 0 32px; padding: 0; display: grid; gap: 12px; font-size: 16.5px; color: var(--ink-2); }
.ticks li { display: flex; align-items: center; gap: 12px; }
.ticks .i { font-size: 22px; color: var(--navy-2); }
.papers { position: relative; height: 500px; }
.paper { position: absolute; width: 78%; border-radius: 22px; padding: 22px 24px 20px; background: #fff; box-shadow: 0 1px 0 rgba(255, 255, 255, .9) inset, 0 24px 56px rgba(34, 40, 110, .14), 0 2px 6px rgba(34, 40, 110, .06);
  transition: transform .6s var(--spring), box-shadow .3s; }
.paper:nth-child(1) { inset-inline-start: 0; top: 0; rotate: -2deg; }
.paper:nth-child(2) { inset-inline-start: 20%; top: 158px; rotate: 1.5deg; z-index: 1; }
.paper:nth-child(3) { inset-inline-start: 8%; top: 316px; rotate: -1deg; z-index: 2; }
[dir="rtl"] .paper:nth-child(1) { rotate: 2deg; } [dir="rtl"] .paper:nth-child(2) { rotate: -1.5deg; } [dir="rtl"] .paper:nth-child(3) { rotate: 1deg; }
.paper:hover { transform: translateY(-6px); box-shadow: 0 30px 70px rgba(34, 40, 110, .2); z-index: 3; }
.paper .tag { display: inline-block; font-size: 12.5px; font-weight: 700; color: var(--navy-2); background: rgba(59, 69, 176, .08); border-radius: 999px; padding: 3px 10px; }
.paper h3 { margin-top: 12px; font-size: 19px; line-height: 1.35; font-weight: 700; color: var(--ink); }
.paper .rule { height: 1px; background: var(--line); margin: 14px 0 12px; }
.paper .by { display: flex; align-items: center; gap: 10px; font-size: 13.5px; color: var(--muted); }
.paper .by i { font-style: normal; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-weight: 700; color: #fff; background: linear-gradient(135deg, #5b66d6, #2a306e); }
.paper .by b { color: var(--ink-2); font-weight: 700; }
.paper .by span { margin-inline-start: auto; }

/* trainees */
.path3 { list-style: none; margin: 30px 0 34px; padding: 0; display: grid; gap: 0; counter-reset: s; }
.path3 li { position: relative; display: grid; grid-template-columns: 40px 1fr; gap: 2px 16px; padding-bottom: 22px; }
.path3 li::before { counter-increment: s; content: counter(s); width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; grid-row: span 2;
  font-weight: 700; color: var(--navy); background: #fff; box-shadow: inset 0 0 0 1.5px rgba(42, 48, 110, .25), 0 6px 16px rgba(34, 40, 110, .1); }
.path3 li:not(:last-child)::after { content: ""; position: absolute; inset-inline-start: 19.5px; top: 44px; bottom: 4px; width: 1.5px; background: linear-gradient(var(--line-2), transparent); }
.path3 b { font-size: 17.5px; align-self: end; }
.path3 span { color: var(--muted); font-size: 15.5px; }

/* faq */
.faq { max-width: 860px; }
.faq h2 { margin-bottom: 26px; }
.faq details { border-bottom: 1px solid var(--line-2); }
.faq summary { list-style: none; display: flex; align-items: center; gap: 16px; padding: 22px 4px; font-size: 18.5px; font-weight: 700; cursor: pointer; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary .i { margin-inline-start: auto; font-size: 20px; color: var(--navy); transition: transform .45s var(--spring); }
.faq details[open] summary .i { transform: rotate(45deg); }
.faq details p { padding: 0 4px 24px; color: var(--ink-2); max-width: 46em; }
@supports (interpolate-size: allow-keywords) {
  .faq { interpolate-size: allow-keywords; }
  .faq details::details-content { height: 0; overflow: clip; transition: height .45s var(--ease), content-visibility .45s allow-discrete; }
  .faq details[open]::details-content { height: auto; }
}

/* final call to action */
.end { padding-block: 24px 112px; }
.end-card { position: relative; overflow: hidden; border-radius: 34px; padding: 56px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 48px; align-items: center;
  background: var(--glass); border: 1px solid rgba(255, 255, 255, .85); box-shadow: inset 0 1px 0 #fff, var(--glass-shadow); }
.end-card .guil { width: 640px; height: 640px; inset-inline-end: -250px; top: -260px; opacity: .45; }
.end-card .guil path { stroke: rgba(42, 48, 110, .1); stroke-width: .7; }
.end-card h2 { font-size: clamp(30px, 3vw, 40px); font-weight: 700; position: relative; }
.end-card p { margin-top: 12px; color: var(--muted); font-size: 17.5px; position: relative; }
.composer { position: relative; display: grid; gap: 10px; padding: 12px; border-radius: 22px; background: #fff; box-shadow: inset 0 0 0 1px var(--line-2), 0 18px 40px rgba(34, 40, 110, .1); }
.composer textarea { width: 100%; min-height: 96px; resize: none; border: 0; outline: 0; padding: 8px 10px; font-size: 16.5px; line-height: 1.6; background: transparent; }
.composer textarea::placeholder { color: var(--faint); }
.composer:focus-within { box-shadow: inset 0 0 0 2px var(--navy-2), 0 18px 40px rgba(34, 40, 110, .14); }
.composer-row { display: flex; align-items: center; gap: 10px; }
.composer-row small { color: var(--muted); font-size: 13px; }
.composer-row .btn { margin-inline-start: auto; }
.composer output { font-size: 13.5px; color: var(--seal); font-weight: 600; padding-inline: 10px; }

/* ---------- compact desktops: 1920x1080 at 125-150% scaling (1536x730, 1280x600) ---------- */
@media (min-width: 1024px) and (max-width: 1439.98px), (min-width: 1024px) and (max-height: 819.98px) {
  .hero { padding-block: 116px 56px; min-height: 0; }
  .hero h1 { font-size: clamp(36px, 3.6vw, 50px); }
  .hero .lead { margin-top: 16px; font-size: 17px; }
  :root:lang(ar) .hero .lead { font-size: 17.5px; }
  .hero-cta { margin-top: 24px; }
  .proof { margin-top: 24px; }
  .case { padding: 14px; }
  .typed { min-height: 72px; font-size: 14.5px; padding: 10px 12px; }
  :root:lang(ar) .typed { font-size: 15px; }
  .blk { margin-top: 10px; }
  .lawyer { padding: 8px 10px; }
  .ava { width: 40px; height: 40px; }
  .sec { padding-block: 88px; }
}
@media (min-width: 1024px) and (max-height: 699.98px) {
  .hero h1 { font-size: 40px; }
  .hero .lead { font-size: 16px; }
  :root:lang(ar) .hero .lead { font-size: 16.5px; line-height: 1.75; }
  .proof { display: none; }
  .note { display: none; }
}

/* ---------- tablets and phones ---------- */
@media (max-width: 1023.98px) {
  .hero { padding-block: 120px 56px; min-height: 0; margin-inline: 0; border-radius: 0 0 28px 28px; }
  .hero-grid, .split, .theatre, .end-card, .pro-foot { grid-template-columns: 1fr; }
  .pro { margin-inline: 0; border-radius: 28px; }
  .hero-grid { gap: 40px; }
  .hero .guil { inset-inline-end: -260px; top: 72%; }
  .sec-h { grid-template-columns: 1fr; }
  .tabs { grid-template-columns: repeat(3, 1fr); }
  .tab span { display: none; }
  .pro-cta { justify-content: flex-start; }
  .papers { height: 400px; }
  .end-card { padding: 32px; }
}
@media (max-width: 639.98px) {
  .hero h1 { font-size: 34px; }
  .hero .lead { font-size: 16.5px; }
  .hero-cta .btn { flex: 1 1 100%; }
  .areas { grid-template-columns: 1fr; }
  .tabs { grid-template-columns: 1fr 1fr; }
  .feats { grid-template-columns: 1fr; }
  .lw-side .slot { display: none; }
  .step { font-size: 12.5px; padding-inline: 6px 9px; gap: 5px; }
  .step b { width: 18px; height: 18px; }
  .case { padding: 12px; border-radius: 22px; }
  .lw-meta span:nth-child(3) { display: none; }
  .lw-name { flex-wrap: wrap; white-space: nowrap; gap: 2px 8px; }
  .lawyer { grid-template-columns: auto 1fr auto; }
  .papers { height: 420px; }
  .paper { width: 92%; }
  .paper:nth-child(2) { inset-inline-start: 6%; }
  .paper:nth-child(3) { inset-inline-start: 2%; }
  .end-card { padding: 22px; border-radius: 26px; }
  .sec { padding-block: 72px; }
}
/* B20's offer bar (first in the content while the offer runs): the header no longer overlaps the
   hero (ek-site.css), so the hero gives back the 76px it kept for it at each breakpoint */
.ek-home:has(main > .ekp:not([hidden])) .hero { padding-block-start: 74px; }
@media (min-width: 1024px) and (max-width: 1439.98px), (min-width: 1024px) and (max-height: 819.98px) {
  .ek-home:has(main > .ekp:not([hidden])) .hero { padding-block-start: 40px; }
}
@media (max-width: 1023.98px) {
  .ek-home:has(main > .ekp:not([hidden])) .hero { padding-block-start: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  .ek-site main *, .ek-site main *::before, .ek-site main *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* ===================== meeting version (2026-10-28): search-first hero, journey, plans, trust, motion ===================== */
.hero h1 { font-weight: 700; }
:root:lang(en) .hero h1 { letter-spacing: -.032em; }
/* finder: the search the visitor came for */
.finder { margin-top: 30px; display: grid; grid-template-columns: 1fr 1fr auto; gap: 8px; padding: 8px; border-radius: 22px; max-width: 640px;
  background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .26); -webkit-backdrop-filter: blur(20px) saturate(160%); backdrop-filter: blur(20px) saturate(160%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 20px 50px rgba(3, 5, 30, .35); }
.fd-field { position: relative; display: flex; flex-direction: column; justify-content: center; padding: 6px 14px; border-radius: 15px; background: rgba(255, 255, 255, .94); color: var(--ink); min-width: 0; cursor: pointer; }
.fd-field span { font-size: 12px; font-weight: 700; color: var(--muted); }
.fd-field select { appearance: none; -webkit-appearance: none; border: 0; background: transparent; font-weight: 700; font-size: 15.5px; color: var(--ink); padding: 0; cursor: pointer; outline: 0; width: 100%; text-overflow: ellipsis; }
.fd-field::after { content: ""; position: absolute; inset-inline-end: 14px; top: 50%; width: 8px; height: 8px; border: solid var(--muted); border-width: 0 2px 2px 0; transform: translateY(-70%) rotate(45deg); pointer-events: none; }
.fd-field:focus-within { box-shadow: 0 0 0 3px rgba(143, 155, 255, .55); }
.fd-go { height: auto; min-height: 56px; border-radius: 15px; padding-inline: 22px; }
.chips-pop { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 16px; max-width: 640px; }
.chips-pop b { font-size: 13.5px; color: rgba(229, 233, 255, .72); font-weight: 600; margin-inline-end: 4px; }
.pchip { border: 1px solid rgba(255, 255, 255, .25); background: rgba(255, 255, 255, .08); color: #fff; font-size: 13.5px; font-weight: 600; padding: 6px 13px; border-radius: 999px;
  transition: background-color .2s, transform .45s var(--spring-1), border-color .2s; }
.pchip:hover { background: rgba(255, 255, 255, .16); }
.pchip:active { transform: scale(.94); transition-duration: 0s; }
.pchip.is-on { background: #fff; color: var(--navy); border-color: #fff; }
.or-describe { display: inline-flex; align-items: center; gap: 8px; margin-top: 22px; color: rgba(229, 233, 255, .9); font-size: 15px; }
.or-describe .i { font-size: 18px; color: #ffd479; }
.or-describe u { text-underline-offset: 4px; color: #fff; font-weight: 700; }
.or-describe:hover u { text-decoration-thickness: 2px; }
/* press feedback on pointer-down, not on release (apple-design §1) */
.tab:active, .paper:active { transition-duration: 0s; }

/* client journey */
.jr { padding-bottom: 40px; }
.jr-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; position: relative; counter-reset: jr; }
.jr-steps::before { content: ""; position: absolute; top: 34px; inset-inline: 12%; height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, rgba(59, 69, 176, .15), rgba(59, 69, 176, .55), rgba(59, 69, 176, .15)); transform-origin: left center; }
[dir="rtl"] .jr-steps::before { transform-origin: right center; }
.jr-step { position: relative; padding: 0 18px 8px; text-align: center; counter-increment: jr; }
.jr-ic { position: relative; z-index: 1; margin: 0 auto 18px; width: 68px; height: 68px; border-radius: 22px; display: grid; place-items: center; color: var(--navy);
  background: linear-gradient(180deg, #fff, rgba(255, 255, 255, .8)); box-shadow: inset 0 1px 0 #fff, 0 14px 32px rgba(34, 40, 110, .16), 0 0 0 6px rgba(246, 247, 253, .9); }
.jr-ic .i { font-size: 30px; }
.jr-ic::after { content: counter(jr); position: absolute; top: -6px; inset-inline-end: -6px; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center;
  font-size: 12.5px; font-weight: 700; color: #fff; background: var(--navy); box-shadow: 0 4px 10px rgba(42, 48, 110, .35); }
.jr-step b { display: block; font-size: 19px; font-weight: 700; color: var(--ink); }
.jr-step p { margin-top: 8px; color: var(--muted); font-size: 15.5px; max-width: 30ch; margin-inline: auto; }

/* plans (live prices) */
.plans { padding-top: 96px; }
.cycle { position: relative; display: inline-grid; grid-template-columns: auto auto; padding: 5px; border-radius: 16px; background: rgba(42, 48, 110, .07); align-self: end; isolation: isolate; }
.cycle button { position: relative; z-index: 1; border: 0; background: none; height: 42px; padding-inline: 18px; border-radius: 12px; font-weight: 700; font-size: 14.5px; color: var(--ink-2); white-space: nowrap; }
.cycle button[aria-checked="true"] { color: var(--navy); }
.cycle button i { font-style: normal; font-size: 12px; font-weight: 700; color: var(--seal); background: var(--seal-soft); padding: 2px 8px; border-radius: 999px; margin-inline-start: 6px; }
.cy-bub { position: absolute; z-index: 0; top: 5px; bottom: 5px; left: 0; width: var(--bw, 50%); border-radius: 12px; background: #fff;
  box-shadow: 0 4px 14px rgba(34, 40, 110, .14), inset 0 0 0 1px rgba(255, 255, 255, .9); translate: var(--bx, 0) 0; transition: translate .55s var(--spring-1), width .55s var(--spring-1); }
.plan-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; align-items: stretch; }
.plan { position: relative; display: flex; flex-direction: column; padding: 24px 22px 22px; border-radius: 26px; background: var(--glass); border: 1px solid rgba(255, 255, 255, .85);
  box-shadow: inset 0 1px 0 #fff, 0 18px 44px rgba(34, 40, 110, .1); transition: transform .5s var(--spring-1), box-shadow .3s; }
.plan:hover { transform: translateY(-4px); box-shadow: inset 0 1px 0 #fff, 0 26px 60px rgba(34, 40, 110, .16); }
.plan.is-pop { background: linear-gradient(180deg, #1d2257, #12153b); color: #fff; border-color: rgba(255, 255, 255, .12); box-shadow: 0 30px 70px rgba(18, 21, 59, .35); }
.pl-pop { position: absolute; top: -12px; inset-inline-start: 22px; font-size: 12.5px; font-weight: 700; color: var(--navy); background: #ffd479; padding: 4px 12px; border-radius: 999px; }
.plan h3 { font-size: 20px; font-weight: 700; }
.pl-who { margin-top: 4px; font-size: 14.5px; color: var(--muted); }
.plan.is-pop .pl-who { color: rgba(220, 225, 255, .75); }
.pl-price { margin-top: 18px; display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 6px; }
.pl-price b { font-family: "Inter", var(--font); font-size: 40px; font-weight: 700; letter-spacing: -.03em; line-height: 1; font-variant-numeric: tabular-nums; }
.pl-price span { font-weight: 700; font-size: 15px; }
.pl-price em { font-style: normal; color: var(--muted); font-size: 14px; }
.plan.is-pop .pl-price em { color: rgba(220, 225, 255, .7); }
.pl-seat { margin-top: 6px; font-size: 13.5px; color: var(--muted); }
.pl-cred { margin-top: 14px; display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: var(--navy-2); padding: 8px 12px; border-radius: 12px; background: rgba(59, 69, 176, .07); }
.plan.is-pop .pl-cred { color: #c7cdff; background: rgba(255, 255, 255, .08); }
.pl-cred .i { font-size: 16px; flex: none; }
.plan ul { list-style: none; margin: 16px 0 22px; padding: 0; display: grid; gap: 10px; font-size: 14.5px; color: var(--ink-2); flex: 1; }
.plan.is-pop ul { color: rgba(235, 238, 255, .9); }
.plan li { display: flex; gap: 9px; align-items: flex-start; line-height: 1.5; }
.plan li .i { font-size: 18px; color: var(--seal); flex: none; margin-top: 2px; }
.plan.is-pop li .i { color: #7fe3bf; }
.plan .btn { width: 100%; }
.plan.is-pop .btn-navy { background: #fff; color: var(--navy); box-shadow: none; }
.pl-note { margin-top: 22px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; color: var(--muted); font-size: 14px; }
.pl-note > .i { font-size: 16px; }

/* trust band */
.trust { margin: 24px 12px 0; border-radius: 40px; padding-block: 84px; color: #fff;
  background: radial-gradient(760px 420px at 12% 0%, rgba(99, 112, 255, .35), transparent 62%), radial-gradient(640px 420px at 100% 100%, rgba(14, 122, 85, .22), transparent 60%), linear-gradient(180deg, #161a48, var(--night)); }
.trust h2 { color: #fff; font-size: clamp(30px, 3.1vw, 42px); font-weight: 700; }
.trust .sub { color: rgba(220, 225, 255, .78); margin-top: 14px; font-size: 18px; }
.ts-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.ts-item { padding: 22px; border-radius: 22px; background: rgba(255, 255, 255, .06); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1); transition: background-color .3s, transform .5s var(--spring-1); }
.ts-item:hover { background: rgba(255, 255, 255, .1); transform: translateY(-3px); }
.ts-ic { width: 48px; height: 48px; border-radius: 15px; display: grid; place-items: center; color: #7fe3bf; background: rgba(127, 227, 191, .1); box-shadow: inset 0 0 0 1px rgba(127, 227, 191, .25); }
.ts-ic .i { font-size: 24px; }
.ts-item b { display: block; margin-top: 16px; font-size: 17.5px; }
.ts-item p { margin-top: 8px; font-size: 14.5px; color: rgba(220, 225, 255, .78); line-height: 1.65; }


/* rich motion: linked to scroll where the browser can, never hiding content where it cannot */
@supports ((animation-timeline: view()) and (animation-range: entry)) {
  @media (prefers-reduced-motion: no-preference) {
    @keyframes rise { from { opacity: 0; transform: translateY(34px) scale(.985); } to { opacity: 1; transform: none; } }
    @keyframes draw { from { transform: scaleX(0); } to { transform: scaleX(1); } }
    @keyframes drift { to { rotate: 18deg; scale: 1.06; } }
    @keyframes lift { to { translate: 0 -60px; } }
    .sec-h, .areas .area, .jr-step, .plan, .ts-item, .paper, .path3 li, .faq details, .end-card, .stage, .tabs .tab, .feats li {
      animation: rise linear both; animation-timeline: view(); animation-range: entry 4% cover 26%; }
    .areas .area:nth-child(even), .plan:nth-child(2), .ts-item:nth-child(2), .jr-step:nth-child(2) { animation-range: entry 10% cover 30%; }
    .plan:nth-child(3), .ts-item:nth-child(3), .jr-step:nth-child(3) { animation-range: entry 16% cover 34%; }
    .plan:nth-child(4), .ts-item:nth-child(4) { animation-range: entry 22% cover 38%; }
    .jr-steps::before { animation: draw linear both; animation-timeline: view(); animation-range: entry 20% cover 45%; }
    .hero .guil { animation: drift linear both; animation-timeline: scroll(root); animation-range: 0 120vh; }
    .hero .case { animation: lift linear both; animation-timeline: scroll(root); animation-range: 0 100vh; }
  }
}
/* when the visitor asks for less: frostier glass, stronger borders */
@media (prefers-reduced-transparency: reduce) {
  .case, .finder, .plan { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
  .case, .plan:not(.is-pop) { background: #fff !important; }
  .finder { background: #1b1f52; }
}
@media (prefers-contrast: more) {
  .case, .plan { box-shadow: 0 0 0 1.5px var(--ink) !important; }
  .sub, .pl-who, .lw-meta { color: var(--ink-2) !important; }
}
@media (max-width: 1023.98px) {
  .plan-grid, .ts-grid { grid-template-columns: 1fr 1fr; }
  .jr-steps { grid-template-columns: 1fr; gap: 26px; }
  .jr-steps::before { display: none; }
  .trust { margin-inline: 0; border-radius: 28px; }
  .cycle { justify-self: start; }
}
@media (max-width: 639.98px) {
  .finder { grid-template-columns: 1fr; }
  .fd-go { min-height: 52px; }
  .plan-grid, .ts-grid { grid-template-columns: 1fr; }
}
@media (min-width: 1024px) and (max-width: 1439.98px), (min-width: 1024px) and (max-height: 819.98px) {
  .finder { margin-top: 22px; }
  .chips-pop { margin-top: 12px; }
  .or-describe { margin-top: 14px; }
  .pl-price b { font-size: 34px; }
}

/* trainee journey: a motion graphic, not a photo (the client, 2026-10-28).
   12 s loop: the lines flow, the application travels to a firm, the firm accepts, the first case arrives. */
.trm { --cyc: 12s; position: relative; border-radius: 30px; padding: 18px 20px 22px; overflow: hidden; color: #fff; isolation: isolate;
  background: radial-gradient(520px 300px at 50% 0%, rgba(99, 112, 255, .38), transparent 70%), radial-gradient(420px 260px at 100% 100%, rgba(14, 122, 85, .22), transparent 70%), linear-gradient(180deg, #1a1f55, var(--night));
  box-shadow: 0 30px 70px rgba(18, 21, 59, .32), inset 0 1px 0 rgba(255, 255, 255, .12); }
.trm-net { display: block; width: 100%; height: auto; overflow: visible; }
.trm-l { fill: none; stroke: rgba(170, 180, 255, .45); stroke-width: 2; stroke-dasharray: 6 7; stroke-linecap: round; }
.trm-firm circle { fill: rgba(255, 255, 255, .08); stroke: rgba(255, 255, 255, .3); stroke-width: 1.2; }
.trm-firm use { color: #c9cfff; fill: currentColor; }
.trm-firm.f2 circle { fill: rgba(25, 169, 116, .22); stroke: #7fe3bf; }
.trm-ok circle { fill: #19a974; }
.trm-ok path { fill: none; stroke: #fff; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.trm-me > circle { fill: #fff; filter: drop-shadow(0 6px 16px rgba(3, 5, 30, .45)); }
.trm-me text { fill: var(--navy); font-weight: 700; font-size: 21px; font-family: inherit; }
.trm-me .trm-name { fill: rgba(226, 230, 255, .86); font-size: 14px; font-weight: 600; }
.trm-dot { fill: #ffd479; filter: drop-shadow(0 0 7px rgba(255, 212, 121, .95)); }
.trm-feed { display: grid; gap: 10px; margin-top: 6px; }
.trm-card { display: flex; gap: 12px; align-items: center; padding: 12px 14px; border-radius: 16px; background: rgba(255, 255, 255, .08);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
.trm-card > div { flex: 1; min-width: 0; }
.trm-card b { display: block; font-size: 15px; font-weight: 700; }
.trm-card small { display: block; margin-top: 1px; font-size: 13px; color: rgba(226, 230, 255, .74); }
.trm-ic { flex: none; width: 38px; height: 38px; border-radius: 12px; display: grid; place-items: center; background: rgba(255, 255, 255, .1); color: #c9cfff; }
.trm-ic.ok { color: #7fe3bf; background: rgba(127, 227, 191, .13); }
.trm-ic .i { font-size: 20px; }
.trm-bar { display: block; margin-top: 8px; height: 5px; border-radius: 5px; background: rgba(255, 255, 255, .13); overflow: hidden; }
.trm-bar i { display: block; height: 100%; width: 62%; border-radius: inherit; background: linear-gradient(90deg, #7fe3bf, #8f9bff); }
@media (prefers-reduced-motion: reduce) { .trm-dot { display: none; } }
@media (prefers-reduced-motion: no-preference) {
  .trm-l { animation: trm-flow 1.3s linear infinite; }
  .trm-l.l2 { animation: trm-flow 1.3s linear infinite, trm-hot var(--cyc) linear infinite; }
  .trm-firm.f2 circle { animation: trm-accept var(--cyc) linear infinite; }
  .trm-ok { transform-box: fill-box; transform-origin: center; animation: trm-badge var(--cyc) cubic-bezier(.2, .9, .3, 1.4) infinite; }
  .trm-card { animation: trm-c1 var(--cyc) cubic-bezier(.2, .8, .2, 1) infinite both; }
  .trm-card.c2 { animation-name: trm-c2; }
  .trm-card.c3 { animation-name: trm-c3; }
  .trm-bar i { animation: trm-fill var(--cyc) ease-out infinite both; }
  @keyframes trm-flow { to { stroke-dashoffset: -26; } }
  @keyframes trm-hot { 0%, 16% { stroke: rgba(170, 180, 255, .45); } 22%, 92% { stroke: #ffd479; stroke-width: 2.6; } 100% { stroke: rgba(170, 180, 255, .45); } }
  @keyframes trm-accept { 0%, 32% { fill: rgba(255, 255, 255, .08); stroke: rgba(255, 255, 255, .3); } 36%, 92% { fill: rgba(25, 169, 116, .22); stroke: #7fe3bf; } 100% { fill: rgba(255, 255, 255, .08); stroke: rgba(255, 255, 255, .3); } }
  @keyframes trm-badge { 0%, 33% { opacity: 0; transform: scale(.3); } 38%, 92% { opacity: 1; transform: none; } 100% { opacity: 0; } }
  @keyframes trm-c1 { 0%, 14% { opacity: 0; transform: translateY(12px) scale(.98); } 19%, 92% { opacity: 1; transform: none; } 100% { opacity: 0; } }
  @keyframes trm-c2 { 0%, 36% { opacity: 0; transform: translateY(12px) scale(.98); } 41%, 92% { opacity: 1; transform: none; } 100% { opacity: 0; } }
  @keyframes trm-c3 { 0%, 56% { opacity: 0; transform: translateY(12px) scale(.98); } 61%, 92% { opacity: 1; transform: none; } 100% { opacity: 0; } }
  @keyframes trm-fill { 0%, 62% { width: 0; } 84%, 100% { width: 62%; } }
}

/* No `content-visibility: auto` on the sections (tried 2026-10-28 to cut the phone's layout work):
   Chrome 156 leaves a skipped section out of the accessibility tree, so a screen reader's
   headings stopped at the second section until the visitor scrolled (23 headings -> 8), and
   innerText read nothing below. tests/test_public_site.py keeps it out. */
