:root{--primary:#2563eb;--primary-dark:#1d4ed8;--primary-light:#eff6ff;--secondary:#7c3aed;--accent:#06b6d4;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--dark:#0f172a;--dark-2:#1e293b;--dark-3:#334155;--gray:#64748b;--gray-light:#94a3b8;--border:#e2e8f0;--bg:#f8fafc;--white:#ffffff;--sidebar-w:260px;--header-h:64px;--radius:12px;--radius-sm:8px;--shadow:0 4px 24px rgba(0,0,0,.08);--shadow-md:0 8px 40px rgba(0,0,0,.12);--transition:all .2s ease;--font:'Inter',sans-serif;--font-display:'Space Grotesk',sans-serif}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;scroll-behavior:smooth}
body{font-family:var(--font);background:var(--bg);color:var(--dark);line-height:1.6}
a{text-decoration:none;color:inherit}
button{cursor:pointer;font-family:var(--font);border:none;outline:none}
input,select,textarea{font-family:var(--font);outline:none;border:none}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--gray-light);border-radius:3px}

/* ===LOGIN=== */
.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden}
.login-bg{position:fixed;inset:0;background:linear-gradient(135deg,#0f172a 0%,#1e1b4b 50%,#1e293b 100%);z-index:0}
.login-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.03)1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03)1px,transparent 1px);background-size:50px 50px}
.login-particles{position:absolute;inset:0;overflow:hidden}
.particle{position:absolute;background:rgba(99,102,241,.6);border-radius:50%;animation:float linear infinite}
@keyframes float{0%,100%{transform:translateY(0) rotate(0);opacity:.6}50%{transform:translateY(-80px) rotate(180deg);opacity:.3}}
.login-container{position:relative;z-index:1;width:100%;max-width:1000px;margin:1rem;display:grid;grid-template-columns:1fr 1fr;min-height:600px;border-radius:20px;overflow:hidden;box-shadow:0 25px 80px rgba(0,0,0,.5)}
.login-left{background:linear-gradient(135deg,rgba(37,99,235,.9),rgba(124,58,237,.9));padding:3rem;display:flex;flex-direction:column;justify-content:center;gap:2rem}
.login-brand{color:white}
.brand-icon{width:64px;height:64px;background:rgba(255,255,255,.15);border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;color:white;margin-bottom:1rem}
.login-brand h1{font-family:var(--font-display);font-size:2.2rem;font-weight:700;color:white;margin-bottom:.25rem}
.login-brand p{color:rgba(255,255,255,.7);font-size:.95rem}
.login-features{display:flex;flex-direction:column;gap:1rem}
.feature-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:rgba(255,255,255,.1);border-radius:var(--radius);color:white;border:1px solid rgba(255,255,255,.15)}
.feature-icon{width:40px;height:40px;background:rgba(255,255,255,.2);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}
.feature-item h4{font-size:.9rem;font-weight:600;margin-bottom:.1rem}
.feature-item p{font-size:.8rem;color:rgba(255,255,255,.7)}
.login-right{background:var(--white);padding:3rem;display:flex;flex-direction:column;justify-content:center}
.login-card-header{margin-bottom:1.5rem}
.login-card-header h2{font-family:var(--font-display);font-size:1.8rem;font-weight:700;color:var(--dark)}
.login-card-header p{color:var(--gray);margin-top:.25rem}
.role-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;background:var(--bg);padding:.35rem;border-radius:var(--radius-sm)}
.role-tab{flex:1;padding:.6rem;border-radius:6px;font-size:.8rem;font-weight:500;color:var(--gray);background:transparent;display:flex;align-items:center;justify-content:center;gap:.4rem;transition:var(--transition)}
.role-tab:hover{background:rgba(37,99,235,.08);color:var(--primary)}
.role-tab.active{background:var(--primary);color:white;box-shadow:0 4px 12px rgba(37,99,235,.3)}
.form-group{margin-bottom:1.2rem}
.form-group label{display:block;font-size:.85rem;font-weight:600;color:var(--dark-2);margin-bottom:.5rem}
.input-wrapper{position:relative;display:flex;align-items:center}
.input-icon{position:absolute;left:1rem;color:var(--gray-light);font-size:.9rem;pointer-events:none;z-index:1}
.input-wrapper input{width:100%;padding:.8rem 1rem .8rem 2.8rem;border:2px solid var(--border);border-radius:var(--radius-sm);font-size:.9rem;color:var(--dark);background:var(--white);transition:var(--transition)}
.input-wrapper input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.toggle-pw{position:absolute;right:.8rem;background:none;color:var(--gray-light);padding:.25rem;font-size:.9rem}
.btn-login{width:100%;padding:.9rem;background:linear-gradient(135deg,var(--primary),var(--secondary));color:white;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;display:flex;align-items:center;justify-content:center;gap:.75rem;margin-top:.5rem;transition:var(--transition);box-shadow:0 4px 15px rgba(37,99,235,.3)}
.btn-login:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(37,99,235,.4)}
.btn-login:disabled{opacity:.7;transform:none}
.login-info{margin-top:1rem}
.info-box{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem;background:var(--primary-light);border-radius:var(--radius-sm);font-size:.78rem;color:var(--primary-dark)}
.info-box i{margin-top:2px;flex-shrink:0}
.info-box strong{display:block;margin-bottom:2px}
.login-error{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:#fef2f2;color:var(--danger);border-radius:var(--radius-sm);margin-top:1rem;font-size:.85rem;border:1px solid #fecaca}

/* ===LAYOUT=== */
.app-layout{display:flex;min-height:100vh}
.sidebar{width:var(--sidebar-w);background:var(--dark);min-height:100vh;display:flex;flex-direction:column;position:fixed;top:0;left:0;z-index:100;transition:transform .3s ease;overflow-y:auto}
.sidebar-header{padding:1.25rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:.75rem;min-height:var(--header-h)}
.sidebar-logo{width:38px;height:38px;background:linear-gradient(135deg,var(--primary),var(--secondary));border-radius:10px;display:flex;align-items:center;justify-content:center;color:white;font-size:1.1rem;flex-shrink:0}
.sidebar-header h2{font-family:var(--font-display);font-size:1.1rem;font-weight:700;color:white}
.sidebar-header small{color:rgba(255,255,255,.4);font-size:.7rem;display:block}
.sidebar-nav{flex:1;padding:1rem 0}
.nav-section{margin-bottom:.5rem}
.nav-section-title{padding:.5rem 1.5rem;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.3)}
.nav-item{display:flex;align-items:center;gap:.75rem;padding:.7rem 1.5rem;color:rgba(255,255,255,.6);font-size:.875rem;font-weight:500;transition:var(--transition);cursor:pointer;position:relative}
.nav-item i{width:18px;text-align:center;font-size:.9rem;flex-shrink:0}
.nav-item:hover{color:white;background:rgba(255,255,255,.07)}
.nav-item.active{color:white;background:linear-gradient(90deg,rgba(37,99,235,.4),transparent)}
.nav-item.active::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary);border-radius:0 3px 3px 0}
.sidebar-footer{padding:1rem 1.5rem;border-top:1px solid rgba(255,255,255,.08)}
.sidebar-user{display:flex;align-items:center;gap:.75rem}
.sidebar-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--secondary));display:flex;align-items:center;justify-content:center;color:white;font-weight:700;font-size:.85rem;flex-shrink:0}
.sidebar-user-info{flex:1;min-width:0}
.sidebar-user-info h4{font-size:.8rem;font-weight:600;color:white;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-user-info small{font-size:.7rem;color:rgba(255,255,255,.4)}
.btn-logout{color:rgba(255,255,255,.4);font-size:.85rem;padding:.25rem;transition:var(--transition);background:none}
.btn-logout:hover{color:var(--danger)}
.main-content{margin-left:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column;flex:1}
.topbar{height:var(--header-h);background:var(--white);border-bottom:1px solid var(--border);padding:0 1.5rem;display:flex;align-items:center;gap:1rem;position:sticky;top:0;z-index:50}
.topbar-toggle{width:36px;height:36px;border-radius:8px;background:var(--bg);display:none;align-items:center;justify-content:center;color:var(--gray);font-size:1rem;border:none;cursor:pointer}
.topbar-breadcrumb{flex:1}
.topbar-breadcrumb h1{font-size:1.1rem;font-weight:700;color:var(--dark);font-family:var(--font-display)}
.topbar-breadcrumb p{font-size:.75rem;color:var(--gray)}
.topbar-actions{display:flex;align-items:center;gap:.75rem}
.topbar-notif{width:36px;height:36px;background:var(--bg);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--gray);position:relative;cursor:pointer}
.topbar-user{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.35rem .75rem;border-radius:8px;background:var(--bg)}
.topbar-user span{font-size:.85rem;font-weight:600;color:var(--dark)}
.topbar-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--secondary));display:flex;align-items:center;justify-content:center;color:white;font-weight:700;font-size:.75rem}
.page-content{flex:1;padding:1.5rem}
.page-hidden{display:none!important}

