/* Oak & Ember Catering — Main Styles */
@import url('./variables.css');

*, *::before, *::after { box-sizing:border-box; margin:0; padding:0; }

html { font-size:16px; scroll-behavior:smooth; }
body {
  font-family:var(--font-body); background:var(--bg-deepest); color:var(--text-primary);
  line-height:1.6; overflow-x:hidden; min-height:100vh;
}

/* ── Scrollbar ─────────────────────────────── */
::-webkit-scrollbar { width:6px; height:6px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:var(--smoke-600); border-radius:var(--radius-full); }
::-webkit-scrollbar-thumb:hover { background:var(--smoke-500); }

/* ── Layout ────────────────────────────────── */
.app-layout { display:flex; min-height:100vh; }

/* Sidebar */
.sidebar {
  width:var(--sidebar-width); background:var(--bg-deep); border-right:var(--border-subtle);
  display:flex; flex-direction:column; position:fixed; top:0; left:0; bottom:0; z-index:100;
  transition:transform var(--duration-base) var(--ease-out);
}
.sidebar-header {
  padding:var(--space-5) var(--space-5); display:flex; align-items:center; gap:var(--space-3);
  border-bottom:var(--border-subtle);
}
.sidebar-logo {
  width:40px; height:40px; border-radius:var(--radius-md);
  background:linear-gradient(135deg, var(--flame-500), var(--flame-700));
  display:flex; align-items:center; justify-content:center; font-size:1.4rem;
  box-shadow:var(--shadow-glow);
}
.sidebar-brand { font-family:var(--font-display); font-size:var(--text-lg); font-weight:700; color:var(--text-primary); }
.sidebar-brand span { color:var(--flame-400); }

.sidebar-nav { flex:1; overflow-y:auto; padding:var(--space-3) var(--space-3); }
.nav-group { margin-bottom:var(--space-4); }
.nav-group-label {
  font-size:var(--text-xs); font-weight:600; text-transform:uppercase; letter-spacing:0.08em;
  color:var(--text-muted); padding:var(--space-2) var(--space-3); margin-bottom:var(--space-1);
}
.nav-item {
  display:flex; align-items:center; gap:var(--space-3); padding:var(--space-2) var(--space-3);
  border-radius:var(--radius-md); color:var(--text-secondary); font-size:var(--text-sm);
  font-weight:500; cursor:pointer; border:none; background:none; width:100%; text-align:left;
  transition:all var(--duration-fast) var(--ease-out); position:relative;
}
.nav-item:hover { background:var(--bg-hover); color:var(--text-primary); }
.nav-item.active {
  background:rgba(255,122,26,0.12); color:var(--flame-400); font-weight:600;
}
.nav-item.active::before {
  content:''; position:absolute; left:0; top:50%; transform:translateY(-50%);
  width:3px; height:60%; background:var(--flame-500); border-radius:var(--radius-full);
}
.nav-icon { font-size:1.1rem; width:24px; text-align:center; flex-shrink:0; }
.nav-badge {
  margin-left:auto; background:var(--danger); color:white; font-size:var(--text-xs);
  padding:1px 7px; border-radius:var(--radius-full); font-weight:600;
}

/* Main Content */
.main-content {
  /* min-width:0 is required on a flex child whose content includes a wide block
     (e.g. data tables) — without it the flex item refuses to shrink and pushes
     the whole layout past the viewport edge, defeating .table-wrapper's overflow-x. */
  flex:1; min-width:0; margin-left:var(--sidebar-width); display:flex; flex-direction:column; min-height:100vh;
}

