:root{
  --bg:#F4F7F8; --card:#FFFFFF; --text:#1B2B2A; --sub:#6B7B7A; --border:#E4EAEA;
  --teal:#3FBFB5; --teal-dark:#0F7A72; --red:#E2665B; --amber:#D9A441;
  --shadow:0 4px 16px rgba(20,40,40,.06);
}
[data-theme="dark"]{
  --bg:#10181A; --card:#182422; --text:#E9F2F1; --sub:#8FA3A1; --border:#26332F;
  --shadow:0 4px 20px rgba(0,0,0,.35);
}
*{box-sizing:border-box;}
body{margin:0; font-family:"Segoe UI","Tahoma",system-ui,sans-serif; background:var(--bg); color:var(--text);}
input,select,button,textarea{font-family:inherit;}
.boot-loading{display:flex;align-items:center;justify-content:center;height:100vh;}
.spinner{width:36px;height:36px;border:4px solid var(--border);border-top-color:var(--teal);border-radius:50%;animation:spin 1s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ───────── Auth ───────── */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;
  background:linear-gradient(160deg,var(--teal) 0%, var(--teal-dark) 100%);}
.auth-card{background:var(--card);border-radius:20px;padding:36px 28px;width:100%;max-width:400px;box-shadow:0 20px 60px rgba(0,0,0,.25);}
.auth-logo{font-size:40px;text-align:center;margin-bottom:8px;}
.auth-card h1{text-align:center;margin:0 0 4px;font-size:22px;}
.auth-sub{text-align:center;color:var(--sub);margin:0 0 20px;font-size:14px;}
.auth-error{background:rgba(226,102,91,.12);color:var(--red);padding:10px 14px;border-radius:10px;margin-bottom:14px;font-size:13.5px;}
.field{display:block;margin-bottom:14px;}
.field span{display:block;font-size:13px;color:var(--sub);margin-bottom:5px;}
.field input, .field select{width:100%;padding:11px 12px;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-size:14.5px;outline:none;transition:border-color .15s;}
.field input:focus{border-color:var(--teal);}
.pw-wrap{position:relative;}
.pw-wrap input{padding-left:40px;}
.pw-eye{position:absolute;left:6px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:16px;padding:6px;}
.btn-primary{background:var(--teal);color:#fff;border:none;border-radius:10px;padding:12px 18px;font-size:15px;font-weight:600;cursor:pointer;transition:background .15s,opacity .15s;}
.btn-primary:hover{background:var(--teal-dark);}
.btn-primary:disabled{opacity:.6;cursor:default;}
.btn-block{width:100%;margin-top:6px;}
.btn-ghost{background:transparent;color:var(--sub);border:1.5px solid var(--border);border-radius:10px;padding:11px 16px;font-size:14px;cursor:pointer;}
.auth-switch{text-align:center;margin-top:18px;font-size:13.5px;color:var(--sub);}
.auth-switch a{color:var(--teal-dark);cursor:pointer;font-weight:600;}

/* ───────── Shell / topbar ───────── */
.shell{max-width:960px;margin:0 auto;padding-bottom:40px;}
.topbar{position:relative;display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--card);
  box-shadow:var(--shadow);flex-wrap:wrap;}
.topbar-title strong{font-size:16px;}
.topbar-search{flex:1;min-width:180px;display:flex;align-items:center;gap:6px;background:var(--bg);border:1.5px solid var(--border);
  border-radius:10px;padding:8px 12px;}
.topbar-search input{flex:1;border:none;background:transparent;outline:none;color:var(--text);font-size:14px;}
.clear-search{background:none;border:none;cursor:pointer;color:var(--sub);}
.topbar-actions{display:flex;gap:6px;}
.icon-btn{position:relative;background:var(--bg);border:1px solid var(--border);border-radius:10px;width:38px;height:38px;
  cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;}
