
:root{
  --bg:#f7f6f3;--surface:#fff;--bg-secondary:#fff;--border:rgba(0,0,0,0.08);--border-md:rgba(0,0,0,0.14);
  --text-primary:#1a1916;--text-secondary:#6b6860;--text-tertiary:#aba99f;
  --blue:#185FA5;--blue-light:#E6F1FB;--blue-mid:#B5D4F4;
  --teal:#0F6E56;--teal-light:#E1F5EE;
  --amber:#854F0B;--amber-light:#FAEEDA;
  --purple:#534AB7;--purple-light:#EEEDFE;
  --red:#A32D2D;--red-light:#FCEBEB;
  --green:#3B6D11;--green-light:#EAF3DE;
  --coral:#993C1D;--coral-light:#FAECE7;
  --radius:8px;--radius-lg:12px;--sidebar-w:236px;
}
[data-theme="dark"]{
  --bg:#060D1F;--surface:#0B1730;--bg-secondary:#0F2248;--border:rgba(255,255,255,0.08);--border-md:rgba(255,255,255,0.14);
  --text-primary:#EEF2FF;--text-secondary:#8899C4;--text-tertiary:#3D5278;
  --blue:#6EB6FF;--blue-light:#081428;--blue-mid:#0F2247;
  --teal:#2FD9B5;--teal-light:#061D1B;
  --amber:#F5A623;--amber-light:#1A1005;
  --purple:#9AB0FF;--purple-light:#0A1238;
  --red:#FF7575;--red-light:#1E0A0C;
  --green:#5DD99A;--green-light:#051A10;
  --coral:#FF9E78;--coral-light:#1C0E07;
}
[data-theme="dark"] .avatar{color:#fff;}
[data-theme="dark"] .toast{background:#F0EDF8;color:#111114;}
[data-theme="dark"] .nav-wrap::-webkit-scrollbar{width:4px;}
[data-theme="dark"] .nav-wrap::-webkit-scrollbar-track{background:transparent;}
[data-theme="dark"] .nav-wrap::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.12);border-radius:4px;}
[data-theme="dark"] .nav-wrap::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.22);}
[data-theme="dark"] *{scrollbar-color:rgba(255,255,255,0.12) transparent;scrollbar-width:thin;}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text-primary);font-size:13px;}
body{display:flex;overflow:hidden;background:transparent;}

/* SIDEBAR */
.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--surface);border-right:0.5px solid var(--border);display:flex;flex-direction:column;height:100vh;transition:transform 0.25s,width 0.24s cubic-bezier(0.4,0,0.2,1),min-width 0.24s cubic-bezier(0.4,0,0.2,1);z-index:50;overflow:hidden;}
.sidebar.collapsed{width:52px;min-width:52px;}
.logo-area{padding:14px 12px;border-bottom:0.5px solid var(--border);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:56px;}
.logo-content{overflow:hidden;flex:1;transition:opacity 0.15s,max-width 0.24s cubic-bezier(0.4,0,0.2,1);max-width:180px;}
.sidebar.collapsed .logo-content{opacity:0;max-width:0;}
.logo-light,.logo-dark{height:50px;width:auto;display:block;}
.logo-dark{display:none;}
[data-theme="dark"] .logo-light{display:none;}
[data-theme="dark"] .logo-dark{display:block;}
.logo-text{font-size:15px;font-weight:500;letter-spacing:-0.3px;white-space:nowrap;}
.logo-sub{font-size:11px;color:var(--text-tertiary);margin-top:3px;font-family:'DM Mono',monospace;white-space:nowrap;}
#sidebar-collapse-btn{flex-shrink:0;width:26px;height:26px;}
#sidebar-collapse-btn svg{transition:transform 0.24s cubic-bezier(0.4,0,0.2,1);}
.sidebar.collapsed #sidebar-collapse-btn svg{transform:rotate(180deg);}
.nav-wrap{flex:1;overflow-y:auto;padding:12px 6px;}
.nav-section-label{font-size:10px;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:1px;padding:0 8px;margin:10px 0 5px;overflow:hidden;white-space:nowrap;transition:opacity 0.15s,max-height 0.24s cubic-bezier(0.4,0,0.2,1),margin 0.24s;max-height:30px;display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;}
.nav-section-label::before{content:'';display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--blue);opacity:0.5;flex-shrink:0;}
.nav-section-chevron{width:10px;height:10px;flex-shrink:0;margin-left:auto;opacity:0.5;transition:transform 0.2s ease;}
.nav-section-label.collapsed .nav-section-chevron{transform:rotate(-90deg);}
.nav-section-body{overflow:hidden;max-height:600px;transition:max-height 0.25s ease;}
.nav-section-body.collapsed{max-height:0;}
.sidebar.collapsed .nav-section-label{opacity:0;max-height:0;margin:0;}
.nav-item{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:var(--radius);cursor:pointer;font-size:13px;color:var(--text-secondary);margin-bottom:1px;transition:all 0.15s;user-select:none;white-space:nowrap;}
.nav-item:hover{background:var(--bg);color:var(--text-primary);padding-left:14px;}
.nav-item.active{background:var(--blue-light);color:var(--blue);font-weight:500;box-shadow:inset 3px 0 0 var(--blue);}
.nav-item.disabled{opacity:0.35;pointer-events:none;}
.nav-item svg{width:14px;height:14px;flex-shrink:0;opacity:0.6;transition:opacity 0.15s;}
.nav-item:hover svg{opacity:0.85;}
.nav-item.active svg{opacity:1;}
.nav-label{overflow:hidden;transition:opacity 0.15s,max-width 0.24s cubic-bezier(0.4,0,0.2,1);max-width:160px;display:inline-block;}
.sidebar.collapsed .nav-label{opacity:0;max-width:0;}
.sidebar.collapsed .nav-item{justify-content:center;gap:0;padding:8px 0;}
.nav-divider{height:0.5px;background:var(--border);margin:8px 0;}
.sidebar-footer{padding:8px 6px;border-top:0.5px solid var(--border);flex-shrink:0;}
.user-pill{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:8px 10px;border-radius:var(--radius);cursor:default;transition:justify-content 0.24s;}
.sidebar.collapsed .user-pill{justify-content:center;}
.user-pill:hover{background:var(--bg);}
.user-pill-info{display:flex;align-items:center;gap:9px;overflow:hidden;}
.user-text{overflow:hidden;transition:opacity 0.15s,max-width 0.24s cubic-bezier(0.4,0,0.2,1);max-width:160px;}
.sidebar.collapsed .user-text{opacity:0;max-width:0;}
.sidebar.collapsed .logout-btn{display:none;}
.avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#0ea5e9);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff;flex-shrink:0;font-family:'DM Mono',monospace;}
.user-name{font-size:12px;font-weight:500;white-space:nowrap;}
.user-role{font-size:10px;color:var(--text-tertiary);white-space:nowrap;}
/* On mobile, ignore desktop collapse */
@media(max-width:700px){
  #sidebar-collapse-btn{display:none;}
  .sidebar.collapsed{width:var(--sidebar-w)!important;min-width:var(--sidebar-w)!important;}
  .sidebar.collapsed .logo-content,.sidebar.collapsed .nav-label,.sidebar.collapsed .nav-section-label,.sidebar.collapsed .user-text{opacity:1!important;max-width:200px!important;max-height:30px!important;}
  .sidebar.collapsed .nav-item{justify-content:flex-start!important;gap:9px!important;padding:9px 12px!important;}
  .sidebar.collapsed .logout-btn{display:flex!important;}
  .sidebar.collapsed .user-pill{justify-content:space-between!important;}
}

