/* English Tutor — homepage. Brand tokens from branding/brand-kit/tokens.json */
:root{
  --cobalt:#244BD7; --cobalt-hover:#1C3DB4; --cobalt-pressed:#17318F;
  --ink:#101B32; --night:#0B1222; --night-2:#16244C;
  --ivory:#FBFAF7; --white:#FFFFFF; --sky:#DCE7FF; --sky-2:#EEF3FF; --mist:#F4F7FE;   /* ivory lightened: the old cream read yellow next to cobalt */
  --muted:#536078; --line:#D9DEE8; --on-dark-muted:#A9B6D3;
  --radius:16px; --radius-lg:24px; --radius-tail:6px;
  --font-ar:"IBM Plex Sans Arabic",system-ui,sans-serif; --font-en:Manrope,system-ui,sans-serif;
  --ease-out:cubic-bezier(.2,.8,.2,1);
  --shadow:0 1px 2px rgba(16,27,50,.06),0 6px 14px -8px rgba(16,27,50,.16);   /* small blur: cheap to repaint */
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:90px;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--font-ar);font-size:1.125rem;line-height:1.75;text-rendering:optimizeLegibility}
img,svg{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3{line-height:1.25;margin:0;font-weight:700;text-wrap:balance}
p{margin:0}
[lang="en"]{font-family:var(--font-en)}
.wrap{width:min(1160px,100% - 32px);margin-inline:auto}
.narrow{width:min(760px,100% - 32px)}
.skip-link{position:absolute;inset-inline-start:16px;top:-60px;z-index:100;background:var(--cobalt);color:#fff;padding:10px 16px;border-radius:10px;text-decoration:none}
.skip-link:focus{top:12px}
:focus-visible{outline:3px solid var(--cobalt);outline-offset:3px;border-radius:8px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:12px 22px;border-radius:14px;font:inherit;font-weight:600;font-size:17px;
     text-decoration:none;border:1.5px solid transparent;cursor:pointer;transition:background-color .18s,border-color .18s,transform .18s var(--ease-out),box-shadow .18s}
.btn:active{transform:scale(.98)}
.btn-sm{min-height:44px;padding:8px 16px;font-size:15px}
.btn-lg{min-height:56px;padding:14px 28px;font-size:18px}
.btn-primary{background:var(--cobalt);color:#fff;box-shadow:0 6px 12px -6px rgba(36,75,215,.6)}
.btn-primary:hover{background:var(--cobalt-hover)}
.btn-ghost{color:var(--ink);border-color:var(--line);background:var(--white)}
.btn-ghost:hover{border-color:var(--cobalt);color:var(--cobalt)}
.btn-light{background:var(--white);color:var(--cobalt);border-color:var(--white)}
.btn-light:hover{background:var(--sky)}
.ico{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;flex:none}

/* ---------- header ---------- */
/* floating glass bar: the page blurs as it passes underneath (solid glass when there is no graphics acceleration) */
.site-header{position:fixed;inset:10px 12px auto;z-index:50;max-width:1220px;margin-inline:auto;border-radius:20px;overflow:hidden;color:var(--ink);
  background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(255,255,255,.5));
  -webkit-backdrop-filter:blur(18px) saturate(1.7);backdrop-filter:blur(18px) saturate(1.7);
  border:1px solid rgba(255,255,255,.75);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.95),0 1px 2px rgba(16,27,50,.04),0 10px 30px -18px rgba(16,27,50,.35);transition:box-shadow .3s}
.site-header.scrolled{box-shadow:inset 0 1px 0 rgba(255,255,255,.95),0 1px 2px rgba(16,27,50,.06),0 14px 34px -16px rgba(16,27,50,.4)}
.no-gpu .site-header{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(251,250,247,.96)}
.site-header .header-row{width:auto;padding-inline:18px}
@media (max-width:700px){.site-header{inset:8px 8px auto;border-radius:18px}.site-header .header-row{padding-inline:12px}}
.header-row{display:flex;align-items:center;gap:24px;min-height:64px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.brand img{width:36px;height:36px}
.brand-text{display:flex;flex-direction:column;line-height:1.15}
.brand-en{font-family:var(--font-en);font-weight:800;font-size:17px;direction:ltr;text-align:start}
.brand-ar{font-size:13px;opacity:.75}
.nav{display:flex;gap:4px;margin-inline-start:auto}
.nav a{text-decoration:none;font-size:16px;font-weight:500;padding:8px 12px;border-radius:10px;opacity:.85;transition:opacity .15s,background-color .15s}
.nav a:hover{opacity:1;background:rgba(127,140,170,.14)}
@media (max-width:900px){.nav{display:none}.site-header .wa-link{margin-inline-start:auto}}

/* ---------- hero: light, like the identity (ivory page, cobalt only on the mark and the button) ---------- */
.hero{position:relative;background:var(--ivory);padding:112px 0 72px;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:clamp(24px,4vw,56px)}
.hero-copy{display:flex;flex-direction:column;align-items:flex-start;gap:18px}
.eyebrow{font-size:15px;font-weight:600;color:var(--cobalt);background:var(--sky-2);padding:6px 14px;border-radius:999px 999px 999px 4px}
.hero h1{font-size:clamp(36px,4.8vw,60px)}
.hero h1 .line{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.hero h1 .line>span{display:inline-block}
.en-accent{display:block;font-family:var(--font-en);font-weight:800;font-size:.5em;color:var(--cobalt);margin-top:.35em;letter-spacing:-.01em;text-align:start}
.lead{font-size:clamp(17px,1.7vw,20px);color:var(--muted);max-width:40ch}
.hero-ctas{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px}
.hero-stage{position:relative;width:100%;aspect-ratio:1;touch-action:pan-y}
.hero-stage::before{content:"";position:absolute;inset:12%;border-radius:50%;background:radial-gradient(closest-side,var(--sky) 0%,rgba(220,231,255,0) 100%)}
.hero-stage canvas{position:absolute;inset:0;width:100%!important;height:100%!important;display:block}
/* the intro pieces fly in from outside the square: fade the four edges so they appear softly instead of being cut */
.hero-stage canvas,.stage-video{
  -webkit-mask-image:linear-gradient(to right,transparent,#000 14%,#000 86%,transparent),linear-gradient(to bottom,transparent,#000 14%,#000 86%,transparent);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(to right,transparent,#000 14%,#000 86%,transparent),linear-gradient(to bottom,transparent,#000 14%,#000 86%,transparent);
  mask-composite:intersect}
/* no graphics acceleration: a ready-made transparent video plays the same intro, then the flat logo takes over */
.stage-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .45s}
.stage-video.out{opacity:0}
/* the glossy logo (last frame of the intro) — appears over the identical last video frame, then turns toward the cursor */
.logo3d{position:absolute;inset:0;perspective:900px;opacity:0;transition:opacity .35s;pointer-events:none}
.hero-stage.live .logo3d{opacity:1}
.logo-tilt{position:absolute;inset:0;transform-origin:49.8% 45.8%;will-change:transform}
.logo-gloss{position:absolute;inset:0;width:100%;height:100%}
/* moving highlight, cut to the logo's own shape */
.logo-shine{position:absolute;inset:0;opacity:var(--so,0);
  background:radial-gradient(circle at var(--sx,38%) var(--sy,30%),rgba(255,255,255,.55) 0,rgba(255,255,255,.14) 16%,transparent 34%);
  -webkit-mask:url(../assets/media/logo-gloss.webp) center/100% 100% no-repeat;mask:url(../assets/media/logo-gloss.webp) center/100% 100% no-repeat}
/* soft shadow on the floor under the logo */
.logo-shadow{position:absolute;left:29%;width:42%;top:76%;height:7%;border-radius:50%;
  background:radial-gradient(closest-side,rgba(16,27,50,.16),rgba(16,27,50,0))}
.skip-intro{position:absolute;inset-inline-end:8px;bottom:8px;font:inherit;font-size:14px;min-height:40px;padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.8);color:var(--ink);cursor:pointer}
.skip-intro[hidden]{display:none}
@media (max-width:860px){
  .hero{padding:88px 0 56px;text-align:center}
  .hero-grid{grid-template-columns:1fr}
  .hero-stage{order:-1;width:min(340px,86%);margin:0 auto -8px}
  .hero-copy{align-items:center}
  .en-accent{text-align:center}
  .hero-ctas{justify-content:center}
}

/* ---------- trust strip ---------- */
.trust{background:var(--white);border-block:1px solid var(--line)}
.trust-row{list-style:none;padding:0;margin-block:0;display:grid;grid-template-columns:repeat(4,1fr)}
.trust-row li{display:flex;flex-direction:column;align-items:center;gap:2px;padding:22px 8px;text-align:center;font-size:15px;color:var(--muted)}
.trust-row li+li{border-inline-start:1px solid var(--line)}
.num{font-family:var(--font-en);font-weight:800;font-size:clamp(32px,3.6vw,46px);color:var(--cobalt);line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.num-word{font-weight:700;font-size:clamp(24px,2.6vw,32px);color:var(--ink);line-height:1.3}
.stars{color:#F5B301;letter-spacing:2px;font-size:.9em}
@media (max-width:700px){.trust-row{grid-template-columns:repeat(2,1fr)}.trust-row li:nth-child(3){border-inline-start:0}.trust-row li:nth-child(n+3){border-top:1px solid var(--line)}}

/* ---------- sections ---------- */
.section{padding:clamp(80px,11vw,136px) 0}
.section-soft{background:var(--mist)}
.section-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;margin-bottom:clamp(36px,5vw,56px)}
.kicker{direction:rtl;font-family:var(--font-en);font-weight:800;font-size:14px;color:var(--cobalt);text-transform:uppercase;letter-spacing:.12em}
.section h2{font-size:clamp(34px,5.2vw,64px);line-height:1.15}
/* section number, like chapters of an editorial page */
.idx{display:inline-block;margin-inline-end:10px;padding:1px 9px;border-radius:999px 999px 999px 3px;background:var(--sky);color:var(--cobalt);letter-spacing:.04em;font-variant-numeric:tabular-nums}
/* split head: title on the reading side, the short lead on the other, a hairline under both */
@media (min-width:801px){
  .section-head.split{display:grid;grid-template-columns:1.25fr 1fr;align-items:end;text-align:start;column-gap:56px;row-gap:12px}
  .section-head.split .kicker{grid-column:1;justify-self:start}
  .section-head.split h2{grid-column:1;grid-row:2}
  .section-head.split .section-lead{grid-column:2;grid-row:2;justify-self:end;text-align:end;max-width:38ch;padding-bottom:.5em}
  .section-head.split::after{content:"";grid-column:1/-1;height:1px;background:var(--line);margin-top:22px}
}
/* headings rise word by word (motion.js splits them; the h2 keeps its full text for screen readers) */
.w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.14em;margin-bottom:-.14em}
.w>span{display:inline-block}
.section-lead{color:var(--muted);max-width:52ch}

/* speech-bubble cards: rounded, with one sharp "tail" corner like the logo */
.cards-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media (max-width:900px){.cards-3{grid-template-columns:1fr}}
.bubble-card{position:relative;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-tail);
  padding:28px 26px 30px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow);transition:transform .25s var(--ease-out),border-color .25s,box-shadow .25s}
