/* =========================================================================
   Mints Recipes — shared design system
   Style: clean SaaS dashboard · teal primary + orange accent · Plus Jakarta Sans
   ========================================================================= */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');

:root{
  /* Brand — teal */
  --brand:#0d9488; --brand-600:#0f766e; --brand-700:#115e56;
  --brand-50:#f0fdfa; --brand-100:#ccfbf1; --brand-300:#5eead4; --brand-400:#2dd4bf;
  /* Accent — orange (used sparingly: emphasis, active markers) */
  --accent:#ea580c; --accent-50:#fff3e0; --accent-700:#c2410c;
  /* Neutrals */
  --bg:#f4f7f7; --surface:#ffffff; --surface-2:#f8fafa;
  --line:#e3e9e8; --line-2:#eef2f2;
  --ink:#132a28; --ink-2:#334b48; --muted:#6b807d;
  /* Feedback */
  --danger:#dc2626; --danger-bg:#fef2f2;
  --info:#1565c0; --info-bg:#e3f2fd;
  --purple:#7b1fa2; --purple-bg:#f3e5f5;
  /* Sidebar (dark teal) */
  --side-bg:#0c2c2a; --side-bg-2:#0a2422; --side-ink:#e7f2f0;
  --side-muted:#93b3ae; --side-hover:rgba(255,255,255,.07); --side-active:rgba(45,212,191,.14);
  /* Shape & motion */
  --r-sm:8px; --r:12px; --r-lg:16px;
  --shadow:0 1px 2px rgba(19,42,40,.04),0 4px 16px rgba(19,42,40,.05);
  --shadow-lg:0 8px 30px rgba(19,42,40,.14);
  --ring:0 0 0 3px rgba(13,148,136,.28);
  --ease:180ms cubic-bezier(.4,0,.2,1);
  /* legacy aliases (so old inline references keep working) */
  --green:var(--brand); --green-d:var(--brand-600); --card:var(--surface); --amber:var(--accent);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:'Plus Jakarta Sans',system-ui,"Segoe UI",Roboto,Arial,sans-serif;
  background:var(--bg);color:var(--ink);font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}

/* ---------- App shell ---------- */
.app-shell{display:flex;min-height:100vh}
.main{flex:1;min-width:0;display:flex;flex-direction:column}

/* ---------- Sidebar ---------- */
.sidebar{width:260px;flex:0 0 260px;background:linear-gradient(180deg,var(--side-bg),var(--side-bg-2));
  color:var(--side-ink);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;
  z-index:60;transition:transform var(--ease)}
.sidebar .brand{display:flex;align-items:center;gap:10px;padding:20px 20px 16px;font-weight:800;
  font-size:19px;letter-spacing:-.01em}
.sidebar .brand .mark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand-400),var(--brand));font-size:18px;
  box-shadow:0 4px 12px rgba(13,148,136,.4)}
.sidebar .nav{display:flex;flex-direction:column;gap:2px;padding:8px 12px;overflow-y:auto;flex:1}
.sidebar .nav-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--side-muted);
  padding:14px 12px 6px;font-weight:700}
.sidebar .nav-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  background:none;border:0;border-radius:var(--r-sm);color:var(--side-muted);
  padding:11px 12px;font:inherit;font-size:14.5px;font-weight:600;cursor:pointer;
  position:relative;transition:background var(--ease),color var(--ease)}
.sidebar .nav-item svg{width:19px;height:19px;flex:0 0 19px;stroke-width:2}
.sidebar .nav-item:hover{background:var(--side-hover);color:#fff}
.sidebar .nav-item.active{background:var(--side-active);color:#fff}
.sidebar .nav-item.active::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;
  width:3px;border-radius:0 3px 3px 0;background:var(--accent)}
.sidebar .side-foot{border-top:1px solid rgba(255,255,255,.08);padding:14px 14px 18px}
.sidebar .user-box{display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--side-ink)}
.sidebar .user-box > span{display:flex;align-items:center;gap:8px;font-weight:700}
.sidebar .user-box a,.sidebar .user-box button{color:var(--side-muted);background:none;border:0;
  cursor:pointer;font:inherit;font-size:13.5px;text-align:left;text-decoration:none;padding:6px 8px;
  border-radius:6px;transition:background var(--ease),color var(--ease)}
.sidebar .user-box a:hover,.sidebar .user-box button:hover{background:var(--side-hover);color:#fff}

/* ---------- Mobile top bar + drawer ---------- */
.topbar{display:none;align-items:center;gap:12px;background:var(--surface);
  border-bottom:1px solid var(--line);padding:12px 16px;position:sticky;top:0;z-index:40}
.topbar .hamburger{display:inline-grid;place-items:center;width:42px;height:42px;border:1px solid var(--line);
  background:var(--surface);border-radius:var(--r-sm);cursor:pointer;color:var(--ink)}
.topbar .hamburger svg{width:22px;height:22px}
.topbar .tb-brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:17px}
.topbar .tb-brand .mark{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand-400),var(--brand));font-size:15px}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(12,44,42,.5);z-index:55;
  opacity:0;transition:opacity var(--ease)}
