
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:system-ui,sans-serif;background:#f0f4f8;color:#1e293b}
.hidden{display:none!important}
#login-page{min-height:100vh;background:linear-gradient(135deg,#1a3a6b,#2a5298);display:flex;align-items:center;justify-content:center}
.login-box{background:#fff;border-radius:16px;padding:40px;width:420px;max-width:95vw}
.login-logo{width:60px;height:60px;background:#1a3a6b;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:700;color:#fff;margin:0 auto 12px}
h1.lt{text-align:center;font-size:22px;font-weight:700;margin-bottom:4px}
.ls{text-align:center;font-size:13px;color:#94a3b8;margin-bottom:24px}
.fg{margin-bottom:14px}
.fg label{display:block;font-size:12px;font-weight:600;color:#475569;margin-bottom:5px}
.fg input,.fg select,.fg textarea{width:100%;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;outline:none;font-family:inherit}
.fg input:focus,.fg select:focus,.fg textarea:focus{border-color:#2a5298;box-shadow:0 0 0 3px rgba(42,82,152,.1)}
.btn-login{width:100%;padding:12px;background:#1a3a6b;color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer}
.btn-login:hover{background:#2a5298}
.demo{margin-top:16px;padding-top:14px;border-top:1px solid #e2e8f0;font-size:12px;color:#94a3b8}
.errmsg{background:#fee2e2;color:#991b1b;border:1px solid #fecaca;padding:10px;border-radius:8px;font-size:13px;margin-bottom:12px}
#app{display:flex;min-height:100vh}
.sb{width:250px;background:#1a3a6b;position:fixed;top:0;left:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;z-index:100}
.sb-brand{padding:16px;border-bottom:1px solid rgba(255,255,255,.1);display:flex;align-items:center;gap:10px}
.sb-ic{width:36px;height:36px;background:#f97316;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;flex-shrink:0}
.sb-bn{color:#fff;font-size:13px;font-weight:700}
.sb-bs{color:rgba(255,255,255,.4);font-size:10px}
.sb-school{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.1)}
.sb-sn{color:rgba(255,255,255,.9);font-size:12px;font-weight:600}
.sb-ss{color:rgba(255,255,255,.4);font-size:11px}
.sb-sec{padding:12px 16px 4px;color:rgba(255,255,255,.35);font-size:10px;font-weight:600;letter-spacing:1px;text-transform:uppercase}
.ni{display:flex;align-items:center;gap:8px;padding:9px 16px;color:rgba(255,255,255,.7);font-size:13px;cursor:pointer;margin:1px 8px;border-radius:8px}
.ni:hover{background:rgba(255,255,255,.1);color:#fff}
.ni.active{background:#f97316;color:#fff}
.sb-foot{margin-top:auto;padding:14px;border-top:1px solid rgba(255,255,255,.1);display:flex;align-items:center;gap:10px}
.av{border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;flex-shrink:0}
.sb-un{color:#fff;font-size:12px;font-weight:600}
.sb-ur{color:rgba(255,255,255,.4);font-size:11px}
.logout{background:none;border:none;cursor:pointer;color:rgba(255,255,255,.4);font-size:18px;margin-left:auto}
.main{margin-left:250px;flex:1;display:flex;flex-direction:column}
.hdr{height:58px;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:50}
.pt{font-size:16px;font-weight:700}
.ps{font-size:12px;color:#94a3b8}
.content{padding:22px}
.card{background:#fff;border-radius:10px;border:1px solid #e2e8f0}
.ch{padding:14px 18px;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}
.ct{font-weight:700;font-size:14px}
.sg{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}
.sc{background:#fff;border-radius:10px;padding:18px;border:1px solid #e2e8f0;cursor:pointer}
.sc:hover{border-color:#2a5298;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.sl{font-size:12px;color:#94a3b8;margin-bottom:4px}
.sv{font-size:24px;font-weight:700;line-height:1}
table{width:100%;border-collapse:collapse}
th{background:#f8fafc;padding:9px 14px;text-align:left;font-size:11px;font-weight:600;color:#94a3b8;text-transform:uppercase;border-bottom:1px solid #e2e8f0}
td{padding:10px 14px;font-size:13px;border-bottom:1px solid #e2e8f0;vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:#f8fafc}
.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600}
.b-ok{background:#dcfce7;color:#15803d}
.b-warn{background:#fef3c7;color:#92400e}
.b-err{background:#fee2e2;color:#991b1b}
.b-gray{background:#f1f5f9;color:#475569}
.b-info{background:#e0f2fe;color:#0e7490}
.b-pur{background:#ede9fe;color:#5b21b6}
.pb{background:#e2e8f0;border-radius:20px;height:7px;overflow:hidden}
.pf{height:100%;border-radius:20px}
.pf-g{background:#16a34a}
.pf-b{background:#2a5298}
.pf-a{background:#d97706}
.pf-r{background:#dc2626}
.btn{display:inline-flex;align-items:center;padding:7px 14px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:none;font-family:inherit;text-decoration:none}
.btn-p{background:#1a3a6b;color:#fff}
.btn-p:hover{background:#2a5298}
.btn-acc{background:#f97316;color:#fff}
.btn-g{background:#f8fafc;color:#475569;border:1px solid #e2e8f0}
.btn-g:hover{background:#f1f5f9}
.btn-err{background:#dc2626;color:#fff}
.btn-ok{background:#16a34a;color:#fff}
.btn-info{background:#0891b2;color:#fff}
.btn-sm{padding:5px 10px;font-size:12px}
.btn-xs{padding:3px 7px;font-size:11px}
.mo{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:200;align-items:center;justify-content:center}
.mo.open{display:flex}
.md{background:#fff;border-radius:14px;width:90%;max-width:560px;max-height:90vh;overflow-y:auto}
.md-wide{max-width:800px}
.mh{padding:16px 20px;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between}
.mht{font-weight:700;font-size:14px}
.mc{width:28px;height:28px;border-radius:7px;background:#f8fafc;border:none;cursor:pointer;font-size:16px}
.mb{padding:20px}
.mf{padding:14px 20px;border-top:1px solid #e2e8f0;display:flex;justify-content:flex-end;gap:10px}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fr3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.tc{position:fixed;bottom:20px;right:20px;z-index:999;display:flex;flex-direction:column;gap:8px}
.toast{padding:11px 16px;border-radius:10px;font-size:13px;font-weight:500;color:#fff;min-width:180px;animation:slideIn .3s ease}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
.t-ok{background:#16a34a}
.t-err{background:#dc2626}
.t-warn{background:#d97706}
.view{display:none}
.view.active{display:block}
.cg{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.cg2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.cc{background:#fff;border-radius:12px;border:1px solid #e2e8f0;padding:20px;cursor:pointer;border-top:4px solid #1a3a6b;transition:box-shadow .2s}
.cc:hover{box-shadow:0 4px 16px rgba(0,0,0,.1)}
.sug{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.suc{background:#fff;border-radius:10px;border:1px solid #e2e8f0;padding:16px;cursor:pointer;transition:all .2s}
.suc:hover{border-color:#2a5298;box-shadow:0 4px 12px rgba(0,0,0,.08)}
.chi{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:13px;margin-bottom:8px;display:flex;align-items:flex-start;gap:10px}
.chn{width:30px;height:30px;border-radius:7px;background:#1a3a6b;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}
.bc{display:flex;align-items:center;gap:6px;margin-bottom:16px;font-size:13px}
.bci{color:#94a3b8;cursor:pointer}
.bci:hover{color:#1a3a6b}
.bca{color:#1e293b;font-weight:600}
.al{padding:11px 14px;border-radius:8px;font-size:13px;margin-bottom:12px}
.al-info{background:#e0f2fe;color:#0e7490;border:1px solid #bae6fd}
.al-warn{background:#fef3c7;color:#92400e;border:1px solid #fde68a}
.al-ok{background:#dcfce7;color:#15803d;border:1px solid #bbf7d0}
/* Month Timeline */
.month-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
.month-card{background:#fff;border-radius:10px;border:1px solid #e2e8f0;padding:14px}
.month-name{font-weight:700;font-size:13px;margin-bottom:8px;color:#1a3a6b;border-bottom:2px solid #1a3a6b;padding-bottom:5px}
.month-ch{font-size:12px;padding:4px 6px;border-radius:6px;margin-bottom:4px;border-left:3px solid #e2e8f0}
.month-ch.completed{background:#f0fdf4;border-left-color:#16a34a}
.month-ch.in_progress{background:#fefce8;border-left-color:#d97706}
.month-ch.not_started{background:#f8fafc;border-left-color:#94a3b8}
/* Upload area */
.upload-area{border:2px dashed #e2e8f0;border-radius:10px;padding:30px;text-align:center;cursor:pointer;transition:all .2s}
.upload-area:hover{border-color:#2a5298;background:#f0f9ff}
.upload-icon{font-size:36px;margin-bottom:8px}
.upload-text{font-size:14px;font-weight:600;color:#475569}
.upload-sub{font-size:12px;color:#94a3b8;margin-top:4px}
/* Permission toggles */
.perm-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #f1f5f9}
.perm-row:last-child{border-bottom:none}
.perm-label{font-size:13px;font-weight:500}
.perm-desc{font-size:11px;color:#94a3b8}
.toggle{position:relative;width:44px;height:24px;flex-shrink:0}
.toggle input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;cursor:pointer;inset:0;background:#e2e8f0;border-radius:24px;transition:.3s}
.toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.3s}
.toggle input:checked + .toggle-slider{background:#1a3a6b}
.toggle input:checked + .toggle-slider:before{transform:translateX(20px)}
/* Import preview table */
.preview-table{max-height:300px;overflow-y:auto}
/* Teacher view */
.teacher-card{background:#fff;border-radius:12px;border:1px solid #e2e8f0;padding:18px;cursor:pointer}
.teacher-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.1)}

/* ════════════════════════════════
   MOBILE RESPONSIVE
   ════════════════════════════════ */
.mob-menu { display: none; }
.mob-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 299; }

@media (max-width: 768px) {
  aside {
    position: fixed; left: -260px; top: 0;
    height: 100vh; width: 240px !important;
    transition: left 0.3s ease; z-index: 300;
  }
  aside.open { left: 0; }
  .mob-overlay.show { display: block; }
  .main { margin-left: 0 !important; }
  .hdr { padding: 0 12px !important; }
  .mob-menu {
    display: flex; align-items: center; justify-content: center;
    width: 38px; height: 38px; background: #1a3a6b;
    border: none; border-radius: 8px; color: #fff;
    font-size: 20px; cursor: pointer; margin-right: 10px;
    flex-shrink: 0;
  }
  .sg { grid-template-columns: 1fr 1fr !important; gap: 8px !important; }
  .cg { grid-template-columns: 1fr !important; }
  .fr { flex-direction: column !important; }
  .fg { width: 100% !important; }
  .md {
    width: 96vw !important; max-width: 96vw !important;
    margin: 10px auto; max-height: 90vh; overflow-y: auto;
  }
  .card { border-radius: 8px !important; margin-bottom: 10px; }
  .btn { min-height: 38px; }
  .btn-sm { min-height: 34px !important; font-size: 12px !important; }
  .content { padding: 10px !important; }
  .card table { display: block; overflow-x: auto; }
  table { font-size: 12px; }
}

@media (max-width: 480px) {
  .sg { grid-template-columns: 1fr 1fr !important; }
  .hdr { height: 52px !important; }
  .md { margin: 4px; width: 99vw !important; }
}

/* Progress Buttons */
.pb {
  font-size:12px;
  padding:4px 10px;
  border-radius:6px;
  border:1.5px solid #cbd5e1;
  background:#f8fafc;
  color:#475569;
  cursor:pointer;
  font-weight:600;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  margin:2px;
  white-space:nowrap;
}
.pb:hover { border-color:#6366f1; color:#6366f1; background:#eef2ff; }
.pb-on { background:#6366f1 !important; color:#fff !important; border-color:#6366f1 !important; }
.pb-done { border-color:#16a34a; color:#16a34a; }
.pb-done.pb-on { background:#16a34a !important; color:#fff !important; border-color:#16a34a !important; }
.pb-bar { height:5px; border-radius:99px; background:#e2e8f0; margin-top:5px; overflow:hidden; }
.pb-fill { height:100%; border-radius:99px; transition:width .3s; }

/* Progress buttons override */
.pb {
  font-size:13px !important;
  padding:6px 12px !important;
  min-width:44px !important;
  border-radius:7px !important;
}

.prog-btn { font-size:13px; padding:5px 12px; border-radius:7px; border:1.5px solid #cbd5e1; background:#f8fafc; color:#475569; cursor:pointer; font-weight:600; touch-action:manipulation; white-space:nowrap; display:inline-block; }
.prog-btn:hover { border-color:#6366f1; color:#6366f1; background:#eef2ff; }
.prog-btn-on { background:#6366f1 !important; color:#fff !important; border-color:#6366f1 !important; }
.prog-btn-done { border-color:#16a34a; color:#16a34a; }
.prog-btn-done.prog-btn-on { background:#16a34a !important; color:#fff !important; }

/* Progress bar restore */
.prog-bar { height:6px; border-radius:99px; background:#e2e8f0; margin:5px 0; overflow:hidden; }
.prog-bar-fill { height:100%; border-radius:99px; transition:width .3s; }

/* ── Chi Card (Chapter card in teacher view) ── */
.chi-card { transition: box-shadow .2s; }
.chi-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.08) !important; }

/* ── Progress bar (teacher view) ── */
.prog-bar { height:8px; border-radius:99px; background:#e2e8f0; overflow:hidden; }
.prog-bar-fill { height:100%; border-radius:99px; transition:width .4s ease; }

/* ── Progress buttons ── */
.prog-btn {
  font-size:13px; padding:6px 12px; border-radius:7px;
  border:1.5px solid #cbd5e1; background:#f8fafc; color:#475569;
  cursor:pointer; font-weight:600; white-space:nowrap;
  touch-action:manipulation; -webkit-tap-highlight-color:transparent;
  transition:all .15s;
}
.prog-btn:hover { border-color:#6366f1; color:#6366f1; background:#eef2ff; }
.prog-btn-on { background:#6366f1 !important; color:#fff !important; border-color:#6366f1 !important; }
.prog-btn-done { border-color:#16a34a !important; color:#16a34a !important; }
.prog-btn-done.prog-btn-on { background:#16a34a !important; color:#fff !important; }

/* Chapter card - bigger & better */
#tsubdetail > div[style*="border:1px solid #e2e8f0"] {
  padding: 18px !important;
}
#tsubdetail .prog-btn {
  font-size: 14px !important;
  padding: 8px 16px !important;
  border-radius: 8px !important;
}

/* Teacher Progress Cards - equal height */
.teacher-card {
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
}
#teacher-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) !important;
  gap: 16px !important;
  align-items: stretch !important;
}

/* Mobile UI Fix */
@media (max-width: 768px) {
  /* Subject grid - 1 column on mobile */
  .sug {
    grid-template-columns: 1fr !important;
    padding: 8px !important;
  }
  
  /* Class grid - 1 column on mobile */
  .cg {
    grid-template-columns: 1fr !important;
    padding: 8px !important;
  }

  /* Content area - no overflow */
  .content {
    padding: 8px !important;
    overflow-x: hidden !important;
  }

  /* Main area full width */
  .main {
    width: 100% !important;
    overflow-x: hidden !important;
  }

  /* Cards full width */
  .suc, .cc {
    width: 100% !important;
    box-sizing: border-box !important;
  }

  /* Header fix */
  .hdr {
    padding: 10px 12px 10px 60px !important;
  }
}

/* Mobile Back Button - Floating */
@media (max-width: 768px) {
  .bc {
    position: sticky !important;
    top: 0 !important;
    background: #f8fafc !important;
    z-index: 100 !important;
    padding: 10px 12px !important;
    border-bottom: 1px solid #e2e8f0 !important;
    margin: -8px -8px 12px -8px !important;
  }
  .bci {
    color: #6366f1 !important;
    font-weight: 600 !important;
    font-size: 14px !important;
  }
  /* Subject grid 2 columns on tablet, 1 on small */
  .sug {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  @media (max-width: 400px) {
    .sug {
      grid-template-columns: 1fr !important;
    }
  }
  /* Content padding */
  .content {
    padding: 8px !important;
    overflow-x: hidden !important;
  }
}

/* Mobile breadcrumb - big back button */
@media (max-width: 768px) {
  .bc {
    background: #fff !important;
    padding: 12px 16px !important;
    border-radius: 10px !important;
    border: 1px solid #e2e8f0 !important;
    margin-bottom: 14px !important;
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
  }
  .bci {
    background: #f1f5f9 !important;
    padding: 6px 12px !important;
    border-radius: 20px !important;
    color: #1a3a6b !important;
    font-weight: 700 !important;
    font-size: 13px !important;
    min-height: 36px !important;
    display: inline-flex !important;
    align-items: center !important;
  }
  .bci::before {
    content: '← ' !important;
  }
}

/* Lesson Plan - Mobile month grid fix */
@media (max-width: 768px) {
  #plan-months .month-grid,
  .month-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 10px !important;
  }
  .month-card {
    min-width: unset !important;
    width: 100% !important;
  }
}
