
:root{
  --bg:#F2F5F8; --surface:#FFFFFF; --ink:#0B1E2D; --muted:#5B6B7A; --line:#DCE3E9; --navy:#0B1E2D; --on-navy:#FFFFFF;
  --speed:#12A9E0; --memory:#E8318A; --study:#F7B23B; --success:#6CBE45;
  --speed-ink:#0B78A3; --memory-ink:#C21C6E; --study-ink:#9A5B00; --success-ink:#2F7D1A;
  --speed-tint:#E3F5FC; --memory-tint:#FCE6F1; --study-tint:#FEF3DF; --success-tint:#E8F5E1;
  --hl:#FFE7A3;
  --font:"Cairo","Segoe UI",Tahoma,sans-serif;
  --r:16px;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#081621; --surface:#0F2536; --ink:#F4F7FA; --muted:#9FB3C4; --line:#23394C; --navy:#13283A; --on-navy:#FFFFFF;
  --speed-ink:#5CC8F0; --memory-ink:#F47BB5; --study-ink:#F7B23B; --success-ink:#8FD46B;
  --speed-tint:#0F3347; --memory-tint:#3A1A2E; --study-tint:#3A2C12; --success-tint:#1B3313; --hl:#5A4A12; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#081621; --surface:#0F2536; --ink:#F4F7FA; --muted:#9FB3C4; --line:#23394C; --navy:#13283A; --on-navy:#FFFFFF;
  --speed-ink:#5CC8F0; --memory-ink:#F47BB5; --study-ink:#F7B23B; --success-ink:#8FD46B;
  --speed-tint:#0F3347; --memory-tint:#3A1A2E; --study-tint:#3A2C12; --success-tint:#1B3313; --hl:#5A4A12; color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.7;margin:0}
.app{max-width:520px;margin:0 auto;min-height:100%;display:flex;flex-direction:column}
header{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--navy);color:var(--on-navy);padding:10px 16px;display:flex;align-items:center;gap:10px}
header svg{width:34px;height:34px;flex:none}
header .brand{font-weight:800;font-size:18px;line-height:1.2}
header .mod{font-size:13px;opacity:.8}
header .beta{margin-inline-start:auto;font-size:12px;border:1px solid rgba(255,255,255,.35);border-radius:99px;padding:2px 10px;white-space:nowrap}
main{flex:1;padding:16px 16px 96px;display:flex;flex-direction:column;gap:14px}
nav.tabs{position:fixed;bottom:0;inset-inline:0;background:var(--surface);border-top:1px solid var(--line);display:flex;justify-content:center;padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));z-index:5}
nav.tabs .in{max-width:520px;width:100%;display:flex}
nav.tabs button{flex:1;background:none;border:0;font:inherit;font-size:13px;color:var(--muted);padding:6px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;border-radius:12px}
nav.tabs button svg{width:22px;height:22px}
nav.tabs button[aria-current="page"]{color:var(--ink);font-weight:700}
h1{font-size:24px;line-height:1.3;margin:0;text-wrap:balance}
h2{font-size:19px;line-height:1.35;margin:0;text-wrap:balance}
p{margin:0}
.muted{color:var(--muted)}
.small{font-size:13px}
.card{background:var(--surface);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:10px;border:1px solid var(--line)}
.card.navy{background:var(--navy);color:var(--on-navy);border-color:transparent}
.card.navy .muted{color:#9FB3C4}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.days{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}
.days button{flex:none;min-width:44px;height:44px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-weight:700;cursor:pointer}
.days button[aria-pressed="true"]{background:var(--navy);color:var(--on-navy);border-color:var(--navy)}
.task{display:flex;gap:12px;align-items:center;padding:12px;border-radius:14px;border:0;font:inherit;color:var(--ink);text-align:start;cursor:pointer;width:100%}
.task .dot{width:12px;height:12px;border-radius:50%;flex:none}
.task .t{flex:1;min-width:0}
.task b{display:block;font-size:15px}
.task span{font-size:13px;color:var(--muted)}
.task .go{font-size:20px;color:var(--muted)}
.speed{background:var(--speed-tint)} .speed .dot{background:var(--speed)}
.memory{background:var(--memory-tint)} .memory .dot{background:var(--memory)}
.study{background:var(--study-tint)} .study .dot{background:var(--study)}
.big{font-size:44px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.pill{display:inline-block;font-size:12px;font-weight:700;border-radius:99px;padding:2px 10px}
.pill.speed{color:var(--speed-ink)} .pill.memory{color:var(--memory-ink)} .pill.study{color:var(--study-ink)}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tool{border-radius:14px;padding:14px;border:0;font:inherit;text-align:start;color:var(--ink);cursor:pointer;display:flex;flex-direction:column;gap:4px;min-width:0}
.tool b{font-size:15px}
.tool span{font-size:12.5px;color:var(--muted);line-height:1.5}
.sec-title{font-size:13px;font-weight:700;color:var(--muted);letter-spacing:.02em;margin-top:6px}
.btn{font:inherit;font-weight:700;border-radius:12px;border:0;padding:12px 18px;cursor:pointer;background:var(--navy);color:var(--on-navy)}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.wide{width:100%}
.btn:disabled{opacity:.45;cursor:default}
button:focus-visible,select:focus-visible,textarea:focus-visible,input:focus-visible{outline:3px solid var(--speed);outline-offset:2px}
.back{background:none;border:0;font:inherit;color:var(--muted);cursor:pointer;padding:0;align-self:flex-start}
.reader{font-size:19px;line-height:2.1;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;max-height:52vh;overflow-y:auto}
.reader .w{border-radius:4px;padding:0 1px;cursor:default}
.reader.pick .w{cursor:pointer}
.reader .w.on{background:var(--hl)}
.reader .w.pass{color:var(--muted)}
.reader .w.found{background:var(--success-tint);color:var(--success-ink);font-weight:700}
.reader .w.miss{background:var(--memory-tint)}
.stage{min-height:150px;display:grid;place-items:center;text-align:center;font-size:28px;font-weight:700;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px}
.timer{font-variant-numeric:tabular-nums;font-weight:800;font-size:22px}
label.ctl{display:flex;flex-direction:column;gap:4px;font-size:14px}
input[type=range]{width:100%}
select,textarea,input[type=text]{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px}
textarea{min-height:170px;resize:vertical}
.q{display:flex;flex-direction:column;gap:8px}
.q button{font:inherit;text-align:start;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
.q button[aria-pressed="true"]{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}
.beat{width:70px;height:70px;border-radius:50%;background:var(--speed-tint);transition:transform .08s}
.beat.hit{background:var(--speed);transform:scale(1.12)}
.chart{width:100%;height:auto;display:block}
.targets{display:flex;gap:8px;flex-wrap:wrap}
.targets span{background:var(--speed-tint);color:var(--speed-ink);font-weight:700;border-radius:99px;padding:2px 12px}
.targets span.done{background:var(--success-tint);color:var(--success-ink);text-decoration:line-through}
.list{display:flex;flex-direction:column;gap:8px}
.item{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;background:var(--memory-tint)}
.item .t{flex:1;min-width:0}
.result{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}
.result div{background:var(--bg);border-radius:12px;padding:10px 4px}
.result b{display:block;font-size:24px;font-variant-numeric:tabular-nums}
.ring{font-variant-numeric:tabular-nums;font-size:56px;font-weight:800;text-align:center;line-height:1.1}
@media (prefers-reduced-motion: reduce){.beat{transition:none}}
/* ── إضافات التطبيق الحقيقي ── */
nav.tabs[hidden]{display:none}
header .acct{margin-inline-start:auto;background:none;border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:99px;padding:3px 12px;font:inherit;font-size:13px;cursor:pointer}
.auth{display:flex;flex-direction:column;gap:14px;padding-top:8px}
.auth .hero{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:10px 0 4px}
.auth .hero svg{width:84px;height:84px}
.seg{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:4px;gap:4px}
.seg button{flex:1;font:inherit;font-weight:700;border:0;border-radius:10px;padding:8px;background:none;color:var(--muted);cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--navy);color:var(--on-navy)}
form.stack{display:flex;flex-direction:column;gap:12px}
input[type=email],input[type=password],input[type=tel]{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px;width:100%}
input.code{font-family:ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase;text-align:center;direction:ltr;font-size:20px}
.err{color:var(--memory-ink);font-size:14px;font-weight:700;min-height:1em}
.ok{color:var(--success-ink);font-size:14px;font-weight:700}
.btn.wa{background:#1FA855;color:#fff}
.btn.speedbtn{background:var(--speed-ink);color:#fff}
.kv{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:15px}
.kv:last-child{border-bottom:0}
.lock{display:flex;flex-direction:column;gap:12px;align-items:center;text-align:center;padding:18px}
.lock .ico{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:var(--study-tint);color:var(--study-ink)}
.lock .ico svg{width:30px;height:30px}
.banner{border-radius:14px;padding:10px 14px;font-size:14px;background:var(--study-tint);color:var(--ink);display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.banner b{color:var(--study-ink)}
.spinner{width:34px;height:34px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--speed);animation:spin 1s linear infinite;margin:40px auto}
@keyframes spin{to{transform:rotate(360deg)}}
.toast{position:fixed;inset-inline:16px;bottom:84px;margin:0 auto;max-width:480px;background:var(--navy);color:#fff;border-radius:12px;padding:10px 14px;font-size:14px;z-index:20;text-align:center}
.task.done{opacity:.75}
.task .chk{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;flex:none;background:var(--surface);font-size:14px;color:transparent;cursor:pointer}
.task.done .chk{background:var(--success);border-color:var(--success);color:#fff}
.task .main{display:flex;gap:12px;align-items:center;flex:1;min-width:0;background:none;border:0;font:inherit;color:inherit;text-align:start;cursor:pointer;padding:0}
@media (prefers-reduced-motion: reduce){.spinner{animation-duration:3s}}
header .beta:not([hidden]) + .acct{margin-inline-start:8px}
