/* Tap Tuition: clean and professional. White, ink, one emerald accent, Open Sans. */
:root{
  --bg:#FFFFFF; --soft:#F4F6F5; --ink:#111312; --muted:#575D5A; --line:#E1E5E3;
  --accent:#0E7C5A; --accent-dark:#0A6247; --accent-soft:#E6F2EC; --on-accent:#FFFFFF;
  --amber:#8A5A00; --amber-soft:#FCF1DA; --red:#A3291C; --red-soft:#FBE7E4;
  --font:'Open Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --r:10px; --r-lg:16px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:80px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
main{overflow-x:clip}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1rem/1.65 var(--font);-webkit-text-size-adjust:100%}
h1,h2,h3{margin:0;line-height:1.1;letter-spacing:-.025em;text-wrap:balance;font-weight:700}
p{margin:0}
a{color:inherit}
img{max-width:100%;display:block}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}
.wrap{width:min(1180px,100%);margin-inline:auto;padding-inline:max(20px,5vw)}
.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:12px;background:#fff;padding:8px 12px;z-index:20}
.muted{color:var(--muted)}
.small{font-size:.875rem}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* header */
.top{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.95);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px 24px;padding-block:14px;flex-wrap:wrap}
.logo{display:flex;flex-direction:column;text-decoration:none;line-height:1.1}
.logo b{font-weight:800;font-size:1.2rem;letter-spacing:-.02em}
.logo small{font-size:.75rem;color:var(--muted);font-weight:500}
.nav{display:flex;align-items:center;gap:6px 22px;flex-wrap:wrap}
.nav a{text-decoration:none;font-weight:600;font-size:.95rem}
.nav a:not(.btn):hover,.nav a[aria-current="page"]{color:var(--accent)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 22px;border-radius:var(--r);border:1.5px solid var(--accent);background:var(--accent);color:var(--on-accent);font:700 1rem/1.2 var(--font);text-decoration:none;cursor:pointer;text-align:center;transition:background .15s,border-color .15s}
.btn:hover{background:var(--accent-dark);border-color:var(--accent-dark)}
.btn.ghost{background:#fff;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--ink)}
.btn.sm{min-height:40px;padding:8px 16px;font-size:.92rem}
.btn.block{width:100%}
.btn[disabled]{opacity:.6;cursor:progress}

/* hero */
.hero{padding-block:clamp(36px,6vw,72px) clamp(40px,6vw,80px)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:40px 56px;align-items:center}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr}}
.tagline{font-weight:700;color:var(--accent);margin-bottom:14px}
.hero h1{font-size:clamp(2.4rem,5.6vw,4.2rem);margin-bottom:20px;max-width:15ch}
.lead{font-size:clamp(1.05rem,1.9vw,1.2rem);color:var(--muted);max-width:34em}
.nots{margin-top:14px;font-weight:600;max-width:34em}
.ctas{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.photo{border-radius:var(--r-lg);overflow:hidden;background:var(--soft);position:relative;margin:0}
.photo img{width:100%;height:100%;object-fit:cover}
.hero .photo{aspect-ratio:4/5;max-height:620px}
@media (max-width:900px){.hero .photo{aspect-ratio:4/3;order:-1}}
.photo figcaption{position:absolute;left:12px;bottom:12px;right:12px;background:rgba(255,255,255,.94);border-radius:var(--r);padding:10px 14px;font-size:.88rem;font-weight:600;display:flex;gap:10px;align-items:center}
.dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none}

/* value strip */
.strip{border-block:1px solid var(--line);background:var(--soft)}
.strip ul{list-style:none;margin:0;padding-block:16px;display:flex;flex-wrap:wrap;gap:8px 36px;justify-content:center;font-weight:700}
.strip li{display:flex;gap:10px;align-items:center}
.strip svg{flex:none}