.bubble-card:hover{transform:translateY(-4px);border-color:rgba(36,75,215,.35);box-shadow:0 1px 2px rgba(16,27,50,.06),0 10px 18px -10px rgba(36,75,215,.35)}
.bubble-card h3{font-size:22px}
.bubble-card p{color:var(--muted);font-size:17px}
/* glossy 3D icon (same material as the logo) sitting on the card's corner */
.cards-3{margin-top:40px;row-gap:56px}
.card-ico{position:absolute;top:-44px;inset-inline-end:14px;width:104px;height:104px;pointer-events:none;
  transition:translate .45s cubic-bezier(.3,1.4,.5,1),rotate .45s cubic-bezier(.3,1.4,.5,1)}
.bubble-card:hover .card-ico{translate:0 -8px;rotate:-6deg}
.mode-img{width:76px;height:76px;margin:-14px -6px -14px 0;flex:none;transition:translate .45s cubic-bezier(.3,1.4,.5,1)}
.mode:hover .mode-img{translate:0 -5px}
.card-tag{align-self:flex-start;font-weight:800;font-size:13px;color:var(--cobalt);background:var(--sky-2);padding:4px 12px;border-radius:999px 999px 999px 4px}

/* Arabic ↔ English phrases */
.phrases{margin-top:56px;text-align:center}
.phrases-hint{font-size:14px;color:var(--muted);margin-bottom:14px}
.phrase-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.phrase{position:relative;min-width:230px;min-height:64px;padding:0;border:0;background:none;cursor:pointer;perspective:700px;font:inherit}
.phrase .face{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:0 22px;border-radius:20px 20px 20px 6px;font-size:19px;font-weight:600;
  backface-visibility:hidden;-webkit-backface-visibility:hidden;transition:transform .55s cubic-bezier(.3,1.3,.5,1)}