/* Header */
.app-header {
  height:var(--header-height); background:var(--bg-deep); border-bottom:var(--border-subtle);
  display:flex; align-items:center; padding:0 var(--space-6); gap:var(--space-4);
  position:sticky; top:0; z-index:50; backdrop-filter:blur(12px);
}
.menu-toggle {
  display:none; background:none; border:none; color:var(--text-primary); font-size:1.4rem;
  cursor:pointer; padding:var(--space-2);
}
.header-search {
  flex:1; max-width:400px; position:relative;
}
.header-search input {
  width:100%; padding:var(--space-2) var(--space-3) var(--space-2) 36px;
  background:var(--bg-surface); border:var(--border-subtle); border-radius:var(--radius-md);
  color:var(--text-primary); font-size:var(--text-sm); outline:none;
  transition:border-color var(--duration-fast);
}
.header-search input:focus { border-color:var(--flame-500); }
.header-search input::placeholder { color:var(--text-muted); }
.header-search .search-icon {
  position:absolute; left:10px; top:50%; transform:translateY(-50%); color:var(--text-muted);
  font-size:var(--text-base); pointer-events:none;
}
.search-results {
  position:absolute; top:calc(100% + 4px); left:0; right:0; max-height:60vh; overflow-y:auto;
  background:var(--bg-surface); border:var(--border-subtle); border-radius:var(--radius-md);
  box-shadow:var(--shadow-lg, 0 8px 24px rgba(0,0,0,.4)); z-index:60; display:none;
}
.search-results.open { display:block; }
.search-results-group { padding:var(--space-2) 0; border-bottom:var(--border-subtle); }
.search-results-group:last-child { border-bottom:none; }
.search-results-label {
  font-size:var(--text-xs); font-weight:600; text-transform:uppercase; letter-spacing:0.08em;
  color:var(--text-muted); padding:var(--space-1) var(--space-3);
}
.search-result-item {
  display:flex; align-items:center; gap:var(--space-2); padding:var(--space-2) var(--space-3);
  cursor:pointer; color:var(--text-primary); font-size:var(--text-sm);
  border:none; background:none; width:100%; text-align:left;
}
.search-result-item:hover, .search-result-item.active { background:var(--bg-elevated, rgba(255,255,255,.04)); }
.search-result-icon { font-size:var(--text-base); flex:0 0 auto; }
.search-result-meta { color:var(--text-muted); font-size:var(--text-xs); margin-left:auto; }
.search-results-empty { padding:var(--space-3); color:var(--text-muted); font-size:var(--text-sm); text-align:center; }
.header-right { display:flex; align-items:center; gap:var(--space-3); margin-left:auto; }
.header-time { font-size:var(--text-sm); color:var(--text-secondary); }

/* Page Container */
.page-container { padding:var(--space-6); max-width:var(--content-max); width:100%; }

/* ── Page Sections ─────────────────────────── */
.page { display:none; animation:fadeIn var(--duration-base) var(--ease-out); }
.page.active { display:block; }
@keyframes fadeIn { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:translateY(0)} }

.page-header { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:var(--space-6); flex-wrap:wrap; gap:var(--space-4); }
.page-header h1 { font-family:var(--font-display); font-size:var(--text-3xl); font-weight:700; }
.page-header p { color:var(--text-secondary); font-size:var(--text-sm); margin-top:var(--space-1); }
.page-actions { display:flex; gap:var(--space-3); align-items:center; }

/* ── Stats Grid ────────────────────────────── */
.stats-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:var(--space-4); margin-bottom:var(--space-6); }
.stat-card {
  background:var(--bg-raised); border:var(--border-subtle); border-radius:var(--radius-lg);
  padding:var(--space-5); position:relative; overflow:hidden;
  transition:transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast);
}
.stat-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-md); }
.stat-card::after {
  content:''; position:absolute; top:0; right:0; width:80px; height:80px;
  border-radius:50%; filter:blur(40px); opacity:0.15; pointer-events:none;
}
.stat-card.flame::after { background:var(--flame-500); }
.stat-card.ember::after { background:var(--ember-400); }
.stat-card.success::after { background:var(--success); }
.stat-card.danger::after { background:var(--danger); }
.stat-card.info::after { background:var(--info); }
.stat-label { font-size:var(--text-sm); color:var(--text-secondary); font-weight:500; margin-bottom:var(--space-1); }
.stat-value { font-family:var(--font-display); font-size:var(--text-2xl); font-weight:700; }
.stat-sub { font-size:var(--text-xs); color:var(--text-muted); margin-top:var(--space-1); }
.stat-icon { font-size:1.8rem; position:absolute; top:var(--space-4); right:var(--space-4); opacity:0.3; }

/* ── Cards ─────────────────────────────────── */
.card {
  background:var(--bg-raised); border:var(--border-subtle); border-radius:var(--radius-lg);
  overflow:hidden;
}
.card-header {
  display:flex; align-items:center; justify-content:space-between; padding:var(--space-4) var(--space-5);
  border-bottom:var(--border-subtle);
}
.card-title { font-family:var(--font-display); font-size:var(--text-md); font-weight:600; }
.card-body { padding:var(--space-5); }
.card-footer { padding:var(--space-3) var(--space-5); border-top:var(--border-subtle); background:var(--bg-deep); }

/* ── Tables ────────────────────────────────── */
.table-wrapper { overflow-x:auto; max-width:100%; }
table { width:100%; border-collapse:collapse; font-size:var(--text-sm); }

