/* ---------- Fonts ---------- */
@font-face{font-family:"Amiri Quran";src:url(fonts/amiri-quran.woff2) format("woff2");font-display:block}
@font-face{font-family:"Amiri";src:url(fonts/amiri-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Amiri";src:url(fonts/amiri-700.woff2) format("woff2");font-weight:700;font-display:swap}

/* ---------- Themes ---------- */
:root{
  --ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --bg:#ece7dc; --bg2:#e4ddcf;
  --paper:#fffdf6; --paper-edge:#f3ead6;
  --ink:#1c1a15; --ink-soft:#5e574a; --muted:#8a8272;
  --gold:#b08d47; --gold-soft:rgba(176,141,71,.35);
  --green:#1f4d3a;
  --bar:rgba(255,253,246,.86); --line:rgba(60,48,20,.12);
  --hl:rgba(255,200,40,.5); --hl-ring:rgba(214,150,0,.55);
  --sheet:#fffdf8; --chip:#f6f0e2;
  --shadow:0 1px 2px rgba(60,40,0,.08),0 8px 30px rgba(60,40,0,.10);
  color-scheme:light;
}
html[data-theme="sepia"]{
  --bg:#ddcfb1; --bg2:#d3c3a2;
  --paper:#f5e9cf; --paper-edge:#eadab6;
  --ink:#2c2213; --ink-soft:#5f4f33; --muted:#8a7756;
  --gold:#9c7535; --gold-soft:rgba(156,117,53,.38);
  --bar:rgba(245,233,207,.88); --line:rgba(70,50,15,.15);
  --hl:rgba(240,170,40,.45); --hl-ring:rgba(190,120,0,.55);
  --sheet:#f7edd6; --chip:#ecdfc1;
}
html[data-theme="dark"]{
  --bg:#0c0f11; --bg2:#090b0d;
  --paper:#161a1d; --paper-edge:#1d2226;
  --ink:#ebe5d6; --ink-soft:#b9b1a0; --muted:#80796b;
  --gold:#c4a463; --gold-soft:rgba(196,164,99,.3);
  --green:#7fb49a;
  --bar:rgba(18,21,24,.86); --line:rgba(255,255,255,.08);
  --hl:rgba(212,170,80,.38); --hl-ring:rgba(230,190,100,.6);
  --sheet:#171b1e; --chip:#20262a;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.45);
  color-scheme:dark;
}

*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{
  background:var(--bg); color:var(--ink); font-family:var(--ui);
  overflow:hidden; -webkit-font-smoothing:antialiased; -webkit-tap-highlight-color:transparent;
  overscroll-behavior:none;
}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
input{font:inherit;color:inherit}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.muted{color:var(--muted)}

/* ---------- Gate ---------- */
.gate{
  position:fixed;inset:0;display:grid;place-items:center;padding:24px;
  background:
    radial-gradient(1200px 600px at 50% -10%, rgba(196,164,99,.18), transparent 60%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cg fill='none' stroke='%23c4a463' stroke-opacity='.09' stroke-width='1'%3E%3Crect x='20' y='20' width='40' height='40'/%3E%3Crect x='20' y='20' width='40' height='40' transform='rotate(45 40 40)'/%3E%3Cpath d='M0 0l20 20M80 0L60 20M0 80l20-20M80 80L60 60'/%3E%3C/g%3E%3C/svg%3E"),
    #0f2a22;
  color:#efe6cf; z-index:50;
  transition:opacity .5s ease, visibility .5s;
}
.gate.out{opacity:0;visibility:hidden}
.gate-card{width:min(360px,100%);text-align:center}
.gate-star{width:72px;height:72px;color:#c4a463;margin-bottom:14px;animation:spin 60s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.gate-title{font-family:"Amiri Quran","Amiri",serif;font-weight:400;font-size:44px;margin:0;line-height:1.5;color:#f3e7c6}
.gate-sub{margin:2px 0 34px;letter-spacing:.32em;text-transform:uppercase;font-size:11px;color:rgba(239,230,207,.55)}
.pw-wrap{
  display:flex;align-items:center;gap:6px;padding:6px;border-radius:16px;
  background:rgba(255,255,255,.06);border:1px solid rgba(196,164,99,.35);
  transition:border-color .2s, box-shadow .2s;
}
.pw-wrap:focus-within{border-color:#c4a463;box-shadow:0 0 0 4px rgba(196,164,99,.15)}
.pw-wrap input{flex:1;min-width:0;background:transparent;border:0;outline:0;padding:12px 12px;font-size:17px;letter-spacing:.08em;color:#fff}
.pw-wrap input::placeholder{color:rgba(239,230,207,.4);letter-spacing:.02em}
.pw-wrap button{width:46px;height:46px;border-radius:12px;background:#c4a463;color:#0f2a22;display:grid;place-items:center;transition:transform .15s, filter .2s}
.pw-wrap button:hover{filter:brightness(1.08)}
.pw-wrap button:active{transform:scale(.95)}
.pw-wrap button svg{width:22px;height:22px}
.gate-msg{min-height:20px;margin:14px 0 0;font-size:13.5px;color:#f0b4a4}
.shake{animation:shake .42s}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.pw-wrap.loading button{pointer-events:none}
.pw-wrap.loading button svg{display:none}
.pw-wrap.loading button::after{content:"";width:18px;height:18px;border-radius:50%;border:2px solid rgba(15,42,34,.3);border-top-color:#0f2a22;animation:spin .7s linear infinite}

/* ---------- App shell ---------- */
.app{position:fixed;inset:0;display:flex;flex-direction:column}
.bar{
  position:relative;z-index:5;flex:none;
  display:flex;align-items:center;gap:10px;
  padding:calc(env(safe-area-inset-top) + 8px) 12px 8px;
  background:var(--bar);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);
  border-bottom:1px solid var(--line);
}
.icon-btn{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:var(--ink-soft);transition:background .15s}
.icon-btn:hover{background:var(--line)}
.icon-btn svg{width:22px;height:22px}
.bar-mid{flex:1;min-width:0;text-align:center;line-height:1.15}
.bar-surah{font-family:"Amiri",serif;font-weight:700;font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-meta{font-size:11.5px;color:var(--muted);letter-spacing:.02em;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:440px){.bar-meta .en{display:none}.bar{gap:7px;padding-left:8px;padding-right:8px}.hl-pill{padding:0 11px 0 9px}}
.hl-pill{
  display:flex;align-items:center;gap:6px;height:36px;padding:0 13px 0 11px;border-radius:999px;
  background:var(--chip);border:1px solid var(--line);color:var(--ink-soft);font-weight:600;font-size:14px;
  font-variant-numeric:tabular-nums;transition:background .2s,color .2s,transform .15s;
}
.hl-pill svg{width:17px;height:17px}
.hl-pill.has{background:var(--hl);border-color:var(--hl-ring);color:var(--ink)}
.hl-pill:active{transform:scale(.95)}
.hl-pill.bump{animation:bump .35s ease}
@keyframes bump{40%{transform:scale(1.14)}}
.progress{position:absolute;left:0;right:0;bottom:-1px;height:2px}
.progress i{position:absolute;right:0;top:0;bottom:0;width:0;background:var(--gold);transition:width .25s ease}

/* ---------- Pager ---------- */
.pager{
  flex:1;min-height:0;display:flex;direction:rtl;
  overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;
  scrollbar-width:none;outline:none;touch-action:pan-x pan-y;
  overscroll-behavior-x:contain;
}
.pager::-webkit-scrollbar{display:none}
.slide{
  flex:0 0 100%;height:100%;scroll-snap-align:center;scroll-snap-stop:always;
  display:grid;place-items:center;padding:var(--gap,12px) 0 calc(var(--gap,12px) + env(safe-area-inset-bottom));
}
.page{
  position:relative;width:var(--pw,360px);height:var(--ph,640px);
  background:linear-gradient(90deg,var(--paper-edge),var(--paper) 7%,var(--paper) 93%,var(--paper-edge));
  border-radius:6px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;padding:calc(var(--pw) * .045) calc(var(--pw) * .055) calc(var(--pw) * .03);
  direction:rtl;
}
.page::before{ /* ornamental double frame */
  content:"";position:absolute;inset:calc(var(--pw) * .018);pointer-events:none;
  border:1px solid var(--gold-soft);border-radius:3px;
  box-shadow:inset 0 0 0 3px transparent, inset 0 0 0 4px var(--gold-soft);
}
.ph{
  flex:none;display:flex;justify-content:space-between;align-items:baseline;
  font-family:"Amiri",serif;font-size:calc(var(--pw) * .036);color:var(--gold);
  padding:0 4px calc(var(--pw) * .012);border-bottom:1px solid var(--gold-soft);margin-bottom:calc(var(--pw) * .02);
}
.pn{
  flex:none;text-align:center;font-family:"Amiri",serif;color:var(--gold);
  font-size:calc(var(--pw) * .04);padding-top:calc(var(--pw) * .012);
}
.pn span{display:inline-block;min-width:2.4em;border-top:1px solid var(--gold-soft);padding-top:2px}
.txt{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.flow{
  font-family:"Amiri Quran",serif;line-height:2.05;color:var(--ink);
  text-align:justify;text-align-last:center;text-justify:inter-word;
  word-spacing:.04em;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;
}
.page.opening .txt{justify-content:center}
.page.opening .flow{text-align:center}
.page.scroll .txt{overflow-y:auto}
.skeleton{flex:1;display:grid;place-items:center;color:var(--gold-soft)}
.skeleton::after{content:"";width:28px;height:28px;border-radius:50%;border:2px solid var(--gold-soft);border-top-color:var(--gold);animation:spin .8s linear infinite}

/* words */
.w{border-radius:.28em;transition:background-color .18s, box-shadow .18s;cursor:pointer}
@media (hover:hover){.w:hover{color:var(--green)}}
.w.hl{background:var(--hl);box-shadow:0 0 0 .06em var(--hl);-webkit-box-decoration-break:clone;box-decoration-break:clone}
.w.flash{animation:flash 1.6s ease}
@keyframes flash{0%,30%{box-shadow:0 0 0 .14em var(--hl-ring);}100%{box-shadow:0 0 0 .06em var(--hl)}}
.ae{color:var(--gold);white-space:nowrap;font-feature-settings:normal}

/* surah header */
.sh{
  position:relative;margin:.15em 0 .1em;height:2.1em;display:grid;place-items:center;
  border:1px solid var(--gold);border-radius:.25em;
  background:
    linear-gradient(var(--paper),var(--paper)) padding-box,
    repeating-linear-gradient(45deg,var(--gold-soft) 0 2px,transparent 2px 6px);
  box-shadow:inset 0 0 0 .16em var(--paper), inset 0 0 0 .2em var(--gold-soft);
  font-family:"Amiri",serif;line-height:1;text-align:center;
}
.sh::before,.sh::after{
  content:"";position:absolute;top:50%;width:.7em;height:.7em;border:1px solid var(--gold);
  background:var(--paper);transform:translateY(-50%) rotate(45deg);
}
.sh::before{right:.55em}.sh::after{left:.55em}
.sh .shn{font-weight:700;font-size:1.05em;color:var(--ink)}
.sh .shi{position:absolute;top:50%;transform:translateY(-50%);font-size:.48em;color:var(--muted);white-space:nowrap}
.sh .shi.r{right:4.4em}.sh .shi.l{left:4.4em}
.bsm{text-align:center!important;text-align-last:center;line-height:1.9}
.vr{display:inline}

/* nav arrows (desktop) */
.nav-arrow{
  position:fixed;top:50%;z-index:4;width:46px;height:46px;border-radius:50%;
  display:none;place-items:center;background:var(--bar);border:1px solid var(--line);color:var(--ink-soft);
  box-shadow:var(--shadow);transition:opacity .2s, transform .15s;
}
.nav-arrow svg{width:22px;height:22px}
.nav-arrow:hover{color:var(--ink)}
.nav-arrow:active{transform:scale(.93)}
.nav-arrow.next{left:max(16px,calc(50% - var(--pw)/2 - 80px))}
.nav-arrow.prev{right:max(16px,calc(50% - var(--pw)/2 - 80px))}
.nav-arrow[disabled]{opacity:0;pointer-events:none}
@media (hover:hover) and (pointer:fine) and (min-width:760px){.nav-arrow{display:grid}}

/* ---------- Sheets ---------- */
.scrim{position:fixed;inset:0;z-index:20;background:rgba(10,8,4,.42);animation:fade .2s ease}
@keyframes fade{from{opacity:0}}
.sheet{
  position:fixed;z-index:21;left:50%;bottom:0;transform:translateX(-50%);
  width:min(640px,100%);max-height:min(82vh,760px);display:flex;flex-direction:column;
  background:var(--sheet);border-radius:22px 22px 0 0;box-shadow:0 -10px 40px rgba(0,0,0,.25);
  padding:8px 18px calc(16px + env(safe-area-inset-bottom));animation:up .28s cubic-bezier(.2,.8,.2,1);
}
@media (min-width:700px){.sheet{bottom:50%;transform:translate(-50%,50%);border-radius:22px;animation:pop .22s ease}}
@keyframes up{from{transform:translate(-50%,100%)}}
@keyframes pop{from{opacity:0;transform:translate(-50%,52%) scale(.97)}}
.sheet-grip{width:38px;height:4px;border-radius:9px;background:var(--line);margin:2px auto 10px}
.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.sheet-head h2{margin:4px 0 0;font-size:19px;font-weight:700;letter-spacing:-.01em}
.sheet-sub{margin:3px 0 0;font-size:13px;color:var(--muted)}
.seg{display:inline-flex;background:var(--chip);border-radius:11px;padding:3px;gap:2px;margin:12px 0 4px;align-self:flex-start}
.seg button{padding:7px 12px;border-radius:9px;font-size:13px;font-weight:600;color:var(--muted);transition:all .15s}
.seg button.on{background:var(--sheet);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.hl-joined{
  font-family:"Amiri Quran",serif;font-size:24px;line-height:2;margin:10px 0 6px;padding:10px 14px;
  border-radius:14px;background:var(--chip);text-align:center;color:var(--ink);
  max-height:28vh;overflow:auto;
}
.hl-list{flex:1;min-height:0;overflow:auto;display:flex;flex-wrap:wrap;gap:8px;padding:8px 2px 4px;align-content:flex-start}
.chip{
  position:relative;display:flex;flex-direction:column;align-items:center;gap:0;
  padding:4px 14px 7px;border-radius:14px;background:var(--chip);border:1px solid var(--line);
  transition:transform .12s, border-color .15s;
}
.chip:hover{border-color:var(--gold-soft)}
.chip:active{transform:scale(.97)}
.chip .cw{font-family:"Amiri Quran",serif;font-size:23px;line-height:1.9}
.chip .cr{font-family:"Amiri",serif;font-size:12.5px;color:var(--muted);line-height:1.2;white-space:nowrap}
.chip .cx{
  position:absolute;top:-7px;left:-7px;width:22px;height:22px;border-radius:50%;
  background:var(--sheet);border:1px solid var(--line);display:grid;place-items:center;color:var(--muted);
}
.chip .cx svg{width:11px;height:11px}
.chip .cx:hover{color:#c0392b}
.hl-empty{padding:40px 10px 30px;text-align:center}
.hl-empty p{margin:4px 0}
.sheet-foot{display:flex;gap:10px;padding-top:12px;border-top:1px solid var(--line);margin-top:8px}
.btn{
  flex:1;height:44px;border-radius:12px;background:var(--chip);border:1px solid var(--line);
  font-weight:600;font-size:14.5px;transition:background .15s, transform .12s;
}
.btn:hover{background:var(--line)}
.btn:active{transform:scale(.98)}
.btn.danger{color:#b43a2a}
.btn.danger.confirm{background:#b43a2a;color:#fff;border-color:#b43a2a}
.btn.wide{width:100%;flex:none}
html[data-theme="dark"] .btn.danger{color:#ec8b7b}
html[data-theme="dark"] .btn.danger.confirm{color:#fff}

/* ---------- Drawer ---------- */
.drawer{
  position:fixed;z-index:21;top:0;bottom:0;left:0;width:min(400px,92vw);
  background:var(--sheet);box-shadow:10px 0 40px rgba(0,0,0,.22);
  display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top) + 10px) 0 env(safe-area-inset-bottom);
  animation:slide .26s cubic-bezier(.2,.8,.2,1);
}
@keyframes slide{from{transform:translateX(-100%)}}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:0 12px 0 16px}
.drawer-head .seg{margin:4px 0}
.tab{flex:1;min-height:0;overflow:auto;padding:8px 10px 24px;-webkit-overflow-scrolling:touch}
.search{position:sticky;top:-8px;z-index:1;background:var(--sheet);padding:4px 6px 8px}
.search input,.goto input{
  width:100%;height:42px;border-radius:12px;border:1px solid var(--line);background:var(--chip);
  padding:0 14px;font-size:15px;outline:none;
}
.search input:focus,.goto input:focus{border-color:var(--gold)}
.surah-list,.juz-list{list-style:none;margin:0;padding:0}
.surah-list li button,.juz-list li button{
  width:100%;display:flex;align-items:center;gap:12px;padding:10px 8px;border-radius:12px;text-align:left;
  transition:background .12s;
}
.surah-list li button:hover,.juz-list li button:hover{background:var(--chip)}
.surah-list li button.cur,.juz-list li button.cur{background:var(--chip);box-shadow:inset 3px 0 0 var(--gold)}
.num{
  flex:none;width:34px;height:34px;display:grid;place-items:center;position:relative;
  font-size:12.5px;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums;
}
.num::before{content:"";position:absolute;inset:5px;border:1.5px solid var(--gold-soft);border-radius:6px;transform:rotate(45deg)}
.s-main{flex:1;min-width:0}
.s-en{font-size:14.5px;font-weight:600}
.s-sub{font-size:12px;color:var(--muted);margin-top:2px}
.s-ar{font-family:"Amiri",serif;font-weight:700;font-size:20px;direction:rtl;color:var(--ink)}
.set-group{padding:6px 8px 18px}
.set-group h3{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:10px 0 10px;font-weight:700}
.goto{display:flex;gap:8px}
.goto .btn{flex:none;width:72px}
.themes{display:flex;gap:8px}
.themes button{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 6px;border-radius:14px;border:1px solid var(--line);font-size:13px;font-weight:600}
.themes button.on{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft)}
.sw{width:38px;height:38px;border-radius:50%;border:1px solid rgba(0,0,0,.15)}
.sw.light{background:#fffdf6}.sw.sepia{background:#f5e9cf}.sw.dark{background:#161a1d}
.credit{font-size:11.5px;color:var(--muted);line-height:1.6;padding:8px}

/* ---------- Toast ---------- */
.toast{
  position:fixed;z-index:30;left:50%;bottom:calc(26px + env(safe-area-inset-bottom));
  transform:translate(-50%,20px);opacity:0;pointer-events:none;
  background:rgba(20,22,24,.92);color:#f3ecdc;padding:11px 18px;border-radius:14px;font-size:14px;
  box-shadow:0 8px 30px rgba(0,0,0,.25);transition:all .3s ease;max-width:calc(100% - 32px);text-align:center;
}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast b{font-family:"Amiri",serif;font-size:16px;font-weight:700}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.ts{font-style:normal;font-family:"Amiri Quran",serif;height:38px;display:grid;place-items:center;line-height:1;color:var(--ink)}
.sizes button.on{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft)}

.zoom{display:flex;flex:none;height:36px;border-radius:999px;background:var(--chip);border:1px solid var(--line);overflow:hidden}
.zoom button{width:38px;display:flex;align-items:center;justify-content:center;gap:1px;color:var(--ink-soft);font-family:Georgia,"Times New Roman",serif;font-weight:600;line-height:1;transition:background .15s,opacity .15s}
.zoom button:hover{background:var(--line)}
.zoom button:active{background:var(--gold-soft)}
.zoom button+button{border-left:1px solid var(--line)}
.zoom .zo{font-size:13px}.zoom .zi{font-size:19px}
.zoom sup{font-size:10px;font-family:var(--ui);font-weight:700;top:-.5em;position:relative;vertical-align:baseline}
.zoom button:disabled{opacity:.3;pointer-events:none}