.icon-btn.danger{color:var(--red);}
.badge{position:absolute;top:-4px;right:-4px;background:var(--red);color:#fff;font-size:10px;border-radius:20px;padding:1px 5px;min-width:16px;text-align:center;}
.bell-dropdown{position:absolute;top:60px;left:16px;width:260px;background:var(--card);border:1px solid var(--border);border-radius:12px;
  box-shadow:var(--shadow);padding:12px;z-index:20;}
.bell-dropdown h4{margin:0 0 8px;font-size:14px;}
.bell-item{display:flex;justify-content:space-between;padding:6px 0;font-size:13.5px;border-bottom:1px solid var(--border);}
.bell-count{color:var(--red);font-weight:600;}

/* ───────── Tabs ───────── */
.tabs{display:flex;gap:4px;padding:10px 16px 0;overflow-x:auto;}
.tab-btn{background:none;border:none;padding:10px 14px;border-radius:10px 10px 0 0;cursor:pointer;color:var(--sub);
  display:flex;align-items:center;gap:6px;font-size:14px;white-space:nowrap;}
.tab-btn.active{background:var(--card);color:var(--teal-dark);font-weight:600;box-shadow:var(--shadow);}
.content{background:var(--card);padding:18px 16px;min-height:60vh;box-shadow:var(--shadow);}

/* ───────── Dashboard ───────── */
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:16px;}
.stat-card{background:var(--bg);border-radius:14px;padding:16px;text-align:center;border:1px solid var(--border);}
.stat-num{font-size:26px;font-weight:700;}
.stat-label{font-size:12.5px;color:var(--sub);margin-top:4px;}
.stat-card.present .stat-num{color:var(--teal-dark);}
.stat-card.absent .stat-num{color:var(--red);}
.stat-card.leave .stat-num{color:var(--amber);}
.hint{color:var(--sub);font-size:13px;}

/* ───────── View header / lists ───────── */
.view-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin:10px 0 14px;}
.view-header h2,.view-header h3{margin:0;font-size:17px;}
.header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.header-actions input[type=date]{padding:8px 10px;border-radius:8px;border:1.5px solid var(--border);background:var(--bg);color:var(--text);}
.empty{color:var(--sub);font-size:13.5px;padding:14px 0;}

.inline-form{display:flex;gap:8px;flex-wrap:wrap;background:var(--bg);border:1px dashed var(--border);border-radius:12px;padding:12px;margin-bottom:14px;}
.inline-form input, .inline-form select{flex:1;min-width:120px;padding:10px 12px;border-radius:9px;border:1.5px solid var(--border);background:var(--card);color:var(--text);}
.inline-form-actions{display:flex;gap:8px;width:100%;justify-content:flex-end;}
.file-btn{cursor:pointer;}

.person-list{display:flex;flex-direction:column;gap:10px;}
.person-card{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--bg);border:1px solid var(--border);
  border-radius:14px;padding:10px 12px;}
.person-main{display:flex;align-items:center;gap:10px;flex:1;min-width:140px;}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--teal);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0;}
.person-name{font-size:14.5px;font-weight:600;}
.person-sub{font-size:12px;color:var(--sub);}
.person-mid{display:flex;gap:6px;align-items:center;font-size:12px;}
.mini-stat{width:26px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;}
.mini-stat.present{background:var(--teal);}
.mini-stat.absent{background:var(--red);}
.mini-stat.leave{background:var(--amber);}
.mini-pct{color:var(--sub);font-weight:600;}

/* clean, icon-only, balanced status buttons — no extra wording */
.status-group{display:flex;gap:4px;background:var(--card);border-radius:10px;padding:3px;border:1px solid var(--border);}
.status-btn{width:32px;height:32px;border:none;border-radius:8px;background:transparent;cursor:pointer;font-size:14px;
  color:var(--sub);display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;}
