:root{--bg:#0e1a14;--panel:#0f1f18;--muted:#d1d9e0;--text:#f7fbff;--primary:#22c55e;--primary-ink:#0e5027;--border:#263445;--accent:#a3e635;--warn:#ef4444;--input-bg:#0e1a14}
:root[data-theme="light"]{--bg:#f7fcf9;--panel:#ffffff;--muted:#475569;--text:#0b1220;--primary:#22c55e;--primary-ink:#14532d;--border:#e2e8f0;--accent:#a3e635;--warn:#ef4444;--input-bg:#ffffff}
*{box-sizing:border-box}
html,body{margin:0;padding:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
html{font-size:12px;line-height:1.6;letter-spacing:.2px}
@media (min-width:1280px){html{font-size:14px}}
.container{max-width:1100px;margin:0 auto;padding:16px}
/* App shell */
.app{display:block;min-height:100vh}
.app.collapsed{}
.sidebar{position:fixed;left:0;top:0;align-self:start;height:100vh;width:240px;background:linear-gradient(180deg,#0f1f18,#0e1a14);border-right:1px solid var(--border);padding:16px 12px 24px 12px;box-shadow:8px 0 24px rgba(0,0,0,.18);transition:transform .2s ease,width .2s ease;overflow-y:auto}
.app.collapsed .sidebar{width:72px}
.app.collapsed .sidebar{width:72px;padding:16px 8px;border-right:1px solid var(--border);overflow:hidden;opacity:1;pointer-events:auto}
.sidebar .logo{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.4px;color:#fff;padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.06)}
.sidebar nav{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.sidebar a{color:rgba(255,255,255,.85);text-decoration:none;padding:12px 14px;border-radius:12px;display:flex;gap:10px;align-items:center;transition:background .15s ease,color .15s ease,border-color .15s ease;font-size:.95rem}
.sidebar a .label{white-space:nowrap}
.app.collapsed .sidebar a{justify-content:center;padding:10px 8px}
.app.collapsed .sidebar a .label{display:none}
.app.collapsed .sidebar .logo span{display:none}
.app.collapsed .sidebar .logo{justify-content:center}
.sidebar a:hover{color:#fff;background:rgba(34,197,94,.14)}
.sidebar a.active{color:#fff;background:rgba(34,197,94,.20);border:1px solid rgba(34,197,94,.45)}
.content{padding:24px 28px;margin-left:240px;margin-right:auto;max-width:1200px}
.app.collapsed .content{margin-left:72px}
.content .page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;background:linear-gradient(180deg,rgba(34,197,94,.10),rgba(34,197,94,0));border:1px solid var(--border);border-radius:14px;padding:10px 12px}
.brand{font-weight:800;letter-spacing:.3px;color:var(--text)}
h1{font-size:1.75rem;margin:18px 0}
h2{font-size:1.25rem;margin:12px 0}
h3{font-size:1.125rem;margin:10px 0}
p{font-size:1rem}
.card{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:18px;transition:transform .15s ease, box-shadow .2s ease}
.card:hover{transform:translateY(-2px);box-shadow:0 16px 36px rgba(0,0,0,.16)}
.btn{display:inline-flex;gap:8px;align-items:center;background:var(--primary);color:#fff;border:none;border-radius:12px;padding:10px 16px;text-decoration:none;font-weight:700;cursor:pointer;transition:filter .15s ease, transform .05s ease, box-shadow .2s ease;font-size:.95rem}
.btn:hover{filter:brightness(1.03);box-shadow:0 10px 28px rgba(34,197,94,.28)}
.btn:active{transform:translateY(1px)}
.btn.secondary{background:transparent;border:1px solid var(--border);color:var(--text)}
.btn.warn{background:var(--warn);color:#fff}
.btn.ghost{background:transparent;color:var(--muted)}
.btn:disabled{opacity:.6}
.btn.small{padding:8px 10px;font-size:13px;border-radius:8px}
.input,select,textarea{width:100%;background:var(--input-bg);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:10px;transition:border-color .15s ease, box-shadow .15s ease;font-size:1rem;line-height:1.5}
.input::placeholder,textarea::placeholder{color:rgba(245,249,255,.78)}
.input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(34,197,94,.18)}
.table{width:100%;border-collapse:collapse;border:1px solid var(--border);border-radius:12px;overflow:hidden}
.table thead th{background:rgba(34,197,94,.10);color:#7aa78a}
.table th,.table td{border-bottom:1px solid var(--border);padding:12px;text-align:left;font-size:1rem}
.table tbody tr:hover{background:rgba(255,255,255,.02)}
.footer{border-top:1px solid var(--border);margin-top:40px;color:var(--muted)}
.field{margin-bottom:12px}

/* Chips / badges */
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:rgba(255,255,255,.06);font-size:.9rem;color:#f2f6fb;font-weight:700}
.chip.success{border-color:rgba(34,197,94,.5);background:rgba(34,197,94,.2);color:#eafff2}
.chip.warn{border-color:rgba(239,68,68,.55);background:rgba(239,68,68,.18);color:#ffecec}
.chip.info{border-color:rgba(163,230,53,.55);background:rgba(163,230,53,.18);color:#f3ffe0}

/* Alerts */
.alert{border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin:12px 0}
.alert.success{border-color:rgba(34,197,94,.35);background:rgba(34,197,94,.10);color:#c8f7d4}
.alert.error{border-color:rgba(239,68,68,.35);background:rgba(239,68,68,.10);color:#ffd5d5}
.alert.info{border-color:rgba(163,230,53,.45);background:rgba(163,230,53,.12);color:#e7f7c3}

/* Toast */
.toast{position:fixed;right:16px;bottom:16px;background:rgba(34,197,94,.95);color:#052e12;border-radius:12px;padding:12px 14px;box-shadow:0 12px 30px rgba(0,0,0,.25);transform:translateY(12px);opacity:0;transition:opacity .25s ease, transform .25s ease;z-index:1100;font-weight:700}
.toast.show{opacity:1;transform:translateY(0)}
.toast.success{background:rgba(34,197,94,.95);color:#052e12}
.toast.info{background:rgba(163,230,53,.95);color:#1b2a06}
.toast.warn{background:rgba(234,179,8,.95);color:#1f1500}
.toast.error{background:rgba(239,68,68,.95);color:#2a0808}

/* Dashboard grid */
.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}

/* Utilities */
.muted{color:var(--muted)}
.field label, label{display:block;margin-bottom:6px;color:#ffffff;font-weight:600;font-size:1rem}
.spacer{height:12px}
.inline-actions{display:flex;gap:8px;align-items:center}
/* Inline form grouping */
.row-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.inline-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.inline-fields{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.toggle{display:inline-flex;gap:6px;align-items:center;color:var(--muted)}
/* Icon size utility */
.nav i{font-size:18px}

/* Modern announcement component */
.announce{display:flex;gap:12px;align-items:flex-start;background:linear-gradient(180deg,rgba(34,197,94,.12),rgba(34,197,94,.06));border:1px solid rgba(34,197,94,.35);border-radius:16px;padding:16px 18px;margin:12px 0}
.announce .icon{width:36px;height:36px;min-width:36px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:rgba(34,197,94,.16);color:#d5f5df}
.announce .icon i{font-size:20px}
.announce .body{flex:1}
.announce .head{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-bottom:6px}
.announce h4{margin:0;font-size:16px;letter-spacing:.2px}
.announce .message{color:var(--text);opacity:.95;line-height:1.6}
.announce .role-badge{margin-left:auto}
.announce.warn{background:linear-gradient(180deg,rgba(239,68,68,.12),rgba(239,68,68,.06));border-color:rgba(239,68,68,.35)}
.announce.warn .icon{background:rgba(239,68,68,.16);color:#ffd5d5}

/* Floating sidebar toggle */
.fab-toggle{position:fixed;left:16px;bottom:16px;z-index:1000;box-shadow:0 10px 24px rgba(0,0,0,.25)}
.fab-toggle .bx{font-size:18px}
.app.collapsed .fab-toggle{left:16px}

/* Responsive & utilities */
.mobile-only{display:none}
.desktop-only{display:initial}
@media (max-width: 1024px){
  .mobile-only{display:inline-flex}
  .desktop-only{display:none}
  .app{display:block}
  .sidebar{position:fixed;left:0;top:0;height:100vh;width:240px;z-index:1000;transform:translateX(-100%)}
  .app.menu-open .sidebar{transform:translateX(0)}
  .content{margin-left:0;max-width:none;padding:16px}
  .backdrop{display:none}
  .app.menu-open .backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:900}
}


/* Tablet */
@media (max-width: 768px){
  .dashboard-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
  .content{padding:12px}
  .btn{padding:10px 12px}
  .table{display:block;overflow-x:auto;white-space:nowrap}
  .page-header{flex-direction:column;align-items:flex-start;gap:10px}
  .page-header .btn{width:100%}
}

/* Phone */
@media (max-width: 480px){
  h1{font-size:22px}
  .dashboard-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}
  .btn,.btn.small{padding:10px 12px}
  .fab-toggle{left:12px;bottom:12px}
}

/* KPI cards for reports */
.kpi{display:flex;gap:14px;align-items:center}
.kpi .kpi-icon{width:44px;height:44px;min-width:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.06);border:1px solid var(--border)}
.kpi .kpi-icon i{font-size:22px;color:#e6f8ef}
.kpi .kpi-body{flex:1}
.kpi .kpi-title{color:#e2e8f0;font-size:.95rem;font-weight:600}
.kpi .kpi-value{font-size:2.2rem;font-weight:900;letter-spacing:.3px;margin-top:4px;color:var(--text)}
.kpi.success .kpi-icon{background:rgba(34,197,94,.14);border-color:rgba(34,197,94,.3)}
.kpi.warn .kpi-icon{background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.32)}
.kpi.info .kpi-icon{background:rgba(163,230,53,.12);border-color:rgba(163,230,53,.32)}
/* Status chips group */
.chips{display:flex;gap:10px;flex-wrap:wrap}

/* Report header */
.report-header{background:linear-gradient(180deg,rgba(34,197,94,.18),rgba(34,197,94,.05));border:1px solid var(--border);border-radius:16px}
.report-header h1{color:#ffffff;font-size:2.1rem;letter-spacing:.4px;margin:0 0 6px 0;text-shadow:0 1px 2px rgba(0,0,0,.55)}
.report-sub{color:#e6f6ef;font-weight:600}
.report-sub i{opacity:.9}