/* MAIN */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;}
.topbar{padding:0 16px 0 20px;height:56px;background:var(--surface);border-bottom:0.5px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;gap:12px;}
.topbar-left{display:flex;align-items:center;gap:10px;min-width:0;}
.menu-btn{display:none;width:32px;height:32px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text-primary);cursor:pointer;align-items:center;justify-content:center;flex-shrink:0;}
.mobile-logout-btn{display:none;}
.menu-btn svg{width:14px;height:14px;}
.topbar-titles{min-width:0;}
.page-title{font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.page-crumb{font-size:11px;color:var(--text-tertiary);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.topbar-right{display:flex;gap:8px;align-items:center;flex-shrink:0;}

/* BUTTONS */
.btn{padding:7px 14px;border-radius:var(--radius);font-size:12px;cursor:pointer;border:0.5px solid var(--border-md);background:var(--surface);color:var(--text-primary);font-family:'DM Sans',sans-serif;font-weight:400;transition:all 0.12s;white-space:nowrap;}
.btn:hover{background:var(--bg);}
.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue);font-weight:500;}
.btn-primary:hover{background:#0C447C;border-color:#0C447C;}
.btn-danger{background:var(--red-light);color:var(--red);border-color:rgba(163,45,45,0.2);}
.btn-danger:hover{background:#F7C1C1;}
.btn-sm{padding:5px 10px;font-size:11px;}
.btn-xs{padding:3px 8px;font-size:11px;}
.btn-icon-text{display:inline-flex;align-items:center;gap:6px;}
.btn-icon-text svg{width:12px;height:12px;}

/* CONTENT */
.content{flex:1;overflow-y:auto;padding:20px;}

/* HOME */
.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;}
.module-card{background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:18px;cursor:pointer;transition:border-color 0.15s,transform 0.12s;}
.module-card:hover{border-color:var(--border-md);transform:translateY(-1px);}
.card-icon{width:34px;height:34px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;margin-bottom:12px;}
.card-icon svg{width:16px;height:16px;}
.card-title{font-size:13px;font-weight:500;margin-bottom:4px;}
.card-desc{font-size:11px;color:var(--text-secondary);line-height:1.5;}
.card-badge{display:inline-block;margin-top:10px;font-size:10px;padding:3px 8px;border-radius:20px;}
.badge-blue{background:var(--blue-light);color:var(--blue);}
.badge-green{background:var(--green-light);color:var(--green);}
.badge-gray{background:var(--bg);color:var(--text-secondary);}

/* MODULE VIEW */
.module-view{display:none;}
.module-view.active{display:block;}
.detail-view{display:none;}
.detail-view.active{display:block;}

/* TABLE */
.table-wrap{background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);overflow:clip;}
.table-header{padding:14px 18px;border-bottom:0.5px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.table-title{font-size:13px;font-weight:500;}
.table-count{font-size:11px;color:var(--text-tertiary);font-family:'DM Mono',monospace;}
.table-scroll{overflow-x:auto;overflow-y:auto;max-height:calc(100vh - 280px);}
@media(min-width:768px){.table-scroll{max-height:calc(100vh - 210px);}.subjects-panel,.detail-panel{max-height:calc(100vh - 160px);}}
.table-scroll table thead,.table-scroll thead{position:sticky;top:0;z-index:2;background:var(--surface);}
table{width:100%;border-collapse:collapse;min-width:480px;}
thead tr{border-bottom:0.5px solid var(--border);}
thead th{padding:10px 16px;text-align:left;font-size:10px;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.6px;white-space:nowrap;}
tbody tr{border-bottom:0.5px solid var(--border);transition:background 0.1s;}
tbody tr:last-child{border-bottom:none;}
tbody tr:hover{background:var(--bg);}
tbody td{padding:11px 16px;font-size:12px;vertical-align:middle;}
.td-name{font-weight:500;}
.td-desc{color:var(--text-secondary);max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.status-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:11px;}
.status-active{background:var(--green-light);color:var(--green);}
.status-inactive{background:var(--bg);color:var(--text-secondary);}
.status-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0;}
.action-btns{display:flex;gap:6px;}
.icon-btn{width:28px;height:28px;border-radius:var(--radius);border:0.5px solid var(--border);background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.12s;color:var(--text-secondary);flex-shrink:0;}
.icon-btn:hover{background:var(--bg);color:var(--text-primary);border-color:var(--border-md);}
.icon-btn.del:hover{background:var(--red-light);color:var(--red);border-color:rgba(163,45,45,0.2);}
.icon-btn.view-btn:hover{background:var(--blue-light);color:var(--blue);border-color:rgba(24,95,165,0.2);}
.icon-btn svg{width:13px;height:13px;}
.empty-state{padding:40px 24px;text-align:center;color:var(--text-tertiary);font-size:12px;}
.empty-state svg{width:28px;height:28px;margin:0 auto 10px;display:block;opacity:0.25;}

/* MODAL */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.35);z-index:100;align-items:center;justify-content:center;padding:16px;}
.modal-overlay.open{display:flex;}
.modal{background:var(--surface);border-radius:var(--radius-lg);width:520px;max-width:100%;max-height:90vh;overflow-y:auto;border:0.5px solid var(--border-md);display:flex;flex-direction:column;}
.modal-header{padding:18px 20px 14px;border-bottom:0.5px solid var(--border);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--surface);z-index:1;flex-shrink:0;}
.modal-title{font-size:14px;font-weight:500;}
.modal-close{width:28px;height:28px;border-radius:var(--radius);border:0.5px solid var(--border);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);}
.modal-close:hover{background:var(--bg);}
.modal-close svg{width:13px;height:13px;}
.modal-body{padding:18px 20px;flex:1;}
.modal-footer{padding:12px 20px;border-top:0.5px solid var(--border);display:flex;gap:8px;justify-content:flex-end;position:sticky;bottom:0;background:var(--surface);flex-shrink:0;}

/* FORM */
.form-group{margin-bottom:15px;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.form-label{display:block;font-size:11px;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:5px;}
.form-input,.form-select,.form-textarea{width:100%;padding:9px 12px;border-radius:var(--radius);border:0.5px solid var(--border-md);background:var(--surface);font-family:'DM Sans',sans-serif;font-size:13px;color:var(--text-primary);outline:none;transition:border-color 0.15s;}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(24,95,165,0.08);}
.form-textarea{resize:vertical;min-height:72px;line-height:1.5;}
.form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16'%3E%3Cpath fill='%236b6860' d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;cursor:pointer;}
.required{color:var(--red);}
.field-error{border-color:var(--red)!important;box-shadow:0 0 0 3px rgba(163,45,45,0.08)!important;}