/* search panel */
.search{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(18px,3vw,28px);box-shadow:0 1px 2px rgba(17,19,18,.04),0 12px 32px rgba(17,19,18,.06);transition:box-shadow .3s}
.search.flash{box-shadow:0 0 0 4px var(--accent-soft),0 12px 32px rgba(17,19,18,.08)}
.search h2{font-size:1.35rem;margin-bottom:4px}
.search .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:12px;margin-top:18px}
@media (max-width:900px){.search .grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.search .grid{grid-template-columns:1fr}}
.search .actions{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;justify-content:space-between;margin-top:16px}
.toggle{display:inline-flex;align-items:center;gap:10px;font-weight:600;cursor:pointer}
.toggle input{position:absolute;opacity:0;width:1px;height:1px}
.toggle .sw{width:44px;height:26px;border-radius:26px;background:#CDD3D0;position:relative;transition:background .15s;flex:none}
.toggle .sw::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .15s}
.toggle input:checked + .sw{background:var(--accent)}
.toggle input:checked + .sw::after{transform:translateX(18px)}
.toggle input:focus-visible + .sw{outline:3px solid var(--accent);outline-offset:2px}
.result{margin-top:18px;border-top:1px solid var(--line);padding-top:18px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}
.chip{background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:.85rem;font-weight:600}
.inline{display:flex;gap:10px;flex-wrap:wrap}
.inline input[type=email]{flex:1 1 220px}

/* sections */
.sec{padding-block:clamp(56px,8vw,104px)}
.sec.soft{background:var(--soft)}
.sec.line{border-top:1px solid var(--line)}
.sec h2{font-size:clamp(1.8rem,4vw,2.7rem);margin-bottom:12px}
.intro{color:var(--muted);max-width:40em;font-size:1.05rem}
.head{margin-bottom:36px}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px 64px;align-items:center}
.split.start{align-items:start}
@media (max-width:900px){.split{grid-template-columns:1fr}}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 48px}
@media (max-width:820px){.grid3,.grid2{grid-template-columns:1fr}}
.item{border-top:1px solid var(--line);padding-top:18px}
.item h3{font-size:1.12rem;margin-bottom:6px;letter-spacing:-.01em}
.item p{color:var(--muted)}
.n{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--accent-soft);color:var(--accent-dark);font-weight:800;font-size:.9rem;margin-bottom:12px;font-variant-numeric:tabular-nums}

