:root{
  --surface-0:#FAFAF8;
  --surface-1:#F1EFE8;
  --surface-2:#FFFFFF;
  --text-primary:#1C1C1A;
  --text-secondary:#5F5E5A;
  --text-muted:#8A887F;
  --border:#E4E2D9;
  --border-strong:#CFCDC3;
  --border-accent:#378ADD;
  --bg-accent:#E6F1FB;
  --text-accent:#185FA5;
  --bg-success:#EAF3DE;
  --text-success:#3B6D11;
  --bg-warning:#FAEEDA;
  --text-warning:#854F0B;
  --bg-danger:#FCEBEB;
  --text-danger:#A32D2D;
  --radius:8px;
  --font-sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --sidebar-w:224px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:var(--font-sans);
  background:var(--surface-0);
  color:var(--text-primary);
  font-size:16px;
  line-height:1.7;
}
h1{font-size:22px;font-weight:500;color:var(--text-primary);margin:0;}
h2{font-size:18px;font-weight:500;color:var(--text-primary);}
p{margin:0;}
a{color:var(--text-accent);text-decoration:none;}
a:hover{text-decoration:underline;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
button{
  font-family:inherit;
  background:transparent;
  border:0.5px solid var(--border-strong);
  border-radius:var(--radius);
  padding:8px 14px;
  font-size:13px;
  color:var(--text-primary);
  cursor:pointer;
}
button:hover{background:var(--surface-1);}
button:active{transform:scale(0.98);}
input,select,textarea{
  font-family:inherit;
  border:0.5px solid var(--border);
  border-radius:var(--radius);
  padding:8px 10px;
  font-size:13px;
  background:var(--surface-2);
  color:var(--text-primary);
}
input[type=text],input[type=password],input[type=date],input[type=time],input[type=number]{height:36px;}
select{height:36px;cursor:pointer;}
textarea{resize:vertical;width:100%;}
input:focus,select:focus,textarea:focus{
  outline:none;
  box-shadow:0 0 0 2px var(--bg-accent);
  border-color:var(--border-accent);
}

/* ---------- app shell: sidebar + topbar ---------- */
body[data-page]:not([data-page="login"]):not(.ml-ready){visibility:hidden;}
.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;}
#sidebar{
  background:var(--surface-2);
  border-right:0.5px solid var(--border);
  padding:1.25rem 1rem;
  position:sticky;top:0;height:100vh;overflow-y:auto;
}
.sidebar-logo{font-size:19px;font-weight:500;color:var(--text-accent);line-height:1.2;}
.sidebar-sub{font-size:10px;letter-spacing:0.15em;color:var(--text-muted);font-weight:500;margin-bottom:1.75rem;}
.sidebar-group-label{font-size:11px;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-muted);margin:18px 0 6px;padding:0 10px;}
.sidebar-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius);font-size:13px;color:var(--text-secondary);cursor:pointer;}
.sidebar-link:hover{background:var(--surface-1);color:var(--text-primary);text-decoration:none;}
.sidebar-link.active{background:var(--bg-accent);color:var(--text-accent);font-weight:500;}
.sidebar-link i{font-size:16px;width:16px;text-align:center;}
.sidebar-link .tag{margin-left:auto;}
#main-col{min-width:0;}
#topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 2rem;border-bottom:0.5px solid var(--border);background:var(--surface-2);
  position:sticky;top:0;z-index:5;
}
#page-content{padding:2rem;max-width:1160px;}
.breadcrumb{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary);}