/* DROPDOWN MULTI-SELECT */
.dropdown-wrap{position:relative;}
.dropdown-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface);border:0.5px solid var(--border-md);border-radius:var(--radius);box-shadow:0 4px 16px rgba(0,0,0,0.1);z-index:10;max-height:180px;overflow-y:auto;display:none;}
.dropdown-list.open{display:block;}
.dropdown-item{padding:8px 12px;font-size:12px;cursor:pointer;display:flex;align-items:center;gap:8px;}
.dropdown-item:hover{background:var(--bg);}
.dropdown-item.selected{color:var(--blue);font-weight:500;}
.dropdown-item .check{width:14px;height:14px;border-radius:3px;border:0.5px solid var(--border-md);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.dropdown-item.selected .check{background:var(--blue);border-color:var(--blue);color:#fff;}
.dropdown-trigger{width:100%;padding:8px 12px;border-radius:var(--radius);border:0.5px solid var(--border-md);background:var(--surface);font-family:'DM Sans',sans-serif;font-size:13px;color:var(--text-secondary);cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;}
.dropdown-trigger:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(24,95,165,0.08);}
.dropdown-trigger svg{width:12px;height:12px;flex-shrink:0;}
.tags-row{display:flex;flex-wrap:wrap;gap:5px;align-items:center;}
.tag{display:inline-flex;align-items:center;gap:4px;background:var(--blue-light);color:var(--blue);padding:3px 8px;border-radius:20px;font-size:11px;}
.tag-purple{background:var(--purple-light);color:var(--purple);}
.tag-remove{cursor:pointer;opacity:0.6;line-height:1;font-size:14px;font-weight:500;}
.tag-remove:hover{opacity:1;}

/* EXAM DETAIL */
.back-btn{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);cursor:pointer;padding:5px 0;margin-bottom:16px;}
.back-btn:hover{color:var(--text-primary);}
.back-btn svg{width:13px;height:13px;}
.exam-meta-card{background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px;margin-bottom:16px;}
.exam-meta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:14px;margin-top:12px;}
.meta-label{font-size:10px;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:3px;}
.meta-value{font-size:13px;}
.exam-name-heading{font-size:16px;font-weight:500;}
.product-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px;}
.product-tag{background:var(--blue-light);color:var(--blue);padding:3px 9px;border-radius:20px;font-size:11px;}
.sections-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap;gap:8px;}
.sections-title{font-size:13px;font-weight:500;}
.section-card{background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);margin-bottom:10px;overflow:hidden;}
.section-card-header{padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.section-card-title{font-size:13px;font-weight:500;}
.section-card-body{padding:0 16px 14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;}
.section-meta-label{font-size:10px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.4px;margin-bottom:2px;}
.section-meta-value{font-size:12px;font-weight:500;}
.subject-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px;}
.subject-chip{background:var(--purple-light);color:var(--purple);padding:2px 7px;border-radius:20px;font-size:10px;}
.no-sections{padding:28px;text-align:center;color:var(--text-tertiary);font-size:12px;border:0.5px dashed var(--border-md);border-radius:var(--radius-lg);}
.pill{display:inline-flex;padding:3px 9px;border-radius:20px;font-size:11px;}
.pill-teal{background:var(--teal-light);color:var(--teal);}
.pill-amber{background:var(--amber-light);color:var(--amber);}
.pill-coral{background:var(--coral-light);color:var(--coral);}
.pill-purple{background:var(--purple-light);color:var(--purple);}

/* SUBJECTS MODULE */
.subjects-layout{display:grid;grid-template-columns:300px 1fr;gap:16px;align-items:start;}
.subjects-panel{background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;max-height:60vh;}
.subjects-panel-header{padding:14px 16px;border-bottom:0.5px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0;}
.subjects-panel-title{font-size:13px;font-weight:500;}
#subjects-list{overflow-y:auto;flex:1;min-height:0;}
.subject-list-item{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:0.5px solid var(--border);cursor:pointer;transition:background 0.1s;gap:8px;}
.subject-list-item:last-child{border-bottom:none;}
.subject-list-item:hover{background:var(--bg);}
.subject-list-item.active{background:var(--blue-light);}
.subject-item-name{font-size:13px;font-weight:500;}
.subject-item-name.active-text{color:var(--blue);}
.subject-item-meta{font-size:11px;color:var(--text-tertiary);font-family:'DM Mono',monospace;flex-shrink:0;}
.subject-item-actions{display:flex;gap:4px;flex-shrink:0;}
.detail-panel{background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;max-height:60vh;}
.detail-panel-header{padding:14px 18px;border-bottom:0.5px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;flex-shrink:0;}
.chapters-wrap{overflow-y:auto;flex:1;min-height:0;}
.detail-panel-title{font-size:13px;font-weight:500;}

/* CHAPTER & TOPIC */
.chapter-block{border:0.5px solid var(--border);border-radius:var(--radius-lg);margin:0 16px 12px;overflow:hidden;}
.chapter-header{padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;user-select:none;}
.chapter-header:hover{background:var(--bg);}
.chapter-title{font-size:13px;font-weight:500;display:flex;align-items:center;gap:7px;}
.chapter-toggle{color:var(--text-tertiary);transition:transform 0.2s;font-size:11px;}
.chapter-toggle.open{transform:rotate(90deg);}
.chapter-body{border-top:0.5px solid var(--border);padding:8px 14px;}
.topic-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-bottom:0.5px solid var(--border);gap:8px;}
.topic-row:last-child{border-bottom:none;}
.topic-name{font-size:12px;}
.topic-actions{display:flex;gap:4px;flex-shrink:0;}
.add-topic-row{padding:8px 0 2px;}
.inline-input-row{display:flex;gap:6px;align-items:center;}
.inline-input{flex:1;padding:6px 10px;border-radius:var(--radius);border:0.5px solid var(--border-md);font-family:'DM Sans',sans-serif;font-size:12px;color:var(--text-primary);outline:none;}
.inline-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(24,95,165,0.08);}
.no-chapters{padding:32px;text-align:center;color:var(--text-tertiary);font-size:12px;}
.subject-empty{padding:48px 32px;text-align:center;color:var(--text-tertiary);font-size:12px;}
.subject-empty svg{width:28px;height:28px;margin:0 auto 10px;display:block;opacity:0.2;}
.chapters-wrap{padding:14px 0 4px;}

/* CONFIRM */
.confirm-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.35);z-index:150;align-items:center;justify-content:center;padding:16px;}
.confirm-overlay.open{display:flex;}
.confirm-box{background:var(--surface);border-radius:var(--radius-lg);width:340px;max-width:100%;padding:22px;border:0.5px solid var(--border-md);}
.confirm-title{font-size:14px;font-weight:500;margin-bottom:7px;}
.confirm-msg{font-size:12px;color:var(--text-secondary);line-height:1.6;margin-bottom:18px;}
.confirm-actions{display:flex;gap:8px;justify-content:flex-end;}

/* TOAST */
.toast{position:fixed;bottom:20px;right:20px;background:var(--text-primary);color:#fff;padding:9px 15px;border-radius:var(--radius);font-size:12px;z-index:300;opacity:0;transform:translateY(6px);transition:all 0.2s;pointer-events:none;max-width:calc(100vw - 40px);}
.toast.show{opacity:1;transform:translateY(0);}

/* MISC */
.placeholder-bar{background:var(--surface);border:0.5px dashed var(--border-md);border-radius:var(--radius-lg);padding:14px 18px;display:flex;align-items:center;gap:10px;margin-top:16px;}
.placeholder-bar-text{font-size:12px;color:var(--text-tertiary);}
.section-label-top{font-size:12px;font-weight:500;color:var(--text-secondary);margin-bottom:14px;}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.3);z-index:40;}

