
:root{
 --primary:#2563eb;--primary2:#4f46e5;--primarySoft:#eff6ff;--bg:#f5f7fb;--surface:#fff;
 --surface2:#f8fafc;--text:#172033;--muted:#64748b;--line:#e5eaf2;
 --success:#16a34a;--danger:#dc2626;--warning:#d97706;--radius:16px;
 --shadow:0 8px 28px rgba(15,23,42,.06);--shadow2:0 2px 10px rgba(15,23,42,.05);
}
html.dark{--bg:#0b1220;--surface:#111a2b;--surface2:#172235;--text:#e8eef9;--muted:#9aa8bd;--line:#27344a;--primarySoft:#142a54;--shadow:0 10px 30px rgba(0,0,0,.24);--shadow2:0 2px 10px rgba(0,0,0,.2)}
*{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(--text);line-height:1.55;-webkit-text-size-adjust:100%;transition:background .2s,color .2s}
body:before{content:"";position:fixed;z-index:1000;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--primary),var(--primary2))}
a{color:var(--primary);text-decoration:none}button,input,select,textarea{font:inherit}
.sidebar{position:fixed;z-index:60;left:0;top:0;bottom:0;width:260px;padding:18px 13px;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;box-shadow:4px 0 20px rgba(15,23,42,.03)}
.brand{display:flex;align-items:center;gap:11px;padding:9px 11px 21px}.brand-mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff;font-size:20px;box-shadow:0 7px 18px rgba(37,99,235,.22)}.brand strong{display:block;font-size:1.02rem}.brand small{display:block;color:var(--muted);font-size:.68rem;margin-top:1px}
.side-section{font-size:.66rem;font-weight:800;letter-spacing:.09em;color:#94a3b8;padding:9px 13px 7px}
.side-link{display:flex;align-items:center;gap:11px;margin:3px 0;padding:11px 12px;border-radius:11px;color:var(--muted);font-weight:700;font-size:.9rem;transition:.16s}
.side-link:hover{background:var(--surface2);color:var(--text)}.side-link.active{background:var(--primarySoft);color:var(--primary);box-shadow:inset 3px 0 0 var(--primary)}.side-ico{width:23px;text-align:center;font-size:17px}.side-bottom{margin-top:auto;border-top:1px solid var(--line);padding-top:10px}.danger-link{color:var(--danger)}
.mobile-overlay{display:none}.app-shell{margin-left:260px;min-height:100vh}.topbar{height:70px;position:sticky;top:0;z-index:45;background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 27px;gap:14px}
.menu-toggle{display:none}.top-title{display:flex;flex-direction:column;min-width:180px}.page-title{font-size:1rem;font-weight:800}.top-subtitle{font-size:.72rem;color:var(--muted)}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:6px}.icon-btn,.avatar{border:0;background:transparent;color:var(--muted);width:39px;height:39px;border-radius:11px;display:grid;place-items:center;cursor:pointer;position:relative}.icon-btn:hover{background:var(--surface2);color:var(--text)}
.avatar{background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff;font-weight:800}.avatar.lg{width:42px;height:42px}
.notif-btn i{position:absolute;right:7px;top:7px;width:7px;height:7px;border-radius:50%;background:#ef4444;border:2px solid var(--surface)}
.top-search{position:absolute;right:160px;top:64px;width:min(420px,calc(100vw - 300px));padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);display:none}.top-search.open{display:flex}.top-search input{margin:0;padding:10px 12px;background:var(--surface2);border:0}.top-search span{align-self:center;color:var(--muted);font-size:.68rem;margin-left:-42px;margin-right:8px}
.notif-panel,.profile-panel{position:absolute;right:72px;top:62px;width:330px;background:var(--surface);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);display:none;overflow:hidden}.notif-panel.open,.profile-panel.open{display:block}.profile-panel{right:20px;width:240px;padding:8px}
.np-head{display:flex;justify-content:space-between;padding:14px 15px;border-bottom:1px solid var(--line)}.np-head button{border:0;background:none;font-size:20px;color:var(--muted);cursor:pointer}
.np-item{display:flex;gap:11px;padding:14px}.np-item>span{width:35px;height:35px;display:grid;place-items:center;background:var(--primarySoft);border-radius:10px}.np-item b{display:block;font-size:.86rem}.np-item small{display:block;color:var(--muted);font-size:.75rem;margin-top:2px}.np-all{display:block;padding:11px 14px;border-top:1px solid var(--line);font-weight:700;font-size:.82rem}
.pp-user{display:flex;gap:10px;align-items:center;padding:9px 7px 12px;border-bottom:1px solid var(--line)}.pp-user b,.pp-user small{display:block}.pp-user small{color:var(--muted);font-size:.74rem}.profile-panel>a{display:block;padding:10px;border-radius:9px;font-weight:700;color:var(--text);font-size:.84rem}.profile-panel>a:hover{background:var(--surface2)}.profile-panel .logout{color:var(--danger)}
main{width:min(1240px,100%);margin:0 auto;padding:26px 28px 60px}.page-content{min-height:calc(100vh - 70px)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow2)}.card h3{margin:0 0 12px;font-size:1.04rem;letter-spacing:-.2px}.card>h3:first-child{display:flex;align-items:center;gap:8px}
.hero{position:relative;overflow:hidden;border:0;color:#fff;background:linear-gradient(135deg,#1d4ed8,#4338ca);box-shadow:0 14px 34px rgba(37,99,235,.18)}.hero:after{content:"";position:absolute;width:230px;height:230px;border-radius:50%;right:-80px;top:-110px;background:rgba(255,255,255,.08)}.hero h3{position:relative;z-index:1;color:#fff;font-size:1.3rem}.hero>*{position:relative;z-index:1}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}.stats div{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.15);border-radius:13px;padding:11px;text-align:center;color:rgba(255,255,255,.9)}.stats b{display:block;color:#fff;font-size:1.45rem;line-height:1.2}.bar{background:rgba(255,255,255,.2);border-radius:99px;height:8px;margin-top:14px;overflow:hidden}.bar i{display:block;height:100%;background:#fff;border-radius:99px}
.kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:16px}.kpi .card{margin:0;position:relative;overflow:hidden}.kpi .kico{position:absolute;right:14px;top:14px;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--primarySoft)}.kpi strong{display:block;font-size:1.75rem;line-height:1.2;margin-top:7px}.kpi span{color:var(--muted);font-size:.77rem;font-weight:700}
input,select,textarea{display:block;width:100%;padding:11px 12px;margin:6px 0 15px;border:1px solid var(--line);border-radius:11px;color:var(--text);background:var(--surface);font-size:16px}input:focus,select:focus,textarea:focus{outline:0;border-color:#7aa2ff;box-shadow:0 0 0 4px rgba(37,99,235,.1)}
label,.lbl{display:block;font-size:.83rem;font-weight:750;color:var(--muted);margin-top:4px}button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:43px;border:0;border-radius:10px;padding:9px 15px;background:var(--primary);color:#fff;cursor:pointer;text-decoration:none;font-weight:750;transition:.15s}button:hover,.btn:hover{box-shadow:0 7px 18px rgba(37,99,235,.16);transform:translateY(-1px)}button.red,.btn.red{background:var(--danger)}.btn.ghost,.ghost{background:var(--primarySoft);color:var(--primary)}.btn.success{background:var(--success)}
.item{display:flex;flex-wrap:wrap;gap:13px;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.item:last-child{border-bottom:0}.item .info{flex:1 1 280px;min-width:0}.item .info>b{font-size:.96rem}.item small{color:var(--muted)}.actions{display:flex;gap:8px;flex-wrap:wrap}.actions form{margin:0}.actions .btn,.actions button{min-height:39px;padding:7px 12px}
.badge{display:inline-flex;align-items:center;gap:4px;background:#eef2ff;color:#4338ca;border-radius:999px;padding:3px 9px;font-size:.74rem;font-weight:750;margin-right:4px}.ok-b{background:#f0fdf4;color:#15803d}.warn-b{background:#fffbeb;color:#a16207}.no-b{background:#f1f5f9;color:#64748b}
details.fd{background:var(--surface2);border:1px solid var(--line);border-radius:13px;margin:10px 0;padding:0 13px}details.fd>summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:13px 0;font-weight:750}details.fd>summary::-webkit-details-marker{display:none}.fd .cnt{font-weight:600;font-size:.8rem;color:var(--muted)}.fd .empty{color:var(--muted);font-size:.9rem;padding:10px 0}
.msg{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;padding:11px 13px;border-radius:11px;margin-bottom:14px}.msg.ok{background:#f0fdf4;color:#15803d;border-color:#bbf7d0}
.grid{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:17px;align-items:start}.row{display:flex;gap:9px}.row>*{flex:1}.inl{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.inl input,.inl select{margin:0;flex:1}.big{font-size:2.2rem;font-weight:850}
table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:12px;overflow:hidden}th,td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left}th{font-size:.77rem;color:var(--muted);background:var(--surface2)}
.auth{width:min(430px,100%);margin:7vh auto;padding:27px}.auth:before{content:"📚";display:grid;place-items:center;width:55px;height:55px;margin:0 auto 12px;border-radius:16px;background:var(--primarySoft);font-size:1.5rem}.auth h3{text-align:center;font-size:1.35rem}.auth>small{display:block;text-align:center;color:var(--muted);margin:-5px 0 18px}.auth a{display:block;text-align:center;margin-top:15px;font-weight:650}
.mobile-nav{display:none}
@media(max-width:980px){.sidebar{width:230px}.app-shell{margin-left:230px}.kpi{grid-template-columns:repeat(2,1fr)}main{padding:22px 20px}}
@media(max-width:760px){
 .sidebar{transform:translateX(-102%);transition:transform .2s;width:275px;box-shadow:12px 0 35px rgba(0,0,0,.15)}.sidebar.open{transform:translateX(0)}.mobile-overlay{position:fixed;inset:0;background:rgba(2,6,23,.45);z-index:55}.mobile-overlay.open{display:block}.app-shell{margin-left:0}.topbar{height:62px;padding:0 13px}.menu-toggle{display:grid}.top-title{min-width:0}.page-title{font-size:.93rem}.top-subtitle{display:none}.top-search{right:10px;top:57px;width:calc(100vw - 20px)}.notif-panel{right:10px;top:57px;width:min(330px,calc(100vw - 20px))}.profile-panel{right:10px;top:57px}.page-content{min-height:calc(100vh - 62px)}main{padding:17px 12px 85px}.mobile-nav{position:fixed;display:flex;z-index:50;left:0;right:0;bottom:0;height:64px;background:var(--surface);border-top:1px solid var(--line);box-shadow:0 -5px 20px rgba(15,23,42,.07);padding-bottom:env(safe-area-inset-bottom)}.mobile-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted);font-size:1.05rem}.mobile-nav span{font-size:.65rem;font-weight:700}.mobile-nav a:hover{color:var(--primary)}.grid{grid-template-columns:1fr}.row{flex-direction:column}.row>*{width:100%}.actions{width:100%}.actions>*{flex:1}.actions .btn,.actions button{width:100%}
}
@media(max-width:520px){.kpi{grid-template-columns:1fr 1fr;gap:9px}.kpi .card{padding:15px}.kpi strong{font-size:1.45rem}.kpi .kico{display:none}.stats{gap:7px}.stats b{font-size:1.2rem}.card{padding:16px;margin-bottom:12px;border-radius:14px}.brand{padding-bottom:15px}.row{gap:0}.item{align-items:flex-start}}
@media(max-width:360px){.kpi{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}}

