/* ==========================================================================
   Nandha Evening Test Portal — colourful professional theme
   Canvas:   #f6f7fd (soft indigo-white)   Ink: #181c32   Muted: #676d8c
   Brand:    #4f3cc9 indigo (primary)      Accent: #f5940f amber (seal/CTA)
   Batch id: A indigo #4f3cc9 · B teal #0e9488 · B1 violet #8b5cf6 · C rose #e6396c
   Status:   present/open teal · absent red · OD violet · wait amber
   Type:     Fraunces (display) + Inter (body) + JetBrains Mono (data)
   Signature: a four-colour "batch prism" rule under every header — one hue
              per batch (A/B/B1/C) — plus a matching colour that follows
              whichever batch a page is currently focused on.
   ========================================================================== */
:root{
  --bg:#f6f7fd; --card:#ffffff; --card-line:#e3e5f2;
  --ink:#181c32; --muted:#676d8c;
  --indigo:#4f3cc9; --indigo-dim:#ece9fb; --indigo-line:#cac2f2;
  --amber:#f5940f; --amber-dim:#fef1dc;
  --teal:#0e9488; --teal-dim:#e0f6f2;
  --rose:#e6396c; --rose-dim:#fde5ec;
  --violet:#8b5cf6; --violet-dim:#f0e9fe;
  --batch-a:#4f3cc9; --batch-b:#0e9488; --batch-b1:#8b5cf6; --batch-c:#e6396c;
  --batch-accent: var(--indigo);
  --shadow: 0 1px 2px rgba(24,28,50,.05), 0 8px 24px -10px rgba(24,28,50,.16);
  --shadow-lift: 0 4px 10px rgba(24,28,50,.06), 0 20px 36px -16px rgba(24,28,50,.24);
}
*{box-sizing:border-box;}
body{margin:0;color:var(--ink);font-family:'Inter',sans-serif;min-height:100vh;
  -webkit-font-smoothing:antialiased;
  background:
    radial-gradient(560px 320px at 92% -6%, rgba(245,148,15,.10) 0%, transparent 60%),
    radial-gradient(620px 360px at -8% 8%, rgba(79,60,201,.09) 0%, transparent 60%),
    radial-gradient(480px 300px at 100% 40%, rgba(230,57,108,.06) 0%, transparent 60%),
    var(--bg);
  background-attachment:fixed;}
.wrap{max-width:980px;margin:0 auto;padding:36px 20px 80px;}

/* ---- Header: four-colour "batch prism" rule is the signature ---- */
header.top{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:18px;
  margin-bottom:38px;padding-bottom:22px;position:relative;}
header.top::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;border-radius:3px;
  background:linear-gradient(90deg,
    var(--batch-a) 0%, var(--batch-a) 25%,
    var(--batch-b) 25%, var(--batch-b) 50%,
    var(--batch-b1) 50%, var(--batch-b1) 75%,
    var(--batch-c) 75%, var(--batch-c) 100%);}
.brand-eyebrow{font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--batch-accent);margin-bottom:8px;font-weight:700;transition:color .2s;}
h1{font-family:'Fraunces',serif;font-weight:600;font-size:34px;margin:0;letter-spacing:-.01em;color:var(--ink);}
.sub{color:var(--muted);font-size:14px;margin-top:6px;}
.top-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.logout-btn{background:#fff;border:1.5px solid var(--card-line);color:var(--ink);
  padding:9px 14px;border-radius:9px;font-size:12.5px;font-weight:700;cursor:pointer;
  text-decoration:none;display:inline-block;transition:.15s;}
.logout-btn:hover{border-color:var(--indigo);color:var(--indigo);background:var(--indigo-dim);
  transform:translateY(-1px);}
.global-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;
  background:var(--card);border:1.5px solid var(--card-line);border-radius:14px;
  padding:16px 20px;margin-bottom:22px;box-shadow:var(--shadow);border-left:4px solid var(--batch-accent);}
.global-label{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.08em;}
.global-actions{display:flex;gap:8px;flex-wrap:wrap;}
.global-actions .mode-btn{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  padding:9px 14px;border-radius:9px;border:1.5px solid var(--card-line);background:#fbfbfe;
  color:var(--muted);cursor:pointer;transition:.15s;}
.global-actions .mode-btn:hover{border-color:var(--indigo);color:var(--indigo);background:var(--indigo-dim);}
.global-actions .mode-btn:disabled{opacity:.6;cursor:not-allowed;}
.clock{font-family:'JetBrains Mono',monospace;font-size:26px;font-weight:700;color:var(--ink);
  background:#fff;border:1.5px solid var(--card-line);padding:10px 18px;border-radius:12px;text-align:right;
  box-shadow:var(--shadow);}
