@font-face{font-family:Tajawal;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/tajawal-arabic-400-normal-DIMBuZnN.woff2) format("woff2"),url(/assets/tajawal-arabic-400-normal-DCQxawbB.woff) format("woff")}@font-face{font-family:Tajawal;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/tajawal-arabic-500-normal-DoitJjou.woff2) format("woff2"),url(/assets/tajawal-arabic-500-normal-CbVEaYEW.woff) format("woff")}@font-face{font-family:Tajawal;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/tajawal-arabic-700-normal-c-WwFYr-.woff2) format("woff2"),url(/assets/tajawal-arabic-700-normal-9L7Zusdl.woff) format("woff")}@font-face{font-family:Tajawal;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/tajawal-arabic-800-normal-C3W71-SS.woff2) format("woff2"),url(/assets/tajawal-arabic-800-normal-Bp_4IW2m.woff) format("woff")}@font-face{font-family:Tajawal;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/tajawal-latin-400-normal-BVNSOH3d.woff2) format("woff2"),url(/assets/tajawal-latin-400-normal-BdYcZznU.woff) format("woff")}@font-face{font-family:Tajawal;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/tajawal-latin-700-normal-BypgxfGb.woff2) format("woff2"),url(/assets/tajawal-latin-700-normal-CV3bxpHe.woff) format("woff")}@font-face{font-family:Tajawal;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/tajawal-latin-800-normal-CmI34b-g.woff2) format("woff2"),url(/assets/tajawal-latin-800-normal-Dm5jVIIh.woff) format("woff")}@font-face{font-family:Amiri;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/amiri-arabic-400-normal-CT-oGClK.woff2) format("woff2"),url(/assets/amiri-arabic-400-normal-CBLEcY0Z.woff) format("woff")}@font-face{font-family:Amiri;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/amiri-arabic-700-normal-3pcsEkwp.woff2) format("woff2"),url(/assets/amiri-arabic-700-normal-DToP4gPc.woff) format("woff")}:root{--bg: #edf1ec;--surface: #ffffff;--ink: #1c2925;--muted: #56675f;--green: #1f6b52;--green-soft: #dcebe3;--gold: #8f6614;--gold-bright: #a87a1f;--gold-soft: #f4e8cc;--rose: #a9503c;--rose-soft: #f6e1da;--line: #c9d6cf;--locked: #8a9a93;--on-accent: #ffffff;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #131a17;--surface: #1a231f;--ink: #e2e8e4;--muted: #a3b2ab;--green: #74b89c;--green-soft: #20352d;--gold: #d8b46a;--gold-bright: #d8b46a;--gold-soft: #3a311b;--rose: #e08b74;--rose-soft: #3d2620;--line: #2d3a34;--locked: #6f8279;--on-accent: #131a17;color-scheme:dark}}:root[data-theme=dark]{--bg: #131a17;--surface: #1a231f;--ink: #e2e8e4;--muted: #a3b2ab;--green: #74b89c;--green-soft: #20352d;--gold: #d8b46a;--gold-bright: #d8b46a;--gold-soft: #3a311b;--rose: #e08b74;--rose-soft: #3d2620;--line: #2d3a34;--locked: #6f8279;--on-accent: #131a17;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:Tajawal,Noto Kufi Arabic,system-ui,sans-serif;font-size:17px;line-height:1.7;min-height:100vh}.app{max-width:480px;margin:0 auto;padding:16px 16px 40px}button{font:inherit;color:inherit;cursor:pointer;border:none;background:none}:focus-visible{outline:3px solid var(--gold-bright);outline-offset:2px;border-radius:10px}h2:focus{outline:none}.quran{font-family:Amiri,Traditional Arabic,serif}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.map-app{padding-top:14px}.map-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:46px;height:46px;flex:none;filter:drop-shadow(0 3px 6px rgb(31 107 82 / .25))}.brand h1{font-size:26px;font-weight:800;line-height:1}.brand small{display:block;font-size:13px;color:var(--muted);font-weight:500;margin-top:4px}.theme-btn{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;color:var(--ink)}.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}.chip{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:8px 6px 7px;display:grid;justify-items:center;line-height:1.25;text-align:center}.chip-icon{font-size:18px}.chip b{font-size:20px;font-weight:800;color:var(--ink)}.chip b small{font-size:13px;color:var(--muted);font-weight:700}.chip>span:last-child{font-size:12px;color:var(--muted)}.hero{position:relative;overflow:hidden;border-radius:22px;padding:18px 18px 16px;margin-bottom:8px;background:var(--green);color:#fff;display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;box-shadow:0 6px 16px -10px #1f6b5280}.hero-text{display:grid;gap:2px;position:relative;z-index:1}.hero-kicker{font-size:13px;opacity:.9;font-weight:700}.hero-name{font-family:Amiri,serif;font-size:30px;font-weight:700;line-height:1.3}.hero-meta{font-size:13px;opacity:.9}.hero-cta{position:relative;z-index:1;background:#e2b65a;color:#2b1f05;font-weight:800;font-size:16px;padding:12px 18px;border-radius:14px;box-shadow:0 4px #a87a1f;white-space:nowrap}.hero-cta:active{transform:translateY(3px);box-shadow:0 1px #a87a1f}.hero-bar{grid-column:1 / -1;height:8px;border-radius:4px;background:#ffffff38;position:relative;z-index:1;overflow:hidden}.hero-bar span{display:block;height:100%;border-radius:4px;background:#e2b65a}:root[data-theme=dark] .hero,:root[data-theme=dark] .hero-cta{color:inherit}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .hero{background:#1f3b31}}:root[data-theme=dark] .hero{background:#1f3b31;color:#fff}:root[data-theme=dark] .hero-cta{color:#2b1f05}.map-start,.map-end{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--muted);font-size:13px;font-weight:700}.map-start{margin-top:18px}.map-start span,.map-end span{background:var(--surface);border:1px solid var(--line);padding:3px 14px;border-radius:20px}.end-orn{width:48px;height:48px}.end-orn .orn-ring,.deco .orn-ring{fill:var(--surface);stroke:var(--gold-bright);stroke-width:1.2}.end-orn .orn-petal,.deco .orn-petal{fill:var(--gold-soft);stroke:var(--gold-bright);stroke-width:.8}.end-orn .orn-core{fill:var(--gold-bright)}.chip-orn{width:22px;height:22px}.chip-orn .orn-ring{fill:none;stroke:var(--gold-bright);stroke-width:1.6}.chip-orn .orn-petal{fill:var(--gold-bright)}.chip-orn .orn-core{fill:var(--surface)}.map{position:relative;list-style:none;margin:0 0 6px}.map-path{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.trail{fill:none;stroke:var(--line);stroke-width:10;stroke-linecap:round}.trail-done{fill:none;stroke:var(--green);stroke-width:10;stroke-linecap:round;opacity:.55}.stop{position:absolute;width:0;height:0;display:grid;place-items:center}.stop .node{position:absolute;width:70px;height:70px;border-radius:50%;display:grid;place-items:center;transform:translateY(-4px);font-weight:800;background:var(--surface);color:var(--locked);border:2px solid var(--line);box-shadow:0 3px 0 var(--line)}.stop .node:active{transform:translateY(0);box-shadow:0 1px 0 var(--line)}.node-num{font-family:Tajawal,sans-serif;font-size:22px}.stop-name{position:absolute;top:40px;white-space:nowrap;font-weight:700;font-size:14px;color:var(--muted);background:var(--bg);padding:0 8px;border-radius:10px}.stop.done .node{background:var(--green);border-color:var(--green);color:#fff;box-shadow:0 3px #154a39}.stop.done .stop-name{color:var(--green)}.stop.locked .node{background:var(--surface);color:var(--locked)}.stop.soon .node{border-style:dashed;box-shadow:none;transform:none;background:var(--surface);border-width:2px}.stop.soon .stop-name{color:var(--locked);font-weight:500}.stop.current .node{width:86px;height:86px;background:var(--gold-bright);border-color:var(--gold-bright);color:#fff;box-shadow:0 4px #7d5a12,0 0 0 5px var(--gold-soft)}.stop.current .stop-name{top:50px;color:var(--gold);font-size:16px;font-weight:800}.node-orn{width:50px;height:50px}.node-orn .orn-ring{fill:none;stroke:#ffffffb3;stroke-width:1.2}.node-orn .orn-petal{fill:#ffffff47;stroke:#fff;stroke-width:.9}.node-orn .orn-core{fill:#fff}.bubble{position:absolute;bottom:52px;background:var(--surface);color:var(--gold);border:2px solid var(--gold-bright);font-weight:800;font-size:15px;padding:3px 16px;border-radius:12px;white-space:nowrap;box-shadow:0 3px 0 var(--gold-soft)}.bubble:after{content:"";position:absolute;bottom:-8px;left:50%;margin-left:-7px;border:7px solid transparent;border-top-color:var(--gold-bright);border-bottom:0}.deco{position:absolute;width:38px;height:38px;opacity:.4}.deco .orn-core{fill:var(--gold-bright)}.deco-l{right:105px}.deco-r{left:105px}@media (prefers-reduced-motion: no-preference){.stop .node{transition:transform .08s,box-shadow .08s}.stage-body{animation:rise .25s ease-out}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.score.pop{animation:pop .35s ease-out}@keyframes pop{40%{transform:scale(1.25)}}.done-wrap .badge{animation:badge-in .5s cubic-bezier(.34,1.56,.64,1)}@keyframes badge-in{0%{transform:scale(.4);opacity:0}}.celebrate i{animation:burst .9s ease-out var(--d) both}@keyframes burst{0%{opacity:1;transform:rotate(var(--a)) translateY(-60px) scale(.6)}to{opacity:0;transform:rotate(var(--a)) translateY(-130px) scale(1)}}}.progress{display:flex;gap:6px;margin-bottom:20px}.progress span{flex:1;height:7px;border-radius:4px;background:var(--line)}.progress span.on{background:var(--green)}.steplabel{font-size:14px;color:var(--muted);margin-bottom:6px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:44px}.steplabel-text{text-align:center}.close{font-size:22px;line-height:1;color:var(--muted);padding:6px 10px;justify-self:end;min-width:44px;min-height:44px}.back{justify-self:start;display:inline-flex;align-items:center;gap:2px;color:var(--green);font-weight:700;font-size:15px;padding:6px 4px;min-height:44px}h2{font-size:24px;font-weight:800;margin-bottom:6px}.sub{color:var(--muted);margin-bottom:18px}.panel{background:var(--surface);border-radius:18px;padding:20px;border:1px solid var(--line);margin-bottom:16px}.mushaf{text-align:center;font-size:28px;line-height:2.4}.basmala{font-size:23px;color:var(--green);margin-bottom:6px;text-align:center}.w{border-bottom:2px dotted var(--gold-bright);border-radius:4px;padding:0 2px;font:inherit;line-height:inherit}.w.active{background:var(--gold-soft)}.num{color:var(--gold);font-size:.8em}.gloss{min-height:76px;background:var(--gold-soft);border-radius:14px;padding:12px 16px;font-size:16px;margin-bottom:8px}.gloss b{font-family:Amiri,serif;font-size:22px;color:var(--gold);font-weight:400}.crash{padding-top:48px}.crash pre{white-space:pre-wrap;word-break:break-word;font-size:12px;background:var(--green-soft);border-radius:12px;padding:12px;margin:12px 0}.recite{display:flex;flex-direction:column;gap:6px;background:var(--green-soft);border-radius:14px;padding:10px 14px;margin-bottom:12px}.reciters{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:var(--surface);border-radius:11px;padding:3px}.reciters button{padding:8px 6px;border-radius:9px;font-size:14px;font-weight:700;color:var(--muted);min-height:40px}.reciters button small{display:block;font-size:11px;font-weight:500;opacity:.85}.reciters button.on{background:var(--green);color:var(--on-accent)}.tracked{display:flex;align-items:center;gap:10px;min-height:44px}.tracked .play{flex:none;width:44px;height:44px;border-radius:50%;background:var(--green);color:var(--on-accent);display:grid;place-items:center}.tracked-pos{font-size:14px;font-weight:700;color:var(--green)}.hl{background:var(--gold-soft);outline:2px solid var(--gold-bright);outline-offset:1px;border-radius:6px}.recite audio{width:100%;height:40px}.recite-src{font-size:11px;color:var(--muted)}.recite-src a{color:inherit}.recite-err{font-size:13px;color:var(--muted)}.attrib{font-size:13px;color:var(--muted);text-align:center;margin:8px 0 4px}.attrib a,.foot a{color:var(--green)}.tafsir{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.tafsir:last-child{border-bottom:none}.tafsir .n{flex:none;width:30px;height:30px;border-radius:50%;background:var(--green-soft);color:var(--green);font-weight:800;display:grid;place-items:center;font-size:14px}.tafsir .a{font-size:21px;color:var(--ink);display:block;line-height:2}.scene{text-align:center;padding:26px 20px}.scene .icon{font-size:54px;line-height:1.2;margin-bottom:10px}.scene p{font-size:18px}.scene .say{font-family:Amiri,serif;font-size:24px;color:var(--gold);margin-top:10px;display:block}.dots{display:flex;justify-content:center;gap:6px;margin-top:14px}.dots i{width:8px;height:8px;border-radius:50%;background:var(--line)}.dots i.on{background:var(--gold-bright)}.cite{display:block;font-size:13px;color:var(--muted);margin-top:6px}.cite.c{text-align:center;margin:0 0 12px}.grade{display:inline-block;font-size:13px;font-weight:700;padding:2px 10px;border-radius:10px;margin-bottom:10px}.grade.sahih_hadith{background:var(--green-soft);color:var(--green)}.grade.sira_tafsir{background:var(--gold-soft);color:var(--gold)}.hadith{font-family:Amiri,serif;font-size:25px;line-height:2;text-align:center;color:var(--ink);margin:10px 0}.src{text-align:center;font-size:14px;color:var(--muted);margin-bottom:12px}.src dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;text-align:right;max-width:320px;margin:0 auto}.src dt{font-weight:700}.benefit{background:var(--green-soft);border-radius:14px;padding:12px 16px;font-size:16px;margin-top:10px}.quiz-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.quiz-meta .sub{margin:0}.score{background:var(--gold-soft);color:var(--gold);font-weight:800;border-radius:20px;padding:2px 12px;font-size:15px}.q{font-size:19px;font-weight:700;margin-bottom:14px}.opt{display:block;width:100%;text-align:right;padding:14px 16px;margin-bottom:10px;border-radius:14px;border:2px solid var(--line);background:var(--surface);font-weight:500}.opt.quran{font-size:22px;text-align:center;font-weight:400}.opt.right{border-color:var(--green);background:var(--green-soft)}.opt.wrong{border-color:var(--rose);background:var(--rose-soft)}.opt.picked{border-color:var(--gold-bright);background:var(--gold-soft)}.opt:disabled{cursor:default}.feedback{border-radius:14px;padding:12px 16px;margin:4px 0 8px;font-size:16px}.feedback.good{background:var(--green-soft)}.feedback.soft{background:var(--rose-soft)}.order-slots{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;list-style:none}.slot{min-height:48px;border:2px dashed var(--line);border-radius:12px;padding:10px 14px;display:flex;gap:10px;align-items:center}.slot b{color:var(--gold)}.slot.filled{border-style:solid}.slot.quran{font-size:20px}.order-title{margin:14px 0 8px;font-size:17px}.slot.right{border-color:var(--green);background:var(--green-soft)}.slot.wrong{border-color:var(--rose);background:var(--rose-soft)}.match{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.match .col{display:flex;flex-direction:column;gap:10px}.match .opt{margin:0;min-height:58px;font-size:15px;padding:10px 12px}.match .opt.quran{font-size:22px}.cloze{text-align:center;font-size:27px;line-height:2.4}.blank{display:inline-block;min-width:80px;border-bottom:3px solid var(--gold-bright);color:var(--gold)}.blank.filled{border-bottom-color:var(--green);color:var(--green)}.commit{display:flex;gap:12px;align-items:flex-start;width:100%;text-align:right;padding:14px 16px;border:2px solid var(--line);border-radius:14px;margin-bottom:10px;background:var(--surface)}.commit.sel{border-color:var(--green);background:var(--green-soft)}.commit .box{flex:none;width:24px;height:24px;border-radius:7px;border:2px solid var(--line);display:grid;place-items:center;margin-top:3px;font-size:15px;color:var(--on-accent)}.commit.sel .box{background:var(--green);border-color:var(--green)}.cta{display:block;width:100%;padding:15px;border-radius:16px;background:var(--green);color:var(--on-accent);font-weight:800;font-size:18px;margin-top:8px}.stage-body>.cta:not(.ghost){position:sticky;bottom:12px;z-index:5;box-shadow:0 0 0 6px var(--bg),0 10px 24px -8px #00000059}.stage-body>.cta:not(.ghost):disabled{opacity:1;background:var(--line);color:var(--muted)}.cta:disabled{opacity:.4;cursor:default}.cta.ghost{background:transparent;color:var(--green);border:2px solid var(--green)}.done-wrap{text-align:center;padding-top:48px}.celebrate{position:relative;width:140px;margin:0 auto 18px}.celebrate i{z-index:1}.celebrate i{position:absolute;top:50%;left:50%;width:10px;height:10px;margin:-5px;border-radius:50%;background:var(--gold-bright);opacity:0}.celebrate i:nth-child(3n+1){background:var(--green)}.celebrate i:nth-child(4n){width:8px;height:14px;border-radius:4px}.badge{width:140px;height:140px;margin:0 auto;border-radius:50%;background:var(--gold-bright);color:var(--on-accent);display:grid;place-items:center;font-family:Amiri,serif;font-size:30px;font-weight:700;box-shadow:0 0 0 10px var(--gold-soft)}.confirm{margin:auto;max-width:min(360px,calc(100% - 32px));border:none;border-radius:20px;padding:22px 20px 16px;background:var(--surface);color:var(--ink);text-align:center;box-shadow:0 20px 50px -10px #0006}.confirm::backdrop{background:#0a14108c}.confirm h3{font-size:20px;font-weight:800;margin-bottom:6px}.confirm p{color:var(--muted);font-size:16px;margin-bottom:8px}.summary{display:flex;justify-content:center;gap:12px;margin:18px 0}.summary div{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 18px}.summary b{display:block;font-size:24px;color:var(--green)}.pledge{background:var(--green-soft);border-radius:14px;padding:12px 16px;margin:0 0 16px;text-align:right}.foot{margin-top:28px;font-size:13px;color:var(--muted);text-align:center}.draft-note{background:var(--gold-soft);color:var(--ink);border-radius:12px;padding:8px 12px;font-size:13px;margin-bottom:16px}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:12px;font-size:15px;opacity:0;transition:opacity .25s;pointer-events:none;max-width:calc(100% - 32px)}.toast.show{opacity:1}@media (prefers-reduced-motion: reduce){.toast{transition:none}}.q-word{text-align:center;font-size:34px;color:var(--gold);margin:-4px 0 14px}