/* Sticky-right action column — applied via .sticky-actions on the table.
   Keeps Edit/Del/View buttons reachable when the table is wider than the viewport. */
table.sticky-actions thead th:last-child,
table.sticky-actions tbody td:last-child,
table.sticky-actions tfoot td:last-child {
  position:sticky; right:0;
  background:var(--bg-raised);
  box-shadow:-4px 0 8px -4px rgba(0,0,0,0.4);
}
table.sticky-actions thead th:last-child { background:var(--bg-surface); }
thead th {
  text-align:left; padding:var(--space-3) var(--space-4); background:var(--bg-surface);
  color:var(--text-secondary); font-weight:600; font-size:var(--text-xs);
  text-transform:uppercase; letter-spacing:0.05em; white-space:nowrap;
  border-bottom:var(--border-medium); position:sticky; top:0; z-index:5;
  cursor:pointer; user-select:none;
}
thead th:hover { color:var(--text-primary); }
tbody td {
  padding:var(--space-3) var(--space-4); border-bottom:var(--border-subtle);
  vertical-align:middle; white-space:nowrap;
}
tbody tr { transition:background var(--duration-fast); }
tbody tr:hover { background:var(--bg-hover); }

/* ── Buttons ───────────────────────────────── */
.btn {
  display:inline-flex; align-items:center; gap:var(--space-2); padding:var(--space-2) var(--space-4);
  border-radius:var(--radius-md); font-size:var(--text-sm); font-weight:600; cursor:pointer;
  border:none; transition:all var(--duration-fast) var(--ease-out); font-family:var(--font-body);
  white-space:nowrap;
}
.btn-primary {
  background:linear-gradient(135deg, var(--flame-500), var(--flame-600));
  color:white; box-shadow:0 2px 8px rgba(255,122,26,0.3);
}
.btn-primary:hover { box-shadow:0 4px 16px rgba(255,122,26,0.4); transform:translateY(-1px); }
.btn-secondary { background:var(--bg-surface); color:var(--text-primary); border:var(--border-light); }
.btn-secondary:hover { background:var(--bg-hover); }
.btn-danger { background:var(--danger-bg); color:var(--danger); }
.btn-danger:hover { background:rgba(248,113,113,0.2); }
.btn-success { background:var(--success-bg); color:var(--success); }
.btn-sm { padding:var(--space-1) var(--space-3); font-size:var(--text-xs); }
.btn-icon { padding:var(--space-2); aspect-ratio:1; justify-content:center; }

/* ── Forms ─────────────────────────────────── */
.form-group { margin-bottom:var(--space-4); }
.form-label {
  display:block; font-size:var(--text-sm); font-weight:500; color:var(--text-secondary);
  margin-bottom:var(--space-2);
}
.form-input, .form-select, .form-textarea {
  width:100%; padding:var(--space-2) var(--space-3); background:var(--bg-surface);
  border:var(--border-subtle); border-radius:var(--radius-md); color:var(--text-primary);
  font-size:var(--text-sm); font-family:var(--font-body); outline:none;
  transition:border-color var(--duration-fast);
}
.form-input:focus, .form-select:focus, .form-textarea:focus { border-color:var(--flame-500); }
.form-select { appearance:none; cursor:pointer; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:var(--space-4); }
.form-row-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:var(--space-4); }

/* ── Modal ─────────────────────────────────── */
.modal-overlay {
  position:fixed; inset:0; background:rgba(0,0,0,0.6); backdrop-filter:blur(4px);
  display:flex; align-items:center; justify-content:center; z-index:200;
  opacity:0; pointer-events:none; transition:opacity var(--duration-base);
}
.modal-overlay.active { opacity:1; pointer-events:all; }
.modal {
  background:var(--bg-raised); border:var(--border-light); border-radius:var(--radius-xl);
  width:90%; max-width:600px; max-height:85vh;
  display:flex; flex-direction:column; overflow:hidden;
  box-shadow:var(--shadow-xl); transform:scale(0.95) translateY(10px);
  transition:transform var(--duration-base) var(--ease-out);
}
.modal.wide { max-width:1200px; }
.modal-overlay.active .modal { transform:scale(1) translateY(0); }
.modal-header {
  display:flex; align-items:center; justify-content:space-between; padding:var(--space-5);
  border-bottom:var(--border-subtle); flex:0 0 auto;
}
.modal-title { font-family:var(--font-display); font-size:var(--text-xl); font-weight:700; }
.modal-close {
  background:none; border:none; color:var(--text-muted); font-size:1.4rem; cursor:pointer;
  padding:var(--space-1); border-radius:var(--radius-sm); transition:color var(--duration-fast);
}
.modal-close:hover { color:var(--text-primary); }
.modal-body { padding:var(--space-5); overflow-y:auto; flex:1 1 auto; min-height:0; }
.modal-footer {
  display:flex; justify-content:flex-end; gap:var(--space-3); padding:var(--space-4) var(--space-5);
  border-top:var(--border-subtle); flex:0 0 auto;
}

