:root{
 --primary:#c8372d; --primary-deep:#8f241d; --accent:#1c4a38; --accent-soft:#f2b33d;
 --ink:#16271f; --ink-soft:#4c6357; --muted:#7d9186; --line:#d9e6de; --card:#fffdf7;
 --success:#2e7d32; --danger:#c62828; --radius:16px; --font-d:'Baloo 2','Trebuchet MS',system-ui,sans-serif; --font-b:'Nunito',system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--font-b);color:var(--ink);background:linear-gradient(160deg,#eef5ee 0%,#e4efe8 45%,#f6ecd2 100%);-webkit-font-smoothing:antialiased}
.font-d{font-family:var(--font-d)}

/* ===== AUTH ===== */
.auth-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(160deg,#eef5ee,#f6ecd2)}
.auth-card{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:0 16px 44px rgba(28,74,56,.18);padding:36px 28px;max-width:380px;width:100%;text-align:center}
.auth-emoji{font-size:54px}
.auth-title{font-family:var(--font-d);font-size:26px;color:var(--primary-deep);margin:6px 0}
.auth-sub{font-size:13.5px;color:var(--muted);font-weight:700;margin-bottom:20px}
.fld-lbl{display:block;text-align:left;font-size:12px;font-weight:800;color:var(--ink-soft);margin:12px 0 5px}
.fld{width:100%;padding:12px 14px;border:2px solid var(--line);border-radius:12px;font-size:15px;font-family:var(--font-b);background:#fff;color:var(--ink)}
.fld:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(28,74,56,.15)}
.auth-btn{margin-top:22px;width:100%;padding:13px;border:none;border-radius:999px;background:var(--primary);color:#fff;font-weight:800;font-family:var(--font-d);font-size:16px;cursor:pointer;box-shadow:0 5px 0 var(--primary-deep)}
.auth-btn:active{transform:scale(.97)}
.auth-back{display:inline-block;margin-top:16px;font-size:13px;font-weight:800;color:var(--muted);text-decoration:none}
.auth-back:hover{color:var(--primary)}
.auth-guide{margin-top:16px;width:100%;padding:12px;border:2px solid var(--primary);border-radius:999px;background:transparent;color:var(--primary-deep);font-weight:800;font-family:var(--font-d);font-size:14.5px;cursor:pointer;transition:all .15s}
.auth-guide:hover{background:var(--primary);color:#fff}
.auth-guide:active{transform:scale(.97)}
.alert-err{background:#ffebee;color:var(--danger);border:1px solid #ffcdd2;border-radius:10px;padding:10px;font-size:13px;font-weight:700;margin-bottom:6px}

/* ===== GURU SHELL ===== */
.guru-shell{display:flex;min-height:100dvh}
.guru-nav{width:250px;flex-shrink:0;background:linear-gradient(180deg,#fff,#eef5ee);border-right:1px solid var(--line);padding:18px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100dvh}
.guru-brand{display:flex;align-items:center;gap:10px;padding:6px 8px;margin-bottom:22px}
.g-logo{font-size:30px}
.g-brand-t{font-family:var(--font-d);font-weight:700;font-size:16px;color:var(--primary-deep)}
.g-brand-s{font-size:11px;font-weight:800;color:var(--muted);letter-spacing:1px;text-transform:uppercase}
#guru-tabs{display:flex;flex-direction:column;gap:6px;flex-grow:1}
.g-tab{display:flex;align-items:center;gap:10px;padding:11px 14px;border:none;border-radius:12px;background:transparent;font-family:var(--font-b);font-weight:700;font-size:14.5px;color:var(--ink-soft);cursor:pointer;text-align:left;transition:all .15s}
.g-tab:hover{background:rgba(28,74,56,.08);color:var(--primary-deep)}
.g-tab.active{background:var(--primary);color:#fff;box-shadow:0 4px 12px rgba(200,55,45,.3)}
.guru-foot{display:flex;flex-direction:column;gap:8px;padding-top:14px;border-top:1px solid var(--line)}
.g-link{font-size:13px;font-weight:800;color:var(--ink-soft);text-decoration:none;padding:7px 10px;border-radius:10px}
.g-link:hover{background:rgba(28,74,56,.10);color:var(--primary-deep)}
.g-logout{color:var(--danger)}

.guru-main{flex:1;padding:22px clamp(14px,4vw,40px) 50px;max-width:1100px}
.guru-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:12px;flex-wrap:wrap}
.g-greet-hi{font-size:13px;font-weight:700;color:var(--muted)}
.g-greet-name{font-family:var(--font-d);font-size:22px;font-weight:700;color:var(--primary-deep)}
.g-open-app{padding:9px 18px;border-radius:999px;background:var(--card);border:1px solid var(--line);font-weight:800;font-size:13px;color:var(--primary-deep);text-decoration:none;box-shadow:0 2px 8px rgba(28,74,56,.08)}
.g-open-app:hover{background:#f6ecd2}

.g-panel{display:none;animation:fadeIn .3s ease}
.g-panel.active{display:block}
.panel-title{font-family:var(--font-d);font-size:22px;color:var(--primary-deep);margin-bottom:6px}
.panel-sub{font-size:13.5px;color:var(--muted);font-weight:700;margin-bottom:18px}

/* ===== STATS ===== */
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px}
.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:0 2px 8px rgba(28,74,56,.06)}
.stat-card .n{font-family:var(--font-d);font-size:30px;font-weight:700;color:var(--primary)}
.stat-card .l{font-size:12px;font-weight:800;color:var(--muted);letter-spacing:.4px}

/* ===== TABLE / CARDS ===== */
.data-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 2px 8px rgba(28,74,56,.06);overflow:hidden}
.data-list{padding:8px}
.d-row{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px}
.d-row:hover{background:#f6ecd2}
.d-row+.d-row{border-top:1px solid var(--line)}
.d-ava{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--accent-soft),var(--accent));display:flex;align-items:center;justify-content:center;font-family:var(--font-d);font-weight:700;color:#fff;flex-shrink:0}
.d-main{flex:1;min-width:0}
.d-name{font-weight:800;font-size:14.5px;color:var(--ink)}
.d-meta{font-size:12px;color:var(--muted);font-weight:700}
.d-pct{font-family:var(--font-d);font-weight:700;color:var(--success);font-size:16px}
.d-empty{padding:30px;text-align:center;color:var(--muted);font-weight:700}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:none;cursor:pointer;font-family:var(--font-d);font-weight:600;border-radius:999px;transition:transform .12s;font-size:14px}
.btn:active{transform:scale(.96)}
.btn-primary{background:var(--primary);color:#fff;box-shadow:0 5px 14px rgba(200,55,45,.25);padding:10px 20px}
.btn-ghost{background:var(--card);border:1px solid var(--line);color:var(--ink-soft);padding:8px 14px}
.btn-danger{background:#ffebee;color:var(--danger);border:1px solid #ffcdd2;padding:8px 14px}
.btn-sm{font-size:12.5px;padding:6px 12px}

/* ===== FORM ===== */
.frow{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.frow{grid-template-columns:1fr}}
.form-lbl{font-size:12px;font-weight:800;color:var(--ink-soft);margin:10px 0 5px;display:block}
.form-in{width:100%;padding:11px 13px;border:2px solid var(--line);border-radius:12px;font-size:14.5px;font-family:var(--font-b);background:#fff}
.form-in:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(28,74,56,.10)}

/* ===== REKAP GRID ===== */
.rekap-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}
.rekap-table{min-width:640px}
.rekap-table th,.rekap-table td{padding:10px 8px;text-align:center;font-size:12.5px;border-bottom:1px solid var(--line)}
.rekap-table th{background:#f6ecd2;font-weight:800;color:var(--primary-deep);position:sticky;top:0;font-size:11.5px}
.rekap-table th:first-child,.rekap-table td:first-child{text-align:left;padding-left:14px;min-width:150px;position:sticky;left:0;background:var(--card);z-index:2}
.rekap-table th:first-child{background:#f6ecd2;z-index:3}
.cov-dot{display:inline-block;width:26px;height:26px;line-height:26px;border-radius:8px;background:#eee;font-weight:800;font-size:11px}
.cov-dot.full{background:#e8f5e9;color:var(--success)}
.dot{display:inline-block;width:20px;height:20px;line-height:20px;border-radius:6px;background:#f0e6d2;font-size:11px;font-weight:800;color:transparent}
.dot.on{background:var(--success);color:#fff}
.dot.head{width:auto;padding:0 8px;background:#f6ecd2;color:var(--primary-deep);line-height:20px}

/* ===== MATERI EDITOR ===== */
.mcat-item{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px;margin-bottom:10px;background:var(--card)}
.mcat-item .cico{font-size:26px}
.mcat-main{flex:1;min-width:0}
.mcat-title{font-weight:800;font-size:14px;overflow-wrap:anywhere}
.mcat-sub{font-size:11.5px;color:var(--muted);font-weight:700;overflow-wrap:anywhere}
.vchip{display:inline-block;padding:3px 9px;border-radius:999px;font-size:10.5px;font-weight:800;background:#e3f2fd;color:#1565c0;margin-top:4px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ===== TABEL SUB-ITEM (editor isi materi) ===== */
.sub-tbl{width:100%;border-collapse:collapse}
.sub-tbl td{padding:4px 4px;vertical-align:top}
.sub-tbl td:nth-child(1){width:38%}
.sub-tbl td:nth-child(2){width:50%}
.sub-tbl td:nth-child(3){width:14%;text-align:center}
.sub-tbl .form-in{padding:8px 10px;font-size:13px}
.it-block .it-name{padding:8px 10px}

/* ===== TABS inside panels ===== */
.sub-tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.sub-tab{padding:8px 16px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-weight:800;font-size:13px;color:var(--ink-soft);cursor:pointer;font-family:var(--font-d)}
.sub-tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}

@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ===== MOBILE NAV ===== */
@media(max-width:900px){
 .guru-shell{flex-direction:column}
 .guru-nav{width:100%;height:auto;position:static;flex-direction:row;align-items:center;gap:12px;flex-wrap:wrap}
 .guru-brand{margin-bottom:0}
 #guru-tabs{flex-direction:row;flex-wrap:wrap;overflow-x:auto}
 .g-tab{padding:9px 12px;font-size:13px}
 .g-tab span{display:none}
 .g-tab.active span{display:inline}
 .guru-foot{flex-direction:row;border:none;padding:0}
}
@media(max-width:600px){
 .guru-nav{padding:10px}
 .guru-brand .g-brand-s{display:none}
 /* Daftar "Materi & Video": tombol pindah ke baris sendiri di bawah teks
    agar judul panjang tak menabrak tombol pada layar sempit */
 .mcat-item{flex-wrap:wrap;align-items:flex-start;row-gap:10px}
 .mcat-item .mcat-main{flex:1 1 100%;order:2;margin:0}
 .mcat-item .btn{flex:1 1 0;min-width:0;font-size:11.5px;padding:6px 4px;white-space:nowrap}
 .mcat-item .cico{font-size:24px}
 .mcat-item .vchip{margin-top:4px}
}
