:root {
  --ink:#102331;
  --muted:#64748b;
  --line:#d9e3ea;
  --soft:#f4f8fa;
  --deep:#082a35;
  --teal:#0d869b;
  --cyan:#58c3d5;
  --danger:#c92a2a;
}
* { box-sizing:border-box; }
body { margin:0; background:#edf3f6; color:var(--ink); font-family:Inter, Arial, Helvetica, sans-serif; }
a { color:var(--teal); text-decoration:none; font-weight:700; }
.app-shell { max-width:1180px; margin:0 auto; padding:28px; }
.app-shell.with-sidebar { max-width:none; display:grid; grid-template-columns:260px minmax(0,1fr); gap:0; padding:0; min-height:100vh; }
.main-content { min-width:0; padding:28px; }
.sidebar { background:linear-gradient(180deg,#082a35 0%,#0b4250 100%); color:#fff; padding:22px 16px; min-height:100vh; position:sticky; top:0; align-self:start; }
.sidebar-brand { padding:8px 8px 20px; border-bottom:1px solid rgba(255,255,255,.16); margin-bottom:18px; }
.sidebar-brand img { width:170px; max-width:100%; height:auto; display:block; }
.side-nav { display:grid; gap:8px; }
.sidebar-home {
  display:block;
  color:#fff;
  background:rgba(88,195,213,.16);
  border:1px solid rgba(88,195,213,.22);
  padding:12px 10px;
  border-radius:8px;
  font-size:14px;
  font-weight:900;
}
.sidebar-home.active { background:var(--cyan); color:var(--deep); }
.nav-toggle {
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border:0;
  background:transparent;
  color:#9fd5df;
  padding:11px 10px;
  border-radius:8px;
  cursor:pointer;
  font:inherit;
  text-align:left;
}
.nav-toggle span { display:block; font-size:11px; text-transform:uppercase; letter-spacing:.8px; font-weight:900; }
.nav-toggle b { display:grid; place-items:center; width:20px; height:20px; border-radius:50%; background:rgba(255,255,255,.08); color:#fff; font-size:16px; line-height:1; }
.nav-group.open .nav-toggle { background:rgba(255,255,255,.07); color:#fff; }
.nav-group.open .nav-toggle b { background:var(--cyan); color:var(--deep); }
.nav-group.open .nav-toggle b { transform:rotate(45deg); }
.nav-submenu { display:none; padding:7px 0 4px 8px; margin-left:8px; border-left:1px solid rgba(255,255,255,.15); }
.nav-group.open .nav-submenu { display:block; }
.nav-group a { display:block; color:#eaf8fb; padding:9px 10px; border-radius:8px; font-size:14px; font-weight:800; }
.nav-group a:hover, .nav-group a.active { background:rgba(88,195,213,.16); color:#fff; }
.topbar { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:24px; }
.topbar-actions { display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; }
.brand { display:flex; align-items:center; gap:14px; }
.brand img { height:38px; width:auto; }
.brand strong { display:block; font-size:20px; }
.brand span { color:var(--muted); font-size:13px; }
.panel { background:#fff; border:1px solid var(--line); border-radius:10px; padding:22px; box-shadow:0 12px 30px rgba(15,23,42,.06); }
.grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.full { grid-column:1 / -1; }
label { display:block; font-size:12px; color:var(--muted); font-weight:800; text-transform:uppercase; letter-spacing:.4px; margin-bottom:6px; }
input, textarea, select {
  width:100%;
  border:1px solid var(--line);
  border-radius:8px;
  padding:10px 12px;
  font:inherit;
  background:#fff;
  color:var(--ink);
}
textarea { min-height:96px; resize:vertical; line-height:1.45; }
.btn-row { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:18px; }
.btn {
  border:0;
  background:var(--teal);
  color:#fff;
  border-radius:8px;
  padding:10px 14px;
  font-weight:800;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.btn.secondary { background:#12202f; }
.btn.light { background:#e8f5f8; color:var(--deep); }
.btn.danger { background:var(--danger); }
.item { border:1px solid var(--line); border-radius:10px; padding:14px; background:#fbfdfe; margin-bottom:12px; }
.item-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; }
.item-head strong { font-size:14px; }
table { width:100%; border-collapse:collapse; background:#fff; }
th, td { border-bottom:1px solid var(--line); padding:12px; text-align:left; font-size:14px; }
th { color:var(--muted); text-transform:uppercase; font-size:12px; letter-spacing:.4px; }
.proposals-table { table-layout:fixed; }
.proposals-table th, .proposals-table td { overflow-wrap:anywhere; vertical-align:top; }
.proposals-table th:nth-child(1) { width:18%; }
.proposals-table th:nth-child(2) { width:13%; }
.proposals-table th:nth-child(3) { width:14%; }
.proposals-table th:nth-child(4) { width:11%; }
.proposals-table th:nth-child(5) { width:13%; }
.proposals-table th:nth-child(6) { width:10%; }
.proposals-table th:nth-child(7) { width:8%; }
.proposals-table th:nth-child(8) { width:7%; text-align:center; }
.proposals-table th:nth-child(9) { width:16%; }
.record-link { color:var(--deep); font-weight:900; text-decoration:underline; text-decoration-color:rgba(13,134,155,.35); text-underline-offset:3px; }
.record-link:hover { color:var(--teal); text-decoration-color:var(--teal); }
.icon-cell { text-align:center; }
.icon-link { width:34px; height:34px; border:1px solid var(--line); border-radius:8px; display:inline-flex; align-items:center; justify-content:center; background:#e8f5f8; color:var(--teal); }
.icon-link svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.icon-link:hover { background:var(--teal); color:#fff; border-color:var(--teal); }
.action-links { line-height:1.8; }
.table-controls {
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));
  gap:12px;
  align-items:end;
  margin:0 0 14px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:10px;
  background:#f8fbfc;
}
.table-search { grid-column:span 2; }
.table-search input { min-width:0; }
.table-pager { display:flex; align-items:center; justify-content:flex-end; gap:10px; white-space:nowrap; }
.table-pager span { color:var(--muted); font-size:13px; font-weight:800; min-width:78px; text-align:center; }
.table-pager .btn { padding:9px 11px; }
.table-pager .btn:disabled { opacity:.45; cursor:not-allowed; }
.login-wrap { min-height:100vh; display:grid; place-items:center; padding:24px; }
.login-card { width:min(420px,100%); }
.alert { padding:12px 14px; border-radius:8px; background:#fff0f0; color:var(--danger); margin-bottom:14px; font-weight:700; }
.alert.success { background:#eaf8f3; color:#08785d; }
.hint { color:var(--muted); font-size:13px; line-height:1.45; }
.metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:18px; }
.metrics div { background:#fff; border:1px solid var(--line); border-radius:10px; padding:16px; box-shadow:0 12px 30px rgba(15,23,42,.05); }
.metrics span { display:block; color:var(--muted); font-size:12px; font-weight:800; text-transform:uppercase; margin-bottom:8px; }
.metrics strong { display:block; color:var(--deep); font-size:23px; line-height:1; }
.metrics small { display:block; color:var(--muted); font-weight:700; margin-top:8px; }
.dashboard-filter { display:flex; align-items:end; gap:12px; background:#fff; border:1px solid var(--line); border-radius:10px; padding:14px; margin-bottom:18px; width:max-content; max-width:100%; }
.dashboard-filter div { min-width:220px; }
.dashboard-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:18px; }
.section-head { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:16px; }
.section-head h2 { margin:0; font-size:18px; color:var(--deep); }
.section-head span, .subtext { color:var(--muted); font-size:12px; font-weight:700; }
.detail-list { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
.detail-list div { border:1px solid var(--line); background:#f8fbfc; border-radius:8px; padding:12px; min-width:0; }
.detail-list .wide { grid-column:1 / -1; }
.detail-list span { display:block; color:var(--muted); font-size:11px; font-weight:900; text-transform:uppercase; margin-bottom:5px; }
.detail-list strong { display:block; color:var(--deep); font-size:14px; line-height:1.45; overflow-wrap:anywhere; }
.action-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
.action-grid .btn { justify-content:center; }
.progress-list { display:grid; gap:18px; }
.progress-meta { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; font-size:13px; }
.progress-meta span { color:var(--muted); font-weight:800; }
.progress { height:10px; background:#e8f1f5; border-radius:999px; overflow:hidden; }
.progress i { display:block; height:100%; background:linear-gradient(90deg,var(--teal),var(--cyan)); border-radius:999px; }
.danger-progress i { background:linear-gradient(90deg,#f59e0b,var(--danger)); }
.compact-form { align-items:end; margin-bottom:16px; }
.template-picker { margin-bottom:18px; }
.template-picker h2 { margin-top:0; }
.template-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.template-grid a { display:block; border:1px solid var(--line); background:#f8fbfc; color:var(--deep); border-radius:8px; padding:12px; font-size:13px; font-weight:900; }
.template-grid a.selected, .template-grid a:hover { border-color:var(--cyan); background:#e8f5f8; color:var(--teal); }
.mt-panel { margin-top:18px; }
.inline-form { display:inline; }
.link-danger { border:0; background:transparent; padding:0; color:var(--danger); font:inherit; font-weight:800; cursor:pointer; }
.disabled-action { color:#94a3b8; font-size:13px; font-weight:800; }
.status { display:inline-flex; border-radius:999px; padding:5px 9px; font-size:12px; font-weight:900; text-transform:uppercase; background:#eef4f7; color:var(--deep); }
.status.paid, .status.completed { background:#eaf8f3; color:#08785d; }
.status.overdue, .status.blocked { background:#fff0f0; color:var(--danger); }
.status.due, .status.pending { background:#fff7e6; color:#9a5a00; }
.profile-preview { width:74px; height:74px; border-radius:50%; object-fit:cover; border:3px solid #e8f5f8; display:block; }
@media (max-width:760px) {
  .grid, .grid-3 { grid-template-columns:1fr; }
  .metrics { grid-template-columns:1fr; }
  .dashboard-grid { grid-template-columns:1fr; }
  .detail-list, .action-grid { grid-template-columns:1fr; }
  .template-grid { grid-template-columns:1fr; }
  .table-controls { grid-template-columns:1fr; }
  .table-pager { justify-content:space-between; }
  .dashboard-filter { width:100%; flex-direction:column; align-items:stretch; }
  .dashboard-filter div { min-width:0; }
  .app-shell { padding:18px; }
  .app-shell.with-sidebar { display:block; padding:0; }
  .main-content { padding:18px; }
  .sidebar { position:static; min-height:auto; }
  .side-nav { grid-template-columns:1fr; }
  .topbar { align-items:flex-start; flex-direction:column; }
  .topbar-actions { justify-content:flex-start; }
}
