/* Restaurant Growth OS - light theme design system */
:root {
  --g-50:#f0faf4; --g-100:#d9f2e3; --g-200:#b3e4c8; --g-500:#2fa464; --g-600:#1f8a52; --g-700:#17703f;
  --o-50:#fff6ec; --o-100:#ffe6c7; --o-500:#f28c28; --o-600:#d97706;
  --ink:#1f2933; --ink-2:#52606d; --ink-3:#7b8794; --line:#e4e9ee; --bg:#f6f8fa; --card:#fff;
  --radius:14px; --shadow:0 1px 2px rgba(16,24,40,.05),0 2px 10px rgba(16,24,40,.05);
  --bs-primary:#1f8a52; --bs-primary-rgb:31,138,82; --bs-link-color:#1f8a52; --bs-link-hover-color:#17703f;
  --bs-body-bg:#f6f8fa; --bs-body-color:#1f2933; --bs-border-radius:.6rem; --bs-body-font-family:'Inter','Segoe UI',system-ui,-apple-system,Roboto,sans-serif;
}
html { color-scheme: light; }
body { background:var(--bg); color:var(--ink); font-size:.94rem; }
a { text-decoration:none; }
.btn-primary { --bs-btn-bg:#1f8a52; --bs-btn-border-color:#1f8a52; --bs-btn-hover-bg:#17703f; --bs-btn-hover-border-color:#17703f; --bs-btn-active-bg:#17703f; --bs-btn-disabled-bg:#1f8a52; --bs-btn-disabled-border-color:#1f8a52; }
.btn-outline-primary { --bs-btn-color:#1f8a52; --bs-btn-border-color:#1f8a52; --bs-btn-hover-bg:#1f8a52; --bs-btn-hover-border-color:#1f8a52; --bs-btn-active-bg:#17703f; }
.btn-accent { background:var(--o-500); border-color:var(--o-500); color:#fff; }
.btn-accent:hover { background:var(--o-600); border-color:var(--o-600); color:#fff; }
.form-control:focus,.form-select:focus { border-color:var(--g-500); box-shadow:0 0 0 .2rem rgba(47,164,100,.18); }
.form-label { font-weight:600; font-size:.82rem; color:var(--ink-2); margin-bottom:.25rem; }
.form-text { font-size:.78rem; }
.text-muted { color:var(--ink-3)!important; }

/* ---------- shell ---------- */
.shell { display:flex; min-height:100vh; }
.sidebar { width:248px; background:#fff; border-right:1px solid var(--line); position:fixed; inset:0 auto 0 0; z-index:1040; display:flex; flex-direction:column; transition:transform .2s; }
.sidebar .brand { padding:18px 20px; display:flex; align-items:center; gap:10px; font-weight:700; font-size:1.05rem; color:var(--ink); border-bottom:1px solid var(--line); }
.brand .logo { width:34px; height:34px; border-radius:10px; background:linear-gradient(135deg,var(--g-500),var(--g-700)); color:#fff; display:grid; place-items:center; font-size:1.1rem; flex:none; }
.sidebar nav { overflow-y:auto; padding:10px 10px 20px; flex:1; }
.nav-group { font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-3); padding:14px 12px 4px; font-weight:700; }
.sidebar a.nav-link { display:flex; align-items:center; gap:10px; padding:8px 12px; border-radius:10px; color:var(--ink-2); font-weight:500; }
.sidebar a.nav-link i { font-size:1.05rem; width:20px; text-align:center; }
.sidebar a.nav-link:hover { background:var(--g-50); color:var(--g-700); }
.sidebar a.nav-link.active { background:var(--g-100); color:var(--g-700); font-weight:600; }
.sidebar a.nav-link.locked { opacity:.55; }
.main { margin-left:248px; flex:1; min-width:0; display:flex; flex-direction:column; }
.topbar { height:58px; background:#fff; border-bottom:1px solid var(--line); display:flex; align-items:center; gap:12px; padding:0 20px; position:sticky; top:0; z-index:1030; }
.content { padding:22px 24px 40px; max-width:1500px; width:100%; }
.page-head { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:10px; margin-bottom:18px; }
.page-head h1 { font-size:1.35rem; font-weight:700; margin:0; }
.page-head .sub { color:var(--ink-3); font-size:.85rem; }
.scrim { display:none; }
@media (max-width: 991px) {
  .sidebar { transform:translateX(-100%); }
  .sidebar.open { transform:none; box-shadow:0 0 40px rgba(0,0,0,.2); }
  .sidebar.open ~ .scrim { display:block; position:fixed; inset:0; background:rgba(15,23,42,.35); z-index:1035; }
  .main { margin-left:0; }
  .content { padding:16px 14px 40px; }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .sidebar { width:72px; }
  .sidebar .brand span, .sidebar a.nav-link span, .nav-group { display:none; }
  .sidebar a.nav-link { justify-content:center; }
  .main { margin-left:72px; }
}

/* ---------- cards & stats ---------- */
.card { border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); background:var(--card); }
.card-header { background:transparent; border-bottom:1px solid var(--line); font-weight:600; padding:.8rem 1.1rem; }
.card-body { padding:1.1rem; }
.stat { padding:16px 18px; }
.stat .label { font-size:.76rem; color:var(--ink-3); font-weight:600; text-transform:uppercase; letter-spacing:.04em; display:flex; align-items:center; gap:6px; }
.stat .value { font-size:1.55rem; font-weight:700; margin-top:4px; line-height:1.15; }
.stat .hint { font-size:.76rem; color:var(--ink-3); margin-top:2px; }
.stat .ico { width:34px; height:34px; border-radius:10px; display:grid; place-items:center; background:var(--g-50); color:var(--g-600); }
.stat.warm .ico { background:var(--o-50); color:var(--o-600); }
.metric-help { cursor:help; color:var(--ink-3); font-size:.8rem; }
.table { --bs-table-bg:transparent; margin-bottom:0; }
.table > :not(caption) > * > * { padding:.65rem .85rem; }
.table thead th { font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-3); font-weight:700; background:#fafbfc; border-bottom:1px solid var(--line); white-space:nowrap; }
.table-hover tbody tr:hover { background:var(--g-50); }
.empty { text-align:center; padding:38px 16px; color:var(--ink-3); }
.empty i { font-size:2.2rem; color:var(--g-200); display:block; margin-bottom:8px; }
.badge { font-weight:600; }
.text-bg-success { background:#dff5e8!important; color:#17703f!important; }
.text-bg-danger { background:#fde4e1!important; color:#b42318!important; }
.text-bg-warning { background:#fff0d6!important; color:#a15c07!important; }
.text-bg-info { background:#e0efff!important; color:#175cd3!important; }
.text-bg-secondary { background:#eceff3!important; color:#52606d!important; }
.chip { display:inline-block; padding:2px 10px; border-radius:999px; background:var(--g-50); color:var(--g-700); font-size:.75rem; font-weight:600; }
.veg-dot { width:14px; height:14px; border:2px solid #1f8a52; display:inline-grid; place-items:center; border-radius:3px; vertical-align:middle; flex:none; }
.veg-dot::after { content:''; width:6px; height:6px; border-radius:50%; background:#1f8a52; }
.veg-dot.nonveg { border-color:#c0392b; } .veg-dot.nonveg::after { background:#c0392b; }
.veg-dot.egg { border-color:#d97706; } .veg-dot.egg::after { background:#d97706; }
.progress { height:8px; border-radius:99px; background:var(--line); }
.progress-bar { background:var(--g-500); }
.flash-wrap { position:fixed; top:68px; right:16px; z-index:2000; width:min(380px,calc(100vw - 32px)); }
.loading { opacity:.6; pointer-events:none; }
.spinner-inline { width:1rem; height:1rem; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; display:inline-block; animation:spin .7s linear infinite; vertical-align:-2px; }
@keyframes spin { to { transform:rotate(360deg); } }
.bar-list .row-item { display:flex; align-items:center; gap:10px; padding:6px 0; font-size:.88rem; }
.bar-list .bar { flex:1; height:8px; background:var(--g-50); border-radius:99px; overflow:hidden; }
.bar-list .bar > i { display:block; height:100%; background:var(--g-500); border-radius:99px; }
.reco { border-left:4px solid var(--o-500); }
.reco.rules { border-left-color:var(--g-500); }

/* ---------- auth ---------- */
.auth-wrap { min-height:100vh; display:grid; place-items:center; padding:24px 14px; background:radial-gradient(900px 400px at 10% -10%,var(--g-100),transparent),radial-gradient(700px 400px at 100% 0,var(--o-100),transparent),var(--bg); }
.auth-card { width:min(440px,100%); background:#fff; border-radius:18px; box-shadow:0 10px 40px rgba(16,24,40,.1); border:1px solid var(--line); padding:30px; }
.auth-card.wide { width:min(720px,100%); }

/* ---------- onboarding ---------- */
.steps { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:18px; }
.steps .s { flex:1; min-width:70px; text-align:center; font-size:.7rem; color:var(--ink-3); }
.steps .s b { display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:var(--line); margin:0 auto 4px; color:var(--ink-2); }
.steps .s.done b { background:var(--g-500); color:#fff; } .steps .s.cur b { background:var(--o-500); color:#fff; }

/* ---------- POS ---------- */
body.pos-body { overflow:hidden; }
.pos { display:grid; grid-template-columns:1fr 410px; height:calc(100vh - 58px); }
.pos-left { display:flex; flex-direction:column; min-width:0; border-right:1px solid var(--line); }
.pos-tools { padding:10px 14px; display:flex; gap:8px; flex-wrap:wrap; background:#fff; border-bottom:1px solid var(--line); }
.pos-cats { display:flex; gap:6px; overflow-x:auto; padding:10px 14px 4px; white-space:nowrap; background:#fff; }
.pos-cats button { border:1px solid var(--line); background:#fff; border-radius:999px; padding:5px 14px; font-size:.84rem; font-weight:600; color:var(--ink-2); }
.pos-cats button.on { background:var(--g-600); color:#fff; border-color:var(--g-600); }
.pos-grid { padding:12px 14px 20px; overflow-y:auto; display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; align-content:start; flex:1; }
.pos-item { background:#fff; border:1px solid var(--line); border-radius:12px; padding:10px; text-align:left; cursor:pointer; position:relative; transition:.12s; min-height:84px; display:flex; flex-direction:column; justify-content:space-between; }
.pos-item:hover { border-color:var(--g-500); box-shadow:0 2px 10px rgba(47,164,100,.15); }
.pos-item .n { font-weight:600; font-size:.88rem; line-height:1.2; }
.pos-item .p { color:var(--g-700); font-weight:700; margin-top:6px; }
.pos-item.off { opacity:.45; pointer-events:none; }
.pos-right { display:flex; flex-direction:column; background:#fff; min-height:0; }
.pos-head { padding:10px 14px; border-bottom:1px solid var(--line); }
.pos-lines { flex:1; overflow-y:auto; padding:6px 14px; }
.line { padding:9px 0; border-bottom:1px dashed var(--line); }
.line .nm { font-weight:600; font-size:.88rem; }
.line .mods { font-size:.76rem; color:var(--ink-3); }
.qty { display:inline-flex; align-items:center; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.qty button { border:0; background:#f3f5f7; width:28px; height:28px; font-weight:700; }
.qty span { min-width:30px; text-align:center; font-weight:600; font-size:.88rem; }
.pos-totals { padding:10px 14px; border-top:1px solid var(--line); background:#fafbfc; font-size:.88rem; }
.pos-totals .t { display:flex; justify-content:space-between; padding:2px 0; }
.pos-totals .grand { font-size:1.25rem; font-weight:800; border-top:1px solid var(--line); margin-top:6px; padding-top:8px; }
.pos-actions { padding:10px 14px 14px; display:grid; grid-template-columns:1fr 1fr; gap:8px; }
@media (max-width: 991px) {
  body.pos-body { overflow:auto; }
  .pos { grid-template-columns:1fr; height:auto; }
  .pos-left { border-right:0; max-height:60vh; }
  .pos-right { position:sticky; bottom:0; max-height:70vh; border-top:2px solid var(--line); }
}

/* ---------- kitchen ---------- */
.kds { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:14px; }
.kot { background:#fff; border:2px solid var(--line); border-radius:14px; overflow:hidden; }
.kot.late { border-color:#e5534b; } .kot.warn { border-color:var(--o-500); }
.kot header { padding:10px 14px; display:flex; justify-content:space-between; align-items:center; background:#fafbfc; border-bottom:1px solid var(--line); }
.kot .k-item { padding:8px 14px; display:flex; gap:10px; align-items:flex-start; border-bottom:1px dashed var(--line); }
.kot .k-item .q { font-weight:800; font-size:1.05rem; min-width:26px; }
.kot .k-note { font-size:.78rem; color:#b45309; background:var(--o-50); padding:2px 8px; border-radius:6px; display:inline-block; margin-top:3px; }

/* ---------- floor ---------- */
.floor { display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); gap:12px; }
.tbl { background:#fff; border:2px solid var(--line); border-radius:14px; padding:12px; text-align:center; cursor:pointer; }
.tbl .nm { font-weight:800; font-size:1.1rem; } .tbl .cap { color:var(--ink-3); font-size:.76rem; }
.tbl.available { border-color:var(--g-200); } .tbl.occupied { border-color:var(--o-500); background:var(--o-50); }
.tbl.reserved { border-color:#7aa7ff; background:#eef4ff; } .tbl.cleaning { border-color:#bbb; background:#f3f4f6; }

/* ---------- public site ---------- */
.pub-hero { background:linear-gradient(135deg,var(--g-700),var(--g-500)); color:#fff; padding:28px 0 70px; position:relative; background-size:cover; background-position:center; }
.pub-hero.has-cover::before { content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,0,0,.25),rgba(0,0,0,.55)); }
.pub-hero .container { position:relative; }
.pub-card { margin-top:-46px; position:relative; }
.pub-logo { width:72px; height:72px; border-radius:18px; background:#fff; object-fit:cover; border:3px solid #fff; box-shadow:var(--shadow); }
.menu-cat-nav { position:sticky; top:0; z-index:20; background:#fff; border-bottom:1px solid var(--line); overflow-x:auto; white-space:nowrap; }
.menu-cat-nav a { display:inline-block; padding:12px 14px; color:var(--ink-2); font-weight:600; font-size:.88rem; }
.menu-cat-nav a.on { color:var(--g-700); border-bottom:3px solid var(--g-600); }
.menu-row { display:flex; gap:14px; padding:14px 0; border-bottom:1px solid var(--line); }
.menu-row img { width:92px; height:92px; object-fit:cover; border-radius:12px; flex:none; background:var(--g-50); }
.menu-row .ph { width:92px; height:92px; border-radius:12px; flex:none; background:var(--g-50); display:grid; place-items:center; color:var(--g-200); font-size:1.8rem; }
.cart-bar { position:fixed; left:0; right:0; bottom:0; z-index:50; padding:10px 14px; background:#fff; border-top:1px solid var(--line); box-shadow:0 -6px 20px rgba(0,0,0,.06); }
.print-only { display:none; }
.receipt { font-family:'Courier New',monospace; font-size:12.5px; width:302px; margin:0 auto; background:#fff; padding:12px; }
.receipt hr { border-top:1px dashed #333; opacity:1; margin:6px 0; }
.receipt .r { display:flex; justify-content:space-between; gap:8px; }
@media print {
  .sidebar,.topbar,.no-print,.flash-wrap,.btn,.scrim { display:none!important; }
  .main { margin:0!important; } .content { padding:0!important; max-width:none!important; }
  body { background:#fff!important; } .card { box-shadow:none; border:0; }
  .print-only { display:block; }
}
