/* Layout: one phone-width column on squared exam-notebook paper; a red margin rule marks the working area; teacher's red pen for verdicts. Flips to right-to-left for Sorani and Badini. */
:root{
  --paper:#f5f8fc; --grid:rgba(40,95,175,.10); --card:#ffffff; --ink:#18264a; --muted:#5a6886;
  --pen:#2350d0; --pen-soft:rgba(35,80,208,.10); --red:#cf3428; --red-soft:rgba(207,52,40,.08);
  --ok:#17834a; --ok-soft:rgba(23,131,74,.10); --line:rgba(24,38,74,.14); --gold:#b07a12; --gold-soft:rgba(176,122,18,.12);
  --f-display:"Familjen Grotesk","Arial Narrow",system-ui,sans-serif;
  --f-body:"Onest",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-hand:"Kalam","Comic Sans MS","Segoe Print",cursive;
  --f-ku:"Noto Sans Arabic","Segoe UI","Tahoma",sans-serif;
  --f-math:"Cambria Math","STIX Two Math","Times New Roman",serif;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#0e1729; --grid:rgba(130,165,230,.08); --card:#152239; --ink:#e5ebf7; --muted:#99a7c2;
  --pen:#7ea4ff; --pen-soft:rgba(126,164,255,.14); --red:#ff6f62; --red-soft:rgba(255,111,98,.11);
  --ok:#4fd18a; --ok-soft:rgba(79,209,138,.13); --line:rgba(229,235,247,.13); --gold:#e2b04a; --gold-soft:rgba(226,176,74,.14); color-scheme:dark}}
:root[data-theme="dark"]{
  --paper:#0e1729; --grid:rgba(130,165,230,.08); --card:#152239; --ink:#e5ebf7; --muted:#99a7c2;
  --pen:#7ea4ff; --pen-soft:rgba(126,164,255,.14); --red:#ff6f62; --red-soft:rgba(255,111,98,.11);
  --ok:#4fd18a; --ok-soft:rgba(79,209,138,.13); --line:rgba(229,235,247,.13); --gold:#e2b04a; --gold-soft:rgba(226,176,74,.14); color-scheme:dark}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.5;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:22px 22px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:20px 48px}
html[dir="rtl"] body{font-family:var(--f-ku);font-size:15.5px;line-height:1.75}
.app{max-width:540px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.m{font-family:var(--f-math);font-size:1.08em;unicode-bidi:isolate;direction:ltr;white-space:nowrap;display:inline-block}
.fr{display:inline-flex;flex-direction:column;vertical-align:middle;text-align:center;font-size:.9em;line-height:1.15;margin:0 2px}
.fr>span:first-child{border-bottom:1px solid currentColor;padding:0 2px}
.fr>span:last-child{padding:0 2px}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.lang{display:inline-flex;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px}
.lang button{border:0;background:transparent;color:var(--muted);font:600 13px var(--f-ku);padding:5px 12px;border-radius:999px;cursor:pointer}
.lang button[data-l="en"]{font-family:var(--f-body)}
.lang button[aria-pressed="true"]{background:var(--ink);color:var(--card)}
header{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.logo{font-family:var(--f-display);font-weight:700;font-size:40px;line-height:.9;letter-spacing:-.02em;margin:0;direction:ltr}
.logo span{color:var(--red);font-family:var(--f-hand);font-weight:700;font-size:44px;margin-left:4px;display:inline-block;transform:rotate(-6deg)}
.streak{text-align:end;font-size:12px;color:var(--muted)}
.streak b{display:block;font-family:var(--f-display);font-size:26px;color:var(--ink);line-height:1}
button:focus-visible,input:focus-visible{outline:2px solid var(--pen);outline-offset:2px}
.subjects{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.subjects::-webkit-scrollbar{display:none}
.chip{flex:none;font:500 13px inherit;font-family:inherit;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer}
.chip.on{border-color:var(--pen);color:var(--pen);background:var(--pen-soft)}
.chip .soon{font-size:11px;opacity:.75;margin-inline-start:4px}
.sheet{position:relative;background:var(--card);border:1px solid var(--line);border-radius:6px;padding-block:18px;padding-inline:30px 18px;box-shadow:0 1px 0 var(--line)}
.sheet::before{content:"";position:absolute;inset-inline-start:18px;top:0;bottom:0;width:2px;background:var(--red);opacity:.55}
.sheet h2{font-family:var(--f-display);font-weight:700;font-size:20px;margin:0 0 2px;text-wrap:balance}
html[dir="rtl"] .sheet h2{font-family:var(--f-ku);font-size:19px}
.meta{font-size:12px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;margin:0}
.book{display:flex;gap:10px;align-items:center;margin-bottom:12px;font-size:12px;color:var(--muted)}
.book b{color:var(--ink);font-weight:600}
.chapters{display:flex;flex-direction:column}
.chap{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);background:none;border-inline:0;border-top:0;text-align:start;font:inherit;color:inherit;cursor:pointer;width:100%}
.chap:last-child{border-bottom:0}
.chap .n{width:34px;height:34px;border-radius:7px;display:grid;place-items:center;font:700 17px var(--f-display);background:var(--pen-soft);color:var(--pen)}
.chap.ready .n{background:var(--red);color:var(--card)}
.chap .t{font-weight:600;line-height:1.35}
.chap .t small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.pill{font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.chap.ready .pill{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
.back{border:0;background:none;color:var(--pen);font:600 13px inherit;font-family:inherit;padding:0;cursor:pointer;margin-bottom:8px}
.progress{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;margin:12px 0 14px}
.pw{display:inline-flex;align-items:center;gap:3px;vertical-align:middle;white-space:nowrap}
.pw .br{font-size:2.3em;line-height:1;font-weight:300}
.pw .rows{display:inline-grid;grid-template-columns:auto auto;column-gap:12px;row-gap:2px;font-size:.92em;text-align:left}
.lim{display:inline-flex;flex-direction:column;align-items:center;line-height:1;vertical-align:middle;margin:0 2px}
.lim span{font-size:.68em}
.int{display:inline-flex;align-items:center;vertical-align:middle}
.int .s{font-size:1.5em;line-height:1}
.int .ab{display:inline-flex;flex-direction:column;font-size:.62em;line-height:1.15;margin:0 2px 0 1px}
.qtext .m{white-space:normal}
.opt .m,.explain .m,.why .m{white-space:normal}
.progress i{height:5px;border-radius:3px;background:var(--line)}
.progress i.ok{background:var(--ok)} .progress i.bad{background:var(--red)} .progress i.now{background:var(--pen)}
.src{display:inline-block;font-size:11px;color:var(--gold);border:1px solid var(--gold);background:var(--gold-soft);border-radius:4px;padding:1px 7px;margin-bottom:6px}
.qtext{font-size:17px;font-weight:500;margin:4px 0 14px;text-wrap:pretty;line-height:1.9}
.opts{display:flex;flex-direction:column;gap:8px}
.opt{display:flex;align-items:center;gap:12px;text-align:start;width:100%;font:500 15px inherit;font-family:inherit;color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:8px;padding:10px 12px;cursor:pointer;min-height:48px}
.opt:hover:not([disabled]){border-color:var(--pen);background:var(--pen-soft)}
.opt .l{flex:none;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--muted);display:grid;place-items:center;font-size:12px;font-weight:600;color:var(--muted)}
.opt.right{border-color:var(--ok);background:var(--ok-soft)} .opt.right .l{background:var(--ok);border-color:var(--ok);color:var(--card)}
.opt.wrong{border-color:var(--red);background:var(--red-soft)} .opt.wrong .l{background:var(--red);border-color:var(--red);color:var(--card)}
.opt[disabled]{cursor:default}
.verdict{margin-top:14px;display:flex;gap:12px;align-items:flex-start}
.mark{flex:none;font-family:var(--f-hand);font-weight:700;font-size:24px;line-height:1.1;transform:rotate(-6deg)}
html[dir="rtl"] .mark{font-family:var(--f-ku);font-size:19px;transform:rotate(-4deg)}
.mark.ok{color:var(--ok)} .mark.bad{color:var(--red)}
.why{font-size:14px;color:var(--ink);margin:0;min-width:0}
.why b{font-weight:600}
.explain{position:relative;margin-top:12px;border:1px solid var(--line);border-inline-start:3px solid var(--red);border-radius:6px;padding:12px 14px;background:var(--red-soft)}
.explain h3{font:600 12.5px inherit;font-family:inherit;letter-spacing:.04em;text-transform:uppercase;color:var(--red);margin:0 0 4px}
.explain h3+p{margin:0 0 12px;font-size:14px}
.explain ol{margin:0;padding-inline-start:20px;font-size:14px;display:flex;flex-direction:column;gap:6px}
.explain.locked{overflow:hidden;min-height:150px}
.explain .blur{filter:blur(5px);user-select:none;pointer-events:none}
.lockover{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:12px;background:color-mix(in srgb,var(--card) 55%,transparent)}
.lockover span{font-size:13px;color:var(--muted);max-width:32ch}
.row{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap}
.btn{font:600 14px inherit;font-family:inherit;padding:10px 16px;border-radius:8px;border:1px solid var(--pen);background:var(--pen);color:var(--card);cursor:pointer}
.btn.ghost{background:transparent;color:var(--pen)}
.btn.red{background:var(--red);border-color:var(--red)}
.score{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.circle{position:relative;width:120px;height:92px;flex:none;display:grid;place-items:center}
.circle svg{position:absolute;inset:0;width:100%;height:100%}
.circle b{font-family:var(--f-hand);font-weight:700;font-size:40px;color:var(--red);direction:ltr}
.sponsor{display:flex;gap:12px;align-items:center;border:1.5px dashed var(--gold);background:var(--gold-soft);border-radius:8px;padding:12px 14px}
.sponsor .s-badge{flex:none;font:700 10px var(--f-body);letter-spacing:.1em;text-transform:uppercase;color:var(--gold);border:1px solid var(--gold);border-radius:4px;padding:3px 6px}
.sponsor p{margin:0;font-size:13px}
.sponsor p b{display:block;font-size:14px}
.unlock{margin-top:16px;display:flex;flex-direction:column;gap:8px}
.unlock label{font-weight:600;font-size:14px}
.unlock .field{display:flex;gap:8px}
.unlock input{flex:1;min-width:0;font:600 16px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase;padding:12px;border-radius:8px;border:1px solid var(--line);background:var(--paper);color:var(--ink);direction:ltr;text-align:left}
.msg{font-size:13px;margin:0;min-height:1.2em}
.msg.ok{color:var(--ok)} .msg.bad{color:var(--red)}
.price{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.price div{flex:1 1 140px;border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.price b{font-family:var(--f-display);font-size:20px;display:block;font-variant-numeric:tabular-nums;white-space:nowrap}
.price span{font-size:12px;color:var(--muted)}
.note{font-size:12px;color:var(--muted);margin:10px 0 0}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--card);font-size:13px;padding:10px 14px;border-radius:8px;max-width:calc(100% - 32px);text-align:center}
@media (max-width:420px){.logo{font-size:34px}.logo span{font-size:38px}.qtext{font-size:16px}}
@media (prefers-reduced-motion:no-preference){.verdict,.score{animation:pop .25s ease-out}@keyframes pop{from{transform:translateY(4px);opacity:.4}to{transform:none;opacity:1}}}
/* ---- app additions ---- */
body{padding-top:calc(20px + env(safe-area-inset-top,0px));padding-bottom:calc(48px + env(safe-area-inset-bottom,0px))}
a{color:inherit}
.logo-link{text-decoration:none;color:inherit}
a.chip{text-decoration:none}
a.chap{text-decoration:none;color:inherit}
a.back{display:inline-block;text-decoration:none}
a.btn{display:inline-block;text-decoration:none;text-align:center}
.btn.small{padding:8px 12px;font-size:13px}
.install{text-align:center}
a:focus-visible{outline:2px solid var(--pen);outline-offset:2px;border-radius:6px}
.explain h3 .nt{text-transform:none;letter-spacing:0;font-family:var(--f-math)}

/* account form */
#acctForm input{font:500 16px/1.2 inherit;font-family:inherit;letter-spacing:0;text-transform:none}
#acctForm input[type=tel],#acctForm input[type=password]{font-family:ui-monospace,Menlo,Consolas,monospace;letter-spacing:.04em;text-align:left}
#acctForm .row{margin-top:4px}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:var(--pen);text-decoration:underline;cursor:pointer}
.sheet + .sheet{margin-top:14px}

/* install button */
.install{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:18px}
.installbtn{display:inline-flex;align-items:center;gap:8px}
#installHelp{max-width:34ch;text-align:center;margin:0}

/* ---- layout v2: top bar, bottom nav, menu, welcome, pages ---- */
body{padding-bottom:calc(92px + env(safe-area-inset-bottom,0px))}
body.noscroll{overflow:hidden}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:nowrap}
.topbar .logo{display:inline-block;font-size:30px;line-height:1}
.topbar .logo span{font-size:33px}
.tools{display:flex;align-items:center;gap:8px}
.tbtn{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 11px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink);font:600 13px var(--f-ku);cursor:pointer}
.tbtn.sq{width:38px;padding:0;justify-content:center;border-radius:11px}
.langdd{position:relative}
.langlist{position:absolute;inset-inline-end:0;top:calc(100% + 6px);z-index:30;list-style:none;margin:0;padding:5px;min-width:150px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.28)}
.langlist button{width:100%;text-align:start;border:0;background:transparent;color:var(--ink);font:600 14px var(--f-ku);padding:9px 12px;border-radius:8px;cursor:pointer}
.langlist button[aria-selected="true"]{background:var(--pen-soft);color:var(--pen)}
.langlist button:hover{background:var(--pen-soft)}

.bnav{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;justify-content:center;background:var(--card);border-top:1px solid var(--line);padding:6px max(10px,env(safe-area-inset-left,0px)) calc(6px + env(safe-area-inset-bottom,0px))}
.bnav a{flex:1;max-width:130px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 4px;border-radius:10px;text-decoration:none;color:var(--muted);font:600 11.5px var(--f-ku)}
.bnav svg{width:23px;height:23px}
.bnav a[aria-current="page"]{color:var(--pen);background:var(--pen-soft)}
.toast{bottom:calc(88px + env(safe-area-inset-bottom,0px))}

#menuWrap{position:fixed;inset:0;z-index:50}
.scrim{position:absolute;inset:0;background:rgba(5,10,22,.55)}
.menu{position:absolute;top:0;bottom:0;inset-inline-end:0;width:min(82vw,320px);background:var(--card);border-inline-start:1px solid var(--line);padding:calc(14px + env(safe-area-inset-top,0px)) 16px 24px;display:flex;flex-direction:column;gap:2px;overflow-y:auto;animation:slidein .22s ease-out}
html[dir="rtl"] .menu{animation-name:slidein-rtl}
@keyframes slidein{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}
@keyframes slidein-rtl{from{transform:translateX(-30px);opacity:0}to{transform:none;opacity:1}}
.menuhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font:700 17px var(--f-display)}
html[dir="rtl"] .menuhead{font-family:var(--f-ku)}
.menu>a{display:block;padding:13px 12px;border-radius:10px;text-decoration:none;font-weight:600;font-size:15.5px}
.menu>a:hover{background:var(--pen-soft)}
.menu .install{margin-top:16px}
.menufoot{margin-top:auto;padding-top:20px}

.welcome{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;background-color:var(--paper);
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:22px 22px;transition:opacity .4s ease}
.welcome.out{opacity:0;pointer-events:none}
.wbox{max-width:360px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}
.wlogo{font-size:64px;line-height:1;animation:wup .7s ease-out both}
.wlogo span{font-size:70px}
.wbox h2{margin:6px 0 0;font:700 22px var(--f-display);animation:wup .7s .25s ease-out both}
html[dir="rtl"] .wbox h2{font-family:var(--f-ku)}
.wbox p{margin:0;color:var(--muted);animation:wup .7s .5s ease-out both}
.wbar{width:160px;height:4px;border-radius:2px;background:var(--line);overflow:hidden;margin-top:10px}
.wbar i{display:block;height:100%;width:100%;background:var(--red);transform-origin:left;animation:wbar 3.3s linear both}
.wbox .btn{margin-top:4px;animation:wup .7s .75s ease-out both}
@keyframes wup{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes wbar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){.wlogo,.wbox h2,.wbox p,.wbox .btn,.menu{animation:none}.wbar i{animation:none;transform:none}}

.hero .lead{margin:6px 0 12px;color:var(--muted)}
.streakrow{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.streakrow b{font:700 34px var(--f-display);line-height:1}
.streakrow span{color:var(--muted);font-size:13px}
.points{margin:0;padding-inline-start:20px;display:flex;flex-direction:column;gap:10px}
.about{margin:0 0 12px;line-height:1.7}
.who{margin:6px 0 8px;font-weight:600}
.btn.outred{background:transparent;color:var(--red);border-color:var(--red)}
.sheet.danger::before{background:var(--red);opacity:.9}

/* exam figures */
.qimg{display:block;max-width:100%;height:auto;margin:10px auto 2px;border:1px solid var(--line);border-radius:6px;background:#fff}
.opt .qimg{margin:0;max-width:260px}

/* countdown under the logo + account switch link */
.brand{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:0}
.cd{font:600 11.5px/1.2 var(--f-ku);color:var(--muted);display:flex;flex-wrap:wrap;gap:3px 6px;align-items:baseline}
.cd b{color:var(--red);font-family:var(--f-display);font-size:13px;font-weight:700;direction:ltr;unicode-bidi:isolate}
.swap{margin:18px 0 0;color:var(--muted);font-size:14px}
.linkbtn{border:0;background:none;color:var(--pen);font:700 14px var(--f-ku);padding:0 2px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
/* back row: text link on the reading side, round back button always in the top-left corner */
/* group headings inside a chapter list (Learn English: levels, tests, book) */
.grp{font:700 12px var(--f-display);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:16px 0 0}

/* install tutorial video: opens full screen */
.installvidbtn{display:inline-flex;align-items:center;gap:8px}
.vidmodal{position:fixed;inset:0;z-index:100;background:rgba(8,12,22,.96);display:flex;align-items:center;justify-content:center;padding:56px 12px 16px}
.vidmodal[hidden]{display:none}
.vidmodal video{max-width:100%;max-height:100%;border-radius:12px;background:#000}
.vidclose{position:absolute;top:10px;right:14px;width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;font-size:30px;line-height:1;cursor:pointer}
.reccode{margin:14px 0;padding:14px 12px;text-align:center;font:700 clamp(22px,7vw,30px) ui-monospace,Menlo,Consolas,monospace;letter-spacing:.12em;background:var(--paper);color:var(--ink);border:2px dashed var(--red);border-radius:8px;user-select:all;-webkit-user-select:all;word-break:break-all}
.hero{overflow:hidden;isolation:isolate}
/* more Magic UI effects: progress ring, milestone sparkle, border beam */
.pring{width:26px;height:26px;flex:none;transform:rotate(-90deg)}
.pring circle{fill:none;stroke:var(--line);stroke-width:4}
.pring circle.v{stroke:var(--pen);stroke-linecap:round;transition:stroke-dasharray .5s ease}
.streakrow.milestone b{color:var(--gold);text-shadow:0 0 14px var(--gold-soft);animation:p12glow 1.6s ease-in-out infinite}
@keyframes p12glow{50%{text-shadow:0 0 22px var(--gold),0 0 4px var(--gold)}}
@property --p12a{syntax:"<angle>";initial-value:0deg;inherits:false}
.price .beam{position:relative;border-color:transparent;background:linear-gradient(var(--card),var(--card)) padding-box,conic-gradient(from var(--p12a),transparent 0 70%,var(--pen) 85%,var(--red) 100%) border-box;border:1.5px solid transparent;animation:p12beam 3.2s linear infinite}
@keyframes p12beam{to{--p12a:360deg}}
@media (prefers-reduced-motion:reduce){.streakrow.milestone b,.price .beam{animation:none!important}}