/* ===STATS=== */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}
.stat-card{background:var(--white);border-radius:var(--radius);padding:1.25rem;display:flex;align-items:center;gap:1rem;box-shadow:var(--shadow);border:1px solid var(--border);transition:var(--transition)}
.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.stat-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.3rem;flex-shrink:0}
.stat-icon.blue{background:linear-gradient(135deg,#2563eb,#3b82f6);color:white}
.stat-icon.green{background:linear-gradient(135deg,#059669,#10b981);color:white}
.stat-icon.purple{background:linear-gradient(135deg,#7c3aed,#8b5cf6);color:white}
.stat-icon.orange{background:linear-gradient(135deg,#d97706,#f59e0b);color:white}
.stat-icon.teal{background:linear-gradient(135deg,#0891b2,#06b6d4);color:white}
.stat-icon.red{background:linear-gradient(135deg,#dc2626,#ef4444);color:white}
.stat-info h3{font-size:1.8rem;font-weight:800;color:var(--dark);line-height:1;font-family:var(--font-display)}
.stat-info p{font-size:.8rem;color:var(--gray);margin-top:.2rem}

/* ===CARDS=== */
.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border);overflow:hidden;margin-bottom:1.5rem}
.card-header{padding:1rem 1.25rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.card-header h3{font-size:1rem;font-weight:700;color:var(--dark);display:flex;align-items:center;gap:.5rem}
.card-header h3 i{color:var(--primary)}
.card-body{padding:1.25rem}

/* ===BUTTONS=== */
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1.1rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;transition:var(--transition);border:none;cursor:pointer}
.btn-primary{background:var(--primary);color:white}
.btn-primary:hover{background:var(--primary-dark)}
.btn-success{background:var(--success);color:white}
.btn-success:hover{filter:brightness(.9)}
.btn-danger{background:var(--danger);color:white}
.btn-danger:hover{filter:brightness(.9)}
.btn-warning{background:var(--warning);color:white}
.btn-secondary{background:var(--bg);color:var(--dark);border:1px solid var(--border)}
.btn-secondary:hover{background:var(--border)}
.btn-sm{padding:.4rem .8rem;font-size:.78rem}
.btn-icon{width:32px;height:32px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:.85rem;padding:0}

/* ===TABLES=== */
.table-wrapper{overflow-x:auto}
.data-table{width:100%;border-collapse:collapse;font-size:.85rem}
.data-table th{background:var(--dark);color:white;padding:.75rem 1rem;text-align:left;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.data-table td{padding:.7rem 1rem;border-bottom:1px solid var(--border);color:var(--dark-2);vertical-align:middle;white-space:nowrap}
.data-table tr:hover td{background:var(--primary-light)}
.data-table tr:last-child td{border-bottom:none}
.data-table .actions{display:flex;gap:.4rem}

/* ===BADGES=== */
.badge{display:inline-flex;align-items:center;padding:.25rem .6rem;border-radius:99px;font-size:.72rem;font-weight:700}
.badge-H{background:#d1fae5;color:#065f46}
.badge-A{background:#fee2e2;color:#991b1b}
.badge-S{background:#fef3c7;color:#92400e}
.badge-I{background:#e0e7ff;color:#3730a3}
.badge-D{background:#ede9fe;color:#6d28d9}
.badge-tuntas{background:#d1fae5;color:#065f46}
.badge-remedi{background:#fee2e2;color:#991b1b}
.badge-belum{background:#f1f5f9;color:var(--gray)}
.badge-blue{background:#dbeafe;color:#1e40af}
.badge-admin{background:#fee2e2;color:#991b1b}
.badge-guru{background:#e0e7ff;color:#3730a3}
.badge-siswa{background:#d1fae5;color:#065f46}

/* ===FORMS=== */
.form-row{display:grid;gap:1rem}
.form-row-2{grid-template-columns:1fr 1fr}
.form-row-3{grid-template-columns:1fr 1fr 1fr}
.field{display:flex;flex-direction:column;gap:.4rem}
.field label{font-size:.82rem;font-weight:600;color:var(--dark-2)}
.field input,.field select,.field textarea{padding:.65rem .9rem;border:2px solid var(--border);border-radius:var(--radius-sm);font-size:.875rem;color:var(--dark);background:var(--white);transition:var(--transition)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.field textarea{resize:vertical;min-height:80px}

/* ===CLASS CARDS=== */
.class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}
.class-card{padding:1rem;background:var(--white);border:2px solid var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;transition:var(--transition)}
.class-card:hover{border-color:var(--primary);background:var(--primary-light)}
.class-card.active-kelas{border-color:var(--primary);background:var(--primary);color:white}
.class-card .class-icon{font-size:1.5rem;margin-bottom:.4rem}
.class-card h4{font-size:.85rem;font-weight:700}
.class-card p{font-size:.75rem;opacity:.7}

/* ===ATTENDANCE=== */
.attendance-select{padding:.3rem .5rem;border:1px solid var(--border);border-radius:6px;font-size:.8rem;cursor:pointer;transition:var(--transition);background:var(--white)}
.attendance-select.H{background:#d1fae5;color:#065f46;border-color:#6ee7b7}
.attendance-select.A{background:#fee2e2;color:#991b1b;border-color:#fca5a5}
.attendance-select.S{background:#fef3c7;color:#92400e;border-color:#fcd34d}
.attendance-select.I{background:#e0e7ff;color:#3730a3;border-color:#a5b4fc}
.attendance-select.D{background:#ede9fe;color:#6d28d9;border-color:#c4b5fd}

/* ===MODAL=== */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem;backdrop-filter:blur(4px)}
.modal-overlay.hidden{display:none}
.modal{background:var(--white);border-radius:16px;width:100%;max-width:600px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-md)}
.modal-lg{max-width:800px}
.modal-header{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.modal-header h3{font-size:1.1rem;font-weight:700;color:var(--dark);display:flex;align-items:center;gap:.5rem}
.modal-close{width:32px;height:32px;background:var(--bg);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--gray);font-size:.9rem;transition:var(--transition);border:none;cursor:pointer}
.modal-close:hover{background:var(--danger);color:white}
.modal-body{padding:1.5rem;overflow-y:auto;flex:1}
.modal-footer{padding:1rem 1.5rem;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:flex-end;gap:.75rem}

/* ===TABS=== */
.tab-nav{display:flex;gap:.25rem;border-bottom:2px solid var(--border);margin-bottom:1.25rem;overflow-x:auto}
.tab-btn{padding:.7rem 1rem;font-size:.85rem;font-weight:600;color:var(--gray);border-bottom:2px solid transparent;margin-bottom:-2px;background:none;white-space:nowrap;transition:var(--transition);border-top:none;border-left:none;border-right:none;cursor:pointer}
.tab-btn:hover{color:var(--primary)}
.tab-btn.active{color:var(--primary);border-bottom-color:var(--primary)}

/* ===ANNOUNCEMENTS=== */
.announcement-card{background:var(--white);border-radius:var(--radius);border:1px solid var(--border);padding:1.25rem;margin-bottom:1rem;box-shadow:var(--shadow)}
.ann-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.75rem}
.ann-header h4{font-size:.95rem;font-weight:700;color:var(--dark)}
.ann-meta{font-size:.75rem;color:var(--gray);display:flex;align-items:center;gap:.5rem;margin-top:.25rem}
.ann-body{font-size:.875rem;color:var(--dark-2);line-height:1.7}
.ann-attachments{margin-top:.75rem;display:flex;flex-wrap:wrap;gap:.5rem}
.attachment-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;background:var(--bg);border-radius:99px;font-size:.75rem;color:var(--primary);border:1px solid var(--border)}

/* ===QUICK BUTTONS=== */
.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}
.quick-btn{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:1.25rem;background:var(--white);border:2px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:var(--transition);font-size:.85rem;font-weight:600;color:var(--dark)}
.quick-btn:hover{border-color:var(--primary);background:var(--primary-light);transform:translateY(-2px);box-shadow:var(--shadow)}
.quick-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;color:white}
.pelanggaran-chip{display:inline-flex;align-items:center;gap:.3rem;background:#fee2e2;color:#991b1b;border-radius:6px;padding:.2rem .6rem;font-size:.75rem;margin:.1rem}

/* ===NUM INPUT=== */
.num-input{width:70px;padding:.35rem .5rem;border:1px solid var(--border);border-radius:6px;text-align:center;font-size:.82rem}
.num-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px rgba(37,99,235,.1)}

/* ===TOAST=== */
#toast-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem}
.toast{display:flex;align-items:center;gap:.75rem;padding:.85rem 1.25rem;background:var(--dark);color:white;border-radius:var(--radius-sm);box-shadow:var(--shadow-md);font-size:.875rem;font-weight:500;max-width:320px;animation:slideIn .3s ease}
.toast.success{background:var(--success)}
.toast.error{background:var(--danger)}
.toast.warning{background:var(--warning);color:var(--dark)}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

/* ===UTILS=== */
.text-center{text-align:center}
.text-muted{color:var(--gray)}
.text-sm{font-size:.8rem}
.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}
.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}
.d-flex{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.ml-auto{margin-left:auto}
.empty-state{text-align:center;padding:3rem 1rem;color:var(--gray)}
.empty-state i{font-size:3rem;margin-bottom:1rem;opacity:.3;display:block}
.empty-state h3{font-size:1rem;margin-bottom:.4rem;color:var(--dark-2)}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:99}

/* ===RESPONSIVE=== */
@media(max-width:768px){
  .login-container{grid-template-columns:1fr;max-width:440px}
  .login-left{display:none}
  .login-right{padding:2rem}
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0)}
  .sidebar-overlay{display:block}
  .main-content{margin-left:0}
  .topbar-toggle{display:flex!important}
  .stats-grid{grid-template-columns:1fr 1fr}
  .form-row-2,.form-row-3{grid-template-columns:1fr}
  .page-content{padding:1rem}
  .class-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}
  .modal{margin:.5rem;border-radius:12px}
  .quick-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:480px){
  .stats-grid{grid-template-columns:1fr}
  .topbar-breadcrumb h1{font-size:.95rem}
}
/* ===== FIX: BADGE SUCCESS/DANGER (dipakai di rekap nilai siswa) ===== */
.badge-success{background:#d1fae5;color:#065f46}
.badge-danger{background:#fee2e2;color:#991b1b}

/* ===== PERSENTASE KEHADIRAN (PILL) ===== */
.percent-pill{display:inline-flex;align-items:center;justify-content:center;min-width:56px;padding:.3rem .6rem;border-radius:99px;font-weight:800;font-size:.78rem;letter-spacing:.02em}
.percent-high{background:#d1fae5;color:#065f46}
.percent-mid{background:#fef3c7;color:#92400e}
.percent-low{background:#fee2e2;color:#991b1b}

/* ===== FREEZE / STICKY KOLOM NAMA PADA TABEL ===== */
.data-table th.col-sticky,
.data-table td.col-sticky{position:sticky;left:0;z-index:2;box-shadow:2px 0 6px rgba(0,0,0,.06)}
.data-table th.col-sticky{background:var(--dark);z-index:4}
.data-table td.col-sticky{background:var(--white);z-index:2}
.data-table tbody tr:nth-child(even) td.col-sticky{background:#f8fafc}
.data-table tr:hover td.col-sticky{background:#dbeafe}
.freeze-scroll{overflow-x:auto;border-radius:var(--radius-sm);border:1px solid var(--border)}
.freeze-scroll .data-table{border-radius:0}

/* Tombol edit kecil di header kolom tanggal (rekap absensi/uang kas) */
.col-edit-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:5px;background:rgba(255,255,255,.15);color:#fff;font-size:.65rem;margin-left:.35rem;cursor:pointer;transition:var(--transition);border:none;vertical-align:middle}
.col-edit-btn:hover{background:var(--primary);box-shadow:0 0 0 2px rgba(37,99,235,.4)}
.col-del-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:5px;background:rgba(255,255,255,.15);color:#fca5a5;font-size:.7rem;margin-left:.2rem;cursor:pointer;transition:var(--transition);border:none;vertical-align:middle}
.col-del-btn:hover{background:var(--danger);color:white}

/* ===== KATEGORI CATATAN SISWA (Informasi / Pelanggaran / Catatan Khusus) ===== */
.tag-cat{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .7rem;border-radius:99px;font-size:.72rem;font-weight:700;border:1px solid transparent}
.tag-informasi{background:#fef9c3;color:#854d0e;border-color:#fde68a}
.tag-pelanggaran{background:#fee2e2;color:#991b1b;border-color:#fecaca}
.tag-khusus{background:#d1fae5;color:#065f46;border-color:#a7f3d0}
.cat-card{border-left:5px solid var(--border);transition:var(--transition)}
.cat-card.cat-informasi{border-left-color:#eab308}
.cat-card.cat-pelanggaran{border-left-color:#ef4444}
.cat-card.cat-khusus{border-left-color:#10b981}
.cat-select-option{display:flex;align-items:center;gap:.6rem;padding:.65rem .9rem;border:2px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);flex:1}
.cat-select-option input{accent-color:var(--primary)}
.cat-select-option.active-informasi{border-color:#eab308;background:#fef9c3}
.cat-select-option.active-pelanggaran{border-color:#ef4444;background:#fee2e2}
.cat-select-option.active-khusus{border-color:#10b981;background:#d1fae5}

/* ===== CHECKBOX FILTER PILLS (Hapus Data / Edit Kelas Admin) ===== */
.chk-group{display:flex;flex-wrap:wrap;gap:.5rem}
.chk-pill{display:flex;align-items:center;gap:.45rem;padding:.45rem .8rem;border:1.5px solid var(--border);border-radius:99px;font-size:.8rem;cursor:pointer;transition:var(--transition);background:var(--white);user-select:none}
.chk-pill:hover{border-color:var(--primary)}
.chk-pill input{accent-color:var(--primary);cursor:pointer;width:15px;height:15px}
.chk-pill.checked{background:var(--primary-light);border-color:var(--primary);color:var(--primary-dark);font-weight:700}
.filter-step{background:var(--bg);border-radius:var(--radius-sm);padding:1rem;margin-bottom:1rem;border:1px solid var(--border)}
.filter-step-title{font-size:.8rem;font-weight:700;color:var(--dark-2);margin-bottom:.6rem;display:flex;align-items:center;gap:.4rem}
.filter-step-title .step-num{width:20px;height:20px;border-radius:50%;background:var(--primary);color:white;display:inline-flex;align-items:center;justify-content:center;font-size:.7rem}

/* ===== TOGGLE SWITCH (Visibilitas Uang Kas ke Siswa) ===== */
.toggle-switch{position:relative;width:46px;height:25px;background:#cbd5e1;border-radius:99px;cursor:pointer;transition:.25s;flex-shrink:0;border:none}
.toggle-switch.on{background:var(--success)}
.toggle-switch::after{content:'';position:absolute;top:2px;left:2px;width:21px;height:21px;background:white;border-radius:50%;transition:.25s;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.toggle-switch.on::after{transform:translateX(21px)}
.toggle-label-wrap{display:flex;align-items:center;gap:.6rem;padding:.5rem .9rem;background:var(--bg);border-radius:99px;border:1px solid var(--border)}
.toggle-label-wrap span{font-size:.8rem;font-weight:600;color:var(--dark-2)}

/* ===== CHECKBOX BAYAR (Uang Kas) - besar & mudah diklik ===== */
.paid-checkbox{width:24px;height:24px;cursor:pointer;accent-color:var(--success)}
.paid-cell{text-align:center;transition:var(--transition)}

/* ===== KARTU NILAI SISWA v2 (UI/UX baru) ===== */
.nilai-card-v2{border-radius:16px;overflow:hidden;border:1px solid var(--border);margin-bottom:1.25rem;box-shadow:var(--shadow)}
.nilai-card-v2-head{padding:1.1rem 1.35rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;background:linear-gradient(135deg,#0f172a,#1e293b)}
.nilai-card-v2-head h4{color:white;font-size:1.05rem;font-weight:700;font-family:var(--font-display);display:flex;align-items:center;gap:.5rem}
.nilai-card-v2-head .guru-name{color:rgba(255,255,255,.55);font-size:.78rem;margin-top:.15rem}
.nilai-status-pill{padding:.4rem .9rem;border-radius:99px;font-size:.8rem;font-weight:800;display:flex;align-items:center;gap:.4rem}
.nilai-status-pill.all-pass{background:#d1fae5;color:#065f46}
.nilai-status-pill.not-pass{background:#fee2e2;color:#991b1b}
.nilai-card-v2-body{padding:1.35rem;background:var(--white)}
.nilai-cat-block{margin-bottom:1.1rem}
.nilai-cat-block:last-child{margin-bottom:0}
.nilai-cat-label{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--gray);margin-bottom:.55rem;display:flex;align-items:center;gap:.4rem}
.nilai-chip-grid{display:flex;flex-wrap:wrap;gap:.6rem}
.nilai-chip{display:flex;flex-direction:column;gap:.2rem;padding:.55rem .8rem;border-radius:10px;font-size:.75rem;min-width:96px;border:1.5px solid transparent}
.nilai-chip.pass{background:#d1fae5;border-color:#6ee7b7;color:#065f46}
.nilai-chip.fail{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
.nilai-chip .score{font-size:1.15rem;font-weight:800;font-family:var(--font-display)}
.nilai-chip .lbl{font-weight:600;opacity:.85}
.kkm-banner{display:flex;align-items:center;gap:.5rem;font-size:.74rem;color:var(--gray);background:var(--bg);padding:.5rem .8rem;border-radius:8px;margin-bottom:1rem}
.kkm-banner .dot{width:10px;height:10px;border-radius:50%;display:inline-block}

/* ===== JADWAL PIKET — TEMA CYBER NEON ===== */
.piket-cyber-wrap{background:radial-gradient(circle at 20% 20%,#0d1526 0%,#05070d 70%);border-radius:20px;padding:1.75rem;position:relative;overflow:hidden;box-shadow:0 0 60px rgba(6,182,212,.08) inset,0 10px 40px rgba(0,0,0,.3)}
.piket-cyber-wrap::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(34,211,238,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(34,211,238,.05) 1px,transparent 1px);background-size:28px 28px;pointer-events:none}
.piket-cyber-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1.25rem;position:relative;z-index:1}
.piket-day{background:linear-gradient(160deg,rgba(15,23,42,.9),rgba(5,8,16,.9));border:1px solid rgba(34,211,238,.35);border-radius:14px;padding:1.1rem;position:relative;overflow:hidden;backdrop-filter:blur(6px);transition:.25s}
.piket-day:hover{border-color:rgba(34,211,238,.7);box-shadow:0 0 25px rgba(34,211,238,.2)}
.piket-day-title{font-family:var(--font-display);font-size:.95rem;font-weight:700;color:#67e8f9;text-shadow:0 0 14px rgba(34,211,238,.65);margin-bottom:.85rem;display:flex;align-items:center;gap:.5rem;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid rgba(34,211,238,.25);padding-bottom:.6rem}
.piket-day-title i{color:#22d3ee}
.piket-student-chip{display:flex;align-items:center;justify-content:space-between;gap:.5rem;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09);border-radius:9px;padding:.55rem .7rem;margin-bottom:.5rem;color:#e2e8f0;font-size:.8rem;transition:.2s}
.piket-student-chip:hover{background:rgba(34,211,238,.08);border-color:rgba(34,211,238,.3)}
.piket-student-chip .name{display:flex;align-items:center;gap:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.piket-student-chip .name i{color:#22d3ee;font-size:.7rem;flex-shrink:0}
.piket-student-chip .rm-btn{color:#f87171;cursor:pointer;background:none;border:none;font-size:.85rem;flex-shrink:0;transition:.2s;padding:.2rem}
.piket-student-chip .rm-btn:hover{color:#fca5a5;transform:scale(1.15)}
.piket-empty-hint{color:rgba(226,232,240,.35);font-size:.75rem;text-align:center;padding:.5rem 0;font-style:italic}
.piket-add-select{width:100%;padding:.5rem .6rem;border-radius:8px;background:rgba(15,23,42,.8);border:1px solid rgba(34,211,238,.3);color:#e2e8f0;font-size:.78rem;margin-bottom:.5rem}
.piket-add-select option{background:#0f172a;color:#e2e8f0}
.piket-add-btn{width:100%;padding:.55rem;border:1px dashed rgba(34,211,238,.45);border-radius:8px;background:rgba(34,211,238,.06);color:#67e8f9;font-size:.78rem;font-weight:700;cursor:pointer;transition:.2s;letter-spacing:.03em}
.piket-add-btn:hover{background:rgba(34,211,238,.18);box-shadow:0 0 14px rgba(34,211,238,.35)}
.piket-cyber-title{font-family:var(--font-display);color:#67e8f9;text-shadow:0 0 16px rgba(34,211,238,.5);letter-spacing:.06em}

/* ===== READ-ONLY VARIANT UNTUK SISWA (piket tanpa tombol edit) ===== */
.piket-day.readonly:hover{box-shadow:none;border-color:rgba(34,211,238,.35)}

/* ===== JURNAL WALIKELAS ===== */
.jurnal-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:1.1rem;margin-bottom:.85rem;background:var(--white);box-shadow:var(--shadow)}
.jurnal-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.6rem;flex-wrap:wrap}
.jurnal-date-badge{display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--primary);color:white;border-radius:10px;padding:.5rem .8rem;min-width:64px;font-family:var(--font-display)}
.jurnal-date-badge .day-num{font-size:1.3rem;font-weight:800;line-height:1}
.jurnal-date-badge .day-name{font-size:.62rem;text-transform:uppercase;letter-spacing:.05em;opacity:.85;margin-top:.1rem}
.jurnal-date-badge .month-yr{font-size:.6rem;opacity:.8}

/* ===== UANG KAS INFO MESSAGE ===== */
.uang-msg{display:flex;align-items:flex-start;gap:.75rem;padding:1rem 1.15rem;border-radius:12px;font-size:.85rem;line-height:1.6;border:1.5px solid transparent}
.uang-msg.paid{background:#d1fae5;border-color:#6ee7b7;color:#065f46}
.uang-msg.unpaid{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
.uang-msg.empty{background:var(--bg);border-color:var(--border);color:var(--gray)}
.uang-msg i{font-size:1.3rem;margin-top:.1rem;flex-shrink:0}
.uang-msg strong{display:block;margin-bottom:.15rem;font-size:.9rem}
.uang-summary-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .7rem;border-radius:99px;font-size:.75rem;font-weight:700;background:rgba(255,255,255,.5)}

/* ===== EDIT KELAS MASSAL - preview list ===== */
.bulk-preview-item{display:flex;align-items:center;gap:.6rem;padding:.45rem .6rem;border-bottom:1px solid var(--border);font-size:.82rem}
.bulk-preview-item:last-child{border-bottom:none}
.bulk-preview-item input{accent-color:var(--primary);width:16px;height:16px;cursor:pointer}

/* ===== RESPONSIVE TAMBAHAN ===== */
@media(max-width:768px){
  .piket-cyber-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
  .nilai-chip-grid{gap:.4rem}
  .nilai-chip{min-width:80px;padding:.45rem .6rem}
  .chk-group{gap:.4rem}
}

/* ===== LOGO DI LOGIN PAGE ===== */
.brand-icon {
  width: 192px;
  height: 192px;
  background: none;        /* TANPA BACKGROUND */
  border-radius: 0;        /* TANPA ROUNDED */
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1.5rem;
  overflow: hidden;
}

.brand-icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* ===== LOGO DI SIDEBAR ===== */
.sidebar-logo {
  width: 44px;
  height: 44px;
  background: none;        /* TANPA BACKGROUND */
  border-radius: 0;        /* TANPA ROUNDED */
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  overflow: hidden;
}

.sidebar-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}