/* ADMIN PRIVILEGES TABLE */
.priv-table{width:100%;border-collapse:collapse;border:0.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;}
.priv-table th{padding:8px 14px;font-size:10px;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.6px;background:var(--bg);border-bottom:0.5px solid var(--border);text-align:left;}
.priv-table th:not(:first-child){text-align:center;}
.priv-table td{padding:9px 14px;border-bottom:0.5px solid var(--border);font-size:12px;vertical-align:middle;}
.priv-table tr:last-child td{border-bottom:none;}
.priv-table tr:hover td{background:var(--bg);}
.priv-checkbox{width:15px;height:15px;accent-color:var(--blue);cursor:pointer;}
.priv-module-name{font-weight:500;}
.priv-center{text-align:center;}
.access-badge{display:inline-flex;gap:4px;flex-wrap:wrap;}
.access-pill{font-size:10px;padding:2px 7px;border-radius:20px;}
.access-visible{background:#ede9fe;color:#7c3aed;}
.access-view{background:var(--blue-light);color:var(--blue);}
.access-add{background:var(--green-light);color:var(--green);}
.access-edit{background:var(--amber-light);color:var(--amber);}
.access-delete{background:var(--red-light);color:var(--red);}

/* ADMIN CARD in table */
.admin-name{font-weight:500;}
.admin-role-badge{font-size:10px;background:var(--purple-light);color:var(--purple);padding:2px 8px;border-radius:20px;display:inline-block;margin-top:2px;}

/* MOCK RECORDING */
.mock-series-list{display:flex;flex-direction:column;gap:12px;}
.series-card{background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;}
.series-card-header{padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;user-select:none;}
.series-card-header:hover{background:var(--bg);}
.series-card-title{font-size:14px;font-weight:500;}
.series-card-meta{font-size:11px;color:var(--text-tertiary);margin-top:2px;}
.series-toggle{color:var(--text-tertiary);transition:transform 0.2s;flex-shrink:0;}
.series-toggle.open{transform:rotate(90deg);}
.series-body{border-top:0.5px solid var(--border);overflow-x:auto;}
.mock-grid{border-collapse:collapse;width:100%;min-width:500px;}
.mock-grid th{padding:9px 14px;font-size:10px;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.5px;text-align:left;background:var(--bg);border-bottom:0.5px solid var(--border);white-space:nowrap;}
.mock-grid th.overall-th{text-align:center;min-width:130px;border-right:0.5px solid var(--border-md);}
.mock-grid td.overall-cell{border-right:0.5px solid var(--border-md);text-align:center;}
.status-select-inline{appearance:none;-webkit-appearance:none;text-align:center;}
.mock-grid td{padding:10px 14px;border-bottom:0.5px solid var(--border);font-size:12px;vertical-align:middle;}
.mock-grid tr:last-child td{border-bottom:none;}
.mock-grid tr:hover td{background:var(--bg);}
.mock-id{font-size:11px;font-weight:500;color:var(--text-secondary);margin-bottom:2px;}
.mock-name{font-weight:500;}
.bp-grid td{vertical-align:top;padding:6px 8px;}
.bp-td{padding:4px !important;}
.bp-cell{display:block;width:100%;height:32px;padding:5px 8px;border:1px solid transparent;border-radius:4px;outline:none;font-size:12px;font-family:'DM Sans',sans-serif;line-height:22px;color:var(--text-primary);background:transparent;transition:border-color 0.1s,background 0.1s;box-sizing:border-box;resize:none;overflow:hidden;}
.bp-cell:disabled{cursor:default;color:var(--text-primary);}
.bp-cell:not(:disabled){cursor:text;}
.bp-cell:not(:disabled):hover{border-color:var(--border-md);background:var(--bg);}
.bp-cell:not(:disabled):focus{height:80px;overflow:auto;border-color:var(--blue);background:var(--bg);box-shadow:0 0 0 2px rgba(37,99,235,0.1);position:relative;z-index:2;resize:vertical;}
.mock-date{font-size:11px;color:var(--text-secondary);white-space:nowrap;}
.section-cell{text-align:center;}
.status-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;font-size:11px;cursor:pointer;border:none;font-family:'DM Sans',sans-serif;white-space:nowrap;transition:opacity 0.15s;}
.status-btn:hover{opacity:0.8;}
.s-yet{background:var(--bg);color:var(--text-secondary);border:0.5px solid var(--border-md);}
.s-completed{background:var(--green-light);color:var(--green);}
.s-studio{background:var(--amber-light);color:var(--amber);}
.s-warning{background:var(--amber-light);color:var(--amber);border:0.5px solid rgba(133,79,11,0.3);}
.s-overdue{background:var(--red-light);color:var(--red);}
.status-dot-sm{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0;}
.no-mocks{padding:28px;text-align:center;color:var(--text-tertiary);font-size:12px;}
.series-actions{display:flex;gap:6px;flex-shrink:0;}
.mock-actions{display:flex;gap:4px;}

/* STATUS DROPDOWN */
.status-dropdown-wrap{position:relative;display:inline-block;}
.status-dd-list{position:absolute;top:calc(100% + 4px);left:50%;transform:translateX(-50%);background:var(--surface);border:0.5px solid var(--border-md);border-radius:var(--radius);box-shadow:0 4px 16px rgba(0,0,0,0.12);z-index:20;min-width:160px;display:none;}
.status-dd-list.open{display:block;}
.status-dd-item{padding:8px 12px;font-size:12px;cursor:pointer;display:flex;align-items:center;gap:8px;}
.status-dd-item:hover{background:var(--bg);}