.theme-choice{width:100%;border:0;background:transparent;color:var(--text);display:flex;align-items:center;justify-content:space-between;padding:10px;border-radius:9px;cursor:pointer;font-weight:700;font-size:.84rem}.theme-choice:hover{background:var(--surface2)}.theme-choice b{font-size:.68rem;color:var(--primary)}

/* Reset password & hapus akun */
details.rs>summary{list-style:none;cursor:pointer}details.rs>summary::-webkit-details-marker{display:none}details.rs[open]{flex-basis:100%}
.rsm{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding:10px;background:var(--surface2);border:1px solid var(--line);border-radius:12px}.rsm button{justify-content:flex-start;width:100%}
.bulk{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:4px 0 8px;padding:9px 12px;background:var(--surface2);border:1px solid var(--line);border-radius:12px}.bulk label{display:flex;align-items:center;gap:8px;margin:0;cursor:pointer}.bulk form{margin:0}
input.pilih{display:inline-block;width:18px;height:18px;margin:0;flex:none;cursor:pointer}.item .pk{display:flex;align-items:center;margin:0}
.pager{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px}.pager a{padding:7px 12px;border:1px solid var(--line);border-radius:9px;text-decoration:none;font-weight:700;color:var(--text)}.pager a.on{background:var(--primary);border-color:var(--primary);color:#fff}
.msg input[readonly]{margin:8px 0 4px;font-family:monospace;font-size:.85rem}.msg code{background:rgba(0,0,0,.07);padding:2px 7px;border-radius:6px;font-size:1.05rem;user-select:all}.msg.warn{background:#fffbeb;color:#a16207;border-color:#fde68a}
/* ===== Pemilih banyak kelas ===== */
.kpick{border:1.5px solid var(--line);border-radius:12px;padding:10px;margin:6px 0 14px;background:var(--surface)}
.kgrid{display:flex;flex-wrap:wrap;gap:8px;max-height:210px;overflow:auto;padding:2px}
.kchip{display:inline-flex;align-items:center;gap:7px;margin:0;padding:8px 12px;border:1.5px solid var(--line);border-radius:999px;cursor:pointer;font-weight:700;font-size:.86rem;color:var(--text);background:var(--surface);user-select:none}
.kchip input{width:auto;margin:0;flex:none;accent-color:var(--primary)}
.kchip:has(input:checked){background:var(--primarySoft);border-color:var(--primary);color:var(--primary)}
.kchip.kall{margin-bottom:8px}
.kpick.off .kgrid,.kpick.off .kact button{opacity:.4;pointer-events:none}
.kact{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}.kact .kcount{color:var(--muted);font-weight:700;font-size:.85rem}
.kfilter{display:flex;gap:8px;align-items:center;margin-bottom:12px}.kfilter select{margin:0;max-width:260px}

/* ===== Nilai tugas & rekap ===== */
.tbl-scroll{overflow-x:auto;margin:10px 0 14px;border:1px solid var(--line);border-radius:12px}.tbl-scroll table{border-radius:0;min-width:520px}
.nilai-tbl th,.nilai-tbl td{padding:8px 10px;white-space:nowrap}.nilai-tbl td.nm{white-space:normal;min-width:150px;font-weight:650}
.nilai-tbl input{width:84px;margin:0;padding:8px;text-align:center}
.nilai-tbl td.rata,.nilai-tbl th.rata,.nilai-tbl td.num,.nilai-tbl th.num{text-align:center}.nilai-tbl td.rata{font-weight:800}
.nilai-tbl tbody tr:nth-child(even){background:var(--surface2)}
.nilai-tbl th:first-child,.nilai-tbl td:first-child{width:44px;color:var(--muted)}
.nilai-tbl .grp{text-align:center;background:var(--primarySoft);color:var(--primary);border-left:1px solid var(--line)}
.tabs{display:flex;gap:7px;flex-wrap:wrap;margin:6px 0 14px}.tabs a{padding:7px 13px;border-radius:999px;border:1px solid var(--line);font-size:.84rem;font-weight:700;color:var(--muted)}.tabs a.on{background:var(--primary);border-color:var(--primary);color:#fff}
.nilai-tbl tfoot td{font-weight:800;background:var(--primarySoft);border-top:2px solid var(--line);text-align:center}.nilai-tbl tfoot td.nm{text-align:left}

/* ===== v5: nilai siswa, dashboard, kegunaan guru ===== */
:root{--hi:#15803d;--hiBg:#dcfce7;--mid:#a16207;--midBg:#fef3c7;--lo:#b91c1c;--loBg:#fee2e2;--noneBg:#f1f5f9;--noneFg:#94a3b8}
html.dark{--hi:#4ade80;--hiBg:#12301f;--mid:#fbbf24;--midBg:#33280c;--lo:#f87171;--loBg:#3a1616;--noneBg:#1b2638;--noneFg:#64748b}
:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 55%,transparent);outline-offset:2px;border-radius:8px}
.sc{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:.78rem;font-weight:800;background:var(--primarySoft);color:var(--primary)}
.sc-hi{background:var(--hiBg);color:var(--hi)}.sc-mid{background:var(--midBg);color:var(--mid)}.sc-lo{background:var(--loBg);color:var(--lo)}.sc-none{background:var(--noneBg);color:var(--noneFg)}
.late-b{background:var(--loBg);color:var(--lo)}
.hero .sc{background:rgba(255,255,255,.18);color:#fff;margin-left:3px}
/* cincin rata-rata */
.ringhero{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.ring{--deg:0deg;width:112px;height:112px;border-radius:50%;flex:none;display:grid;place-content:center;text-align:center;background:radial-gradient(closest-side,#2b3fb8 78%,transparent 80%),conic-gradient(#fff var(--deg),rgba(255,255,255,.22) 0)}
.ring b{font-size:1.6rem;line-height:1;color:#fff}.ring small{font-size:.66rem;color:rgba(255,255,255,.8)}
/* kartu mapel & chip nilai */
.mapel-card .mc-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}
.mc-avg{min-width:76px;text-align:center;padding:8px 12px;border-radius:14px}.mc-avg b{display:block;font-size:1.35rem;line-height:1.1}.mc-avg small{font-size:.66rem;font-weight:700;opacity:.8}
.chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:8px;margin-bottom:12px}
.chip{border-radius:12px;padding:8px 6px;text-align:center}.chip small{display:block;font-size:.68rem;font-weight:700;opacity:.8}.chip b{font-size:1.1rem}
.empty-state{text-align:center;padding:30px 16px;color:var(--muted)}.empty-state .ei{font-size:2.2rem;margin-bottom:6px}.empty-state b{display:block;color:var(--text)}
/* aksi cepat & filter */
.quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:0 0 16px}
.quick a{display:flex;align-items:center;gap:9px;padding:12px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow2);font-weight:750;font-size:.9rem;color:var(--text);transition:transform .12s,border-color .12s}
.quick a:hover{transform:translateY(-2px);border-color:var(--primary)}.quick a span{font-size:1.25rem}
.kpi a.kl{display:block;color:inherit;text-decoration:none}
.filterbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.filterbar input{flex:1 1 220px;margin:0}
.stats-row{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.cnt{color:var(--muted);font-weight:600}
/* input nilai guru */
.nilai-tbl.sticky-nm td.nm,.nilai-tbl.sticky-nm th:nth-child(2){position:sticky;left:0;background:var(--surface);z-index:1;box-shadow:2px 0 0 var(--line)}
.nilai-tbl.sticky-nm tbody tr:nth-child(even) td.nm{background:var(--surface2)}
.nilai-tbl input.bad{border-color:var(--danger);background:var(--loBg);color:var(--lo)}
.nilai-tbl td.rata.sc-hi{color:var(--hi);background:var(--hiBg)}.nilai-tbl td.rata.sc-mid{color:var(--mid);background:var(--midBg)}.nilai-tbl td.rata.sc-lo{color:var(--lo);background:var(--loBg)}
.nilai-tbl tbody tr:hover td{background:var(--primarySoft)}
.savebar{position:sticky;bottom:72px;display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap;padding:10px 12px;margin-top:10px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);z-index:5}
.savebar button{margin:0}.savebar [hidden]{display:none}
@media(min-width:761px){.savebar{bottom:12px}}
.jml{margin-bottom:10px}.jml small{display:block;margin-top:4px}
/* notifikasi berupa tautan */
a.np-item{color:inherit;text-decoration:none}a.np-item:hover{background:var(--surface2)}
/* navigasi mobile 5 item */
.mobile-nav a{min-width:0}.mobile-nav span{white-space:nowrap}
@media(max-width:760px){main{padding-bottom:84px}.mc-head{flex-wrap:wrap}.ring{width:92px;height:92px}.quick{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

/* ===== v6: perbaikan tampilan ===== */
html.dark{color-scheme:dark}html:not(.dark){color-scheme:light}

/* tombol kecil (.sm) dan form inline di dalam ringkasan folder (.del) */
button.sm,.btn.sm,.actions .sm,.inl .sm{min-height:34px;padding:6px 11px;font-size:.82rem;border-radius:9px}
.inl button.sm{flex:none}
form.del{display:inline-flex;gap:6px;margin:0}
form.del button{min-height:32px;padding:5px 10px;font-size:.8rem}

/* pemutar materi: YouTube, video file, flipbook PDF */
.vid{position:relative;width:100%;aspect-ratio:16/9;max-height:78vh;margin-bottom:16px;border-radius:var(--radius);overflow:hidden;background:#000;box-shadow:var(--shadow)}
.vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vp{display:block;width:100%;max-height:78vh;margin-bottom:16px;border-radius:var(--radius);background:#000;box-shadow:var(--shadow)}
#stage{margin-bottom:16px;padding:18px 12px;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow2)}
#load{margin:0;padding:34px 0;text-align:center;color:var(--muted);font-weight:700}
#book{max-width:100%;margin:0 auto}
.ctrl{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px}
.ctrl button{min-width:50px}.ctrl #info{font-size:.9rem;font-weight:700;color:var(--muted)}

/* kuis: soal dan pilihan jawaban (juga dipakai pilihan centang di Impor) */
.q{padding:16px 0;border-bottom:1px solid var(--line)}.q:last-of-type{border-bottom:0}.q>b{display:block;margin-bottom:10px}
.card>.q~button{margin-top:16px}
.opt{display:flex;align-items:flex-start;gap:10px;margin:7px 0;padding:11px 13px;border:1.5px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);font-size:.92rem;font-weight:600;cursor:pointer;transition:border-color .12s,background .12s}
.opt:hover{border-color:var(--primary);background:var(--primarySoft)}
.opt input{width:auto;margin:3px 0 0;flex:none;accent-color:var(--primary)}
.opt:has(input:checked){border-color:var(--primary);background:var(--primarySoft);color:var(--primary)}
div.opt{cursor:default}div.opt:hover{border-color:var(--line);background:var(--surface)}
.opt.good,div.opt.good:hover{border-color:var(--success);background:var(--hiBg);color:var(--hi)}
.opt.bad,div.opt.bad:hover{border-color:var(--danger);background:var(--loBg);color:var(--lo)}
.opt>span:first-child:not(:only-child){flex:none;font-weight:800}

/* halaman login / daftar / pemasangan (belum ada sidebar) */
body:not(:has(.app-shell)){min-height:100vh;background:radial-gradient(900px 480px at 90% -10%,color-mix(in srgb,var(--primary) 16%,transparent),transparent),radial-gradient(760px 480px at -10% 110%,color-mix(in srgb,var(--primary2) 13%,transparent),transparent),var(--bg);background-attachment:fixed}
.auth{box-shadow:var(--shadow)}.auth button[type=submit]{width:100%;margin-top:4px}
.setup{max-width:860px;margin:0 auto}
.cek{list-style:none;margin:0 0 10px;padding:0}.cek li{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line)}.cek li:last-child{border-bottom:0}.cek .st{flex:none;width:24px;text-align:center}.cek small{color:var(--muted);word-break:break-word}
pre.kode{margin:8px 0 14px;padding:12px 14px;overflow:auto;white-space:pre-wrap;background:var(--surface2);border:1px solid var(--line);border-radius:12px;font-size:.82rem;line-height:1.5}
code{background:var(--surface2);border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-size:.88em}

/* tabel lebar tidak memecah layout di HP */
@media(max-width:760px){.card>table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}}
img,video,iframe{max-width:100%}

/* mode gelap: komponen yang sebelumnya hanya punya warna terang */
html.dark .badge{background:#1e2a4a;color:#a5b4fc}
html.dark .ok-b{background:var(--hiBg);color:var(--hi)}html.dark .warn-b{background:var(--midBg);color:var(--mid)}html.dark .no-b{background:var(--noneBg);color:var(--noneFg)}
html.dark .msg{background:#3a1616;color:#fecaca;border-color:#5b2121}
html.dark .msg.ok{background:#12301f;color:#86efac;border-color:#1f5a35}
html.dark .msg.warn{background:#33280c;color:#fcd34d;border-color:#5b4614}
html.dark .msg code,html.dark code{background:rgba(255,255,255,.08)}
html.dark .side-section{color:#6b7a90}
.auth h3,.card.auth>h3:first-child{justify-content:center;text-align:center}

/* ===== Diskusi siswa-guru ===== */
.kmt{padding:14px 0;border-bottom:1px solid var(--line)}.kmt:last-child{border-bottom:0}
.kmt-h{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}.kmt-h b{font-size:.92rem}.kmt-h small{margin-left:auto;color:var(--muted)}
.kmt-b{line-height:1.55;overflow-wrap:anywhere}
.kmt-r{margin:10px 0 0 14px;padding:10px 13px;border-left:3px solid var(--line);background:var(--surface2);border-radius:0 12px 12px 0}
.kmt-r.guru{border-left-color:var(--primary);background:var(--primarySoft)}
.kmt-act{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start;margin-top:8px}.kmt-act form{margin:0}
.kmt form textarea{margin:6px 0 10px}
details.fd .kmt-act{margin:0}
@media(max-width:520px){.kmt-r{margin-left:6px}.kmt-h small{margin-left:0;flex-basis:100%}}
#diskusi>form{margin-bottom:8px}#diskusi>form+.kmt{border-top:1px solid var(--line)}
.kmt-act details.fd{margin:0}