.phrase .ar{background:var(--sky);color:var(--ink)}
.phrase .en{background:var(--cobalt);color:#fff;font-weight:800;transform:rotateX(180deg);border-radius:20px 20px 6px 20px}
.phrase:hover .ar,.phrase[aria-pressed="true"] .ar{transform:rotateX(-180deg)}
.phrase:hover .en,.phrase[aria-pressed="true"] .en{transform:rotateX(0)}

/* steps */
.steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;counter-reset:s;position:relative}
.steps-line{position:absolute;top:30px;inset-inline:16%;height:2px;list-style:none;background:repeating-linear-gradient(90deg,var(--cobalt) 0 10px,transparent 10px 18px);opacity:.35;transform-origin:right center}
.step{position:relative;text-align:center;padding:0 12px}
.step-num{position:relative;display:inline-grid;place-items:center;width:60px;height:60px;margin-bottom:16px;border-radius:20px 20px 20px 6px;background:var(--sky);color:var(--cobalt);
  font-family:var(--font-en);font-weight:800;font-size:24px}
.step h3{font-size:21px;margin-bottom:6px}
.step p{color:var(--muted);font-size:17px}
@media (max-width:800px){.steps{grid-template-columns:1fr;gap:32px}.steps-line{display:none}}

/* home / online */
.modes{display:grid;grid-template-columns:1.35fr 1fr;gap:20px}
@media (max-width:900px){.modes{grid-template-columns:1fr}}
.mode{border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-tail);padding:32px;display:flex;flex-direction:column;gap:14px}
.mode-home{background:var(--white);border:1px solid var(--line);box-shadow:var(--shadow)}
.mode-online{background:linear-gradient(160deg,var(--sky-2) 0%,var(--sky) 100%);color:var(--ink);border:1px solid #CFDCFB;border-radius:var(--radius-lg) var(--radius-lg) var(--radius-tail) var(--radius-lg);align-items:flex-start}
.mode-online p{color:var(--muted)}
.mode-top{display:flex;align-items:center;gap:12px}
.mode h3{font-size:23px}
.mode-ico{width:44px;height:44px;padding:10px;border-radius:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round;flex:none}
.mode-home .mode-ico{background:var(--sky-2);color:var(--cobalt)}
.mode-online .mode-ico{background:var(--white);color:var(--cobalt)}
.mode-online .btn{margin-top:auto}
.chips{list-style:none;padding:0;margin:4px 0 0;display:flex;flex-wrap:wrap;gap:8px}
.chips li{font-size:15px;font-weight:500;padding:6px 14px;border-radius:999px;background:var(--ivory);border:1px solid var(--line);transition:background-color .2s,color .2s,border-color .2s}
.chips li:hover{background:var(--sky);border-color:var(--sky);color:var(--cobalt)}

/* about */
.about{display:grid;grid-template-columns:auto 1fr;gap:clamp(28px,5vw,64px);align-items:center}
.about .section-lead{margin-top:10px;font-size:19px}
.about h2{margin-top:6px}
.portrait{width:clamp(180px,24vw,280px);aspect-ratio:4/5;border-radius:32px 32px 32px 8px;background:radial-gradient(90% 70% at 50% 30%,var(--white),var(--sky));border:1px solid #CFDCFB;display:grid;place-items:center;box-shadow:var(--shadow)}
.portrait img{width:44%}
@media (max-width:700px){.about{grid-template-columns:1fr;justify-items:center;text-align:center}.about .section-lead{margin-inline:auto}}

/* ---------- from our lessons: post cards (sizes in cqi so the same card exports at 1080×1350) ---------- */
.posts-rail{position:relative}
.posts-track{display:flex;gap:clamp(14px,2vw,22px);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;
  padding:10px max(16px,calc((100% - 1160px)/2)) 30px;scroll-padding-inline:max(16px,calc((100% - 1160px)/2));cursor:grab;outline:none}
.posts-track::-webkit-scrollbar{display:none}
.posts-track.dragging{cursor:grabbing;scroll-snap-type:none}
.posts-track.dragging .post{pointer-events:none}
.post{flex:none;width:clamp(260px,27vw,320px);aspect-ratio:4/5;scroll-snap-align:start;perspective:900px;container-type:inline-size}
.post-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.3,1.2,.5,1)}
.post-face,.post-back{position:absolute;inset:0;display:flex;flex-direction:column;gap:2.4cqi;padding:7cqi 7cqi 6cqi;overflow:hidden;
  border-radius:8cqi 8cqi 8cqi 2.4cqi;border:1px solid var(--glass-rim);backface-visibility:hidden;-webkit-backface-visibility:hidden;
  background:radial-gradient(70% 55% at 85% 12%,rgba(120,160,255,.28),rgba(120,160,255,0) 70%),linear-gradient(165deg,#fff 0%,#F2F6FF 100%);
  box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(16,27,50,.05),0 18px 40px -22px rgba(36,75,215,.45)}
.post-back{transform:rotateY(180deg);background:radial-gradient(70% 55% at 15% 12%,rgba(255,255,255,.18),rgba(255,255,255,0) 70%),var(--gloss);color:#fff;border-color:#1B3AB5}
.post.flipped .post-inner{transform:rotateY(180deg)}
.post-tag{align-self:flex-start;font-size:4.4cqi;font-weight:700;color:var(--cobalt);background:var(--sky-2);padding:1.2cqi 4cqi;border-radius:99px 99px 99px 1.5cqi}
.post-back .post-tag{background:rgba(255,255,255,.18);color:#fff}
.post-ico{position:absolute;top:4cqi;inset-inline-end:4cqi;width:26cqi;height:26cqi;transition:translate .5s cubic-bezier(.3,1.4,.5,1),rotate .5s cubic-bezier(.3,1.4,.5,1)}
.post:hover .post-ico{translate:0 -2cqi;rotate:-6deg}
.post h3{margin-top:9cqi;font-size:9cqi;line-height:1.2;max-width:70%}
.post h3 span[lang=en]{white-space:nowrap;unicode-bidi:isolate}
.post-body{display:flex;flex-direction:column;gap:2cqi;font-size:5cqi;line-height:1.55;color:var(--muted)}
.post-body b{color:var(--ink)}
.post-back .post-body{color:#DCE7FF;margin-top:4cqi}
.post-back .post-body b{color:#fff}
.post-body .en{font-family:var(--font-en);font-weight:700;color:var(--cobalt);text-align:left}
.post-body .ex{font-family:var(--font-en);font-weight:600;color:var(--ink);text-align:left;background:rgba(36,75,215,.06);border-radius:3cqi;padding:2cqi 3cqi}
.post-body .ex b{color:var(--cobalt)}
.post-body .no,.post-body .yes{font-family:var(--font-en);font-weight:800;font-size:7cqi;text-align:left}
.post-body .no{color:#C0392B;text-decoration:line-through;text-decoration-thickness:.5cqi}
.post-body .yes{color:#128C4A}
.post-back .post-body .yes{color:#fff}
.opts-en{display:flex;gap:3cqi;justify-content:flex-start;font-family:var(--font-en);font-weight:800;font-size:6cqi}
.opts-en span{padding:1.5cqi 5cqi;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--ink)}
.post-flip{align-self:flex-start;margin-top:auto;min-height:44px;padding:1.5cqi 4.5cqi;border-radius:99px;border:1px solid rgba(36,75,215,.35);background:#fff;color:var(--cobalt);font:inherit;font-size:4.6cqi;font-weight:700;cursor:pointer}
.post-back .post-flip{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.5);color:#fff}
.post-brand{margin-top:auto;display:flex;align-items:center;gap:2cqi;font-family:var(--font-en);font-weight:800;font-size:4.2cqi;color:var(--ink);opacity:.85}
.post-flip+.post-brand{margin-top:2cqi}
.post-brand img{width:6cqi;height:6cqi}
.post-back .post-brand{color:#fff}.post-back .post-brand img{filter:brightness(0) invert(1)}
.posts-ctrl{display:flex;gap:10px;justify-content:flex-start;margin-top:-6px}
.posts-btn{width:48px;height:48px;border-radius:16px;border:1px solid var(--glass-rim);background:var(--glass);box-shadow:var(--glass-shadow);font-size:20px;color:var(--cobalt);cursor:pointer;transition:translate .2s var(--ease-out)}
.posts-btn:hover{translate:0 -2px}
.posts-btn:disabled{opacity:.35;cursor:default;translate:none}
#posts{position:relative;isolation:isolate;overflow:clip}
#posts::before{content:"";position:absolute;z-index:-1;width:640px;height:460px;top:40%;inset-inline-end:10%;border-radius:50% 50% 14% 50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(36,75,215,.16),rgba(36,75,215,0))}

/* reviews */
.reviews{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;max-width:900px;margin-inline:auto}
@media (max-width:700px){.reviews{grid-template-columns:1fr}}
.review{margin:0;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-tail);padding:30px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px}
.review blockquote{margin:0;font-size:22px;font-weight:600;line-height:1.6}
.review figcaption{font-size:15px;color:var(--muted)}

/* ask for a Google review */
.review-cta{margin:clamp(28px,4vw,44px) auto 0;max-width:900px;display:flex;align-items:center;justify-content:space-between;gap:28px;padding:26px 30px;
  border-radius:var(--radius-lg) var(--radius-lg) var(--radius-tail) var(--radius-lg);border:1px solid var(--glass-rim);background:var(--glass);box-shadow:var(--glass-shadow)}
.review-cta-copy{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.review-cta h3{font-size:22px}
.review-cta p{color:var(--muted);font-size:16px;margin-bottom:6px}
.g-star{color:#FFC83D;font-size:1.1em;text-shadow:0 0 8px rgba(255,200,61,.6)}
.review-qr{margin:0;display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px;border-radius:18px;background:#fff;box-shadow:0 1px 2px rgba(16,27,50,.06)}
.review-qr img{width:112px;height:112px}
.review-qr figcaption{font-size:12px;color:var(--muted)}
@media (max-width:700px){.review-cta{flex-direction:column;text-align:center}.review-cta-copy{align-items:center}.review-qr{display:none}}   /* on a phone the button is enough */

/* FAQ */
.faq{display:flex;flex-direction:column;gap:12px}
.faq details{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:0 22px;transition:border-color .2s,background-color .2s}
.faq details[open]{background:var(--white);border-color:rgba(36,75,215,.35)}
.faq summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;font-weight:600;font-size:19px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";width:12px;height:12px;flex:none;border-right:2px solid var(--cobalt);border-bottom:2px solid var(--cobalt);transform:translateY(-3px) rotate(45deg);transition:transform .25s var(--ease-out)}
.faq details[open] summary::after{transform:translateY(3px) rotate(-135deg)}
.faq details p{color:var(--muted);padding-bottom:20px}

/* final call */
.final{background:linear-gradient(180deg,var(--ivory) 0%,var(--sky-2) 100%);color:var(--ink);padding:clamp(80px,11vw,130px) 0;text-align:center}
.final-inner{display:flex;flex-direction:column;align-items:center;gap:18px}
/* the logo assembles from the intro's own frames as the visitor scrolls */
.assemble{position:relative;width:clamp(200px,26vw,300px);aspect-ratio:1;margin-bottom:-28px}
.assemble canvas,.assemble-poster{position:absolute;inset:0;width:100%;height:100%;transition:opacity .3s}
.assemble canvas{opacity:0}
.assemble.ready canvas{opacity:1}
.assemble.ready .assemble-poster{opacity:0}
.assemble canvas{
  -webkit-mask-image:linear-gradient(to right,transparent,#000 14%,#000 86%,transparent),linear-gradient(to bottom,transparent,#000 14%,#000 86%,transparent);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(to right,transparent,#000 14%,#000 86%,transparent),linear-gradient(to bottom,transparent,#000 14%,#000 86%,transparent);
  mask-composite:intersect}


/* ---------- booking builder ---------- */
.booker{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(20px,3vw,36px);align-items:start;margin-top:clamp(36px,5vw,56px);text-align:start}
@media (max-width:900px){.booker{grid-template-columns:1fr}}
.book-form{display:flex;flex-direction:column;gap:14px}
.book-step{margin:0;padding:20px 22px 22px;border:1px solid var(--glass-rim);border-radius:22px 22px 22px 6px;background:var(--glass);box-shadow:var(--glass-shadow);min-width:0}
.book-step legend{float:inline-start;width:100%;display:flex;align-items:center;gap:10px;margin-bottom:14px;padding:0;font-weight:700;font-size:1.1rem}
.book-step legend small{font-weight:500;font-size:.8rem;color:var(--muted)}
.book-step legend+*{clear:both}
.step-no{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:10px 10px 10px 3px;background:var(--sky);color:var(--cobalt);font-family:var(--font-en);font-weight:800;font-size:15px;flex:none}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opts-gap{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.opt{position:relative;cursor:pointer}
.opt input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.opt span{display:inline-flex;align-items:center;min-height:44px;padding:8px 16px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.75);font-weight:500;
  transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,scale .15s var(--ease-out)}
.opts-sm .opt span{min-height:40px;padding:6px 13px;font-size:.95rem}
.opt:hover span{border-color:rgba(36,75,215,.4);color:var(--cobalt)}
.opt input:checked+span{background:var(--gloss);color:#fff;border-color:#1B3AB5;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),inset 0 -2px 6px rgba(8,22,90,.3),0 6px 14px -8px rgba(36,75,215,.6)}
.opt input:checked+span::before{content:"✓";margin-inline-end:6px;font-size:.85em}
.opt input:active+span{scale:.96}
.opt input:focus-visible+span{outline:3px solid var(--cobalt);outline-offset:2px}
.areas{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line)}
.areas-label{font-size:.95rem;color:var(--muted);margin-bottom:8px}
.book-name{width:100%;min-height:50px;padding:10px 16px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.85);font:inherit;font-size:16px;color:var(--ink)}
.book-name:focus{outline:3px solid var(--cobalt);outline-offset:1px;border-color:transparent}
/* a required step the visitor skipped: a short nudge */
@keyframes nudge{0%,100%{translate:0}20%{translate:-8px}40%{translate:7px}60%{translate:-4px}80%{translate:2px}}
.book-step.needs{animation:nudge .5s ease-out;border-color:rgba(36,75,215,.6);box-shadow:inset 0 1px 0 #fff,0 0 0 3px rgba(36,75,215,.18),0 14px 32px -18px rgba(36,75,215,.45)}

/* quick steps: one question at a time (booking.js adds .wizard; without JS every question shows) */
.booker.wizard{grid-template-rows:auto auto;align-items:start}
.booker.wizard .book-form{grid-column:1;grid-row:1}
.booker.wizard .book-nav{grid-column:1;grid-row:2}
.booker.wizard .book-preview{grid-column:2;grid-row:1/3}
.booker.wizard .book-step{display:none}
.booker.wizard .book-step.is-current{display:block;animation:stepIn .35s var(--ease-out)}
@keyframes stepIn{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
.booker.wizard.at-end .book-form{display:none}
.booker.wizard.at-end .book-nav{grid-row:1}
/* last screen: the ready message alone in the middle */
.booker.wizard.at-end{grid-template-columns:minmax(0,520px);justify-content:center}
.booker.wizard.at-end .book-nav,.booker.wizard.at-end .book-preview{grid-column:1}
.booker.wizard.at-end .book-preview{grid-row:2;position:static}
.book-nav{display:flex;flex-direction:column;gap:10px}
.book-progress{height:6px;border-radius:99px;background:rgba(36,75,215,.12);overflow:hidden}
.book-progress span{display:block;height:100%;background:var(--gloss);transform-origin:right;transform:scaleX(0);transition:transform .45s var(--ease-out)}
.book-count{margin:0;font-size:14px;color:var(--muted)}
.book-nav-btns{display:flex;gap:8px;justify-content:flex-start}
.book-nav-btns .book-next{margin-inline-start:auto}
.book-nav-btns [hidden]{display:none}
.book-next:disabled{opacity:.45;cursor:not-allowed}
.booker.wizard .book-step{min-height:0}
@media (max-width:900px){
  .booker.wizard{grid-template-columns:1fr}
  .booker.wizard .book-preview{grid-column:1;grid-row:3;display:none}
  .booker.wizard.at-end .book-preview{display:flex;grid-row:2}
  .booker.wizard.at-end .book-nav{grid-row:1}
}

/* live preview: looks like the WhatsApp chat the message will open in */
.book-preview{position:sticky;top:96px;display:flex;flex-direction:column;gap:12px}
@media (max-width:900px){.book-preview{position:static}}
.wa-chat{border-radius:22px 22px 6px 22px;overflow:hidden;border:1px solid var(--glass-rim);box-shadow:var(--glass-shadow);background:#EFEAE2}
.wa-head{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#F0F2F5;border-bottom:1px solid rgba(16,27,50,.06)}
.wa-head img{width:36px;height:36px;border-radius:50%;background:#fff}
.wa-head span{display:flex;flex-direction:column;line-height:1.3}
.wa-head small{color:var(--muted);font-size:12px}
.wa-body{padding:18px 16px 22px;min-height:180px;display:flex;justify-content:flex-start}
.wa-bubble{position:relative;max-width:92%;margin:0;padding:10px 14px 12px;border-radius:12px 0 12px 12px;background:#D9FDD3;color:#111B21;font-size:15px;line-height:1.7;white-space:pre-wrap;
  box-shadow:0 1px 1px rgba(11,20,26,.13)}
.book-missing{margin:0;font-size:14px;color:var(--muted);text-align:center}
.book-missing.ok{color:#128C4A;font-weight:600}
.book-send{width:100%}
.book-send.is-incomplete{filter:saturate(.7);opacity:.85}
.book-alt{margin:0;text-align:center;font-size:14px;color:var(--muted)}
.book-alt a{color:var(--cobalt);text-decoration:none;border-bottom:1px solid rgba(36,75,215,.3)}
/* ---------- optional level quiz ---------- */
.level-btn{display:inline-flex;align-items:center;gap:8px;margin-top:4px;padding:8px 16px;min-height:44px;border-radius:999px;border:1px dashed rgba(36,75,215,.45);
  background:rgba(255,255,255,.6);color:var(--cobalt);font:inherit;font-size:15px;font-weight:600;cursor:pointer;transition:background-color .2s,border-color .2s}
.level-btn:hover{background:#fff;border-style:solid}
.level-btn[hidden]{display:none}
.level-quiz{width:min(560px,calc(100% - 24px));padding:28px 26px 26px;border:1px solid var(--glass-rim);border-radius:28px 28px 28px 8px;
  background:linear-gradient(160deg,rgba(255,255,255,.96),rgba(244,247,254,.94));box-shadow:0 30px 80px -30px rgba(16,27,50,.5);color:var(--ink);text-align:start}
.level-quiz::backdrop{background:rgba(16,27,50,.35)}
.level-quiz[open]{animation:stepIn .3s var(--ease-out)}
.lq-close-form{position:absolute;inset-inline-end:14px;top:12px;margin:0}
.lq-close{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:#fff;font-size:16px;cursor:pointer;color:var(--muted)}
.lq-kicker{text-align:right;font-family:var(--font-en);font-weight:800;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--cobalt);margin:0}
.level-quiz h3{font-size:24px;margin:4px 0 14px}
.lq-progress{height:6px;border-radius:99px;background:rgba(36,75,215,.12);overflow:hidden}
.lq-progress span{display:block;height:100%;background:var(--gloss);transform-origin:right;transform:scaleX(0);transition:transform .35s var(--ease-out)}
.lq-count{margin:8px 0 16px;font-size:14px;color:var(--muted)}
.lq-q{font-family:var(--font-en);font-weight:700;font-size:clamp(22px,4vw,28px);line-height:1.4;text-align:left;margin:0 0 18px}
.lq-blank{color:var(--cobalt)}
.lq-answers{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lq-a{min-height:52px;padding:10px 14px;border-radius:16px;border:1px solid var(--line);background:#fff;font-family:var(--font-en);font-weight:700;font-size:18px;color:var(--ink);cursor:pointer;
  transition:border-color .15s,background-color .15s,scale .12s}
.lq-a:hover{border-color:rgba(36,75,215,.45);color:var(--cobalt)}
.lq-a:active{scale:.97}
.lq-a.picked{background:var(--gloss);color:#fff;border-color:#1B3AB5}
.lq-result{text-align:center}
.lq-score{font-family:var(--font-en);font-weight:800;font-size:64px;line-height:1;color:var(--cobalt);margin:4px 0}
.lq-score small{font-size:.4em;color:var(--muted)}
.lq-band{font-size:20px;margin:6px 0}
.lq-note{color:var(--muted);font-size:15px;margin:0 0 18px}
.lq-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

/* ---------- moving phrases strip ---------- */
.marquee{direction:ltr;padding:clamp(44px,6vw,80px) 0;overflow:hidden;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:flex-start;gap:clamp(8px,1.4vw,18px)}
.marquee-row{display:flex;direction:ltr;width:max-content}
.marquee-track{display:flex;align-items:center;flex:none;gap:clamp(22px,3vw,44px);padding-inline-end:clamp(22px,3vw,44px);
  font-family:var(--font-en);font-weight:800;font-size:clamp(38px,6.2vw,88px);line-height:1.25;letter-spacing:-.02em;color:var(--ink);will-change:transform}
.marquee-track .ar{font-family:var(--font-ar);font-weight:700;letter-spacing:0;color:var(--cobalt)}
.marquee-track i{flex:none;width:.3em;height:.3em;border-radius:50% 50% 50% 3px;background:var(--cobalt)}
.marquee-row.alt .marquee-track{font-family:var(--font-ar);font-weight:600;letter-spacing:0;font-size:clamp(22px,3vw,40px);color:var(--muted)}
.marquee-row.alt .marquee-track i{background:var(--sky);width:.4em;height:.4em}
.final h2{font-size:clamp(32px,4.4vw,52px)}
.final .lead{margin-bottom:6px;color:var(--muted)}
.final .en-accent{color:var(--cobalt);text-align:center}
.phone{color:var(--muted);font-size:16px}
.phone a{color:var(--cobalt);font-family:var(--font-en);font-weight:700;text-decoration:none;border-bottom:1px solid rgba(36,75,215,.3)}

/* footer */
.site-footer{background:var(--sky-2);color:var(--muted);border-top:1px solid #CFDCFB}
.footer-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:28px 0 32px}
.brand-footer .brand-en{color:var(--ink)}
.copy{font-size:14px}
/* big wordmark closing the page */
.footer-word{margin:0;padding-top:4px;font-family:var(--font-en);font-weight:800;font-size:clamp(60px,15.5vw,230px);line-height:.78;letter-spacing:-.045em;text-align:center;white-space:nowrap;overflow:hidden;user-select:none;
  background:linear-gradient(180deg,#C5D5FF 0%,rgba(197,213,255,0) 92%);-webkit-background-clip:text;background-clip:text;color:transparent}

/* phone sticky WhatsApp */
.sticky-wa{display:none}
@media (max-width:700px){
  body{padding-bottom:84px}
  .sticky-wa{position:fixed;z-index:60;inset:auto 12px calc(12px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:center;gap:10px;min-height:56px;border-radius:16px;
    background:var(--cobalt);color:#fff;font-weight:700;text-decoration:none;box-shadow:0 12px 30px -8px rgba(16,27,50,.5);transform:translateY(140%);transition:transform .35s var(--ease-out)}
  .sticky-wa.show{transform:none}
  .site-header .wa-link span{display:none}
  .site-header .wa-link{padding:8px 12px}
}

/* ---------- interaction polish: transform/opacity only, uses the individual translate/scale
   properties so it never fights GSAP's magnetic transform on the big buttons ---------- */
.btn{position:relative;overflow:hidden;isolation:isolate;
     transition:background-color .2s,border-color .2s,color .2s,box-shadow .25s,translate .25s var(--ease-out),scale .12s var(--ease-out)}
.btn:active{transform:none;scale:.97}
.btn .ico{transition:translate .25s var(--ease-out)}
@media (hover:hover){
  .btn:hover{translate:0 -2px}
  .btn:hover .ico{translate:-3px 0}          /* RTL: the icon leans toward the reading direction */
  .btn-primary:hover{box-shadow:0 10px 20px -8px rgba(36,75,215,.55)}
}
/* a soft light sweeps across the cobalt button once per hover */
.btn-primary::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);transform:translateX(110%)}
.btn-primary:hover::after{transform:translateX(-110%);transition:transform .7s var(--ease-out)}
/* the outline button fills with sky from below */
.btn-ghost::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--sky-2);transform:scaleY(0);transform-origin:bottom;transition:transform .3s var(--ease-out)}
.btn-ghost:hover::before{transform:scaleY(1)}

/* menu links: a line grows from the reading side */
.nav a{position:relative}
.nav a::after{content:"";position:absolute;inset-inline:12px;bottom:4px;height:2px;border-radius:2px;background:var(--cobalt);transform:scaleX(0);transform-origin:right;transition:transform .3s var(--ease-out)}
.nav a:hover::after,.nav a[aria-current="true"]::after{transform:scaleX(1)}
.nav a:hover{background:none}

/* reading progress: thin cobalt line under the header */
.progress{position:absolute;inset:auto 0 0;height:2px;background:var(--cobalt);transform:scaleX(0);transform-origin:right;pointer-events:none}

/* cards: a soft light follows the cursor */
.bubble-card,.review,.mode-home{isolation:isolate}
.bubble-card::before,.review::before,.mode-home::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .35s;
  background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%),rgba(36,75,215,.09),transparent 70%)}
.bubble-card:hover::before,.review:hover::before,.mode-home:hover::before{opacity:1}
.review,.mode-home{position:relative;transition:transform .25s var(--ease-out),border-color .25s}
.review:hover{transform:translateY(-4px);border-color:rgba(36,75,215,.3)}
.chips li{transition:background-color .2s,color .2s,border-color .2s,translate .2s var(--ease-out)}
.chips li:hover{translate:0 -2px}
.step-num{transition:scale .3s cubic-bezier(.3,1.4,.5,1),rotate .3s}
.step:hover .step-num{scale:1.08;rotate:-6deg}
.faq details{overflow:hidden}
.faq summary{transition:color .2s}
.faq summary:hover{color:var(--cobalt)}


/* ---------- glass & gloss ----------
   buttons: the same glossy material as the logo (light from above, bright rim, depth below), gradients only, no blur
   cards: frosted glass over soft brand-blue light, so there is colour to see through them */
:root{--glass:linear-gradient(160deg,rgba(255,255,255,.8) 0%,rgba(255,255,255,.5) 100%);
  --glass-rim:rgba(255,255,255,.9);
  --glass-shadow:inset 0 1px 0 rgba(255,255,255,.95),0 1px 2px rgba(16,27,50,.05),0 14px 32px -18px rgba(36,75,215,.35);
  --gloss:linear-gradient(180deg,#3B64F2 0%,#244BD7 52%,#1C3CBC 100%)}
.btn-primary{background:radial-gradient(120% 90% at var(--bx,50%) var(--by,0%),rgba(255,255,255,.22),rgba(255,255,255,0) 60%),var(--gloss);
  border:1px solid #1B3AB5;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -3px 8px rgba(8,22,90,.35),0 8px 18px -8px rgba(36,75,215,.65)}
.btn-primary:hover{background:radial-gradient(120% 90% at var(--bx,50%) var(--by,0%),rgba(255,255,255,.32),rgba(255,255,255,0) 60%),var(--gloss)}
/* the glossy cap on the upper half, like the light on the logo */
.btn-primary::before{content:"";position:absolute;inset:1px 6% 52% 6%;z-index:-1;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.38),rgba(255,255,255,0))}
@media (hover:hover){.btn-primary:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -3px 8px rgba(8,22,90,.35),0 12px 24px -8px rgba(36,75,215,.7)}}
.btn-primary:active{box-shadow:inset 0 2px 6px rgba(8,22,90,.45),0 4px 10px -6px rgba(36,75,215,.6)}
/* clear glass button */
.btn-ghost{background:linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,.55));border:1px solid var(--glass-rim);color:var(--ink);
  box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 rgba(36,75,215,.08),0 1px 2px rgba(16,27,50,.05),0 8px 18px -10px rgba(16,27,50,.25)}
.btn-ghost:hover{border-color:rgba(36,75,215,.35);color:var(--cobalt)}
@media (max-width:700px){.sticky-wa{background:var(--gloss);border:1px solid #1B3AB5;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -3px 8px rgba(8,22,90,.35),0 12px 30px -8px rgba(16,27,50,.5)}}

/* frosted cards */
/* no backdrop blur on cards: the light behind them is already soft, so blur would cost every scroll frame and change nothing visible */
.bubble-card,.review,.mode-home,.faq details{background:var(--glass);border-color:var(--glass-rim);box-shadow:var(--glass-shadow)}
.faq details[open]{background:linear-gradient(160deg,rgba(255,255,255,.92),rgba(255,255,255,.7));border-color:rgba(36,75,215,.3)}
.bubble-card:hover,.review:hover{border-color:#fff;box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(16,27,50,.05),0 20px 40px -18px rgba(36,75,215,.45)}
.mode-online{box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 14px 32px -18px rgba(36,75,215,.35)}

/* soft brand light behind the glass: speech-bubble shaped glows, plain gradients (no blur filter, no motion) */
#lessons,#where,#reviews,#faq{position:relative;isolation:isolate;overflow:clip}
#lessons::before,#lessons::after,#where::before,#reviews::before,#faq::before{content:"";position:absolute;z-index:-1;pointer-events:none;border-radius:50% 50% 50% 14%}
#lessons::before{width:560px;height:440px;top:30%;inset-inline-start:-6%;background:radial-gradient(closest-side,rgba(36,75,215,.20),rgba(36,75,215,0))}
#lessons::after{width:480px;height:400px;top:22%;inset-inline-end:-4%;background:radial-gradient(closest-side,rgba(120,160,255,.30),rgba(120,160,255,0));border-radius:50% 50% 14% 50%}
#where::before{width:620px;height:460px;top:28%;inset-inline-start:22%;background:radial-gradient(closest-side,rgba(36,75,215,.16),rgba(36,75,215,0))}
#reviews::before{width:600px;height:420px;top:35%;left:50%;translate:-50% 0;background:radial-gradient(closest-side,rgba(36,75,215,.18),rgba(36,75,215,0))}
#faq::before{width:520px;height:420px;top:32%;inset-inline-end:-8%;background:radial-gradient(closest-side,rgba(120,160,255,.28),rgba(120,160,255,0))}
/* ---------- trust strip: four glass tiles with a luminous rim ---------- */
@property --rim{syntax:'<angle>';inherits:false;initial-value:140deg}
.trust{background:none;border:0;padding:clamp(8px,2vw,20px) 0 clamp(20px,3vw,36px);position:relative;isolation:isolate}
.trust::before{content:"";position:absolute;z-index:-1;inset:-10% 10%;pointer-events:none;
  background:radial-gradient(50% 60% at 50% 50%,rgba(36,75,215,.16),rgba(36,75,215,0) 70%)}
.trust-row{gap:clamp(10px,1.4vw,16px)}
.trust-row li,.trust-row li+li,.trust-row li:nth-child(n){border:0}
.trust-row li{position:relative;isolation:isolate;padding:24px 10px 22px;border-radius:24px 24px 24px 6px;background:var(--glass);box-shadow:var(--glass-shadow);
  transition:translate .35s var(--ease-out),box-shadow .35s}
/* the rim: a 1px light that runs round the tile and turns when you hover */
.trust-row li::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.2px;pointer-events:none;
  background:conic-gradient(from var(--rim),rgba(255,255,255,1),rgba(36,75,215,.55) 18%,rgba(255,255,255,.9) 32%,rgba(170,195,255,.6) 55%,rgba(36,75,215,.45) 75%,rgba(255,255,255,1));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);transition:--rim .9s var(--ease-out)}
/* a soft gloss on the upper half, like the logo */
.trust-row li::after{content:"";position:absolute;z-index:-1;inset:1px 1px 55% 1px;border-radius:24px 24px 0 0;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,255,255,0))}
@media (hover:hover){.trust-row li:hover{translate:0 -4px;box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(16,27,50,.05),0 20px 40px -18px rgba(36,75,215,.45)}
  .trust-row li:hover::before{--rim:320deg}}
/* rating celebration (js/counter.js): stars light up one by one, the rim sweeps round, a soft glow breathes once */
.trust .stars{font-size:1.1em}
.trust .stars .star{display:inline-block;will-change:transform}
.trust .stars.dim .star{color:#C9D0DE}
.trust .spark{position:absolute;width:5px;height:5px;border-radius:50%;background:#FFC83D;box-shadow:0 0 6px rgba(255,190,40,.8);pointer-events:none}
@keyframes rimSweep{from{--rim:140deg}to{--rim:860deg}}
@keyframes tileGlow{0%{box-shadow:var(--glass-shadow)}35%{box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(255,200,61,.35),0 18px 44px -14px rgba(245,179,1,.45)}100%{box-shadow:var(--glass-shadow)}}
.trust-row li.celebrate{animation:tileGlow 1.6s ease-out}
.trust-row li.celebrate::before{animation:rimSweep 1.4s cubic-bezier(.2,.8,.2,1)}
.num number-flow{--number-flow-char-height:1.1em;font-variant-numeric:tabular-nums}
@media (max-width:700px){.trust-row{grid-template-columns:repeat(2,1fr)}}

/* scroll reveal (content stays visible without JS) */
.js.no-gsap .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}
.js.no-gsap .reveal.in{opacity:1;transform:none}
/* Lenis smooth scroll */
html.lenis,html.lenis body{height:auto}
/* Lenis does the smoothing itself: native smooth scrolling must be off or the two fight every frame */
html.lenis,.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}


@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js.no-gsap .reveal{opacity:1;transform:none;transition:none}
  .post-inner,.post-ico,.trust-row li,.card-ico,.mode-img,.phrase .face,.bubble-card,.btn,.sticky-wa,.btn .ico,.btn-ghost::before,.nav a::after,.review,.chips li,.step-num{transition:none}
  .btn-primary::after{display:none}
}

/* teacher photo set from the admin panel fills the portrait frame */
.portrait img.photo{width:100%;height:100%;object-fit:cover;border-radius:inherit;filter:none;opacity:1}
/* anything marked hidden (e.g. a section hidden from the admin panel) stays hidden even if its class sets a display */
[hidden]{display:none!important}