/* problem cards */
.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media (max-width:900px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.cards{grid-template-columns:1fr}}
.pcard{text-align:left;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;cursor:pointer;font:inherit;color:inherit;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,transform .15s}
.pcard:hover{border-color:var(--accent);transform:translateY(-2px)}
.pcard strong{font-size:1.08rem}
.pcard span{color:var(--muted);font-size:.95rem}
.pcard em{font-style:normal;color:var(--accent);font-weight:700;font-size:.9rem;margin-top:6px}
.week{margin-top:14px;display:flex;flex-wrap:wrap;gap:16px 24px;align-items:center;justify-content:space-between;background:var(--ink);color:#fff;border-radius:var(--r-lg);padding:22px 24px}
.week h3{font-size:1.25rem;margin-bottom:4px}
.week p{color:#C8CDCA}
.week .btn{background:#fff;color:var(--ink);border-color:#fff}

/* tabs */
.tabs{display:inline-flex;background:var(--soft);border-radius:999px;padding:4px;margin-bottom:28px;flex-wrap:wrap}
.tabs button{border:0;background:none;font:700 .95rem var(--font);padding:10px 18px;border-radius:999px;cursor:pointer;color:var(--muted)}
.tabs button[aria-selected="true"]{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.sec.soft .tabs{background:#fff}
.sec.soft .tabs button[aria-selected="true"]{background:var(--ink);color:#fff}

/* badges */
.badges{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0}
.badge{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:9px 16px;font:700 .92rem var(--font);cursor:pointer;display:inline-flex;gap:8px;align-items:center}
.badge[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-dark)}
.badge svg{flex:none}
.explain{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;min-height:120px}
.explain h3{font-size:1.1rem;margin-bottom:6px}
.explain p{color:var(--muted)}

/* learning journey example */
.note{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;box-shadow:0 12px 32px rgba(17,19,18,.06)}
.note .meta{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.85rem;color:var(--muted);margin-bottom:14px}
.note dl{margin:0;display:grid;gap:10px}
.note dt{font-weight:700;font-size:.9rem}
.note dd{margin:0;color:var(--muted)}
.levels{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.lv{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;font:700 .85rem var(--font);cursor:pointer}
.lv[aria-pressed="true"][data-l="support"]{background:var(--red-soft);border-color:var(--red);color:var(--red)}
.lv[aria-pressed="true"][data-l="developing"]{background:var(--amber-soft);border-color:var(--amber);color:var(--amber)}
.lv[aria-pressed="true"][data-l="secure"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-dark)}
.lvtext{margin-top:10px;font-size:.92rem;color:var(--muted);min-height:3em}
.stack{display:grid;gap:20px}
.photo.wide{aspect-ratio:3/2}
.photo.tall{aspect-ratio:4/5}

/* forms */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(20px,4vw,32px)}
form{display:flex;flex-direction:column;gap:16px}
.field{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.9rem}
.field .hint{font-weight:400;color:var(--muted)}
input[type=text],input[type=email],input[type=tel],input[type=number],select{font:400 1rem var(--font);min-height:48px;padding:10px 14px;border:1.5px solid var(--line);border-radius:var(--r);background:#fff;color:var(--ink);width:100%}
input:focus,select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:560px){.row2{grid-template-columns:1fr}}
.check{display:flex;gap:10px;align-items:flex-start;font-size:.92rem;font-weight:400}
.check input{width:20px;height:20px;margin-top:3px;accent-color:var(--accent);flex:none}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.err{color:var(--red);font-size:.9rem;min-height:1.2em}
.done{background:var(--accent-soft);color:var(--accent-dark);border-radius:var(--r);padding:16px;font-weight:600}

/* dark band */
.band{background:var(--ink);color:#fff}
.band .intro,.band .muted{color:#C8CDCA}
.band .btn{background:#fff;color:var(--ink);border-color:#fff}
.band .btn.ghost{background:transparent;color:#fff;border-color:#4A504D}
.price{display:flex;gap:8px 40px;flex-wrap:wrap;margin:22px 0 26px}
.price b{display:block;font-size:clamp(2rem,5vw,2.8rem);letter-spacing:-.03em;line-height:1.1}
.list{margin:0;padding:0;list-style:none}
.list li{border-top:1px solid var(--line);padding:12px 0;display:flex;gap:12px;align-items:flex-start}
.list li svg{flex:none;margin-top:4px}

/* calculator */
.calc{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(20px,3vw,28px)}
.calc .row2{margin-bottom:6px}
.calc output{display:block;font-size:clamp(1.8rem,4vw,2.4rem);font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.calc .out{display:grid;grid-template-columns:1fr 1fr;gap:16px;border-top:1px solid var(--line);padding-top:16px;margin-top:10px}

/* faq */
.faq{max-width:820px}
details{border-top:1px solid var(--line);padding:18px 0}
details:last-of-type{border-bottom:1px solid var(--line)}
summary{cursor:pointer;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:16px;font-size:1.05rem}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";color:var(--accent);font-weight:800;font-size:1.2rem;line-height:1}
details[open] summary::after{content:"\2212"}
details p{color:var(--muted);margin-top:10px;max-width:44em}

/* prose */
.prose{max-width:44em;padding-block:48px 80px}
.prose h1{font-size:2.4rem;margin-bottom:12px}
.prose h2{font-size:1.3rem;margin:32px 0 8px}
.prose ul{padding-left:1.2em}

/* footer */
.foot{border-top:1px solid var(--line);padding-block:44px 32px;font-size:.9rem;color:var(--muted)}
.foot .cols{display:grid;grid-template-columns:minmax(0,2fr) repeat(2,minmax(0,1fr));gap:28px}
@media (max-width:760px){.foot .cols{grid-template-columns:1fr}}
.foot strong{color:var(--ink);display:block;margin-bottom:8px}
.foot a{display:block;text-decoration:none;padding:3px 0}
.foot a:hover{color:var(--accent)}
.credits{margin-top:28px;padding-top:16px;border-top:1px solid var(--line);font-size:.8rem}

/* ---------- cinematic scroll (progressive: browsers without scroll timelines show the still page) ---------- */
@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .hero-grid > div:first-child{animation:tt-drift linear both;animation-timeline:scroll(root);animation-range:0 75vh}
    .hero .photo{animation:tt-tilt-out linear both;animation-timeline:scroll(root);animation-range:0 90vh;transform-origin:50% 0}
    .hero .photo img{animation:tt-zoom linear both;animation-timeline:scroll(root);animation-range:0 90vh}
    .search,.pcard,.week,.item,.note,.explain,.calc,.card,.badges,details,.price{animation:tt-rise linear both;animation-timeline:view();animation-range:entry 0% cover 28%}
    .sec h2,.sec .intro{animation:tt-rise-soft linear both;animation-timeline:view();animation-range:entry 0% cover 25%}
    .sec .photo{animation:tt-photo-in linear both;animation-timeline:view();animation-range:entry 0% cover 35%}
    .sec .photo img{animation:tt-parallax linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
    .band{animation:tt-open linear both;animation-timeline:view();animation-range:entry 0% cover 35%}
    .strip li{animation:tt-rise-soft linear both;animation-timeline:view();animation-range:entry 0% cover 20%}
  }
}
@keyframes tt-drift{to{transform:translateY(-60px);opacity:.15}}
@keyframes tt-zoom{from{transform:scale(1.12)}to{transform:scale(1)}}
@keyframes tt-tilt-out{to{transform:perspective(1200px) rotateX(8deg) scale(.94);opacity:.6}}
@keyframes tt-rise{from{opacity:0;transform:perspective(900px) translateY(70px) rotateX(16deg) scale(.96)}to{opacity:1;transform:none}}
@keyframes tt-rise-soft{from{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}
@keyframes tt-photo-in{from{opacity:0;transform:perspective(1100px) rotateY(-10deg) translateX(40px) scale(.92)}to{opacity:1;transform:none}}
@keyframes tt-parallax{from{transform:translateY(-7%) scale(1.16)}to{transform:translateY(7%) scale(1.16)}}
@keyframes tt-open{from{clip-path:inset(4% 5% round 28px)}to{clip-path:inset(0 0 round 0)}}
.pcard{transform-style:preserve-3d;will-change:transform}
.pcard.tilting{transition:transform .08s linear}

/* ---------- marketplace: search results, profiles, booking ---------- */
.demo-bar{background:#FFF4D6;color:#5C4300;border-bottom:1px solid #F1DFA6;font-size:.88rem;font-weight:600}
.demo-bar .wrap{display:flex;gap:8px 16px;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-block:8px}
.demo-bar a{color:inherit}
.chip-demo{display:inline-block;background:#FFF4D6;color:#5C4300;border:1px solid #F1DFA6;border-radius:999px;padding:1px 9px;font-size:.75rem;font-weight:700;vertical-align:middle}
.page-head{padding-block:28px 8px}
.page-head h1{font-size:clamp(1.8rem,4vw,2.6rem)}
.filters{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:12px;margin-top:18px}
.seg{display:inline-flex;background:var(--soft);border-radius:999px;padding:4px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:none;font:700 .92rem var(--font);padding:8px 16px;border-radius:999px;cursor:pointer;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--ink);color:#fff}
.bar{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;justify-content:space-between;margin-top:18px}
.count{font-weight:700}
.results{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:16px;margin-top:16px;padding-bottom:64px}
.tcard{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:18px;display:flex;flex-direction:column;gap:12px;text-decoration:none;color:inherit;transition:border-color .15s,box-shadow .15s,transform .15s}
.tcard:hover{border-color:var(--accent);box-shadow:0 10px 28px rgba(17,19,18,.08);transform:translateY(-2px)}
.tc-top{display:flex;gap:14px;align-items:flex-start}
.avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;flex:none;background:var(--accent-soft);color:var(--accent-dark);display:grid;place-items:center;font-weight:800;font-size:1.4rem}
.avatar.lg{width:112px;height:112px;font-size:2rem}
.tc-name{font-weight:800;font-size:1.12rem;letter-spacing:-.01em}
.tc-head{color:var(--muted);font-size:.93rem;line-height:1.45}
.labels{display:flex;gap:6px;flex-wrap:wrap}
.label{font-size:.76rem;font-weight:700;background:var(--accent-soft);color:var(--accent-dark);border-radius:999px;padding:3px 10px}
.meta{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--muted);font-size:.88rem}
.tc-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px;margin-top:auto}
.rate{font-weight:800;font-size:1.05rem;font-variant-numeric:tabular-nums}
.rate small{font-weight:500;color:var(--muted);font-size:.8rem}
.mode{font-size:.78rem;font-weight:700;border-radius:999px;padding:4px 10px;white-space:nowrap}
.mode.instant{background:var(--accent);color:#fff}
.mode.request{border:1.5px dashed var(--accent);color:var(--accent-dark)}
.next{font-size:.88rem;font-weight:700}
.next.none{color:var(--muted);font-weight:500}
.skel{background:linear-gradient(90deg,var(--soft),#eceeed,var(--soft));background-size:200% 100%;animation:sk 1.2s linear infinite;border-radius:var(--r-lg);min-height:210px}
@keyframes sk{to{background-position:-200% 0}}
.empty{border:1.5px dashed var(--line);border-radius:var(--r-lg);padding:28px;color:var(--muted);grid-column:1/-1}
.empty h2{font-size:1.3rem;color:var(--ink);margin-bottom:6px}

.profile{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:32px;align-items:start;padding-block:24px 72px}
@media (max-width:900px){.profile{grid-template-columns:minmax(0,1fr)}}
.profile>*{min-width:0}
.p-head{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.p-head h1{font-size:clamp(1.8rem,4vw,2.5rem)}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:20px}
.panel h2{font-size:1.15rem;margin-bottom:8px}
.facts2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 24px}
@media (max-width:560px){.facts2{grid-template-columns:1fr}}
.facts2 dt{font-size:.82rem;color:var(--muted);font-weight:600}
.facts2 dd{margin:2px 0 0;font-weight:600}
.bookbox{position:sticky;top:84px}
.days{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;scroll-snap-type:x mandatory}
.day{flex:none;scroll-snap-align:start;width:64px;border:1.5px solid var(--line);border-radius:12px;background:#fff;padding:8px 4px;text-align:center;cursor:pointer;font:600 .8rem/1.25 var(--font);color:var(--ink)}
.day b{display:block;font-size:1.15rem}
.day i{display:block;font-style:normal;color:var(--accent-dark);font-size:.72rem;margin-top:2px}
.day[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.day[aria-pressed="true"] i{color:#BFE6D5}
.day:disabled{opacity:.4;cursor:default}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;margin-top:6px}
.slot{min-height:46px;border:1.5px solid var(--accent);border-radius:10px;background:#fff;color:var(--accent-dark);font:700 .95rem var(--font);cursor:pointer;font-variant-numeric:tabular-nums}
.slot:hover,.slot[aria-pressed="true"]{background:var(--accent);color:#fff}
.modenote{border-radius:var(--r);padding:10px 12px;font-size:.88rem;margin-top:12px}
.modenote.instant{background:var(--accent-soft);color:var(--accent-dark)}
.modenote.request{background:var(--amber-soft);color:var(--amber)}
dialog.sheet{border:0;border-radius:18px;padding:0;width:min(520px,calc(100% - 24px));max-height:calc(100% - 24px);box-shadow:0 24px 64px rgba(0,0,0,.25)}
dialog.sheet::backdrop{background:rgba(17,19,18,.45)}
.sheet-in{padding:22px;display:flex;flex-direction:column;gap:14px}
.sheet-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.sheet-top h2{font-size:1.35rem}
.x{border:0;background:var(--soft);width:36px;height:36px;border-radius:50%;font-size:1.2rem;cursor:pointer;flex:none}
.summary{margin-bottom:16px;background:var(--soft);border-radius:var(--r);padding:12px 14px;font-weight:600;font-size:.95rem}
.codebox{background:#FFF4D6;color:#5C4300;border-radius:var(--r);padding:10px 14px;font-size:.9rem}
.codebox b{font-size:1.4rem;letter-spacing:.2em;display:block;font-variant-numeric:tabular-nums}
.code-in{font:700 1.6rem var(--font)!important;letter-spacing:.4em;text-align:center}
.status{border-radius:var(--r);padding:14px;font-weight:600}
.status.ok{background:var(--accent-soft);color:var(--accent-dark)}
.status.wait{background:var(--amber-soft);color:var(--amber)}
.blist{display:flex;flex-direction:column}
.bitem{display:flex;gap:12px 16px;align-items:center;justify-content:space-between;flex-wrap:wrap;border-top:1px solid var(--line);padding:14px 0}
.bitem:last-child{border-bottom:1px solid var(--line)}
.bitem .who{display:flex;gap:12px;align-items:center;min-width:0}
.bitem .avatar{width:44px;height:44px;font-size:1rem}
.pill{font-size:.78rem;font-weight:700;border-radius:999px;padding:4px 10px}
.pill.ok{background:var(--accent-soft);color:var(--accent-dark)}
.pill.wait{background:var(--amber-soft);color:var(--amber)}
.pill.off{background:var(--soft);color:var(--muted)}
.btn.danger{background:#fff;color:var(--red);border-color:#E7B8B2}
.btn.danger:hover{border-color:var(--red)}

/* ---------- centred layout (Oct 2026): headings, intros, cards and actions sit on the centre line.
   Form fields, legal text and long answers stay left-aligned so they're easy to read and fill in. ---------- */
.hero-grid>div:first-child,.head,.sec h2,.intro,.page-head,.week,.item,.pcard,.explain,.tcard,.note .meta,.search h2,.search>p,.price,.band,.split>div:not(.photo):not(.card):not(.calc):not(.note){text-align:center}
.hero h1,.lead,.nots,.intro,.head,.page-head p{margin-inline:auto}
.ctas,.badges,.levels,.chips,.inline,.labels,.meta,.search .actions,.bar,.price,.week,.tc-foot,.nav,.p-head,.strip ul{justify-content:center}
.tabs,.seg{display:flex;width:fit-content;max-width:100%;margin-inline:auto}
.tabs{margin-bottom:28px}
.week{flex-direction:column}
.pcard{align-items:center}
.item .n{margin-inline:auto}
.list li{justify-content:center;text-align:center}
.tc-top{flex-direction:column;align-items:center}
.p-head{flex-direction:column;text-align:center}
.p-head+.labels,.profile .labels{justify-content:center}
.profile>.stack>a.small{justify-self:center}
.top .wrap{justify-content:center;flex-direction:column}
.logo{align-items:center}
.foot,.foot .cols{text-align:center}
.credits{text-align:center}
.faq,.prose{margin-inline:auto}
.prose h1,.prose h2{text-align:center}
.demo-bar .wrap{justify-content:center;text-align:center}
.explain,.note{margin-inline:auto}

/* teacher membership page */
.join{max-width:560px;margin-inline:auto;text-align:center}
.join h1{font-size:clamp(1.8rem,4vw,2.4rem);text-align:center}
.join-plan{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:20px}
.join-plan div{background:var(--soft);border-radius:var(--r);padding:12px 8px}
.join-plan b{display:block;font-size:1.25rem;font-weight:800}
.join-plan span{display:block;font-size:.8rem;color:var(--muted)}
@media (max-width:340px){.join-plan{grid-template-columns:minmax(0,1fr)}}
.join-plan b{font-size:clamp(1rem,4.5vw,1.25rem)}
.note-warn{background:var(--amber-soft);color:var(--amber);border-radius:var(--r);padding:16px;font-weight:600}

/* ---------- cinematic scroll fallback for browsers without scroll timelines (e.g. older Safari) ---------- */
.js-motion .tt-r{opacity:0;transform:perspective(900px) translateY(70px) rotateX(16deg) scale(.96);transition:opacity .9s ease,transform 1s cubic-bezier(.2,.7,.2,1)}
.js-motion .tt-r.soft{transform:translateY(32px)}
.js-motion .tt-r.photo-in{transform:perspective(1100px) rotateY(-10deg) translateX(40px) scale(.92)}
.js-motion .tt-r.in{opacity:1;transform:none}
.js-motion .sec .photo img{will-change:transform}