.status-btn.present.active{background:var(--teal);color:#fff;}
.status-btn.absent.active{background:var(--red);color:#fff;}
.status-btn.leave.active{background:var(--amber);color:#fff;}
.status-btn:hover:not(.active){background:var(--border);}

/* ───────── Branches / classes ───────── */
.branch-tabs,.class-tabs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:12px;}
.chip-tab{background:var(--bg);border:1.5px solid var(--border);border-radius:20px;padding:7px 14px;font-size:13px;cursor:pointer;color:var(--text);}
.chip-tab.active{background:var(--teal);border-color:var(--teal);color:#fff;font-weight:600;}
.chip-tab.add{border-style:dashed;color:var(--sub);}

.bulk-box{background:var(--bg);border:1px dashed var(--border);border-radius:12px;padding:14px;margin-bottom:14px;}
.bulk-box p{margin:0 0 10px;font-size:13px;color:var(--sub);}

/* ───────── Reasons ───────── */
.reason-list{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;}
.reason-list.block{flex-direction:column;}
.chip{background:var(--bg);border:1px solid var(--border);border-radius:20px;padding:8px 14px;font-size:13px;cursor:pointer;color:var(--text);}
.chip:hover{border-color:var(--teal);}
.reason-row{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--bg);border-radius:10px;border:1px solid var(--border);}

/* ───────── Settings ───────── */
.settings-card{max-width:520px;display:flex;flex-direction:column;gap:10px;margin-bottom:22px;}
.backup-card .hint{margin:0;}
.backup-card .hint.small{font-size:12px;}
.divider{border:none;border-top:1px solid var(--border);margin:6px 0;}
.danger-zone{display:flex;flex-direction:column;gap:8px;}
.danger-text{color:var(--red);border-color:var(--red);}
.import-summary{margin:0 0 14px;padding-inline-start:20px;font-size:13.5px;color:var(--text);}
.import-summary li{margin-bottom:4px;}
.btn-block{width:100%;text-align:center;margin-top:6px;}

/* ───────── Modal ───────── */
.modal-bg{position:fixed;inset:0;background:rgba(10,20,20,.5);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px;}
.modal{background:var(--card);border-radius:16px;padding:20px;width:100%;max-width:380px;}
.modal h3{margin:0 0 12px;font-size:15.5px;}
.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px;}

/* ───────── Toast ───────── */
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#1B2B2A;color:#fff;padding:10px 18px;
  border-radius:30px;font-size:13.5px;z-index:100;box-shadow:0 6px 20px rgba(0,0,0,.25);}
.toast.error{background:var(--red);}

/* ───────── Report / print ───────── */
.seg{display:flex;background:var(--bg);border:1.5px solid var(--border);border-radius:10px;padding:3px;}
.seg-btn{border:none;background:transparent;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--sub);}
.seg-btn.active{background:var(--teal);color:#fff;font-weight:600;}
.print-title{display:none;}
.report-table{width:100%;border-collapse:collapse;margin-top:10px;}
.report-table th,.report-table td{padding:10px 8px;border-bottom:1px solid var(--border);text-align:center;font-size:13.5px;}
.report-table th{color:var(--sub);font-weight:600;}
.report-table td.present{color:var(--teal-dark);font-weight:700;}
.report-table td.absent{color:var(--red);font-weight:700;}
.report-table td.leave{color:var(--amber);font-weight:700;}
.wa-preview{width:100%;border:1.5px solid var(--border);border-radius:10px;padding:10px;background:var(--bg);color:var(--text);font-size:13.5px;resize:vertical;}
.chip.active-chip{background:var(--teal);color:#fff;border-color:var(--teal);}

@media print{
  body *{visibility:hidden;}
  #printArea, #printArea *{visibility:visible;}
  #printArea{position:absolute;top:0;left:0;width:100%;}
  .no-print{display:none !important;}
  .print-title{display:block;text-align:center;margin-bottom:14px;}
}

@media (max-width:520px){
  .topbar{padding:10px 12px;}
  .content{padding:14px 10px;}
}