.label-sm{font-size:12px;color:var(--text-muted);}
.card{background:var(--surface-2);border:0.5px solid var(--border);border-radius:12px;}
.metric-card{background:var(--surface-1);border-radius:var(--radius);padding:0.85rem 1rem;}
.metric-label{font-size:12px;color:var(--text-muted);margin:0 0 4px;}
.metric-value{font-size:20px;font-weight:500;margin:0;}
.kpi-card{background:var(--surface-1);border-radius:var(--radius);padding:1rem;}
.kpi-label{font-size:12px;color:var(--text-muted);margin:0 0 6px;display:flex;align-items:center;gap:5px;}
.kpi-value{font-size:22px;font-weight:500;margin:0;}
.kpi-delta{font-size:12px;font-weight:500;margin-top:5px;display:inline-flex;align-items:center;gap:3px;}
.section-sub{font-size:13px;color:var(--text-secondary);margin:0 0 16px;}
.avatar{border-radius:50%;background:var(--bg-accent);color:var(--text-accent);display:flex;align-items:center;justify-content:center;font-weight:500;flex-shrink:0;}
.result-row{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;border-bottom:0.5px solid var(--border);}
.result-row:last-child{border-bottom:none;}
.result-row:hover{background:var(--surface-1);}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;padding:4px 10px;border-radius:20px;}
.tag{font-size:11px;font-weight:500;padding:2px 8px;border-radius:20px;}
.dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0;}
.action-btn{display:flex;align-items:center;gap:6px;font-size:13px;}
.info-item p{margin:0;}
.info-row{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:0.5px solid var(--border);}
.info-row:last-child{border-bottom:none;}
.task-row{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:0.5px solid var(--border);cursor:pointer;border-radius:6px;}
.task-row:last-child{border-bottom:none;}
.task-row:hover{background:var(--surface-1);}
.module-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:0.5px solid var(--border);font-size:13px;cursor:pointer;border-radius:6px;}
.module-row:last-child{border-bottom:none;}
.module-row:hover{background:var(--surface-1);}
.name-link{color:var(--text-accent);}
tr.clickable:hover .name-link{text-decoration:underline;}
.module-head{display:flex;align-items:center;gap:8px;margin:0 0 8px;}
.icon-btn{cursor:pointer;color:var(--text-muted);font-size:15px;}
.icon-btn:hover{color:var(--text-primary);}
.day-chip{cursor:pointer;user-select:none;}
.editable[contenteditable="true"]{outline:none;border-radius:6px;padding:2px 6px;margin:-2px -6px;background:var(--bg-accent);box-shadow:0 0 0 1px var(--border-accent);}
.status-select{border:none;font-size:13px;font-weight:500;padding:6px 10px;border-radius:var(--radius);cursor:pointer;}
button.tab-btn{border:none;background:transparent;box-shadow:none;padding:10px 4px;margin-right:20px;font-size:14px;color:var(--text-secondary);border-radius:0;border-bottom:2px solid transparent;}
button.tab-btn:hover{background:transparent;color:var(--text-primary);}
button.tab-btn.active{color:var(--text-primary);font-weight:500;border-bottom:2px solid #378ADD;}
button.chip-btn{border:0.5px solid var(--border);background:var(--surface-2);box-shadow:none;padding:5px 12px;margin-right:6px;font-size:12px;border-radius:20px;color:var(--text-secondary);}
button.chip-btn.active{background:var(--bg-accent);color:var(--text-accent);border-color:var(--border-accent);}
.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;}
.grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;}
.chart-title{font-weight:500;font-size:13px;margin:0 0 6px;}
.alert-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--radius);margin-bottom:8px;cursor:pointer;border:0.5px solid transparent;}
.alert-row:hover{border-color:var(--border-strong);}
.action-card{background:var(--surface-1);border-radius:12px;padding:14px;cursor:pointer;}
.action-card:hover{background:var(--surface-2);border:0.5px solid var(--border-strong);}
.status-seg{height:100%;cursor:pointer;}
.status-legend-item{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;padding:4px 6px;border-radius:6px;}
.status-legend-item:hover{background:var(--surface-1);}
.data-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:0.5px solid var(--border);}
.data-row:last-child{border-bottom:none;}
.data-row:hover{background:var(--surface-1);}
table.simple-table{width:100%;border-collapse:collapse;font-size:13px;}
table.simple-table th{text-align:left;font-size:11px;color:var(--text-muted);font-weight:500;padding:0 0 8px;border-bottom:0.5px solid var(--border);}
table.simple-table td{padding:10px 0;border-bottom:0.5px solid var(--border);vertical-align:middle;}
table.simple-table tr:last-child td{border-bottom:none;}
table.simple-table tr.clickable{cursor:pointer;}
table.simple-table tr.clickable:hover td{background:var(--surface-1);}
.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-muted);}
.empty-state i{font-size:32px;margin-bottom:10px;display:block;}