.clock span{display:block;font-size:11px;color:var(--muted);font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;margin-bottom:2px;}
.save-indicator{font-size:12px;font-weight:700;color:var(--teal);padding:8px 4px;
  display:inline-flex;align-items:center;gap:6px;}
.save-indicator::before{content:"";width:7px;height:7px;border-radius:999px;background:var(--teal);flex:none;
  box-shadow:0 0 0 3px var(--teal-dim);}
.save-indicator.saving{color:var(--muted);}
.save-indicator.saving::before{background:var(--muted);box-shadow:0 0 0 3px var(--card-line);animation:pulse 1s ease-in-out infinite;}
.save-indicator.error{color:var(--rose);}
.save-indicator.error::before{background:var(--rose);box-shadow:0 0 0 3px var(--rose-dim);}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.3;}}

.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;}
.card{background:var(--card);border:1.5px solid var(--card-line);border-radius:16px;padding:22px;
  display:flex;flex-direction:column;gap:14px;position:relative;overflow:hidden;box-shadow:var(--shadow);
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift);border-color:var(--batch-accent);}
.card::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--batch-accent);}
.batch-name{font-family:'Fraunces',serif;font-size:22px;font-weight:600;color:var(--ink);
  display:flex;align-items:center;gap:10px;}
.batch-emblem{width:30px;height:30px;border-radius:9px;background:var(--batch-accent);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;
  font-size:13px;font-weight:700;flex:none;}
.file-info{font-size:12px;color:var(--muted);font-family:'JetBrains Mono',monospace;word-break:break-all;}
.field{display:flex;flex-direction:column;gap:6px;}
.field label{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em;}
input[type=file]{background:#fbfbfe;border:1.5px solid var(--card-line);color:var(--ink);
  border-radius:9px;padding:9px 10px;font-family:'Inter',sans-serif;font-size:13px;width:100%;transition:.15s;}
input[type=file]:focus{outline:none;border-color:var(--indigo);
  box-shadow:0 0 0 3px var(--indigo-dim);}
.time-picker{display:flex;align-items:center;gap:6px;background:#fbfbfe;border:1.5px solid var(--card-line);
  border-radius:9px;padding:6px 10px;width:fit-content;}
.time-picker .clock-icon{color:var(--muted);flex:none;}
.time-picker:focus-within{border-color:var(--indigo);box-shadow:0 0 0 3px var(--indigo-dim);}
.time-select{background:transparent;border:none;color:var(--ink);font-family:'Inter',sans-serif;
  font-size:14px;font-weight:600;padding:4px 2px;cursor:pointer;-webkit-appearance:menulist;appearance:menulist;}
.time-select:focus{outline:none;}
.time-colon{color:var(--muted);font-weight:700;}
.ampm-select{margin-left:4px;font-weight:700;}
input[type=file]::file-selector-button{background:var(--indigo-dim);border:none;color:var(--indigo);padding:6px 10px;
  border-radius:7px;margin-right:10px;cursor:pointer;font-family:'Inter',sans-serif;font-size:12px;font-weight:700;}
.force-row{display:flex;gap:6px;}
.force-row button{flex:1;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  padding:8px 6px;border-radius:8px;border:1.5px solid var(--card-line);background:#fbfbfe;
  color:var(--muted);cursor:pointer;transition:.15s;}