/* CALENDAR GRID */
.cal-header-row{display:flex;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:2;}
.cal-time-header{width:56px;flex-shrink:0;padding:8px 4px;font-size:10px;color:var(--text-tertiary);}
.cal-day-header{flex:1;text-align:center;padding:8px 4px;font-size:11px;color:var(--text-secondary);border-left:1px solid var(--border);}
.cal-day-header.cal-today{background:var(--blue-light);color:var(--blue);font-weight:600;}
.cal-body{position:relative;min-height:200px;}
.cal-hour-row{display:flex;min-height:48px;border-bottom:1px solid var(--border);}
.cal-time-label{width:56px;flex-shrink:0;padding:2px 6px 0 0;text-align:right;font-size:10px;color:var(--text-tertiary);font-family:'DM Mono',monospace;}
.cal-cell{flex:1;border-left:1px solid var(--border);}
.cal-block{position:absolute;border-radius:4px;padding:3px 6px;overflow:hidden;z-index:1;cursor:default;box-sizing:border-box;}
.cal-block:hover{opacity:0.85;}
.fv-toggle-btn.active,.bv-toggle-btn.active{background:var(--blue);color:#fff;}

/* CENTERS */
.centers-layout{display:flex;flex-direction:column;gap:14px;}
.city-block{background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;}
.city-header{padding:12px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;user-select:none;}
.city-header:hover{background:var(--bg);}
.city-name{font-size:14px;font-weight:500;}
.city-meta{font-size:11px;color:var(--text-tertiary);margin-top:1px;}
.cn-count-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;}
.city-body{border-top:0.5px solid var(--border);max-height:0;overflow:hidden;transition:max-height 0.25s ease;}
.city-body.open{max-height:2000px;}
.centers-grid{display:grid;grid-template-columns:1fr;padding:4px 0;}
.center-row{display:flex;align-items:center;justify-content:space-between;padding:10px 16px 10px 22px;border-bottom:0.5px solid var(--border);gap:12px;background:var(--bg);}
.centers-grid>div:last-child{border-bottom:none;}
.center-row:hover{background:var(--bg-secondary);}
.center-name{font-size:12px;font-weight:500;}
.center-people{display:flex;gap:12px;flex-wrap:wrap;margin-top:5px;}
.center-person{font-size:11px;color:var(--text-secondary);display:flex;align-items:center;gap:4px;}
.center-person span{color:var(--text-tertiary);}
.cn-head-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--text-primary);}
.cn-head-avatar{width:18px;height:18px;border-radius:50%;background:var(--blue);color:#fff;font-size:9px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.no-centers{padding:20px 18px;font-size:12px;color:var(--text-tertiary);}
.city-toggle{color:var(--text-tertiary);transition:transform 0.2s;font-size:11px;flex-shrink:0;}
.city-toggle.open{transform:rotate(90deg);}

/* FACULTY REVIEW */
.fr-expand-btn{width:22px;height:22px;border-radius:4px;border:0.5px solid var(--border);background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);transition:all 0.15s;flex-shrink:0;}
.fr-expand-btn:hover{background:var(--bg);color:var(--text-primary);}
.fr-expand-btn svg{width:11px;height:11px;transition:transform 0.2s;}
.fr-expand-btn.open svg{transform:rotate(90deg);}
.fr-expanded-row td{padding:0!important;background:var(--bg);}
.fr-expanded-inner{padding:16px 20px;}
.fr-reviews-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius-lg);overflow:hidden;border:0.5px solid var(--border);}
.fr-reviews-table th{padding:8px 14px;font-size:10px;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.5px;background:var(--bg);border-bottom:0.5px solid var(--border);text-align:left;}
.fr-reviews-table td{padding:9px 14px;font-size:12px;border-bottom:0.5px solid var(--border);}
.fr-reviews-table tr:last-child td{border-bottom:none;}
.rating-bar-wrap{display:flex;flex-direction:column;gap:2px;min-width:120px;}
.rating-bar-row{display:flex;align-items:center;gap:5px;}
.rating-bar-label{font-size:9px;font-family:'DM Mono',monospace;color:var(--text-tertiary);width:14px;text-align:right;flex-shrink:0;}
.rating-bar-track{flex:1;height:5px;background:var(--border);border-radius:3px;overflow:hidden;}
.rating-bar-fill{height:100%;border-radius:3px;background:var(--blue);transition:width 0.3s;}
.rating-bar-count{font-size:9px;font-family:'DM Mono',monospace;color:var(--text-tertiary);min-width:14px;}
.avg-rating-big{font-size:15px;font-weight:500;font-family:'DM Mono',monospace;}
.rating-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:20px;font-size:11px;font-weight:500;}
.rating-high{background:var(--green-light);color:var(--green);}
.rating-mid{background:var(--amber-light);color:var(--amber);}
.rating-low{background:var(--red-light);color:var(--red);}

/* STUDENT FEEDBACK HIERARCHY */
.sf-stats-bar{display:flex;align-items:center;gap:8px;background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);padding:12px 16px;margin-bottom:14px;}
.sf-overall-avg-val{font-size:20px;font-weight:500;font-family:'DM Mono',monospace;padding:2px 10px;border-radius:20px;}
.sf-block{margin-bottom:6px;}
.sf-row{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface);border:0.5px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;user-select:none;transition:background 0.12s;}
.sf-row:hover{background:var(--bg);}
.sf-city-row{font-weight:500;font-size:13px;}
.sf-center-row{font-size:12px;background:var(--bg);}
.sf-fac-row{font-size:12px;}
.sf-toggle{width:18px;height:18px;flex-shrink:0;color:var(--text-tertiary);display:flex;align-items:center;justify-content:center;transition:transform 0.18s;}
.sf-toggle svg{width:12px;height:12px;}
.sf-toggle.open{transform:rotate(90deg);}
.sf-row-icon{width:13px;height:13px;flex-shrink:0;color:var(--text-tertiary);}
.sf-row-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sf-row-meta{font-size:11px;color:var(--text-tertiary);white-space:nowrap;}
.sf-row-avg{flex-shrink:0;}
.sf-children{padding-left:22px;margin-top:4px;display:flex;flex-direction:column;gap:4px;}
.sf-count-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap;flex-shrink:0;}
.sf-fac-avatar{width:22px;height:22px;border-radius:50%;color:#fff;font-size:10px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.sf-reviews-wrap{padding-left:0;max-height:420px;overflow-y:auto;border-radius:var(--radius-lg);}
.sf-gc-btn{font-size:11px;padding:3px 9px;display:flex;align-items:center;gap:5px;flex-shrink:0;background:var(--bg);border:0.5px solid var(--border);color:var(--text-secondary);}
.sf-gc-btn:hover,.sf-gc-btn.active{background:var(--blue-light);border-color:var(--blue);color:var(--blue);}
.sf-gc-count{background:var(--blue-light);color:var(--blue);border-radius:10px;padding:1px 6px;font-size:10px;font-family:'DM Mono',monospace;}
.sf-gc-wrap{margin-bottom:4px;}
.sf-empty{padding:10px 14px;font-size:12px;color:var(--text-tertiary);}
.sf-reviews-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius-lg);overflow:clip;border:0.5px solid var(--border);}
.sf-reviews-table th{padding:8px 12px;font-size:10px;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.5px;background:var(--bg);border-bottom:0.5px solid var(--border);text-align:left;position:sticky;top:0;z-index:1;}
.sf-reviews-table td{padding:9px 12px;font-size:12px;border-bottom:0.5px solid var(--border);}
.sf-reviews-table tr:last-child td{border-bottom:none;}

/* LOGIN SCREEN */
.login-screen{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:999;padding:16px;}
.login-card{background:var(--surface);border:0.5px solid var(--border-md);border-radius:var(--radius-lg);width:380px;max-width:100%;padding:32px 28px;}
.login-logo{font-size:18px;font-weight:500;letter-spacing:-0.3px;margin-bottom:4px;}
.login-sub{font-size:12px;color:var(--text-tertiary);font-family:'DM Mono',monospace;margin-bottom:28px;}
.login-title{font-size:14px;font-weight:500;margin-bottom:20px;}
.login-error{background:var(--red-light);color:var(--red);border:0.5px solid rgba(163,45,45,0.2);border-radius:var(--radius);padding:9px 12px;font-size:12px;margin-bottom:14px;display:none;}
.login-error.show{display:block;}
.login-footer{margin-top:12px;font-size:11px;color:var(--text-tertiary);text-align:center;}
@media(max-width:800px){
  .subjects-layout{grid-template-columns:1fr;}
  .detail-panel{margin-top:0;}
}
@media(max-width:700px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;transform:translateX(-100%);}
  .sidebar.open{transform:translateX(0);}
  .sidebar-overlay.open{display:block;}
  .menu-btn{display:flex;}
  .mobile-logout-btn{display:flex;}
  .form-row{grid-template-columns:1fr;}
  .content{padding:14px;}
  .topbar{padding:0 12px;}
  .exam-meta-grid{grid-template-columns:1fr 1fr;}
  .section-card-body{grid-template-columns:1fr 1fr;}
  table{min-width:400px;}
}

/* ── GLASS FX ─────────────────────────────────────────────────
   Frosted-glass surfaces. html carries the gradient canvas;
   body is transparent so the canvas bleeds through everything.
──────────────────────────────────────────────────────────────── */

