:root{
  --bg:#f4f7f5;--surface:#fff;--surface2:#f8fbf9;--ink:#14231d;--muted:#6c7a74;
  --brand:#0b5d46;--brand2:#0f7658;--brand3:#dff2e9;--gold:#d6aa4e;--gold2:#f7edcf;
  --line:#dfe7e2;--danger:#b54646;--ok:#0b7b55;--shadow:0 12px 34px rgba(18,54,41,.08);
  --r:20px;--r2:14px;--side:254px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}
button,input,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}
.app{min-height:100vh;display:grid;grid-template-columns:var(--side) 1fr}
.sidebar{position:sticky;top:0;height:100vh;background:linear-gradient(180deg,#084b39,#0b5d46);color:#fff;padding:22px 16px;z-index:20}
.brand{display:flex;gap:12px;align-items:center;padding:6px 8px 22px}.logo{width:46px;height:46px;border-radius:15px;background:linear-gradient(145deg,#f5df9c,#d6aa4e);color:#0b5d46;display:grid;place-items:center;font-weight:900;font-size:22px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.4)}
.brand b{font-size:20px}.brand small{display:block;color:#cde5dc;margin-top:2px}
.nav{display:grid;gap:8px}.nav button{border:0;background:transparent;color:#dcece6;text-align:left;padding:12px 14px;border-radius:13px;display:flex;align-items:center;gap:11px;font-weight:700}
.nav button:hover,.nav button.active{background:rgba(255,255,255,.12);color:#fff}.side-info{position:absolute;bottom:18px;left:16px;right:16px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.09);padding:14px;border-radius:15px;color:#d7ebe3;font-size:12px;line-height:1.55}
main{min-width:0;padding:24px 30px 88px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:22px}
.kicker{font-size:12px;color:var(--brand);text-transform:uppercase;font-weight:900;letter-spacing:.08em}.title{font-size:29px;line-height:1.2;margin:4px 0 0}
.top-actions{display:flex;gap:9px}.iconbtn{width:42px;height:42px;border:1px solid var(--line);background:var(--surface);border-radius:13px;display:grid;place-items:center;color:var(--brand)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.btn{border:0;border-radius:12px;padding:11px 14px;font-weight:800}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover{background:var(--brand2)}.btn-gold{background:var(--gold);color:#20392f}.btn-soft{background:var(--brand3);color:var(--brand)}.btn-outline{background:#fff;border:1px solid var(--line);color:var(--ink)}
.pill{padding:5px 9px;border-radius:999px;font-size:11px;font-weight:850;background:var(--brand3);color:var(--brand)}
.view{display:none}.view.active{display:block}
.hero{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.5fr);gap:18px;margin-bottom:18px}
.hero-main{padding:28px;background:linear-gradient(135deg,#0b5d46,#083f31);color:white;border-radius:var(--r);position:relative;overflow:hidden;min-height:250px}
.hero-main:after{content:"۞";position:absolute;right:18px;top:-10px;font-size:180px;opacity:.06}.hero-main h2{font-size:32px;max-width:670px;margin:8px 0 10px;line-height:1.18}.hero-main p{color:#d6e9e2;line-height:1.65;max-width:690px}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.hero-actions .btn-outline{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.2)}
.target{padding:22px}.target h3{font-size:24px;margin:8px 0 4px}.muted{color:var(--muted)}.small{font-size:13px}.progress{height:10px;background:#edf2ef;border-radius:999px;overflow:hidden}.progress>span{height:100%;display:block;background:linear-gradient(90deg,var(--brand),#38a77f);border-radius:inherit}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat{padding:18px}.stat .num{font-size:29px;font-weight:900;margin:4px 0}.stat .lbl{font-size:12px;color:var(--muted)}
.section{padding:22px;margin-bottom:18px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.section-head h3{margin:0;font-size:19px}.section-head p{margin:5px 0 0;font-size:13px;color:var(--muted)}
.juz-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.juz{border:1px solid var(--line);background:#fff;border-radius:15px;padding:15px;text-align:left;transition:.18s}.juz:hover{border-color:#a8cdbf;transform:translateY(-2px);box-shadow:0 8px 22px rgba(11,93,70,.08)}.juz strong{display:block;font-size:17px;margin:5px 0}.juz small{color:var(--muted)}
.practice-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.practice-card{border:1px solid var(--line);background:#fff;border-radius:16px;padding:17px;text-align:left}.practice-card:hover{border-color:#a8cdbf}.practice-card .emoji{font-size:24px}.practice-card h4{margin:9px 0 5px}.practice-card p{font-size:12px;line-height:1.5;color:var(--muted);margin:0}
.reader-shell{display:grid;grid-template-columns:300px minmax(0,1fr);gap:17px}.reader-side{padding:18px;align-self:start;position:sticky;top:18px}.field{margin-top:13px}.field label{display:block;color:var(--muted);font-size:12px;margin-bottom:6px}.field select,.field input{width:100%;border:1px solid var(--line);border-radius:11px;background:#fff;padding:10px 11px;color:var(--ink)}
.switch-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 0;border-top:1px solid var(--line);margin-top:12px}.switch{width:45px;height:25px;background:#d9e0dc;border-radius:999px;position:relative;border:0}.switch:after{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 2px 5px rgba(0,0,0,.16)}.switch.on{background:var(--brand)}.switch.on:after{left:23px}
.surah-head{padding:17px 19px;display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;background:var(--surface2)}.surah-head h3{margin:0}.surah-head .ar{font-family:"LPMQ IsepMisbah","LPMQ Isep Misbah",serif;font-size:27px;direction:rtl}
.ayahs{display:grid;gap:11px}.ayah{padding:20px}.ayah-meta{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:11px}.ayah-id{font-size:11px;font-weight:900;color:var(--brand)}
.arabic{font-family:"LPMQ IsepMisbah","LPMQ Isep Misbah",serif;font-size:31px;line-height:2.05;text-align:right;direction:rtl}.translation{border-top:1px dashed var(--line);margin-top:12px;padding-top:12px;color:var(--muted);font-size:13px;line-height:1.65}
.ayah-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:13px}.mini-btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 10px;font-size:11px;font-weight:750}.mini-btn.active{background:var(--brand3);color:var(--brand);border-color:#b8d9cc}
.player{position:fixed;left:calc(var(--side) + 30px);right:30px;bottom:18px;z-index:30;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border:1px solid var(--line);box-shadow:0 12px 35px rgba(12,48,35,.16);border-radius:17px;padding:11px 14px;display:grid;grid-template-columns:minmax(160px,1fr) auto minmax(180px,.7fr);gap:13px;align-items:center}.player.hidden{display:none}.player-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-controls{display:flex;gap:8px}.player-controls button{width:37px;height:37px;border-radius:50%;border:1px solid var(--line);background:#fff}.player-controls .play{background:var(--brand);color:#fff;border-color:var(--brand)}audio{width:100%;height:34px}
.ummi-card{padding:22px;background:linear-gradient(140deg,#fff,#f6fbf8)}.ummi-flow{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.ummi-step{border:1px solid var(--line);border-radius:14px;padding:14px}.ummi-step b{color:var(--brand)}.repeat-grid{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.repeat-grid button{border:1px solid var(--line);background:#fff;padding:8px 11px;border-radius:10px}.repeat-grid button.active{background:var(--brand);color:white;border-color:var(--brand)}
.quiz-wrap{max-width:860px;margin:auto}.quiz{padding:26px}.quiz-center{text-align:center}.quiz-arabic{margin:20px 0;background:var(--surface2);border:1px solid var(--line);border-radius:16px;padding:21px;font-family:"LPMQ IsepMisbah","LPMQ Isep Misbah",serif;font-size:30px;line-height:2;direction:rtl;text-align:right}.options{display:grid;gap:9px}.option{border:1px solid var(--line);background:#fff;border-radius:12px;padding:13px 15px;text-align:right;font-family:"LPMQ IsepMisbah","LPMQ Isep Misbah",serif;font-size:20px;direction:rtl}.option.correct{background:#e6f4ed;border-color:#72b295}.option.wrong{background:#fbebeb;border-color:#dfa0a0}.feedback{display:none;margin-top:14px;padding:13px;border-radius:12px}.feedback.show{display:block}.feedback.ok{background:#e5f4ec;color:#096546}.feedback.no{background:#fbebeb;color:#9e3737}
.word-bank,.answer-bank{min-height:66px;border:1px dashed var(--line);border-radius:13px;padding:12px;display:flex;gap:8px;flex-wrap:wrap;direction:rtl;margin:10px 0}.word{border:1px solid var(--line);background:white;border-radius:9px;padding:8px 10px;font-family:"LPMQ IsepMisbah","LPMQ Isep Misbah",serif;font-size:19px}
.stat-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.chart{padding:21px}.bar-row{display:grid;grid-template-columns:52px 1fr 35px;gap:9px;align-items:center;margin:10px 0;font-size:12px}.bar{height:8px;border-radius:999px;background:#edf2ef;overflow:hidden}.bar span{height:100%;display:block;background:var(--brand)}
.loading,.empty{padding:38px;text-align:center;color:var(--muted)}.spinner{width:28px;height:28px;border:3px solid #d7e2dd;border-top-color:var(--brand);border-radius:50%;animation:spin .75s linear infinite;margin:0 auto 10px}@keyframes spin{to{transform:rotate(360deg)}}
.toast{position:fixed;right:22px;top:18px;background:#15241e;color:#fff;padding:11px 14px;border-radius:11px;z-index:100;opacity:0;transform:translateY(-7px);transition:.22s;pointer-events:none}.toast.show{opacity:1;transform:none}
.modal-bg{position:fixed;inset:0;background:rgba(9,27,20,.45);z-index:80;display:grid;place-items:center;padding:18px}.modal{width:min(520px,100%);background:#fff;border-radius:19px;padding:22px;box-shadow:0 28px 80px rgba(0,0,0,.22)}.modal h3{margin-top:0}

.font-status{margin-top:12px;padding:12px;border-radius:12px;border:1px solid var(--line);background:#f8fbf9;font-size:12px;line-height:1.55}
.font-status.ok{background:#e9f6ef;border-color:#b8ddca;color:#096344}
.font-status.warn{background:#fff8e8;border-color:#ead29b;color:#755816}
.child-mode{margin-top:12px;padding:14px;border:1px solid #d9c48a;background:linear-gradient(145deg,#fffaf0,#fff);border-radius:14px}
.child-mode h4{margin:0 0 5px}.child-mode p{margin:0;color:var(--muted);font-size:12px;line-height:1.55}
.recording{background:#fff0f0!important;border-color:#e3a4a4!important;color:#a03636!important}
.rec-badge{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:900;color:#a03636}
.rec-dot{width:7px;height:7px;border-radius:50%;background:#c84646;animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.25}}

.mobile-nav{display:none}
@media(max-width:1150px){.juz-grid{grid-template-columns:repeat(4,1fr)}.practice-grid{grid-template-columns:repeat(2,1fr)}.stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:840px){
  .app{display:block}.sidebar{display:none}main{padding:18px 14px 92px}.title{font-size:24px}.topbar{align-items:flex-start}.top-actions{gap:6px}
  .hero{grid-template-columns:1fr}.hero-main{min-height:unset;padding:22px}.hero-main h2{font-size:27px}.juz-grid{grid-template-columns:repeat(3,1fr)}
  .reader-shell{grid-template-columns:1fr}.reader-side{position:static}.stat-layout{grid-template-columns:1fr}.ummi-flow{grid-template-columns:1fr}
  .player{left:12px;right:12px;bottom:76px;grid-template-columns:1fr auto}.player audio{grid-column:1/-1}.mobile-nav{display:grid;position:fixed;left:0;right:0;bottom:0;height:66px;background:rgba(255,255,255,.97);backdrop-filter:blur(12px);border-top:1px solid var(--line);grid-template-columns:repeat(4,1fr);z-index:35}.mobile-nav button{border:0;background:transparent;color:var(--muted);font-size:10px}.mobile-nav button.active{color:var(--brand);font-weight:900}
}
@media(max-width:560px){.juz-grid{grid-template-columns:repeat(2,1fr)}.practice-grid{grid-template-columns:1fr}.stats{gap:10px}.stat{padding:15px}.stat .num{font-size:25px}.arabic{font-size:27px}.quiz-arabic{font-size:26px}.top-actions .iconbtn:nth-child(2){display:none}}

/* --- Professional backend/auth additions --- */
.auth-gate{min-height:100vh;display:grid;place-items:center;padding:24px;background:
 radial-gradient(circle at 15% 10%,rgba(214,170,78,.16),transparent 28%),
 radial-gradient(circle at 85% 90%,rgba(11,93,70,.16),transparent 32%),var(--bg)}
.auth-panel{width:min(920px,100%);display:grid;grid-template-columns:1.05fr .95fr;overflow:hidden}
.auth-brand{padding:42px;background:linear-gradient(145deg,#083f31,#0b5d46);color:#fff;position:relative;min-height:520px}
.auth-brand:after{content:"۞";position:absolute;right:18px;bottom:-35px;font-size:210px;opacity:.06}
.auth-brand .logo{margin-bottom:24px}.auth-brand h1{font-size:36px;line-height:1.12;margin:0 0 14px}.auth-brand p{color:#d6e9e2;line-height:1.7;max-width:460px}
.auth-points{display:grid;gap:12px;margin-top:30px}.auth-point{display:flex;gap:10px;align-items:flex-start;color:#e8f3ef;font-size:13px}.auth-point b{color:#f5d77b}
.auth-form{padding:36px;background:#fff}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;background:#f1f5f3;border-radius:12px;padding:4px;margin-bottom:22px}
.auth-tabs button{border:0;background:transparent;padding:10px;border-radius:9px;font-weight:850;color:var(--muted)}
.auth-tabs button.active{background:#fff;color:var(--brand);box-shadow:0 3px 12px rgba(18,54,41,.08)}
.auth-form h2{margin:0 0 5px}.auth-error{display:none;background:#fbebeb;color:#963b3b;border:1px solid #efc0c0;padding:11px 12px;border-radius:10px;margin:12px 0;font-size:13px}
.auth-error.show{display:block}.auth-submit{width:100%;margin-top:18px}
.account-chip{border:1px solid var(--line);background:#fff;border-radius:13px;padding:8px 11px;display:flex;align-items:center;gap:9px;color:var(--ink)}
.account-avatar{width:28px;height:28px;border-radius:9px;background:var(--brand3);color:var(--brand);font-weight:900;display:grid;place-items:center}
.account-text{max-width:150px;text-align:left}.account-text b,.account-text small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-text small{color:var(--muted);font-size:10px}
.sync-status{position:fixed;right:22px;bottom:22px;z-index:110;background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 11px;font-size:11px;color:var(--muted);box-shadow:var(--shadow);display:none}
.sync-status.show{display:block}.sync-status.ok{color:var(--ok)}.sync-status.err{color:var(--danger)}
@media(max-width:760px){.auth-panel{grid-template-columns:1fr}.auth-brand{min-height:auto;padding:28px}.auth-brand h1{font-size:29px}.auth-form{padding:26px}.account-text{display:none}}

/* v1.2 Multi Role / Administrasi */
.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:18px}
.admin-stats{margin-top:0}.school-banner{background:linear-gradient(135deg,#0b5d46,#083f31);color:#fff;border-radius:20px;padding:22px 24px;margin-bottom:18px;display:flex;justify-content:space-between;align-items:center;gap:16px}.school-banner h2{margin:5px 0}.school-banner p{margin:0;color:#d5e9e1}.school-banner .kicker{color:#f5d77b}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}.data-table{width:100%;border-collapse:collapse;min-width:760px;background:#fff}.data-table th,.data-table td{padding:12px 13px;text-align:left;border-bottom:1px solid var(--line);font-size:12px;vertical-align:middle}.data-table th{background:#f3f8f5;color:#456057;text-transform:uppercase;letter-spacing:.04em;font-size:10px;position:sticky;top:0}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fbfdfc}
.upload-box{border:2px dashed #b7d3c8;border-radius:16px;padding:18px;background:#f8fbf9;display:flex;gap:16px;align-items:center}.upload-box input{max-width:260px}.upload-box p{margin:4px 0 0}.import-summary{display:flex;justify-content:space-between;gap:10px;margin-top:14px;padding:12px 14px;background:#e9f6ef;color:#0b5d46;border-radius:12px}.import-errors{margin-top:12px;padding:12px;border-radius:12px;background:#fff5f5;border:1px solid #efc3c3;color:#8a3434;font-size:12px;line-height:1.65;max-height:220px;overflow:auto}
.auth-tabs{grid-template-columns:1fr 1fr!important}.staff-mode{grid-template-columns:1fr!important}.staff-mode button:not(.hidden){font-size:12px;font-weight:900;color:var(--brand)}
#management .section h3{margin-top:4px}
@media(max-width:900px){.admin-grid{grid-template-columns:1fr}.school-banner{align-items:flex-start;flex-direction:column}.upload-box{align-items:flex-start;flex-direction:column}.import-summary{flex-direction:column}}

/* v1.4 — Explicit 4-role login */
.auth-panel-v14{width:min(1040px,100%);grid-template-columns:.9fr 1.1fr}
.auth-form-v14{min-height:600px;display:flex;flex-direction:column;justify-content:center}
.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px}
.role-card{width:100%;border:1px solid var(--line);background:#fff;border-radius:16px;padding:16px;display:grid;grid-template-columns:46px 1fr 20px;gap:12px;align-items:center;text-align:left;color:var(--ink);transition:.18s;box-shadow:0 5px 16px rgba(18,54,41,.035)}
.role-card:hover{transform:translateY(-2px);border-color:#9fc8b8;box-shadow:0 11px 26px rgba(11,93,70,.10)}
.role-card b{display:block;font-size:14px}.role-card small{display:block;color:var(--muted);font-size:11px;line-height:1.4;margin-top:3px}
.role-icon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:18px;font-weight:900;background:var(--brand3);color:var(--brand)}
.role-central .role-icon{background:#e7f1ff;color:#315f9d}.role-school .role-icon{background:#e7f6ee;color:#0b6b4d}.role-teacher .role-icon{background:#fff4d9;color:#8a6418}.role-student .role-icon{background:#f3eaff;color:#7042a5}
.role-arrow{font-size:24px;color:#9aa9a3}.back-role{border:0;background:transparent;color:var(--brand);font-weight:800;padding:0;margin-bottom:16px;text-align:left}.back-role:hover{text-decoration:underline}
.selected-role-chip{display:inline-flex;align-self:flex-start;padding:6px 10px;background:var(--brand3);color:var(--brand);border-radius:999px;font-size:11px;font-weight:900;margin-bottom:14px}
.auth-footnote{margin-top:18px}.role-login-fields{animation:roleFade .18s ease}@keyframes roleFade{from{opacity:.4;transform:translateY(4px)}to{opacity:1;transform:none}}
@media(max-width:760px){.auth-panel-v14{grid-template-columns:1fr}.auth-form-v14{min-height:auto}.role-grid{grid-template-columns:1fr}.role-card{padding:14px}.auth-brand .auth-points{display:none}}
.action-group{display:flex;gap:6px;flex-wrap:wrap;min-width:260px}.action-reset{color:#7a5b0a;border-color:#e5cf8c;background:#fffaf0}.action-danger{color:#a43636;border-color:#e5b2b2;background:#fff8f8}.btn-danger{background:#b54646;color:#fff}.btn-danger:hover{background:#963a3a}.status-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:900}.status-active{background:#e5f4ec;color:#096546}.status-disabled{background:#f4eeee;color:#8b4444}.security-note{margin-top:12px;padding:11px 12px;border-radius:11px;background:#f5f8f6;border:1px solid var(--line);font-size:12px;color:var(--muted);line-height:1.55}.danger-note{padding:13px 14px;border-radius:12px;background:#fff0f0;border:1px solid #e6b3b3;color:#8e3030;font-size:12px;line-height:1.6;margin:10px 0 14px}


/* v1.7 — Filter pencarian sekolah Admin Pusat */
.school-filter-bar{display:grid;grid-template-columns:minmax(220px,1.25fr) minmax(180px,.75fr) auto;gap:12px;align-items:end;margin:4px 0 8px;padding:14px;border:1px solid var(--line);background:linear-gradient(180deg,#fbfdfc,#f6faf8);border-radius:14px}
.school-filter-field{margin:0}.filter-input-wrap{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:0 11px;transition:.18s}.filter-input-wrap:focus-within{border-color:#8fc1ae;box-shadow:0 0 0 3px rgba(11,93,70,.08)}.filter-input-wrap>span{color:var(--brand);font-weight:900}.filter-input-wrap input{border:0!important;outline:0;box-shadow:none!important;padding-left:0!important;padding-right:0!important;background:transparent!important}.school-filter-reset{white-space:nowrap;height:42px}.school-filter-meta{margin:9px 2px 12px}.school-filter-meta b{color:var(--brand)}
@media(max-width:760px){.school-filter-bar{grid-template-columns:1fr}.school-filter-reset{width:100%}}