.force-row button:hover{border-color:var(--batch-accent);color:var(--batch-accent);}
.force-row button.sel{background:var(--batch-accent);border-color:var(--batch-accent);color:#fff;}
.save-btn{margin-top:4px;background:linear-gradient(135deg, var(--indigo), var(--violet));color:#fff;border:none;
  padding:11px;border-radius:9px;font-weight:700;font-size:13px;cursor:pointer;letter-spacing:.02em;
  transition:.15s;box-shadow:0 6px 16px -6px rgba(79,60,201,.55);}
.save-btn:hover{filter:brightness(1.08);transform:translateY(-1px);}
.save-btn:disabled{background:var(--card-line);color:var(--muted);cursor:not-allowed;box-shadow:none;transform:none;}
.meta{font-size:12px;color:var(--muted);}
.pending-file-note{color:var(--amber);font-weight:700;}
.status-chip{align-self:flex-start;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:7px;}
.status-chip.open{background:var(--teal-dim);color:var(--teal);}
.status-chip.wait{background:var(--amber-dim);color:var(--amber);}
.status-chip.forced-lock{background:var(--rose-dim);color:var(--rose);}
.countdown{font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:700;color:var(--amber);}
.dl-btn{text-decoration:none;text-align:center;background:linear-gradient(135deg, var(--indigo), var(--violet));
  color:#fff;padding:11px;border-radius:9px;font-weight:700;font-size:13px;transition:.15s;
  box-shadow:0 6px 16px -6px rgba(79,60,201,.55);display:inline-block;}
.dl-btn:hover{filter:brightness(1.08);transform:translateY(-1px);}
.dl-btn.disabled{background:var(--card-line);color:var(--muted);pointer-events:none;box-shadow:none;}
.refresh-note{font-size:12px;color:var(--muted);text-align:center;margin-top:28px;}
.pin-gate{max-width:340px;margin:60px auto;background:var(--card);border:1.5px solid var(--card-line);
  border-radius:16px;padding:28px;text-align:center;box-shadow:var(--shadow-lift);position:relative;overflow:hidden;}
.pin-gate::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg, var(--batch-a), var(--batch-b), var(--batch-b1), var(--batch-c));}
.pin-gate input{width:100%;text-align:center;font-size:20px;letter-spacing:.4em;margin:16px 0;
  background:#fbfbfe;border:1.5px solid var(--card-line);color:var(--ink);border-radius:9px;padding:10px;transition:.15s;}
.pin-gate input:focus{outline:none;border-color:var(--indigo);box-shadow:0 0 0 3px var(--indigo-dim);}
.pin-gate button{width:100%;background:linear-gradient(135deg, var(--indigo), var(--violet));border:none;color:#fff;
  padding:10px;border-radius:9px;font-weight:700;cursor:pointer;transition:.15s;
  box-shadow:0 6px 16px -6px rgba(79,60,201,.55);}
.pin-gate button:hover{filter:brightness(1.08);transform:translateY(-1px);}
.pin-err{color:var(--rose);font-size:12px;height:16px;}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);
  background:linear-gradient(135deg, var(--ink), #2b2f52);color:#fff;
  padding:11px 20px;border-radius:9px;font-weight:600;font-size:13px;opacity:0;pointer-events:none;
  transition:opacity .25s ease, transform .25s ease;z-index:50;box-shadow:var(--shadow-lift);}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-4px);}

/* ---------------------------------------------------------------------- */
/* Evening Test & Problem Tracker + Admin Tracker view                    */
/* ---------------------------------------------------------------------- */
.tracker-wrap{max-width:1280px;}
.tracker-toolbar{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;
  background:#fff;border:1.5px solid var(--card-line);border-radius:16px;
  padding:18px 20px;margin-bottom:20px;box-shadow:var(--shadow);
  border-left:4px solid var(--batch-accent);transition:border-color .2s;}
.tracker-toolbar .field{min-width:160px;}
.tracker-toolbar .field.grow{flex:1;min-width:220px;}
.tracker-toolbar input[type=date],
.tracker-toolbar input[type=text],
.tracker-toolbar select{
  background:#fbfbfe;border:1.5px solid var(--card-line);color:var(--ink);
  border-radius:9px;padding:9px 10px;font-family:'Inter',sans-serif;font-size:13px;width:100%;transition:.15s;
}
.tracker-toolbar input[type=date]:focus,
.tracker-toolbar input[type=text]:focus,
.tracker-toolbar select:focus{outline:none;border-color:var(--indigo);box-shadow:0 0 0 3px var(--indigo-dim);}

.tracker-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
  gap:14px;margin-bottom:20px;}
.tstat{background:var(--card);border:1.5px solid var(--card-line);border-radius:13px;padding:14px 16px;
  box-shadow:var(--shadow);transition:transform .15s ease;}
.tstat:hover{transform:translateY(-2px);}
.tstat .tnum{font-family:'Fraunces',serif;font-size:26px;font-weight:700;color:var(--ink);line-height:1;margin-bottom:4px;}
.tstat .tlbl{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em;}
.tstat.present{border-top:3px solid var(--teal);}
.tstat.present .tnum{color:var(--teal);}
.tstat.absent{border-top:3px solid var(--rose);}
.tstat.absent .tnum{color:var(--rose);}
.tstat.od{border-top:3px solid var(--violet);}
.tstat.od .tnum{color:var(--violet);}

.tracker-table-card{background:var(--card);border:1.5px solid var(--card-line);
  border-radius:16px;overflow:hidden;margin-bottom:18px;box-shadow:var(--shadow);}
