/* ── AQLI vendored fonts · 8 August 2026 ──────────────────────────────────
   Offline-first. Nothing here is fetched from a third party.
   font-display:block on the Ge'ez faces — a fallback with no Ethiopic glyphs
   renders empty boxes, and blank-then-correct is better than boxes-then-correct.
   ───────────────────────────────────────────────────────────────────────── */

/* noto-serif-ethiopic-regular - ethiopic_latin */
@font-face {
  font-display: block;
  font-family: 'Noto Serif Ethiopic';
  font-style: normal;
  font-weight: 400;
  src: url('../fonts/noto-serif-ethiopic-v32-ethiopic_latin-regular.woff2') format('woff2');
}
/* noto-serif-ethiopic-700 - ethiopic_latin */
@font-face {
  font-display: block;
  font-family: 'Noto Serif Ethiopic';
  font-style: normal;
  font-weight: 700;
  src: url('../fonts/noto-serif-ethiopic-v32-ethiopic_latin-700.woff2') format('woff2');
}

/* nunito-regular - latin */
@font-face {
  font-display: swap;
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 400;
  src: url('../fonts/nunito-v32-latin-regular.woff2') format('woff2');
}
/* nunito-600 - latin */
@font-face {
  font-display: swap;
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600;
  src: url('../fonts/nunito-v32-latin-600.woff2') format('woff2');
}
/* nunito-700 - latin */
@font-face {
  font-display: swap;
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  src: url('../fonts/nunito-v32-latin-700.woff2') format('woff2');
}
/* nunito-800 - latin */
@font-face {
  font-display: swap;
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  src: url('../fonts/nunito-v32-latin-800.woff2') format('woff2');
}
/* AQLI v5.0 — extracted stylesheet. Brand: Vol III. Motion: Cultural Motion tokens. */

  :root{
  /* Design System v1.0 (RC-1) — canonical scale, additive. New work consumes these;
     legacy-value consolidation is v6.2 work (11 radii / 48 font-sizes measured). */
  --r-pill:999px; --r-lg:18px; --r-md:16px; --r-sm:12px; --r-xs:8px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:22px; --sp-6:32px;
  --fs-xs:.72rem; --fs-sm:.85rem; --fs-base:1rem; --fs-lg:1.15rem; --fs-xl:1.5rem; --fs-2xl:2rem;
  --sh-1:0 2px 8px rgba(18,59,51,.06); --sh-2:0 8px 26px rgba(18,59,51,.12);

    --deep:#123B33; --deeper:#0C2B25; --card:#1A4A40;
    --sand:#E9C87F; --clay:#C96F4A; --cream:#F7F2E7; --sage:#7FA492;
    --ink:#1A2E29; --body:#3A4A45; --white:#FFFFFF;
  }
  *{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  html{font-size:18px} /* elder-first base; text-size control raises it */
  html.txt-lg{font-size:21px} html.txt-xl{font-size:24px}
  body{font-family:'Nunito',sans-serif;background:var(--cream);color:var(--body);line-height:1.6;min-height:100vh}
  .ethiopic{font-family:'Noto Serif Ethiopic',serif}
  button{font-family:inherit;font-size:1rem;cursor:pointer;border:none;background:none}
  :focus-visible{outline:3px solid var(--sand);outline-offset:2px;border-radius:6px}
  @media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}

  /* ---------- header ---------- */
  header{background:var(--deep);color:var(--cream);padding:calc(env(safe-area-inset-top) + 12px) 14px 12px;display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:50;box-shadow:0 1px 0 rgba(233,200,127,.28)}
  .brand{display:flex;align-items:center;gap:10px;color:var(--cream);padding:4px 6px;border-radius:12px;min-height:44px}
  .brand .mark{width:32px;height:35px;flex:none}
  .brand .name{font-family:'Noto Serif Ethiopic',serif;font-weight:700;font-size:1.2rem;letter-spacing:.16em;color:var(--cream)}
  .brand .ge{font-family:'Noto Serif Ethiopic',serif;font-size:.8rem;color:var(--sand);margin-left:2px}
  .hbtns{margin-left:auto;display:flex;gap:8px}
  .hbtn{background:var(--card);color:var(--sand);font-weight:800;padding:9px 13px;border-radius:999px;min-height:44px;min-width:44px}

  main{max-width:760px;margin:0 auto;padding:22px 18px 110px}

  /* ---------- language picker ---------- */
  .lang-screen{min-height:100vh;background:var(--deep);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 24px;text-align:center;position:fixed;inset:0;z-index:200;overflow:auto}
  .lang-screen .mark{width:96px;height:104px;margin-bottom:20px}
  .lang-screen h1{font-family:'Noto Serif Ethiopic',serif;color:var(--cream);font-size:2.2rem;letter-spacing:.22em;padding-left:.22em}
  .lang-screen .ge-big{font-family:'Noto Serif Ethiopic',serif;color:var(--sand);font-size:1.3rem;margin:4px 0 8px}
  .lang-screen p{color:var(--sage);margin-bottom:30px;font-size:1.05rem}
  .lang-btn{display:block;width:min(340px,86vw);margin:12px auto;padding:20px;border-radius:18px;background:var(--card);color:var(--cream);font-size:1.5rem;font-weight:700;border:2px solid var(--sand);min-height:72px}
  .lang-btn small{display:block;font-size:.8rem;color:var(--sage);font-weight:600;letter-spacing:.1em}

  /* ---------- shared ---------- */
  .view{display:none}.view.active{display:block}
  h2.pagetitle{font-family:'Noto Serif Ethiopic',serif;color:var(--ink);font-size:1.7rem;margin-bottom:6px}
  h2.pagetitle::after{content:"";display:block;width:44px;height:3px;background:var(--clay);border-radius:2px;margin-top:8px}
  .pagesub{color:var(--clay);font-style:italic;margin-bottom:20px}
  .card{background:var(--white);border:1px solid #EDE6D4;border-radius:18px;padding:20px;margin-bottom:14px;box-shadow:0 1px 2px rgba(18,59,51,.05),0 8px 24px rgba(18,59,51,.06);transition:transform .12s ease}
  .card[data-nav]{position:relative;padding-right:48px}
  .card[data-nav]::after{content:"→";position:absolute;right:18px;top:50%;transform:translateY(-50%);color:var(--clay);font-weight:800;font-size:1.25rem}
  .card[data-nav]:active{transform:scale(.985)}
  .card h3{font-family:'Noto Serif Ethiopic',serif;color:var(--deep);font-size:1.15rem;margin-bottom:6px}
  .card[data-nav]{cursor:pointer}
  .bigbtn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:18px;border-radius:16px;background:var(--deep);color:var(--cream);font-size:1.15rem;font-weight:800;min-height:60px;margin-top:12px}
  .bigbtn.sand{background:var(--sand);color:var(--deep)}
  .bigbtn:active,.callbtn:active{transform:scale(.985)}
  .bigbtn,.callbtn{transition:transform .12s ease}
  .chip{display:inline-block;background:var(--deep);color:var(--sand);font-size:.68rem;font-weight:800;letter-spacing:.14em;padding:5px 12px;border-radius:999px;margin-bottom:10px}
  .chip.grow{background:var(--white);color:var(--sage);border:1px solid var(--sage)}
  .chip.done{background:var(--sand);color:var(--deep)}
  .listenbtn{display:inline-flex;align-items:center;gap:8px;background:var(--cream);border:2px solid var(--sage);color:var(--deep);font-weight:800;border-radius:999px;padding:10px 18px;min-height:48px;margin-top:12px}

  /* ---------- search ---------- */
  .search{width:100%;padding:16px 18px;border-radius:16px;border:2px solid var(--sage);background:var(--white);font-size:1.05rem;font-family:inherit;margin-bottom:18px;color:var(--ink)}
  .search:focus{outline:3px solid var(--sand);border-color:var(--deep)}
  .hero{background:linear-gradient(160deg,var(--deep) 0%,var(--card) 100%);border-radius:22px;padding:26px 22px;margin-bottom:18px;box-shadow:0 10px 28px rgba(18,59,51,.18)}
  .hero .hw{font-family:'Noto Serif Ethiopic',serif;color:var(--cream);font-size:1.6rem;font-weight:700;line-height:1.35}
  .hero .ht{color:var(--sand);font-size:1.02rem;margin-top:6px;font-style:italic}

  /* ---------- rooms grid ---------- */
  .rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
  .room{background:var(--white);border:1.5px solid #E3DCC9;border-radius:16px;padding:16px 12px;text-align:center;min-height:104px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
  .room.open{background:var(--deep);border-color:var(--deep);border-top:3px solid var(--sand);color:var(--cream);cursor:pointer;transition:transform .12s ease}
  .room.open:active{transform:scale(.96)}
  .room:not(.open){border-style:dashed}
  .room .rn{font-weight:800;font-size:.98rem}
  .room .st{font-size:.66rem;font-weight:800;letter-spacing:.12em}
  .room.open .st{color:var(--sand)} .room:not(.open) .st{color:var(--sage)}
  .room:not(.open){opacity:.85}

  /* ---------- resources ---------- */
  .res .card{display:flex;flex-direction:column;gap:6px}
  .res .cat{font-size:.7rem;font-weight:800;letter-spacing:.16em;color:var(--clay)}
  .res .ver{font-size:.78rem;color:var(--sage)}
  .callbtn{display:flex;align-items:center;justify-content:center;background:var(--deep);color:var(--cream);font-weight:800;font-size:1.2rem;border-radius:14px;padding:16px;min-height:58px;text-decoration:none;margin-top:8px}
  .callbtn span{color:var(--sand);margin-right:8px}

  /* ---------- kids fidel ---------- */
  .fidel{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:10px}
  .fidel button{background:var(--white);border:1.5px solid #E3DCC9;border-radius:14px;min-height:72px;font-family:'Noto Serif Ethiopic',serif;font-size:2rem;color:var(--deep)}
  .fidel button:active{background:var(--sand)}
  .modal{position:fixed;inset:0;background:rgba(12,43,37,.85);display:none;align-items:center;justify-content:center;z-index:300;padding:20px}
  .modal.show{display:flex}
  .modal .inner{background:var(--cream);border-radius:22px;padding:26px;max-width:420px;width:100%;text-align:center}
  .modal .base{font-family:'Noto Serif Ethiopic',serif;font-size:3.4rem;color:var(--deep)}
  .forms{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:18px 0}
  .forms div{font-family:'Noto Serif Ethiopic',serif;font-size:1.55rem;color:var(--ink);background:var(--white);border-radius:10px;padding:8px 2px;display:flex;flex-direction:column;align-items:center;gap:2px}
  .forms div small{font-size:.5rem;color:var(--sage);font-weight:600}

  /* ---------- community feed ---------- */
  .post{background:var(--white);border:1px solid #EDE6D4;border-radius:16px;padding:18px;margin-bottom:12px}
  .post .pcat{font-size:.68rem;font-weight:800;letter-spacing:.16em;color:var(--clay)}
  .post h3{font-family:'Noto Serif Ethiopic',serif;color:var(--deep);margin:4px 0 6px}
  .post .pmeta{font-size:.78rem;color:var(--sage);margin-top:8px}
  textarea.search{resize:vertical;min-height:96px}

  /* ---------- kids hub ---------- */
  .ktabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
  .ktab{background:var(--white);border:1.5px solid #E3DCC9;border-radius:999px;padding:10px 16px;font-weight:800;color:var(--body);min-height:46px}
  .ktab.on{background:var(--deep);border-color:var(--deep);color:var(--sand)}
  .kpanel{display:none}.kpanel.active{display:block}
  .khero{text-align:center;background:linear-gradient(160deg,var(--deep),var(--card))}
  .khero h3{color:var(--cream);font-size:1.4rem}
  .khero .kstats{color:var(--sand);font-weight:800;margin-top:6px}
  .kavatar{font-size:3.2rem;line-height:1;margin-bottom:8px}
  .kavatars{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
  .kavatars button{font-size:2rem;background:var(--cream);border:2px solid #E3DCC9;border-radius:16px;width:64px;height:64px}
  .kavatars button.on{border-color:var(--clay);background:#FBF3DF}
  .kswatches{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
  .kswatches button{width:44px;height:44px;border-radius:50%;border:3px solid #E3DCC9}
  .kswatches button.on{border-color:var(--ink)}
  .kquest{display:flex;align-items:center;gap:14px;background:var(--white);border:1px solid #EDE6D4;border-radius:16px;padding:16px;margin-bottom:10px}
  .kquest .box{width:34px;height:34px;border-radius:10px;border:2.5px solid var(--sage);flex:none;display:flex;align-items:center;justify-content:center;font-size:1.2rem;background:var(--cream)}
  .kquest.done .box{background:var(--sand);border-color:var(--sand)}
  .kquest .ql{font-weight:700;color:var(--ink)}
  .kquest.done .ql{color:var(--sage);text-decoration:line-through}
  .kquest.auto{opacity:.95}

  /* ---------- lesson ---------- */
  .lesson-screen{display:none}.lesson-screen.active{display:block}
  .lesson-screen .big{font-size:1.3rem;color:var(--ink);font-weight:700;line-height:1.55}
  .answer{display:block;width:100%;text-align:left;background:var(--white);border:2px solid var(--sage);border-radius:16px;padding:18px;font-size:1.05rem;margin-top:12px;min-height:60px;color:var(--ink)}
  .answer.correct{border-color:var(--deep);background:#E8F1EC}
  .answer.wrong{border-color:var(--clay);background:#F9ECE5}
  .feedback{margin-top:14px;font-weight:700;display:none}
  .dots{display:flex;gap:8px;margin:14px 0 16px}
  .dots span{width:10px;height:10px;border-radius:50%;background:#DDD5C0;transition:background .2s}
  .dots span.on{background:var(--clay)}
  .draftnote{background:#FBF3DF;border:1.5px dashed var(--clay);border-radius:12px;padding:12px 14px;font-size:.88rem;color:var(--body);margin-bottom:16px}

  /* ---------- helper cards ---------- */
  .helper{background:var(--deep);color:var(--cream)}
  .helper h3{color:var(--sand)}
  .helper p{font-size:.92rem}
  .helper .dismiss{color:var(--sage);text-decoration:underline;font-size:.85rem;margin-top:8px}

  /* ---------- legal ---------- */
  .legal p{margin-bottom:12px;font-size:.95rem}
  .legal h3{font-family:'Noto Serif Ethiopic',serif;color:var(--deep);margin:18px 0 6px}

  /* ---------- bottom nav ---------- */
  nav{position:fixed;bottom:0;left:0;right:0;background:var(--deeper);display:flex;justify-content:space-around;padding:10px 4px calc(env(safe-area-inset-bottom) + 10px);z-index:100}
  nav button{color:var(--sage);font-size:.72rem;font-weight:800;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:60px;min-height:52px}
  nav button.on{color:var(--sand);background:var(--card);border-radius:14px;padding:6px 10px}
  nav button svg{width:24px;height:24px}
 /* ★ 2 Aug 2026 — --sage (#7FA492) is secondary text for DEEP GREEN surfaces.
   On parchment it reads about 2.3:1 and AQLI-CONTRAST repainted all five of
   these on every single load — half of everything the guard was doing. Text
   coloured for a background AQLI no longer has, which is the exact fault that
   guard exists to catch. Fixed at source so it stops catching it. */
  footer.inpage{text-align:center;color:var(--body,#3A4A45);font-size:.8rem;margin-top:34px}
  footer.inpage button{color:var(--deep,#123B33);text-decoration:underline;font-size:.8rem;margin:0 6px}
  /* ---------- opening: the glass turns, sand falls, home appears ---------- */
  #splash{position:fixed;inset:0;background:var(--deep);z-index:400;display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;padding:24px}
  #splash .glass{width:110px;height:119px;animation:turnIn 1.1s ease}
  #splash .grainA{animation:fall 1.1s ease-in .5s infinite}
  #splash .grainB{animation:fall 1.1s ease-in 1.05s infinite}
  #splash .mound{transform-origin:60px 114px;animation:grow 2.6s ease forwards}
  #splash .sw,#splash .swg{opacity:0;font-family:'Noto Serif Ethiopic',serif}
  #splash .sw{color:var(--cream);font-size:1.9rem;font-weight:700;letter-spacing:.3em;padding-left:.3em;animation:fadeUp .8s var(--ease) .7s forwards}
  #splash .swg{color:var(--sand);font-size:1rem;margin-top:-6px;animation:fadeUp .8s var(--ease) .95s forwards}
  #splash .sA,#splash .sB{font-family:'Noto Serif Ethiopic',serif;opacity:0}
  #splash .sA{color:var(--cream);font-size:1.45rem;animation:fadeUp .8s var(--ease) 1.6s forwards}
  #splash .sB{color:var(--sand);font-size:1.05rem;animation:fadeUp .8s var(--ease) 2.3s forwards}
  @keyframes turnIn{from{transform:rotate(180deg);opacity:0}to{transform:rotate(0deg);opacity:1}}
  @keyframes fall{0%{transform:translateY(-16px);opacity:0}30%{opacity:1}100%{transform:translateY(24px);opacity:0}}
  @keyframes grow{from{transform:scaleY(.3)}to{transform:scaleY(1)}}
  @keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

  /* ---------- CULTURAL MOTION (tokens; guides, never demands) ---------- */
  :root{--dur1:.18s;--dur2:.3s;--dur3:.45s;--ease:cubic-bezier(.22,1,.36,1)}
  header{position:sticky}
  header::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--sand);opacity:.55;transition:background var(--dur3) var(--ease)}
  body[data-room="community"] header::after{background:var(--sage)}
  body[data-room="resources"] header::after{background:var(--clay)}
  body[data-room="kids"] header::after{background:#F2B8A0}
  body[data-room="profile"] header::after{background:var(--cream)}
  .hg{font-size:.72rem;font-weight:800;letter-spacing:.24em;color:var(--sand);text-transform:uppercase;margin-bottom:6px;min-height:1em}
  .hdate{color:rgba(247,242,231,.72);font-size:.82rem;margin-top:10px;font-weight:600}
  .pulse{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
  .pulse button{background:rgba(247,242,231,.12);border:1px solid rgba(233,200,127,.4);color:var(--cream);border-radius:999px;padding:8px 14px;font-size:.82rem;font-weight:800;min-height:40px}
  .pulse button b{color:var(--sand)}
  .card .sub{font-size:.85rem;color:var(--sage);margin-top:2px;font-weight:600}
  nav{box-shadow:0 -8px 24px rgba(12,43,37,.28)}
  nav button{transition:transform var(--dur2) var(--ease)}
  nav button.on{transform:translateY(-3px)}
  @media (prefers-reduced-motion: no-preference){ .brand{animation:softIn var(--dur3) var(--ease)} }
  .cue{position:absolute;top:5px;right:16%;width:8px;height:8px;border-radius:50%;background:var(--sand);opacity:0;transition:opacity var(--dur2) var(--ease)}
  .cue.on{opacity:1}
  @media (prefers-reduced-motion: no-preference){
    .cue.on{animation:cueGlow 2.4s var(--ease) infinite}
    .lang-screen .mark{animation:softIn .9s var(--ease) both}
    .lang-btn{animation:riseIn .7s var(--ease) both}
    .lang-btn:nth-of-type(2){animation-delay:.12s}
    .lang-btn:nth-of-type(3){animation-delay:.24s}
    .kavatar,.kavatars button{animation:breathe 4.5s ease-in-out infinite alternate}
    .kavatars button:nth-child(2){animation-delay:.7s}
    .kavatars button:nth-child(3){animation-delay:1.4s}
    .kavatars button:nth-child(4){animation-delay:2.1s}
    .kavatars button:nth-child(5){animation-delay:2.8s}
    .kavatars button:nth-child(6){animation-delay:3.5s}
  }
  @keyframes cueGlow{0%,100%{transform:scale(1);opacity:.75}50%{transform:scale(1.35);opacity:1}}
  @keyframes breathe{from{transform:translateY(0)}to{transform:translateY(-3px)}}
  .lang-screen.bye{opacity:0;transition:opacity .45s var(--ease)}
  #updToast{position:fixed;left:14px;right:14px;bottom:calc(env(safe-area-inset-bottom) + 88px);z-index:250;display:none;align-items:center;gap:12px;background:var(--deep);color:var(--cream);border:1.5px solid var(--sand);border-radius:16px;padding:14px 16px;font-weight:700;box-shadow:0 12px 32px rgba(12,43,37,.35)}
  #updToast button{margin-left:auto;background:var(--sand);color:var(--deep);font-weight:800;border-radius:999px;padding:10px 18px;min-height:44px}
  .pp{background:linear-gradient(160deg,var(--deep),var(--card));color:var(--cream);text-align:center;padding:28px 22px}
  .pp .ppc{font-size:.66rem;font-weight:800;letter-spacing:.28em;color:var(--sand)}
  .pp .ppi{width:76px;height:76px;border-radius:50%;background:var(--sand);color:var(--deep);font-family:'Noto Serif Ethiopic',serif;font-weight:700;font-size:2rem;display:flex;align-items:center;justify-content:center;margin:16px auto 10px}
  .pp .ppn{font-family:'Noto Serif Ethiopic',serif;font-size:1.5rem;color:var(--cream)}
  .pp .ppr{display:inline-block;background:rgba(233,200,127,.18);border:1px solid var(--sand);color:var(--sand);font-weight:800;font-size:.78rem;border-radius:999px;padding:6px 14px;margin-top:10px}
  .pp .ppint{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:14px}
  .pp .ppint span{background:rgba(247,242,231,.12);border-radius:999px;padding:6px 12px;font-size:.8rem;font-weight:700}
  .pp .pps{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:16px}
  .pp .pps span{background:var(--deeper);border:1px solid rgba(233,200,127,.35);border-radius:12px;padding:8px 12px;font-size:.78rem;font-weight:700;color:var(--cream)}
  .pp .ppe{margin-top:18px;background:var(--sand);color:var(--deep);font-weight:800;border-radius:999px;padding:12px 22px;min-height:48px}
  .ktab{transition:transform var(--dur2) var(--ease),background var(--dur2)}
  .ktab.on{transform:scale(1.06)}
  .kgal{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
  .kgal img{width:64px;height:64px;border-radius:10px;border:2px solid var(--sand);object-fit:cover;background:#fff}
  @media (prefers-reduced-motion: no-preference){ .kgal img{animation:unfold var(--dur3) var(--ease) both} }
  .kwcat{font-family:'Noto Serif Ethiopic',serif;color:var(--deep);font-size:1.05rem;font-weight:700;margin:18px 0 10px}
  .kwords{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
  .kword{background:var(--white);border:2px solid #E3DCC9;border-radius:16px;padding:14px 10px;text-align:center;min-height:120px;cursor:pointer;transition:transform var(--dur1) var(--ease),border-color var(--dur2)}
  .kword:active{transform:scale(.96)}
  .kword.on{border-color:var(--sand);background:#FBF6E7}
  .kword .we{font-size:1.9rem;line-height:1}
  .kword .wt{font-family:'Noto Serif Ethiopic',serif;font-weight:700;color:var(--deep);font-size:1.15rem;margin-top:6px}
  .kword .wa{font-family:'Noto Serif Ethiopic',serif;color:var(--clay);font-size:.95rem}
  .kword .wn{color:var(--sage);font-size:.78rem;font-weight:800;margin-top:4px;letter-spacing:.06em}
  .kword .wk{color:var(--sand);font-size:.9rem;height:1em}
  @media (prefers-reduced-motion: no-preference){ .kstats.kcele{animation:cele .7s var(--ease)} }
  @keyframes cele{0%{transform:scale(1)}40%{transform:scale(1.18)}100%{transform:scale(1)}}
  @media (prefers-reduced-motion: no-preference){
    ::view-transition-old(root){animation:vtOut var(--dur2) var(--ease) both}
    ::view-transition-new(root){animation:vtIn var(--dur2) var(--ease) both}
    .view.active .card{animation:riseIn var(--dur3) var(--ease) both}
    .view.active .card:nth-child(2){animation-delay:.05s}
    .view.active .card:nth-child(3){animation-delay:.1s}
    .view.active .card:nth-child(4){animation-delay:.15s}
    .view.active .card:nth-child(5){animation-delay:.2s}
    .kpanel.active{animation:softIn var(--dur2) var(--ease)}
    .lesson-screen.active{animation:softIn var(--dur2) var(--ease)}
    .modal.show .inner{animation:unfold var(--dur2) var(--ease)}
    .room{transition:transform var(--dur1) var(--ease)}
  }
  @keyframes vtOut{to{opacity:0;transform:translateY(-6px)}}
  @keyframes vtIn{from{opacity:0;transform:translateY(10px)}}
  @keyframes riseIn{from{opacity:0;transform:translateY(12px)}}
  @keyframes softIn{from{opacity:0;transform:translateY(6px)}}
  @keyframes unfold{from{opacity:0;transform:scale(.94) translateY(8px)}}

/* ---------- Connection Engine: journey cards ---------- */
.journey{margin-top:18px}
.jt{font-size:.7rem;font-weight:800;letter-spacing:.22em;color:var(--clay);text-transform:uppercase;margin-bottom:10px}
.jrow{display:flex;gap:10px;flex-wrap:wrap}
.jcard{display:inline-flex;align-items:center;gap:8px;background:var(--white);border:2px solid var(--sage);color:var(--deep);font-weight:800;border-radius:999px;padding:12px 18px;min-height:48px;transition:transform var(--dur1) var(--ease)}
.jcard:active{transform:scale(.96)}

.pp .ppp{color:var(--sage);font-size:.85rem;margin-top:4px;font-weight:600}

/* ---------- Community Canvas (Level 3 capability) ---------- */
.cnv-card{padding:18px 14px}
.cnv-title{font-family:'Noto Serif Ethiopic',serif;font-weight:700;color:var(--deep);font-size:1.15rem}
.cnv-sub{color:var(--clay);font-size:.85rem;font-style:italic;margin:4px 0 10px}
.cnv-svg{width:100%;height:auto;display:block}
.cnv-e{stroke:#CFE0D6;stroke-width:2}
.cnv-e.hot{stroke:var(--sand);stroke-width:3.5}
.cnv-v{font-size:12px;fill:var(--clay);font-style:italic;text-anchor:middle;font-family:'Noto Serif Ethiopic',serif}
.cnv-n{cursor:pointer}
.cnv-n circle{fill:var(--white);stroke:var(--sage);stroke-width:2.5;transition:stroke var(--dur2) var(--ease), fill var(--dur2) var(--ease)}
.cnv-n.sm circle{stroke-width:2}
.cnv-n.lit circle{stroke:var(--sand);stroke-width:3}
.cnv-n.on circle{fill:var(--deep);stroke:var(--sand);stroke-width:3.5}
.cnv-n .cnv-i{font-size:17px;text-anchor:middle}
.cnv-n.sm .cnv-i{font-size:13px}
.cnv-n .cnv-t{font-size:12px;font-weight:800;fill:var(--deep);text-anchor:middle;font-family:'Noto Serif Ethiopic',serif}
.cnv-n.sm .cnv-t{font-size:10px}
.cnv-n.on .cnv-i,.cnv-n.on .cnv-t{fill:var(--cream)}
.cnv-n:focus-visible circle{outline:none;stroke:var(--clay);stroke-width:4}
@media (prefers-reduced-motion: reduce){ .cnv-n circle{transition:none} }

/* ---------- Search v1 (Level 3 capability) ---------- */
#searchResults{margin:10px 0 4px}
.sr-t{font-size:.7rem;font-weight:800;letter-spacing:.22em;color:var(--clay);text-transform:uppercase;margin:6px 0 8px}
.sr-none{color:var(--sage);font-style:italic;padding:8px 2px}
.sr-g{margin-bottom:12px}
.sr-gh{font-family:'Noto Serif Ethiopic',serif;font-weight:700;color:var(--deep);margin-bottom:6px}
.sr-i{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;background:var(--white);border:1.5px solid #E3DCC9;border-radius:12px;padding:12px 14px;margin-bottom:6px;font-weight:700;color:var(--deep);min-height:48px}
.sr-i em{color:var(--clay);font-style:normal;font-size:.85rem;white-space:nowrap}
.sr-i:active{transform:scale(.98)}

/* ---------- Steward panel (in-feed moderation) ---------- */
.modrow{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
.modq{font-size:.72rem;font-weight:800;letter-spacing:.16em;color:var(--clay);text-transform:uppercase;margin-right:auto}
.mbtn{border-radius:999px;padding:10px 18px;font-weight:800;min-height:44px;border:2px solid}
.mbtn.ok{background:var(--deep);color:var(--cream);border-color:var(--deep)}
.mbtn.no{background:var(--white);color:var(--clay);border-color:var(--clay)}
.mbtn:disabled{opacity:.5}

/* ---------- Experience Pass: settle motion + context chip + greeting sub ---------- */
@keyframes aqliSettle{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.view.active{animation:aqliSettle var(--dur2,.38s) var(--ease,cubic-bezier(.22,.9,.3,1))}
@media (prefers-reduced-motion: reduce){ .view.active{animation:none} }
#appHeader .ctx{margin-left:auto;color:var(--sand);font-weight:800;font-size:.95rem;font-family:'Noto Serif Ethiopic',serif;white-space:nowrap}
.hgs{color:var(--sand);font-style:italic;margin-top:6px;font-size:1.02rem}

/* ============ v5.7 CRAFTSMANSHIP RELEASE — one design language ============ */
/* The grain falls: hourglass as living behavior (waiting state) */
.grainfall{height:64px;position:relative;margin:14px auto;width:44px}
.grainfall::after{content:"";position:absolute;left:10px;right:10px;top:6px;bottom:6px;border:2.5px solid var(--sage);border-radius:6px;clip-path:polygon(0 0,100% 0,58% 50%,100% 100%,0 100%,42% 50%)}
.grainfall::before{content:"";position:absolute;left:50%;top:12px;width:7px;height:7px;border-radius:50%;background:var(--sand);animation:grainDrop 1.15s ease-in infinite;z-index:1}
@keyframes grainDrop{0%{transform:translate(-50%,0);opacity:0}25%{opacity:1}85%{opacity:1}100%{transform:translate(-50%,34px);opacity:0}}
/* Unified attention: one focus ring everywhere */
:focus-visible{outline:3px solid var(--sand);outline-offset:2px;border-radius:6px}
/* Touch honesty: everything pressable acknowledges the press */
button:active,.card:active,.jcard:active,.sr-i:active{transform:translateY(1px) scale(.995)}
#appNav button:active svg{transform:scale(.9)}
#appNav button svg{transition:transform .18s var(--ease)}
/* Card life: gentle lift on pointer hover (desktop), calm rest on touch */
@media (hover:hover){ .card{transition:box-shadow .25s var(--ease),transform .25s var(--ease)}
  .card:hover{box-shadow:0 8px 26px rgba(18,59,51,.12);transform:translateY(-2px)} }
/* Typographic rhythm */
.pagetitle{letter-spacing:.2px}
p,li{line-height:1.62}
/* Quiet chrome: no grey tap flash, brand selection color, smooth in-page motion */
*{-webkit-tap-highlight-color:transparent}
::selection{background:var(--sand);color:var(--deeper)}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .grainfall::before{animation:none;top:24px;opacity:.8}
  .card,#appNav button svg{transition:none}
  @media (hover:hover){ .card:hover{transform:none} }
}

/* ===== Kids Transformation v5.8 ===== */
.mt-meta{color:var(--clay);font-weight:800;margin:8px 0}
.mt-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:420px}
.mt-card{aspect-ratio:1;border-radius:16px;background:var(--deep);border:none;font-size:2rem;position:relative;overflow:hidden}
.mt-card .mt-face{opacity:0;transition:opacity .25s var(--ease),transform .25s var(--ease);transform:scale(.6);display:block}
.mt-card.open{background:var(--white);border:2.5px solid var(--sand)}
.mt-card.open .mt-face{opacity:1;transform:scale(1)}
.mt-card.done{background:var(--sand);border:none}
.mt-card.done .mt-face{opacity:1;transform:scale(1)}
.mt-win p{font-family:'Noto Serif Ethiopic',serif;font-weight:700;color:var(--deep);font-size:1.2rem;margin:14px 0}
.st-stage{min-height:150px;display:flex;flex-direction:column;justify-content:center;padding:22px;margin:10px 0}
.st-line{font-size:1.25rem;line-height:1.7;font-family:'Noto Serif Ethiopic',serif;color:var(--deep)}
.st-ask{color:var(--clay);font-style:italic;margin-top:12px;font-weight:700}
.st-dots{display:flex;gap:8px;justify-content:center;margin:10px 0 14px}
.st-dot{width:10px;height:10px;border-radius:50%;background:#DCD4C0;display:inline-block}
.st-dot.on{background:var(--sand)}
.kn-card{padding:22px;text-align:center}
.kn-mission{font-size:1.15rem;font-family:'Noto Serif Ethiopic',serif;color:var(--deep);line-height:1.6;margin-bottom:14px}
.kn-msg{color:var(--clay);font-weight:800;margin-top:10px}
.kn-hearts{margin-top:14px;font-size:1.3rem;letter-spacing:2px}
@media (prefers-reduced-motion: reduce){ .mt-card .mt-face{transition:none} }

/* ===== v5.9: Puzzle · Nature · Living Card ===== */
.pz-seq{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0;font-size:2rem}
.pz-e{background:var(--white);border:2px solid #E3DCC9;border-radius:14px;padding:8px 12px}
.pz-q{background:var(--sand);border-color:var(--sand);font-weight:800;color:var(--deeper)}
.pz-opts{display:flex;gap:12px;margin:10px 0}
.pz-opt{font-size:2rem;background:var(--deep);border:none;border-radius:16px;padding:12px 18px;min-height:56px}
.pz-msg{font-weight:800;color:var(--clay);min-height:1.4em;font-family:'Noto Serif Ethiopic',serif}
.k-continue{background:var(--white);border:2px dashed var(--sand);border-radius:14px;padding:12px 16px;margin:10px 0;color:var(--deep);font-weight:700}
.k-cont-btn{background:var(--sand);border:none;border-radius:999px;padding:8px 16px;font-weight:800;color:var(--deeper);margin-left:8px;min-height:40px}

/* ===== v5.9.1 Three Gardens: Story Garden · Learning Paths · Today ===== */
.st-garden{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:12px 0}
.st-pick{background:var(--white);border:2px solid #E3DCC9;border-radius:18px;padding:18px 12px;display:flex;flex-direction:column;align-items:center;gap:8px;position:relative;min-height:120px}
.st-pick.read{border-color:var(--sage)}
.st-pe{font-size:2.4rem}
.st-pt{font-weight:800;color:var(--deep);font-family:'Noto Serif Ethiopic',serif;text-align:center;font-size:.95rem}
.st-badge{position:absolute;top:8px;right:10px;font-size:.7rem;font-weight:800;color:var(--sage)}
.st-badge.new{color:var(--clay)}
.lp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin:14px 0 22px}
.lp-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;padding:18px;border:none}
.lp-e{font-size:1.8rem}
.lp-card b{font-family:'Noto Serif Ethiopic',serif;color:var(--deep);font-size:1.05rem}
.lp-s{color:var(--sage);font-size:.85rem}

/* ===== Wave 2: Garden · Living Cards · Growth ===== */
.gd-card{padding:14px 16px;margin:10px 0}
.gd-t{font-size:.72rem;font-weight:800;letter-spacing:.2em;color:var(--clay);text-transform:uppercase}
.gd-row{font-size:1.5rem;letter-spacing:3px;margin:8px 0;line-height:1.8;word-break:break-all}
.gd-bf{color:var(--deep);font-weight:700;font-family:'Noto Serif Ethiopic',serif;font-size:.95rem}
.lc-verify{background:var(--deep);color:var(--sand);border-radius:999px;padding:2px 10px;font-size:.7rem;font-weight:800;margin-left:6px}
.lc-actions{display:flex;gap:10px;margin-top:10px}
.lc-btn{border-radius:999px;padding:9px 16px;font-weight:800;min-height:42px;background:var(--white);border:2px solid var(--sage);color:var(--deep)}
.lc-btn.more{background:var(--deep);border-color:var(--deep);color:var(--cream)}
.lp-card2{padding:0;overflow:hidden}
.lp-head{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;padding:18px;background:none;border:none}
.lp-status{color:var(--clay);font-weight:800;font-size:.8rem}
.lp-detail{padding:0 18px 16px;display:flex;flex-direction:column;gap:8px}
.lp-i{text-align:left;background:var(--cream);border:1.5px solid #E3DCC9;border-radius:12px;padding:11px 14px;font-weight:700;color:var(--deep);min-height:44px}
.lp-i.grow{color:var(--sage);display:block}

/* Parent trust, visible in the first 30 seconds (RC-1 finding) */
.safestrip{background:var(--deep);color:var(--sand);border-radius:var(--r-pill);padding:9px 16px;font-size:.82rem;font-weight:700;display:inline-block;margin:6px 0 10px;letter-spacing:.2px}

.emptyst{color:var(--sage);font-style:italic;line-height:1.6;padding:6px 2px}

/* ===== Welcome (EWO-002) ===== */
#welcome{position:fixed;inset:0;background:rgba(12,43,37,.94);z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px}
.wc-card{background:var(--cream);border-radius:24px;padding:32px 26px;max-width:420px;width:100%;text-align:center;box-shadow:var(--sh-2)}
.wc-glass{font-size:3rem;margin-bottom:10px}
.wc-t{font-family:'Noto Serif Ethiopic',serif;color:var(--deep);font-size:1.5rem;margin-bottom:10px;line-height:1.35}
.wc-s{color:var(--deep);line-height:1.65;font-size:1.02rem;margin-bottom:18px}
.wc-dots{display:flex;gap:8px;justify-content:center;margin-bottom:18px}
.wc-skip{margin-top:14px;color:var(--sage);text-decoration:underline;font-weight:700;background:none;border:none;min-height:44px}

/* ===== Search room (EWO-003) ===== */
#gsChips{margin:10px 0}
.gs-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}
.gs-lbl{font-size:.7rem;font-weight:800;letter-spacing:.18em;color:var(--clay);text-transform:uppercase;margin-right:2px}
.gs-chip{background:var(--white);border:1.5px solid #E3DCC9;border-radius:var(--r-pill);padding:8px 14px;font-weight:700;color:var(--deep);min-height:40px}
.gs-chip.clear{color:var(--sage);border-style:dashed}
#gsResults{margin-top:8px}

/* ===== Verified Directory Engine (EWO-004) ===== */
.dir-card{margin-bottom:14px}
.dir-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.dir-ico{font-size:1.6rem}
.dir-meta{color:var(--deep);line-height:1.55;margin:4px 0}
.dir-link{color:var(--sage);font-weight:700;text-decoration:underline;word-break:break-all}
.dir-emptycard{text-align:center;padding:26px 20px}
.dir-emptycard .lc-btn{margin-top:12px}

/* ===== Directory Engine (EWO-004) ===== */
.dir-filter{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.dir-select{padding:10px 12px;border:1.5px solid #E3DCC9;border-radius:12px;background:var(--white);font-weight:700;min-height:44px}
.emptydir{text-align:center;padding:32px 24px}
.emptydir p{margin:0;color:var(--deep);line-height:1.65}
.emptydir p:first-child{font-size:1.05rem;margin-bottom:14px}
.dir-btn{background:var(--white);border:1.5px solid #E3DCC9;border-radius:12px;padding:8px 14px;font-weight:700;color:var(--deep);min-height:40px;cursor:pointer}