.sidebar-backdrop.show{display:block;opacity:1}

/* ---------- Content ---------- */
.wrap{width:100%;max-width:1080px;margin:0 auto;padding:26px 24px 60px}
.page-head{margin:2px 0 20px}
.page-head h1{font-size:24px;margin:0;font-weight:800;letter-spacing:-.02em}
.page-head p{margin:4px 0 0;color:var(--muted);font-size:14px}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:22px;margin-bottom:18px;box-shadow:var(--shadow)}
h2{font-size:17px;margin:0 0 14px;font-weight:700;letter-spacing:-.01em}
h3{font-size:14px;margin:18px 0 4px;color:var(--ink);font-weight:700}

/* ---------- Forms ---------- */
label{display:block;font-size:12.5px;color:var(--muted);margin:12px 0 5px;font-weight:600}
input,select,textarea{width:100%;padding:10px 12px;font-size:15px;border:1px solid var(--line);
  border-radius:var(--r-sm);background:var(--surface);font-family:inherit;color:var(--ink);
  transition:border-color var(--ease),box-shadow var(--ease)}
input::placeholder,textarea::placeholder{color:#9aaba8}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}
.row{display:flex;gap:12px;flex-wrap:wrap}
.row > div{flex:1;min-width:130px}

/* ---------- Buttons ---------- */
button{font-family:inherit}
button.primary{background:var(--brand);color:#fff;border:none;padding:11px 20px;font-size:14.5px;
  border-radius:var(--r-sm);cursor:pointer;font-weight:700;transition:background var(--ease),
  transform var(--ease),box-shadow var(--ease);box-shadow:0 1px 2px rgba(13,148,136,.3)}
button.primary:hover{background:var(--brand-600);box-shadow:0 4px 14px rgba(13,148,136,.32)}
button.primary:active{transform:translateY(1px)}
button.ghost{background:var(--surface);border:1px solid var(--line);color:var(--ink-2);padding:9px 15px;
  border-radius:var(--r-sm);cursor:pointer;font-size:14px;font-weight:600;
  transition:background var(--ease),border-color var(--ease)}
button.ghost:hover{background:var(--surface-2);border-color:var(--brand-300)}
button.link{background:none;border:none;color:var(--brand-600);cursor:pointer;font-size:14px;
  font-weight:600;text-decoration:none;padding:4px;border-radius:6px}
button.link:hover{text-decoration:underline}
button.del,button.link.del{color:var(--danger)}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

/* ---------- Tables ---------- */
table{width:100%;border-collapse:collapse;margin-top:8px}
th,td{text-align:left;padding:11px 10px;border-bottom:1px solid var(--line-2);font-size:14px;
  vertical-align:middle}
th{color:var(--muted);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
tbody tr{transition:background var(--ease)}
tbody tr:hover{background:var(--surface-2)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td input{padding:7px 9px;font-size:13px}
.cfg-in{max-width:120px}

/* ---------- Pills ---------- */
.pill{display:inline-block;font-size:11px;padding:3px 9px;border-radius:20px;font-weight:700;
  background:var(--brand-100);color:var(--brand-700);letter-spacing:.01em}
.pill.pack{background:var(--accent-50);color:var(--accent-700)}
.pill.labour{background:var(--info-bg);color:var(--info)}
.pill.overhead{background:var(--purple-bg);color:var(--purple)}
.pill.admin{background:var(--accent-50);color:var(--accent-700)}

/* ---------- Hero cost figure ---------- */
.big-cost{background:linear-gradient(135deg,var(--brand),var(--brand-700));color:#fff;
  border-radius:var(--r-lg);padding:20px 24px;display:flex;justify-content:space-between;
  align-items:center;margin-top:6px;box-shadow:0 8px 24px rgba(13,148,136,.28)}
.big-cost .label{font-size:14px;opacity:.92;font-weight:600}
.big-cost .val{font-size:32px;font-weight:800;letter-spacing:-.02em}

/* ---------- Misc utilities (unchanged names) ---------- */
.muted{color:var(--muted);font-size:13px}
.flex-between{display:flex;justify-content:space-between;align-items:center;gap:12px}
.hidden{display:none!important}
code{background:var(--brand-50);color:var(--brand-700);padding:2px 6px;border-radius:5px;
  font-size:13px;font-family:ui-monospace,Menlo,Consolas,monospace}

/* Product / material line editors */
.item-line{display:flex;gap:8px;align-items:end;margin-bottom:8px}
.item-line select{flex:2}.item-line input{flex:1}.item-line .combo{flex:2}
.item-line select.unit-sel{flex:0 0 78px}
.item-line button{flex:0 0 auto}
.per-unit-chk{display:flex;align-items:center;gap:4px;flex:0 0 auto;margin:0;font-size:13px;
  color:var(--muted);white-space:nowrap;cursor:pointer;padding-bottom:9px}
.per-unit-chk input{width:auto;flex:0 0 auto;margin:0}

/* Sub-tabs (segmented) */
.subtabs{display:flex;gap:4px;margin-top:14px;background:var(--surface-2);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:4px;width:fit-content}
.subtab{background:none;border:none;color:var(--muted);padding:7px 16px;font-size:14px;font-weight:600;
  cursor:pointer;border-radius:6px;transition:background var(--ease),color var(--ease)}
.subtab.active{color:var(--brand-700);background:var(--surface);font-weight:700;
  box-shadow:0 1px 2px rgba(19,42,40,.08)}

.empty{text-align:center;color:var(--muted);padding:40px 20px}
.product-card{cursor:pointer;transition:border-color var(--ease),box-shadow var(--ease),transform var(--ease)}
.product-card:hover{border-color:var(--brand-300);box-shadow:var(--shadow-lg);transform:translateY(-1px)}
.subtotal{display:flex;justify-content:space-between;padding:7px 0;font-size:14px}
.subtotal.total{border-top:2px solid var(--line);margin-top:8px;padding-top:11px;font-weight:800;font-size:16px}

/* Combobox */
.combo{position:relative}
.combo-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-sm);max-height:220px;overflow-y:auto;
  box-shadow:var(--shadow-lg);z-index:20}
.combo-opt{padding:9px 12px;font-size:14px;cursor:pointer}
.combo-opt:hover{background:var(--brand-50)}
.combo-opt.combo-add{color:var(--brand-600);font-weight:700;border-top:1px solid var(--line)}
.combo-opt.muted{cursor:default}
.combo-opt.muted:hover{background:none}

/* Collapsible admin cards */
details.card > summary{cursor:pointer;font-size:16px;font-weight:700;list-style:none;display:flex;
  align-items:center;gap:10px;margin:0}
details.card > summary::-webkit-details-marker{display:none}
details.card > summary::before{content:'';width:8px;height:8px;border-right:2px solid var(--muted);
  border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform var(--ease);margin-right:2px}
details.card[open] > summary::before{transform:rotate(45deg)}
details.card[open] > summary{margin-bottom:16px}

/* Toast */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(8px);
  background:var(--ink);color:#fff;padding:13px 22px;border-radius:var(--r-sm);font-size:14px;
  font-weight:600;opacity:0;transition:opacity var(--ease),transform var(--ease);
  pointer-events:none;z-index:100;box-shadow:var(--shadow-lg)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* Modal */
.modal{position:fixed;inset:0;background:rgba(12,44,42,.45);z-index:80;display:flex;
  align-items:center;justify-content:center;padding:16px}
.modal .card{width:340px;max-width:100%;margin:0;box-shadow:var(--shadow-lg)}

/* Low-scan banner */
.banner-warn{background:var(--accent-50);color:var(--accent-700);border-bottom:1px solid #f5cfa8;
  padding:11px 20px;font-size:14px;font-weight:600;text-align:center}

/* ---------- Login ---------- */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px;
  background:radial-gradient(1200px 600px at 50% -10%,var(--brand-100),var(--bg) 60%)}