.tracker-scroll{overflow-x:auto;}
.tracker-table{width:100%;border-collapse:collapse;font-size:13px;min-width:920px;}
.tracker-table thead th{
  background:var(--indigo-dim);color:var(--indigo);font-weight:700;font-size:11px;
  text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:12px 14px;
  border-bottom:1.5px solid var(--card-line);position:sticky;top:0;
}
.tracker-table tbody td{padding:10px 14px;border-bottom:1px solid #f1f2fa;vertical-align:middle;}
.tracker-table tbody tr:last-child td{border-bottom:none;}
.tracker-table tbody tr:hover{background:#fbfaff;}
.col-sno{color:var(--muted);width:36px;}
.col-status{width:220px;}
.col-problems{width:280px;}
.col-count{width:60px;}
.t-name{font-weight:700;color:var(--ink);}
.t-reg{color:var(--muted);font-family:'JetBrains Mono',monospace;font-size:12px;}
.t-dept-badge{display:inline-block;background:var(--indigo-dim);color:var(--indigo);
  font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:999px;letter-spacing:.02em;}

.status-group{display:flex;gap:4px;}
.status-btn{border:1.5px solid var(--card-line);background:#fff;color:var(--muted);
  font-size:11px;font-weight:700;padding:6px 9px;border-radius:8px;cursor:pointer;letter-spacing:.02em;transition:.15s;}
.status-btn:hover{border-color:var(--batch-accent);}
.status-btn.present-btn.active{background:var(--teal);color:#fff;border-color:var(--teal);}
.status-btn.absent-btn.active{background:var(--rose);color:#fff;border-color:var(--rose);}
.status-btn.od-btn.active{background:var(--violet);color:#fff;border-color:var(--violet);}

.problems-input{width:100%;min-width:200px;background:#fbfbfe;border:1.5px solid var(--card-line);
  color:var(--ink);border-radius:9px;padding:8px 10px;font-size:13px;font-family:'JetBrains Mono',monospace;transition:.15s;}
.problems-input:focus{outline:none;border-color:var(--indigo);box-shadow:0 0 0 3px var(--indigo-dim);}
.problems-input:disabled{opacity:.5;cursor:not-allowed;background:#f4f4f9;}
.count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:28px;
  height:24px;padding:0 7px;border-radius:8px;background:var(--indigo);color:#fff;
  font-weight:800;font-size:12.5px;font-family:'JetBrains Mono',monospace;}
.row-absent{opacity:.55;}

.tracker-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:8px;}
.tracker-actions .spacer{flex:1;}
.force-row-btn{background:#fff;border:1.5px solid var(--card-line);color:var(--muted);
  padding:10px 14px;border-radius:9px;font-size:12.5px;font-weight:700;cursor:pointer;transition:.15s;}
.force-row-btn:hover{color:var(--indigo);border-color:var(--indigo);background:var(--indigo-dim);}
.secondary-btn{display:inline-block;border:1.5px solid var(--card-line);background:#fff;
  color:var(--ink);padding:11px 16px;border-radius:9px;font-weight:700;font-size:13px;cursor:pointer;transition:.15s;}
.secondary-btn:hover{border-color:var(--indigo);color:var(--indigo);background:var(--indigo-dim);
  transform:translateY(-1px);}
#submitBtn{padding:11px 20px;}

/* Admin tracker list/detail */
.tracker-list{display:flex;flex-direction:column;gap:12px;}
.tracker-record-card{background:var(--card);border:1.5px solid var(--card-line);border-radius:14px;
  padding:16px 18px;box-shadow:var(--shadow);border-left:4px solid var(--record-accent, var(--indigo));
  transition:transform .15s ease, box-shadow .15s ease;}
.tracker-record-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);}
.tracker-record-head{display:flex;flex-wrap:wrap;align-items:center;gap:14px;cursor:pointer;}
.tracker-record-head .batch-tag{font-family:'Fraunces',serif;font-size:18px;font-weight:700;
  color:var(--record-accent, var(--indigo));}
.tracker-record-head .date-tag{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--muted);}
.tracker-record-head .mini-stats{display:flex;gap:10px;font-size:12px;color:var(--muted);margin-left:auto;}
.tracker-record-head .mini-stats b{color:var(--ink);}
.tracker-record-detail{margin-top:14px;border-top:1.5px solid var(--card-line);padding-top:14px;display:none;}
.tracker-record-detail.open{display:block;}
.tracker-record-actions{display:flex;gap:8px;margin-top:12px;}
.danger-btn{background:var(--rose-dim);border:1.5px solid var(--rose);color:var(--rose);
  padding:8px 12px;border-radius:9px;font-size:12px;font-weight:700;cursor:pointer;transition:.15s;}
.danger-btn:hover{background:var(--rose);color:#fff;}
.empty-note{color:var(--muted);text-align:center;padding:40px 0;}