/* ── Badges ────────────────────────────────── */
.badge {
  display:inline-flex; align-items:center; padding:2px 10px; border-radius:var(--radius-full);
  font-size:var(--text-xs); font-weight:600; white-space:nowrap;
}
.badge-success { background:var(--success-bg); color:var(--success); }
.badge-warning { background:var(--warning-bg); color:var(--warning); }
.badge-danger { background:var(--danger-bg); color:var(--danger); }
.badge-info { background:var(--info-bg); color:var(--info); }
.badge-neutral { background:var(--bg-surface); color:var(--text-secondary); }

/* ── Filter Tabs ───────────────────────────── */
.filter-bar { display:flex; gap:var(--space-2); margin-bottom:var(--space-4); flex-wrap:wrap; align-items:center; }
.filter-tab {
  padding:var(--space-2) var(--space-3); border-radius:var(--radius-md); font-size:var(--text-xs);
  font-weight:600; cursor:pointer; background:var(--bg-surface); color:var(--text-secondary);
  border:var(--border-subtle); transition:all var(--duration-fast); text-transform:uppercase;
  letter-spacing:0.04em;
}
.filter-tab:hover { color:var(--text-primary); background:var(--bg-hover); }
.filter-tab.active { background:rgba(255,122,26,0.15); color:var(--flame-400); border-color:rgba(255,122,26,0.3); }
.filter-search {
  margin-left:auto; padding:var(--space-2) var(--space-3); background:var(--bg-surface);
  border:var(--border-subtle); border-radius:var(--radius-md); color:var(--text-primary);
  font-size:var(--text-sm); outline:none; min-width:200px;
}
.filter-search:focus { border-color:var(--flame-500); }

/* ── Empty State ───────────────────────────── */
.empty-state {
  text-align:center; padding:var(--space-12) var(--space-6); color:var(--text-muted);
}
.empty-state .empty-icon { font-size:3rem; margin-bottom:var(--space-4); opacity:0.4; }
.empty-state p { font-size:var(--text-sm); }

/* ── Toast ─────────────────────────────────── */
.toast-container {
  position:fixed; bottom:var(--space-6); right:var(--space-6); z-index:300;
  display:flex; flex-direction:column-reverse; gap:var(--space-3);
}
.toast {
  background:var(--bg-raised); border:var(--border-light); border-radius:var(--radius-md);
  padding:var(--space-3) var(--space-5); box-shadow:var(--shadow-lg); display:flex;
  align-items:center; gap:var(--space-3); font-size:var(--text-sm); min-width:280px;
  animation:slideIn var(--duration-base) var(--ease-out);
  border-left:3px solid var(--flame-500);
}
.toast.success { border-left-color:var(--success); }
.toast.error { border-left-color:var(--danger); }
@keyframes slideIn { from{transform:translateX(100%);opacity:0} to{transform:translateX(0);opacity:1} }

/* ── Activity Feed ─────────────────────────── */
.activity-item {
  display:flex; gap:var(--space-3); padding:var(--space-3) 0; border-bottom:var(--border-subtle);
}
.activity-item:last-child { border-bottom:none; }
.activity-dot { width:8px; height:8px; border-radius:50%; margin-top:6px; flex-shrink:0; }
.activity-text { font-size:var(--text-sm); color:var(--text-secondary); }
.activity-time { font-size:var(--text-xs); color:var(--text-muted); margin-top:2px; }

/* ── Responsive ────────────────────────────── */
@media(max-width:768px) {
  .sidebar { transform:translateX(-100%); }
  .sidebar.open { transform:translateX(0); }
  .main-content { margin-left:0; }
  .menu-toggle { display:block; }
  .page-container { padding:var(--space-4); }
  .form-row, .form-row-3 { grid-template-columns:1fr; }
  .stats-grid { grid-template-columns:1fr 1fr; }
  .page-header { flex-direction:column; }
}
@media(max-width:480px) { .stats-grid { grid-template-columns:1fr; } }