.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:32px 30px;width:100%;max-width:370px;box-shadow:var(--shadow-lg)}
.login-card .brand{display:flex;align-items:center;gap:11px;font-weight:800;font-size:22px;
  letter-spacing:-.02em;margin-bottom:4px}
.login-card .brand .mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand-400),var(--brand));font-size:20px;
  box-shadow:0 4px 12px rgba(13,148,136,.4)}
.login-card .sub{color:var(--muted);font-size:14px;margin:0 0 22px}
.login-card button[type=submit]{width:100%;margin-top:20px;padding:12px 20px;font-size:15px}
.err{color:var(--danger);font-size:13px;margin-top:12px;min-height:16px;font-weight:600}

/* ---------- Responsive ---------- */
@media (max-width:900px){
  .topbar{display:flex}
  .sidebar{position:fixed;top:0;left:0;transform:translateX(-100%);box-shadow:var(--shadow-lg)}
  .sidebar.open{transform:translateX(0)}
  .wrap{padding:18px 16px 56px}
  .page-head h1{font-size:21px}
  .big-cost .val{font-size:27px}
}
@media (max-width:520px){
  .row > div{min-width:100%}
  .card{padding:18px 16px}
  .subtabs{width:100%}
  .subtab{flex:1;text-align:center}
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important}
}
