:root { --ink:#18312d; --muted:#667771; --line:#dbe5e1; --canvas:#f5f8f6; --surface:#fff; --green:#166150; --green-dark:#10493d; --mint:#dff3e9; --red:#b64640; --amber:#a76817; --blue:#286d9b; }
* { box-sizing:border-box; }
body { margin:0; min-width:320px; background:var(--canvas); color:var(--ink); font-family:"DM Sans",sans-serif; }
button,input { font:inherit; } button { cursor:pointer; } [hidden] { display:none !important; } .app-shell { min-height:100vh; }
.login-view { min-height:100vh; display:grid; place-items:center; padding:24px; background:linear-gradient(135deg,#f2f7f2 0%,#e1f0e8 100%); }
.login-panel { width:min(100%,440px); padding:42px; background:var(--surface); border:1px solid #d7e7df; border-radius:8px; box-shadow:0 20px 60px rgba(21,61,50,.12); }
.brand-mark { width:48px; height:48px; display:grid; place-items:center; border-radius:8px; color:#fff; background:var(--green); }.brand-mark.small { width:34px;height:34px; }.brand-mark svg { width:24px; }.brand-mark.small svg { width:18px; }
.eyebrow { margin:22px 0 4px; color:var(--green); font-size:12px; font-weight:700; letter-spacing:0; text-transform:uppercase; }.topbar .eyebrow { margin:0 0 2px; }
h1,h2,h3,p { margin-top:0; } h1,h2,h3 { font-family:Manrope,sans-serif; letter-spacing:0; } h1 { font-size:30px; margin-bottom:10px; } h2 { font-size:22px; margin-bottom:0; } h3 { font-size:15px; margin-bottom:0; }.login-copy { color:var(--muted); line-height:1.55; margin-bottom:28px; }
.login-form { display:grid; gap:18px; }.login-form label { display:grid; gap:7px; color:#3c504a; font-size:13px; font-weight:700; }.input-wrap { position:relative; display:flex; align-items:center; }.input-wrap > svg { position:absolute; left:13px; width:18px; color:#81918b; }.input-wrap input { width:100%; min-height:46px; padding:0 42px; border:1px solid #cddbd5; border-radius:6px; outline:0; color:var(--ink); }.input-wrap input:focus { border-color:var(--green); box-shadow:0 0 0 3px rgba(22,97,80,.12); }.input-action { position:absolute; right:6px; }
.primary-button { min-height:46px; padding:0 16px; display:inline-flex; align-items:center; justify-content:center; gap:9px; color:#fff; background:var(--green); border:1px solid var(--green); border-radius:6px; font-weight:700; }.primary-button:hover { background:var(--green-dark); }.primary-button:disabled { cursor:wait; opacity:.7; }.primary-button svg { width:18px; }.login-button { width:100%; margin-top:4px; }.form-error { min-height:18px; margin:0; color:var(--red); font-size:13px; }
.admin-view { min-height:100vh; display:grid; grid-template-columns:244px minmax(0,1fr); }.sidebar { position:sticky; top:0; height:100vh; display:flex; flex-direction:column; padding:22px 12px 14px; color:#e8f4ed; background:#153b33; }.sidebar-brand { display:flex; align-items:center; gap:10px; padding:0 10px 28px; font-family:Manrope,sans-serif; font-size:20px; font-weight:800; }.nav-list { display:grid; gap:3px; }.nav-item { min-height:43px; display:flex; align-items:center; gap:13px; padding:0 12px; border:0; border-radius:6px; color:#c2d5cc; background:transparent; text-align:left; font-size:14px; font-weight:600; }.nav-item:hover { color:#fff; background:rgba(255,255,255,.08); }.nav-item.active { color:#fff; background:#23735f; }.nav-item svg { width:18px; height:18px; }.sidebar-user { display:flex; align-items:center; gap:9px; margin-top:auto; padding:14px 8px 0; border-top:1px solid rgba(255,255,255,.13); }.sidebar-user > div:nth-child(2) { min-width:0; flex:1; display:grid; gap:2px; }.sidebar-user strong { color:#fff; font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.sidebar-user span { color:#aac3b8; font-size:11px; }.avatar { width:32px; height:32px; flex:0 0 32px; display:grid; place-items:center; border-radius:50%; color:#153b33; background:#b9e6d3; font-size:12px; font-weight:800; }
.workspace { min-width:0; }.topbar { min-height:78px; display:flex; align-items:center; justify-content:space-between; gap:18px; padding:14px 32px; border-bottom:1px solid var(--line); background:rgba(255,255,255,.88); }.top-actions { display:flex; align-items:center; gap:10px; }.sync-status { display:flex; align-items:center; gap:6px; color:var(--muted); font-size:12px; }.sync-status svg { width:14px; color:var(--green); }.icon-button { width:36px; height:36px; display:inline-grid; place-items:center; flex:0 0 36px; border:0; border-radius:6px; color:inherit; background:transparent; }.icon-button:hover { background:rgba(22,97,80,.1); }.icon-button svg { width:18px; }.sidebar .icon-button { color:#b9d2c7; }.mobile-only { display:none; }.content { padding:28px 32px 46px; }.app-error { margin:16px 32px 0; padding:11px 14px; border-left:3px solid var(--red); color:#812c28; background:#fae8e7; font-size:13px; }
.toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; }.toolbar-copy p { margin:5px 0 0; color:var(--muted); font-size:13px; }.toolbar-actions { display:flex; align-items:center; gap:9px; }.search { min-width:260px; height:38px; display:flex; align-items:center; gap:8px; padding:0 11px; border:1px solid var(--line); border-radius:6px; background:#fff; }.search svg { width:16px;color:var(--muted); }.search input { min-width:0; flex:1; border:0; outline:0; color:var(--ink); }.secondary-button { height:38px; display:inline-flex; align-items:center; gap:7px; padding:0 12px; border:1px solid var(--line); border-radius:6px; color:#305149; background:#fff; font-size:13px; font-weight:700; }.secondary-button:hover { border-color:#9db6ac; background:#f5faf7; }.secondary-button svg { width:16px; }
.metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:22px; }.metric { min-height:118px; padding:17px; border:1px solid var(--line); border-radius:7px; background:var(--surface); }.metric .metric-icon { width:31px;height:31px;display:grid;place-items:center;border-radius:6px;margin-bottom:15px; background:var(--mint); color:var(--green); }.metric:nth-child(2) .metric-icon { color:var(--blue);background:#e1f1f9; }.metric:nth-child(3) .metric-icon { color:var(--amber);background:#f9eddc; }.metric:nth-child(4) .metric-icon { color:var(--red);background:#f8e2e1; }.metric svg { width:17px; }.metric .label { color:var(--muted);font-size:12px; }.metric strong { display:block; margin-top:5px; font-family:Manrope,sans-serif; font-size:23px;letter-spacing:0; }.metric .detail { display:block; margin-top:4px; color:#7a8c85;font-size:11px; }
.data-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr); gap:18px; }.panel { overflow:hidden; border:1px solid var(--line); border-radius:7px; background:var(--surface); }.panel-head { display:flex; justify-content:space-between; align-items:center; gap:12px; min-height:57px; padding:0 17px; border-bottom:1px solid var(--line); }.panel-head span { color:var(--muted); font-size:12px; }.panel-body { padding:8px 17px 14px; }.simple-list { list-style:none; margin:0; padding:0; }.simple-list li { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid #edf1ef; }.simple-list li:last-child { border-bottom:0; }.list-main { min-width:0; display:grid; gap:3px; }.list-main strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; }.list-main span { color:var(--muted); font-size:12px; }.list-value { flex:0 0 auto; color:var(--green-dark); font-size:13px; font-weight:700; text-align:right; }.bar-row { display:grid; grid-template-columns:72px 1fr 58px; gap:10px; align-items:center; margin:13px 0; font-size:12px; }.bar-track { height:7px; overflow:hidden; border-radius:10px; background:#edf2ef; }.bar-fill { height:100%; border-radius:inherit; background:#2f8872; }.empty { padding:25px 5px; color:var(--muted); text-align:center; font-size:13px; }
.table-panel { overflow:auto; border:1px solid var(--line); border-radius:7px; background:#fff; }.data-table { width:100%; min-width:760px; border-collapse:collapse; text-align:left; }.data-table th { padding:12px 15px; color:#73827d; background:#fafcfb; border-bottom:1px solid var(--line); font-size:11px; font-weight:700; text-transform:uppercase; }.data-table td { padding:13px 15px; border-bottom:1px solid #edf1ef; color:#334a43; font-size:13px; vertical-align:middle; }.data-table tr:last-child td { border-bottom:0; }.data-table tbody tr:hover { background:#f8fbf9; }.cell-title { display:grid; gap:3px; }.cell-title strong { color:var(--ink); font-size:13px; }.cell-title span { color:var(--muted); font-size:12px; }.amount { color:var(--green-dark); font-weight:700; white-space:nowrap; }.muted { color:var(--muted); }.badge { display:inline-flex; align-items:center; min-height:23px; padding:0 8px; border-radius:999px; font-size:11px; font-weight:700; white-space:nowrap; }.badge.cash,.badge.active,.badge.complete { color:#166150;background:#dff3e9; }.badge.upi,.badge.admin { color:#23638b;background:#e2f1f9; }.badge.pending,.badge.inactive,.badge.open { color:#9b5b11;background:#fbedd9; }.badge.staff { color:#695020;background:#f4ecd2; }.badge.negative { color:#a53f39;background:#f8e2e1; }.table-note { padding:12px 15px; color:var(--muted); border-top:1px solid var(--line); font-size:12px; }
.filter-row { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }.filter-button { height:32px; padding:0 11px; border:1px solid var(--line); border-radius:6px; color:#587069; background:#fff; font-size:12px; font-weight:700; }.filter-button.active,.filter-button:hover { color:#fff; border-color:var(--green); background:var(--green); }.section-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-bottom:18px; }.mini-stat { padding:16px; border:1px solid var(--line); border-radius:7px; background:#fff; }.mini-stat span { color:var(--muted);font-size:12px; }.mini-stat strong { display:block;margin-top:5px;font-family:Manrope,sans-serif;font-size:20px; }.toast { position:fixed; right:20px; bottom:20px; z-index:20; max-width:300px; padding:11px 14px; border-radius:6px; color:#fff; background:#18312d; box-shadow:0 12px 32px rgba(0,0,0,.18); font-size:13px; opacity:0; transform:translateY(10px); pointer-events:none; transition:.2s; }.toast.show { opacity:1;transform:translateY(0); }
.dashboard-controls { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; margin-bottom:20px; }.dashboard-controls .filter-row { margin:0; }.toggle-row { display:flex; align-items:center; gap:10px; color:#435951; font-size:13px; font-weight:700; }.switch { position:relative; width:38px; height:22px; }.switch input { position:absolute; opacity:0; }.switch span { position:absolute; inset:0; border-radius:99px; background:#b6c6bf; transition:.18s; }.switch span::after { content:""; position:absolute; top:3px; left:3px; width:16px; height:16px; border-radius:50%; background:#fff; transition:.18s; }.switch input:checked + span { background:var(--green); }.switch input:checked + span::after { transform:translateX(16px); }.date-range { display:flex; align-items:center; gap:10px; width:100%; color:var(--muted); font-size:12px; font-weight:700; }.date-range label { display:flex; align-items:center; gap:6px; }.date-range input { height:34px; padding:0 8px; border:1px solid var(--line); border-radius:6px; color:var(--ink); background:#fff; }.overview-section { margin:0 0 22px; }.section-label { margin:0 0 10px; color:#60746c; font-size:12px; font-weight:700; text-transform:uppercase; }.metrics.compact { grid-template-columns:repeat(4,minmax(0,1fr)); }.metrics.compact .metric { min-height:104px; }.metrics.compact .metric .metric-icon { margin-bottom:10px; }.metrics.compact .metric strong { font-size:20px; }.overview-grid { margin-bottom:22px; }
.inventory-stats { margin-bottom:18px; }.inventory-form-panel { margin-bottom:18px; overflow:hidden; border:1px solid var(--line); border-radius:7px; background:#fff; }.inventory-form { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; padding:18px; }.inventory-form label { display:grid; gap:6px; color:#51665e; font-size:12px; font-weight:700; }.inventory-form input,.inventory-form select,.inventory-form textarea { width:100%; min-height:38px; padding:8px 10px; border:1px solid #cddbd5; border-radius:6px; outline:0; color:var(--ink); background:#fff; }.inventory-form textarea { resize:vertical; min-height:64px; }.inventory-form input:focus,.inventory-form select:focus,.inventory-form textarea:focus { border-color:var(--green); box-shadow:0 0 0 3px rgba(22,97,80,.12); }.form-wide { grid-column:1 / -1; }.form-actions { display:flex !important; justify-content:flex-end; align-items:center; gap:9px; }.row-actions { display:flex; gap:3px; }.danger-action { color:var(--red); }.danger-action:hover { background:#fae8e7; }.badge.low-stock { color:#9b5b11; background:#fbedd9; }.badge.out-of-stock { color:#a53f39; background:#f8e2e1; }.badge.in-stock { color:#166150; background:#dff3e9; }
.data-table tbody tr.inventory-row--low-stock td { background:#ffe08a !important; }.data-table tbody tr.inventory-row--low-stock td:first-child { box-shadow:inset 6px 0 #bd7100; }.data-table tbody tr.inventory-row--low-stock:hover td { background:#ffd260 !important; }.data-table tbody tr.inventory-row--out-of-stock td,.data-table tbody tr.inventory-row--expired td { background:#ffc7c2 !important; }.data-table tbody tr.inventory-row--out-of-stock td:first-child,.data-table tbody tr.inventory-row--expired td:first-child { box-shadow:inset 6px 0 #b42318; }.data-table tbody tr.inventory-row--out-of-stock:hover td,.data-table tbody tr.inventory-row--expired:hover td { background:#ffada5 !important; }.data-table tbody tr.inventory-row--expiring td { background:#ffe9ad !important; }.data-table tbody tr.inventory-row--expiring td:first-child { box-shadow:inset 6px 0 #cc8700; }.data-table tbody tr.inventory-row--low-stock .badge.low-stock { color:#713f00 !important; background:#ffc247 !important; }.data-table tbody tr.inventory-row--out-of-stock .badge.out-of-stock,.data-table tbody tr.inventory-row--expired .badge { color:#7f1d1d !important; background:#ff8c82 !important; }.data-table tbody tr.inventory-row--expiring .expiry-note { color:#7a4c00 !important; font-weight:700; }
@media (max-width:1100px) { .metrics,.metrics.compact { grid-template-columns:repeat(2,minmax(0,1fr)); }.data-grid { grid-template-columns:1fr; }.section-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.inventory-form { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:760px) { .admin-view { display:block; }.sidebar { position:fixed; z-index:10; left:0; top:0; width:244px; transform:translateX(-100%); transition:transform .2s; box-shadow:10px 0 25px rgba(14,49,40,.18); }.sidebar.open { transform:translateX(0); }.mobile-only { display:inline-grid; }.topbar { padding:13px 16px; }.topbar > div:first-of-type { flex:1; }.content { padding:20px 16px 36px; }.app-error { margin:14px 16px 0; }.toolbar { align-items:stretch; flex-direction:column; }.toolbar-actions { width:100%; }.search { min-width:0; flex:1; }.metrics,.metrics.compact,.section-grid,.inventory-form { grid-template-columns:1fr; }.dashboard-controls { align-items:flex-start; flex-direction:column; }.date-range { align-items:stretch; flex-direction:column; }.date-range label { justify-content:space-between; }.form-actions { justify-content:stretch; }.form-actions button { flex:1; }.login-panel { padding:30px 24px; }.sync-status { display:none; } }
