/* === Footer fixed at bottom (patch) === */
:root{
  --footer-h: 48px;
}

/* Existing tokens/colors retained by previous patches ... */
/* We only include the footer + layout parts likely to change; this file is intended
   to REPLACE your current assets/css/app.css. If you'd prefer a minimal add-on,
   copy the `.site-footer` and `body` rules into your existing CSS instead. */

/* Base (copy from previous version essentials) */
:root{
  --blue:#3b82f6; --blue-600:#2563eb; --silver:#cbd5e1;
  --dark:#0b0b0e; --dark-2:#14161a; --border:#263043; --muted:#9ca3af;
  --bg:#ffffff; --text:#111827; --card:#ffffff; --card-border:#e2e8f0; --input:#ffffff; --input-border:#cbd5e1;
}
html[data-theme="dark"]{
  color-scheme: dark;
  --bg:#0b0b0e; --text:#e5e7eb; --card:#111827; --card-border:#334155; --input:#0f172a; --input-border:#374151;
}
*{box-sizing:border-box}
body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,'Helvetica Neue',Arial,'Noto Sans',sans-serif;margin:0;background:var(--bg);color:var(--text);
     padding-bottom: calc(var(--footer-h) + 8px); /* prevent content overlap with fixed footer */}
.container{max-width:1180px;margin:0 auto;padding:16px}

/* Cards, buttons, tables */
.card{background:var(--card);border:1px solid var(--card-border);border-radius:12px;padding:16px;margin:16px 0}
.btn{padding:10px 14px;border-radius:10px;border:1px solid var(--blue-600);background:var(--blue-600);color:#fff;display:inline-block;text-decoration:none;cursor:pointer}
.btn:hover{filter:brightness(1.05)}
.btn.outline{background:transparent;color:var(--blue-600)}
.btn.danger{background:#dc2626;border-color:#dc2626}
.btn.muted{background:#334155;border-color:#334155}
.btn.sm{padding:6px 10px;border-radius:8px}
.table{width:100%;border-collapse:separate;border-spacing:0 8px}
.table th,.table td{padding:10px;border-top:1px solid var(--card-border);border-bottom:1px solid var(--card-border);background:var(--card);color:var(--text)}
.form-card label{display:block;margin:10px 0;color:var(--text)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
input,select,textarea{width:100%;padding:10px;border-radius:8px;border:1px solid var(--input-border);background:var(--input);color:var(--text)}

/* Header/nav (retain dark top bar) */
.site-header.nav-dark{position:sticky;top:0;z-index:50;background:var(--dark);border-bottom:1px solid var(--border);color:#fff}
.nav-wrap{display:flex;align-items:center;justify-content:space-between}
.brand{font-weight:700;font-size:1.1rem;color:#fff;text-decoration:none;padding:8px 0}
.nav-burger{display:none;background:transparent;border:0;cursor:pointer;padding:8px;margin-left:auto}
.nav-burger span{display:block;width:22px;height:2px;background:#e5e7eb;margin:4px 0;border-radius:2px}
.top-nav{display:flex;align-items:center;gap:16px}
.top-nav .nav-root{list-style:none;margin:0;padding:0;display:flex;gap:8px;align-items:center}
.nav-item{position:relative}
.nav-btn,.nav-link{display:inline-flex;align-items:center;gap:8px;background:#1f2937;border:1px solid #334155;color:#e5e7eb;padding:8px 12px;border-radius:10px;text-decoration:none;cursor:pointer;min-height:36px}
.nav-link.strong{background:var(--blue-600);border-color:var(--blue-600)}
.nav-btn:hover,.nav-link:hover{filter:brightness(1.1)}
.has-sub .nav-sub{position:absolute;top:44px;left:0;background:#0f172a;border:1px solid #334155;border-radius:12px;padding:8px;display:none;min-width:220px;box-shadow:0 8px 24px rgba(0,0,0,.3)}
.has-sub.open .nav-sub{display:block}
.nav-sub .nav-link{display:block;width:100%;margin:4px 0;background:#111827;border-color:#374151}
.user-label .user-chip{display:inline-flex;align-items:center;padding:8px 12px;border-radius:9999px;background:#0f172a;border:1px solid #334155;color:#e5e7eb}

/* === Fixed footer at bottom === */
.site-footer{
  position:fixed; left:0; right:0; bottom:0;
  height:var(--footer-h);
  background:#0f172a; color:#e5e7eb; border-top:1px solid #222;
  z-index:49;
}
.site-footer .container{
  height:100%;
  display:flex; align-items:center; justify-content:center;
  padding:0 16px;
}

/* Responsive */
@media (max-width: 860px){
  .nav-burger{display:inline-block}
  .top-nav{position:absolute;left:0;right:0;top:60px;background:#14161a;border-bottom:1px solid var(--border);padding:12px;display:none;flex-direction:column;gap:12px}
  .top-nav[data-open="true"]{display:flex}
  .top-nav .nav-root{flex-direction:column;align-items:flex-start}
  .has-sub .nav-sub{position:relative;top:0;left:0;box-shadow:none}
}

/* Force left alignment for table headers & cells */
.table th, .table td { text-align: left; }


/* === Layout tuning (font size, width, spacing) === */
body{
  font-size: 0.9rem; /* slightly smaller, tighter overall text */
}
.container{
  max-width: 1360px; /* widen content area a bit more */
}
.card + .card{
  margin-top: 28px; /* more breathing room between stacked cards */
}
/* Utility for vertical spacing between sections inside a card */
.section-block + .section-block{
  margin-top: 20px;
}

/* File category blocks (client & FSP) */
.file-category-block{
  padding-top: 10px;
  margin-top: 10px;
  border-top: 1px solid var(--card-border);
}
.file-category-block:first-of-type{
  border-top: none;
  margin-top: 0;
}
.file-category-block h4{
  margin: 0 0 6px;
}
.file-category-files{
  margin: 0 0 8px;
  padding-left: 16px;
}
.file-category-files li{
  margin-bottom: 4px;
}