/* Canvas — light: very subtle blue-lavender → warm neutral → soft purple */
html{background:linear-gradient(160deg,#ECF0FF 0%,#F8F7F4 42%,#F2EEFF 78%,#EBF5FF 100%) fixed;}
/* Canvas — dark: near-black charcoal with subtle purple depth */
[data-theme="dark"] html{background:linear-gradient(150deg,#060D1F 0%,#0B1730 35%,#0F2248 65%,#081524 100%) fixed;}

/* ── Sidebar ────────────────────────────────────────────────── */
.sidebar{
  background:rgba(250,249,247,0.74);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-right:0.5px solid rgba(255,255,255,0.6);
}
[data-theme="dark"] .sidebar{
  background:rgba(6,13,31,0.88);
  border-right:0.5px solid rgba(255,255,255,0.07);
}

/* ── Topbar ─────────────────────────────────────────────────── */
.topbar{
  background:rgba(250,249,247,0.70);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-bottom:0.5px solid rgba(255,255,255,0.55);
}
[data-theme="dark"] .topbar{
  background:rgba(5,11,27,0.82);
  border-bottom:0.5px solid rgba(255,255,255,0.07);
}

/* ── Modals ─────────────────────────────────────────────────── */
.modal{
  background:rgba(255,255,255,0.86);
  backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px);
  border:0.5px solid rgba(255,255,255,0.65);
  box-shadow:0 8px 40px rgba(0,0,0,0.13),inset 0 1px 0 rgba(255,255,255,0.7);
}
.modal-header,.modal-footer{background:rgba(255,255,255,0.92);}
[data-theme="dark"] .modal{
  background:rgba(7,15,37,0.92);
  border:0.5px solid rgba(255,255,255,0.09);
  box-shadow:0 8px 40px rgba(0,0,0,0.5),inset 0 1px 0 rgba(255,255,255,0.06);
}
[data-theme="dark"] .modal-header,
[data-theme="dark"] .modal-footer{background:rgba(5,11,25,0.97);}

/* ── Dropdown lists ─────────────────────────────────────────── */
.dropdown-list{
  background:rgba(255,255,255,0.90);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:0.5px solid rgba(255,255,255,0.6);
  box-shadow:0 4px 20px rgba(0,0,0,0.10);
}
[data-theme="dark"] .dropdown-list{
  background:rgba(9,18,42,0.95);
  border:0.5px solid rgba(255,255,255,0.08);
  box-shadow:0 4px 20px rgba(0,0,0,0.4);
}

/* ── Module cards ───────────────────────────────────────────── */
.module-card{
  background:rgba(255,255,255,0.60);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:0.5px solid rgba(255,255,255,0.55);
  box-shadow:0 2px 12px rgba(0,0,0,0.05);
}
.module-card:hover{
  background:rgba(255,255,255,0.72);
  border-color:rgba(255,255,255,0.7);
  box-shadow:0 4px 20px rgba(0,0,0,0.09);
}
[data-theme="dark"] .module-card{
  background:rgba(11,23,48,0.60);
  border:0.5px solid rgba(255,255,255,0.07);
  box-shadow:0 2px 12px rgba(0,0,0,0.3);
}
[data-theme="dark"] .module-card:hover{
  background:rgba(11,23,48,0.78);
  border-color:rgba(255,255,255,0.12);
}

/* ── Tables, section cards, exam meta ───────────────────────── */
.table-wrap,.section-card,.exam-meta-card{
  background:rgba(255,255,255,0.62);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:0.5px solid rgba(255,255,255,0.52);
  box-shadow:0 2px 12px rgba(0,0,0,0.05);
}
[data-theme="dark"] .table-wrap,
[data-theme="dark"] .section-card,
[data-theme="dark"] .exam-meta-card{
  background:rgba(11,23,48,0.62);
  border:0.5px solid rgba(255,255,255,0.06);
  box-shadow:0 2px 12px rgba(0,0,0,0.3);
}

/* Table header row — semi-transparent so canvas shows through */
thead tr{background:rgba(0,0,0,0.025);}
[data-theme="dark"] thead tr{background:rgba(255,255,255,0.025);}

/* Row hovers — rgba instead of solid --bg */
tbody tr:hover{background:rgba(0,0,0,0.03);}
.nav-item:hover{background:rgba(0,0,0,0.05);}
.user-pill:hover{background:rgba(0,0,0,0.04);}
[data-theme="dark"] tbody tr:hover{background:rgba(255,255,255,0.04);}
[data-theme="dark"] .nav-item:hover{background:rgba(255,255,255,0.06);}
[data-theme="dark"] .user-pill:hover{background:rgba(255,255,255,0.04);}

/* Slightly frosted form inputs */
.form-input,.form-select,.form-textarea,.dropdown-trigger{
  background:rgba(255,255,255,0.70);
}
[data-theme="dark"] .form-input,
[data-theme="dark"] .form-select,
[data-theme="dark"] .form-textarea,
[data-theme="dark"] .dropdown-trigger{
  background:rgba(6,13,31,0.60);
}

/* ── FPC MODULE ───────────────────────────────────────────────── */

/* Filter bars (shared across schedule, batches, leaves, clusters, views) */
.fpc-filter-bar{display:flex;gap:10px;margin-bottom:16px;align-items:center;flex-wrap:wrap;}
.fpc-filter-count{font-size:12px;color:var(--text-tertiary);}
.fpc-filter-input-w140{width:140px;}
.fpc-filter-input-w150{width:150px;}
.fpc-filter-input-w160{width:160px;}
.fpc-filter-input-w180{width:180px;}
.fpc-filter-input-w200{width:200px;}
.fpc-filter-input-w220{width:220px;}
.fpc-date-group{display:flex;align-items:center;gap:6px;}
.fpc-date-label{font-size:12px;color:var(--text-secondary);}

/* Detail header (back + title + sub, shared by batches, acms, clusters) */
.fpc-detail-header{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap;}
.fpc-detail-title{font-size:16px;font-weight:600;}
.fpc-detail-sub{font-size:12px;color:var(--text-secondary);}
.fpc-back-btn{font-size:12px;padding:5px 12px;}

/* Toggle button group (table/calendar) */
.fpc-toggle-group{display:flex;gap:2px;border:1px solid var(--border);border-radius:6px;overflow:hidden;}
.fpc-toggle-btn{border:none;border-radius:0;font-size:11px;padding:4px 12px;}

/* Week nav buttons */
.fpc-week-btn{font-size:11px;padding:5px 10px;}
.fpc-week-arrow{font-size:11px;padding:4px 7px;}

/* Table cell helpers */
.fpc-td-row-num{color:var(--text-tertiary);font-family:'DM Mono',monospace;font-size:11px;}
.fpc-td-mono{font-family:'DM Mono',monospace;font-size:11px;}
.fpc-td-mono-sm{font-family:'DM Mono',monospace;font-size:11px;color:var(--text-secondary);}
.fpc-td-name{font-weight:500;}
.fpc-td-secondary{font-size:12px;color:var(--text-secondary);}
.fpc-td-tertiary{font-size:11px;color:var(--text-tertiary);}
.fpc-td-accent{cursor:pointer;color:var(--accent);}
.fpc-td-nowrap{white-space:nowrap;}
.fpc-td-ellipsis{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* Schedule expanded row */
.fpc-expanded-wrap{padding:10px 16px;}
.fpc-batch-row{display:flex;align-items:center;gap:12px;padding:6px 0;border-bottom:1px solid var(--border);font-size:12px;}
.fpc-batch-name{min-width:120px;font-weight:500;}
.fpc-batch-creator{display:block;font-size:10px;font-weight:400;color:var(--text-tertiary);line-height:1.2;}
.fpc-created-by{font-size:10px;color:var(--text-tertiary);margin-top:2px;}
.fpc-batch-center{min-width:100px;color:var(--text-secondary);}
.fpc-batch-subject{min-width:80px;}

/* Inline edit batch */
.fpc-inline-edit{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap;width:100%;}
.fpc-inline-edit-name{min-width:100px;font-weight:500;padding-top:6px;}
.fpc-inline-edit-subj{flex:1;min-width:140px;}
.fpc-inline-edit-acms{flex:2;min-width:200px;}
.fpc-inline-edit-acms-list{max-height:160px;overflow-y:auto;border:1px solid var(--border);border-radius:4px;padding:4px;}
.fpc-inline-edit-btns{display:flex;gap:4px;padding-top:4px;}
.fpc-inline-btn{font-size:11px;padding:3px 10px;}
.fpc-inline-select{font-size:11px;padding:4px 8px;}

/* ACMS checkbox items (in schedule modal & inline edit) */
.fpc-acms-check{display:flex;align-items:center;gap:6px;padding:3px 6px;font-size:12px;cursor:pointer;border-radius:4px;}
.fpc-acms-check-sm{display:flex;align-items:center;gap:6px;padding:2px 4px;font-size:11px;cursor:pointer;}

/* Status flags (done/scheduled/pending badges) */
.fpc-flag-done{font-size:9px;padding:1px 5px;border-radius:8px;background:var(--green-light);color:var(--green);margin-left:4px;}
.fpc-flag-sched{font-size:9px;padding:1px 5px;border-radius:8px;background:var(--blue-light);color:var(--blue);margin-left:4px;}

/* Pills (reusable across modules) */
.pill-green{background:var(--green-light);color:var(--green);}
.pill-blue{background:var(--blue-light);color:var(--blue);}
.pill-red{background:var(--red-light);color:var(--red);}

/* ACMS progress inline toggle */
.fpc-prog-toggle{font-size:11px;color:var(--accent);text-decoration:none;}
.fpc-prog-wrap{margin-top:6px;}
.fpc-prog-loading{font-size:11px;color:var(--text-tertiary);padding:4px;}
.fpc-prog-empty{font-size:11px;color:var(--text-tertiary);padding:4px;}

/* ACMS progress bar */
.fpc-prog-bar-wrap{display:flex;align-items:center;gap:8px;margin:6px 0;}
.fpc-prog-bar-track{flex:1;max-width:120px;height:5px;background:var(--border);border-radius:3px;overflow:hidden;}
.fpc-prog-bar-fill{height:100%;background:var(--accent);transition:width .3s;}
.fpc-prog-bar-label{font-size:10px;font-weight:600;color:var(--text-secondary);}

/* ACMS progress table (inline in schedule) */
.fpc-prog-table-wrap{max-height:220px;overflow-y:auto;font-size:11px;}
.fpc-prog-table{width:100%;border-collapse:collapse;}
.fpc-prog-thead{position:sticky;top:0;background:var(--surface);z-index:1;}
.fpc-prog-th{text-align:left;padding:2px 4px;font-size:10px;color:var(--text-tertiary);font-weight:500;}
.fpc-prog-th-center{text-align:center;padding:2px 4px;font-size:10px;color:var(--text-tertiary);font-weight:500;width:60px;}
.fpc-prog-subj-row td{padding:5px 4px 3px;font-size:10px;font-weight:600;color:var(--text-secondary);background:var(--bg);border-bottom:1px solid var(--border);}
.fpc-prog-class-row{border-bottom:1px solid var(--border);}
.fpc-prog-td{padding:3px 4px;}
.fpc-prog-td-center{text-align:center;padding:3px 4px;}
.fpc-prog-td-secondary{padding:3px 4px;color:var(--text-secondary);}
.fpc-prog-seq{color:var(--text-tertiary);font-size:9px;}
.fpc-prog-flag-done{font-size:9px;padding:1px 4px;border-radius:8px;background:var(--green-light);color:var(--green);}
.fpc-prog-flag-sched{font-size:9px;padding:1px 4px;border-radius:8px;background:var(--blue-light);color:var(--blue);}

/* ACMS progress (full-page, in batch detail) */
.fpc-prog-full-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.fpc-prog-full-acms-name{font-size:12px;color:var(--text-secondary);}
.fpc-prog-full-track{flex:1;min-width:80px;max-width:180px;height:6px;background:var(--border);border-radius:3px;overflow:hidden;}
.fpc-prog-full-fill{height:100%;background:var(--accent);transition:width .3s;}
.fpc-prog-full-label{font-size:12px;font-weight:600;}
.fpc-prog-full-table-wrap{max-height:400px;overflow-y:auto;}
.fpc-prog-full-subj-row td{padding:8px 6px 4px;font-size:12px;font-weight:600;color:var(--text-primary);background:var(--bg);border-bottom:1px solid var(--border);}
.fpc-prog-full-subj-count{font-weight:400;font-size:11px;color:var(--text-tertiary);}

/* Status pill helper (for schedule status column) */
.fpc-status-pill{display:inline-flex;padding:3px 9px;border-radius:20px;font-size:10px;}

/* Status radio labels in status-change modal */
.fpc-status-option{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:13px;}
.fpc-status-options{display:flex;flex-direction:column;gap:8px;}
.fpc-status-info{font-size:12px;color:var(--text-secondary);margin-bottom:14px;}

/* Batch card in create/edit modal step 2 */
.fpc-pending-batch{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);}
.fpc-pending-batch-info{flex:1;}
.fpc-pending-batch-name{font-size:12px;font-weight:500;}
.fpc-pending-batch-meta{font-size:11px;color:var(--text-secondary);}
.fpc-pending-batch-acms{margin-top:3px;}
.fpc-batch-cards{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;max-height:200px;overflow-y:auto;}

/* Add-batch form in schedule modal */
.fpc-add-batch-box{border:1px solid var(--border);border-radius:8px;padding:12px;background:var(--bg);}
.fpc-add-batch-title{font-size:12px;font-weight:500;margin-bottom:10px;color:var(--text-secondary);}
.fpc-add-batch-row{display:flex;gap:10px;margin-bottom:10px;}
.fpc-add-batch-add-btn{font-size:12px;padding:6px 14px;}

/* ACMS list container (inside modal) */
.fpc-acms-list-box{max-height:120px;overflow-y:auto;border:1px solid var(--border);border-radius:6px;padding:4px;background:var(--surface);}
.fpc-acms-list-box-tall{max-height:140px;overflow-y:auto;border:1px solid var(--border);border-radius:6px;padding:4px;}

/* Schedule modal two-row layouts */
.fpc-modal-row{display:flex;gap:12px;margin-bottom:14px;}
.fpc-modal-col{flex:1;}
.fpc-modal-col-wide{flex:1.2;}
.fpc-modal-col-fixed{width:110px;}
.fpc-modal-hint{color:var(--text-tertiary);font-weight:400;}

/* ACMS detail subject section */
.fpc-acms-subj-header{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.6px;padding:6px 0 6px;border-bottom:1px solid var(--border);margin-bottom:4px;}
.fpc-acms-subj-count{font-weight:400;color:var(--text-tertiary);}
.fpc-acms-class-table{width:100%;border-collapse:collapse;}
.fpc-acms-class-table thead tr{font-size:10px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.4px;}
.fpc-acms-class-table th{padding:5px 8px;text-align:left;font-weight:500;}
.fpc-acms-class-table td{padding:7px 8px;font-size:13px;}
.fpc-acms-class-table tbody tr{border-bottom:0.5px solid var(--border);}

/* Prereq modal */
.fpc-prereq-hint{font-size:12px;color:var(--text-secondary);margin-bottom:12px;}
.fpc-prereq-search{margin-bottom:12px;}
.fpc-prereq-list{max-height:320px;overflow-y:auto;}
.fpc-prereq-subj-label{font-size:10px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.4px;margin-bottom:4px;}
.fpc-prereq-item{display:flex;align-items:center;gap:8px;padding:4px 0;cursor:pointer;}
.fpc-prereq-item-name{font-size:12px;flex:1;}
.fpc-prereq-item-code{font-size:10px;color:var(--text-tertiary);font-family:'DM Mono',monospace;}

/* Modal label/text helpers */
.fpc-modal-label-text{font-size:12px;color:var(--text-secondary);margin:0;}
.fpc-section-title{font-size:13px;font-weight:500;margin-bottom:10px;}
.fpc-section-title-sm{font-size:13px;font-weight:600;margin-bottom:12px;}

/* Faculty availability hints */
.fpc-faculty-hint{margin-top:6px;font-size:11px;color:var(--text-tertiary);}
.fpc-faculty-hint .fpc-fh-item{display:inline-flex;align-items:center;gap:3px;margin-right:10px;cursor:default;}
.fpc-faculty-hint .fpc-fh-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.fpc-faculty-hint .fpc-fh-dot.free{background:var(--green);}
.fpc-faculty-hint .fpc-fh-dot.busy{background:var(--coral);}
.fpc-faculty-hint .fpc-fh-dot.leave{background:var(--amber);}
.fpc-faculty-hint .fpc-fh-selected{margin-top:4px;padding:4px 8px;border-radius:6px;font-size:11px;}
.fpc-faculty-hint .fpc-fh-selected.free{background:var(--green-light);color:var(--green);}
.fpc-faculty-hint .fpc-fh-selected.busy{background:var(--coral-light);color:var(--coral);}
.fpc-faculty-hint .fpc-fh-selected.leave{background:var(--amber-light);color:var(--amber);}
.fpc-faculty-hint .fpc-fh-selected.gap-warn{background:var(--amber-light);color:var(--amber);}
.fpc-fh-line{padding:1px 0;}
.fpc-fh-line + .fpc-fh-line{margin-top:2px;border-top:1px dashed rgba(0,0,0,0.08);padding-top:3px;}
.fpc-acms-suggested{font-size:9px;color:var(--blue);font-weight:500;margin-left:4px;}

/* Inline batch rows */
.sbr-row{display:flex;gap:8px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--border);}
.sbr-row:last-child{border-bottom:none;}
.sbr-col{flex:1;min-width:0;position:relative;}
.sbr-col-acms{flex:2;min-width:0;position:relative;}
.sbr-col-del{flex:0 0 28px;display:flex;align-items:center;padding-top:2px;}
.sbr-label{font-size:10px;color:var(--text-tertiary);margin-bottom:3px;text-transform:uppercase;letter-spacing:0.3px;}
.sbr-dd{position:relative;}
.sbr-dd-trigger{width:100%;padding:6px 8px;border-radius:var(--radius);border:0.5px solid var(--border-md);background:var(--surface);font-size:12px;color:var(--text);cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:4px;min-height:32px;}
.sbr-dd-trigger:hover{border-color:var(--blue);}
.sbr-dd-trigger .sbr-dd-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}
.sbr-dd-trigger .sbr-dd-arrow{flex-shrink:0;font-size:10px;color:var(--text-tertiary);}
.sbr-dd-list{position:absolute;top:calc(100% + 2px);left:0;right:0;background:var(--surface);border:0.5px solid var(--border-md);border-radius:var(--radius);box-shadow:0 4px 16px rgba(0,0,0,0.12);z-index:20;max-height:200px;overflow-y:auto;display:none;}
.sbr-dd-list.open{display:block;}
.sbr-dd-search{width:100%;padding:6px 8px;border:none;border-bottom:1px solid var(--border);font-size:11px;background:transparent;color:var(--text);outline:none;position:sticky;top:0;z-index:1;background:var(--surface);box-sizing:border-box;}
.sbr-dd-item{padding:5px 8px;font-size:11px;cursor:pointer;display:flex;align-items:center;gap:6px;}
.sbr-dd-item:hover{background:var(--bg);}
.sbr-dd-item.selected{color:var(--blue);font-weight:500;}
.sbr-dd-item .sbr-dd-check{width:13px;height:13px;border-radius:3px;border:1px solid var(--border-md);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:9px;}
.sbr-dd-item.selected .sbr-dd-check{background:var(--blue);border-color:var(--blue);color:#fff;}
.sbr-dd-item .sbr-dd-flag{font-size:9px;margin-left:auto;flex-shrink:0;}
.sbr-dd-item .sbr-dd-subj{font-size:9px;color:var(--text-tertiary);margin-left:4px;}
@media(max-width:700px){
  .sbr-row{flex-wrap:wrap;gap:6px;}
  .sbr-col{flex:1 1 100%;min-width:0;}
  .sbr-col-acms{flex:1 1 100%;}
  .sbr-col-del{flex:0 0 28px;position:absolute;right:0;top:8px;}
  .sbr-row{position:relative;padding-right:36px;}
  .fpc-modal-row{flex-direction:column;gap:8px;}
  .fpc-modal-col,.fpc-modal-col-wide,.fpc-modal-col-fixed{flex:1 1 100%;min-width:0;}
}

/* Faculty unassigned indicator */
.fpc-faculty-unassigned{color:var(--amber);font-size:11px;}
.fpc-gap-warn{display:inline-block;font-size:9px;padding:1px 5px;border-radius:8px;background:var(--amber-light);color:var(--amber);font-weight:600;vertical-align:middle;}
.fpc-overwork-warn{display:inline-block;font-size:9px;padding:1px 5px;border-radius:8px;background:var(--coral-light);color:var(--coral);font-weight:600;vertical-align:middle;}

/* No-date indicator */
.fpc-no-date{color:var(--coral);}

/* Nav link (go-to-class arrow) */
.fpc-goto-link{color:var(--accent);display:inline-flex;}

/* Batch view ACMS progress card */
.fpc-bv-progress-card{display:none;margin-bottom:16px;padding:12px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);}
.fpc-bv-progress-header{display:flex;align-items:center;gap:12px;margin-bottom:6px;}
.fpc-bv-progress-name{font-size:13px;font-weight:500;}
.fpc-bv-progress-fraction{font-size:12px;color:var(--text-secondary);}
.fpc-bv-progress-track{height:6px;border-radius:3px;background:var(--bg);overflow:hidden;}
.fpc-bv-progress-fill{height:100%;border-radius:3px;background:var(--green);transition:width 0.3s;width:0%;}

/* ACMS completion section in batch detail */
.fpc-completion-section{margin-top:24px;padding-top:20px;border-top:1px solid var(--border);}
