/* Kitchen Cloud — design-system rebuild (UI_CRAFT_PASS.md, 2026-07-17).
   RULES: Inter Variable only · type scale 12/13.5/15/17/21/26 · 4px spacing steps
   (4/8/12/16/24/32) · warm neutral ramp + ONE accent · Lucide icons (no emoji in chrome)
   · 160/220ms motion, reduced-motion respected · 44px targets · tabular numerals on data.
   PROTECTED SURFACES (charter L6 — carried VERBATIM, never re-styled):
     .cs-complete / .cs-partial / .cs-estimated / .cs-unpriceable — the four-tier
     cost_status palette from CostStatusBadge.tsx. INCOMPLETE reads red, never blank. */

@font-face{
  font-family:"Inter";
  src:url("assets/font/InterVariable.woff2") format("woff2");
  font-weight:100 900; font-style:normal; font-display:swap;
}

:root{
  /* type scale */
  --t-xs:12px; --t-sm:13.5px; --t-md:15px; --t-lg:17px; --t-xl:21px; --t-2xl:26px;
  /* spacing steps */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px;
  /* desktop-pipeline palette (§3F mandate — DESKTOP_DESIGN_SPEC.md) */
  --bg:#fff; --surface:#fff; --surface-2:#fafbfc; --line:#e5e5e5; --line-soft:#f0f0f0;
  --ink:#1a1a1a; --ink-2:#555; --ink-3:#888;
  /* actions = pipeline blue; chrome = brand green */
  --accent:#1c4a8c; --accent-ink:#fff; --accent-soft:#e3eef9;
  --accent-border:#143869; --hover-blue:#4a90e2; --hover-fill:#f5faff;
  --brand:#15463a; --brand-ink:#dfeee8; --create:#1f6f15; --create-border:#155510;
  --ai-bg:#fef9e8; --ai-border:#d9c466; --ai-fg:#7a5e00;
  /* semantic states */
  --ok:#1f6f15; --ok-soft:#e6f2e8; --warn:#8a6d1f; --warn-soft:#f7efd8;
  --bad:#a02525; --bad-soft:#f9e4e2; --info:#3d6b9e; --info-soft:#e7eef6;
  --fw:#6a4a8e; --fw-soft:#efe8f7;
  /* elevation: the desktop is hairline-borders, near-zero shadow */
  --sh-1:0 1px 2px rgba(0,0,0,.04);
  --sh-2:0 2px 10px rgba(0,0,0,.09);
  --r-sm:5px; --r-md:6px; --r-lg:10px;
  /* four-tier palette — VERBATIM from the desktop app (L6) */
  --complete-bg:#dff5dc;    --complete-fg:#1f6f15;
  --partial-bg:#fff7d0;     --partial-fg:#7a6300;
  --estimated-bg:#fff1d6;   --estimated-fg:#85501a;
  --unpriceable-bg:#fde0e0; --unpriceable-fg:#a02525;
  --ink-soft:var(--ink-2); --card:var(--surface); /* legacy aliases */
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font:400 var(--t-md)/1.5 "Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  font-feature-settings:"cv11";
  padding-bottom:calc(76px + env(safe-area-inset-bottom)); /* room for the bottom bar */
}
@media (min-width:721px){ body{padding-bottom:var(--s6)} }

h1,h2,h3{font-weight:650; letter-spacing:-0.01em; margin:0}
h2{font-size:var(--t-lg)}
h3{font-size:var(--t-md)}
.big{font-size:var(--t-2xl); font-weight:650; letter-spacing:-0.02em; font-variant-numeric:tabular-nums}
.big.miss{color:var(--bad); font-size:var(--t-xl)}
a{color:var(--accent)}

/* motion — every interactive element acknowledges the hand */
button,.chip,.face-tab,.cal-cell,.cal-row,.tcheck,.tab-b,.fd,.seg-btn{
  transition:background-color .16s ease-out,border-color .16s ease-out,
             color .16s ease-out,box-shadow .16s ease-out,transform .12s ease-out;
}
button:active,.chip:active,.tcheck:active,.tab-b:active{transform:scale(.965)}
.card,.plate,.pin-banner{animation:rise .22s ease-out}
@keyframes rise{from{opacity:0; transform:translateY(3px)}to{opacity:1; transform:none}}
@keyframes tick{0%{transform:scale(.6)}60%{transform:scale(1.12)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important; transition:none!important}
}
:focus-visible{outline:2px solid var(--accent); outline-offset:2px; border-radius:4px}

.ic{width:18px; height:18px; vertical-align:-3.5px; flex:none}
.ic-lg{width:22px; height:22px}

/* ---- chrome ---- */
.topbar{
  position:sticky; top:0; z-index:20;
  display:flex; align-items:center; justify-content:space-between;
  padding:var(--s3) var(--s4);
  background:var(--brand); color:var(--brand-ink);
}
.brand{display:flex; align-items:center; gap:var(--s2); font-weight:650; letter-spacing:-0.01em}
.mark{color:#d9a441}
.stamp{font-size:var(--t-xs); opacity:.65; font-variant-numeric:tabular-nums;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:58%}
.stamp.old{opacity:1; color:#f0d98c; font-weight:600}

.alarm{background:var(--bad); color:#fff; padding:var(--s3) var(--s4); font-size:var(--t-sm)}
.alarm .hl{font-weight:650}
.alarm .msg{opacity:.9; margin-top:var(--s1)}
.hidden{display:none!important}

/* ---- freshness / honesty meter ---- */
.freshness{display:block; padding:var(--s2) var(--s4); background:var(--surface-2); border-bottom:1px solid var(--line)}
.fresh-details summary{list-style:none; cursor:pointer}
.fresh-details summary::-webkit-details-marker{display:none}
.fresh-summary{display:flex; flex-wrap:wrap; gap:var(--s1) var(--s2); padding:var(--s1) 0; min-height:44px; align-items:center}
.fd{font-size:var(--t-xs); font-weight:500; padding:3px 10px; border-radius:999px; border:1px solid var(--line); color:var(--ink-2); background:var(--surface); white-space:nowrap}
.fd.bad{border-color:#dcb1a9; color:var(--bad); background:var(--bad-soft)}
.fd.ok{border-color:#bccfb9; color:var(--ok); background:var(--ok-soft)}
.fd.pooled{border-color:#b9c6d8; color:#3a5a80; background:#f2f6fa}
.fresh-cards{margin-top:var(--s2); display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:var(--s2)}
.feed{background:var(--surface); border:1px solid var(--line-soft); border-radius:var(--r-sm); padding:var(--s2) var(--s3); box-shadow:var(--sh-1); min-width:0}
.feed .name{font-size:var(--t-xs); font-weight:500; color:var(--ink-3); text-transform:uppercase; letter-spacing:.05em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.feed .val{font-size:var(--t-sm); font-weight:650; font-variant-numeric:tabular-nums; margin:2px 0}
.feed .why{font-size:var(--t-xs); color:var(--ink-3); line-height:1.35}
.feed.nofeed{background:var(--bad-soft); border-color:#eccfc9}
.feed.nofeed .val{color:var(--bad)}
@media (min-width:641px){.fresh-summary{display:none}}

/* ---- top tabs (desktop) / hidden on phones in favor of the bottom bar ---- */
.faces{
  display:flex; gap:var(--s1); padding:var(--s2) var(--s3) 0;
  background:var(--bg); border-bottom:1px solid var(--line);
  overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none;
  position:sticky; top:0; z-index:15;
}
.faces::-webkit-scrollbar{display:none}
.face-tab{
  appearance:none; border:0; background:transparent; color:var(--ink-2);
  font:500 var(--t-sm)/1 "Inter",sans-serif;
  padding:var(--s3) var(--s3) calc(var(--s3) - 2px); min-height:44px;
  border-bottom:2px solid transparent; border-radius:var(--r-sm) var(--r-sm) 0 0; cursor:pointer;
  white-space:nowrap;
}
.face-tab:hover{color:var(--ink); background:var(--surface-2)}
.face-tab.active{color:var(--accent); border-bottom-color:var(--accent); font-weight:650}
@media (max-width:720px){ .faces{display:none} }

/* ---- bottom tab bar (phones) ---- */
.tabbar{
  position:fixed; left:0; right:0; bottom:0; z-index:30;
  display:flex; justify-content:space-around; align-items:stretch;
  background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  border-top:1px solid var(--line);
  padding:var(--s1) var(--s1) calc(var(--s1) + env(safe-area-inset-bottom));
}
.tab-b{
  appearance:none; border:0; background:transparent; cursor:pointer;
  display:flex; flex-direction:column; align-items:center; gap:2px;
  min-width:56px; min-height:48px; padding:var(--s1) var(--s2);
  color:var(--ink-3); font:500 11px/1 "Inter",sans-serif; border-radius:var(--r-sm);
}
.tab-b .ic{width:22px; height:22px}
.tab-b.active{color:var(--accent)}
.tab-b:active{background:var(--surface-2)}
@media (min-width:721px){ .tabbar{display:none} }
/* the More sheet */
.sheet-veil{position:fixed; inset:0; z-index:40; background:rgba(33,29,24,.35); animation:fade .16s ease-out; border:0; width:100%; padding:0}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet{
  position:fixed; left:0; right:0; bottom:0; z-index:41;
  background:var(--surface); border-radius:var(--r-lg) var(--r-lg) 0 0; box-shadow:var(--sh-2);
  padding:var(--s3) var(--s4) calc(var(--s5) + env(safe-area-inset-bottom));
  animation:sheetup .22s ease-out;
}
@keyframes sheetup{from{transform:translateY(24px); opacity:0}to{transform:none; opacity:1}}
.sheet-grab{width:36px; height:4px; border-radius:2px; background:var(--line); margin:0 auto var(--s3)}
.sheet-item{
  display:flex; align-items:center; gap:var(--s3); width:100%;
  appearance:none; border:0; background:transparent; cursor:pointer; text-align:left;
  font:500 var(--t-md)/1 "Inter",sans-serif; color:var(--ink);
  padding:var(--s3) var(--s2); min-height:48px; border-radius:var(--r-sm);
}
.sheet-item:active{background:var(--surface-2)}
.sheet-item .ic{color:var(--ink-2)}

/* ---- layout ---- */
main{max-width:1100px; margin:0 auto; padding:var(--s4)}
.face{display:block}
.section-head{display:flex; align-items:center; justify-content:space-between; gap:var(--s3); margin:var(--s5) 0 var(--s3)}
.cards{display:grid; gap:var(--s3); min-width:0}
.cards>*{min-width:0; max-width:100%}

.card{
  background:var(--surface); border:1px solid var(--line-soft); border-radius:var(--r-md);
  padding:var(--s4); box-shadow:var(--sh-1); overflow-wrap:anywhere;
}
.card h3{margin-bottom:var(--s2)}
.card p{margin:var(--s1) 0; font-size:var(--t-sm); color:var(--ink-2)}
.card .tag{
  display:inline-block; font-size:var(--t-xs); font-weight:650; letter-spacing:.05em;
  text-transform:uppercase; color:var(--warn); background:var(--warn-soft);
  border-radius:4px; padding:2px 8px; margin-bottom:var(--s2);
}
.card.notwired{border-style:dashed; background:var(--surface-2); box-shadow:none}
.nofeed-card .vname,.card .vname{font-size:var(--t-xs); font-weight:650; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-3)}

.st{font-size:var(--t-xs); color:var(--ink-3)}
.st.ok{color:var(--ok); font-weight:500}
.st.missing,.missing{color:var(--bad); font-weight:500}
.st.pooled{color:var(--info); font-weight:500}
.st.incomplete{color:var(--bad); font-weight:650}

/* ---- buttons: ONE system (primary / quiet / danger), existing class names mapped ---- */
.cap-submit,.cal-add{
  appearance:none; border:0; cursor:pointer; font:650 var(--t-sm)/1 "Inter",sans-serif;
  background:var(--accent); color:var(--accent-ink);
  border-radius:var(--r-sm); padding:var(--s3) var(--s4); min-height:44px;
  box-shadow:var(--sh-1);
}
.cap-submit:hover,.cal-add:hover{filter:brightness(1.08)}
.cap-submit{width:100%; margin-top:var(--s2)}
.cal-add{width:auto; white-space:nowrap}
.cal-x,.cal-del,.tx{
  appearance:none; cursor:pointer; font:500 var(--t-sm)/1 "Inter",sans-serif;
  background:transparent; border:1px solid var(--line); color:var(--ink-2);
  border-radius:var(--r-sm); padding:var(--s2) var(--s3); min-height:44px;
}
.cal-del{color:var(--bad); border-color:#dcb1a9}
.tx{border:0; min-height:44px; min-width:44px; color:var(--ink-3)}
.tx:hover{color:var(--bad)}

/* chips */
.filters{display:flex; flex-wrap:wrap; gap:var(--s2); align-items:center}
.chip{
  appearance:none; cursor:pointer; font:500 var(--t-sm)/1 "Inter",sans-serif; white-space:nowrap;
  background:var(--surface); border:1px solid var(--line); color:var(--ink-2);
  border-radius:999px; padding:0 var(--s3); min-height:44px;
}
.chip:hover{border-color:var(--ink-3)}
.chip.active{background:var(--ink); border-color:var(--ink); color:var(--surface); font-weight:650}
.chip.rat{border-color:#bccfb9; color:var(--ok)}
.chip.rej{border-color:#dcb1a9; color:var(--bad)}

/* forms */
.cap-form{margin-top:var(--s3); display:grid; gap:var(--s3)}
.cap-form label{display:grid; gap:var(--s1); font-size:var(--t-xs); font-weight:500; color:var(--ink-3)}
.cap-form input,.cap-form select,.cap-form textarea,#log-compose textarea,#ann-compose textarea{
  width:100%; min-height:44px; padding:var(--s2) var(--s3);
  border:1px solid var(--line); border-radius:var(--r-sm); background:var(--surface);
  font:400 16px/1.4 "Inter",sans-serif; color:var(--ink); box-sizing:border-box;
}
.cap-form textarea,#log-compose textarea,#ann-compose textarea{min-height:64px; margin-top:var(--s1)}
#log-compose label,#ann-compose label{display:block; font-size:var(--t-xs); font-weight:500; color:var(--ink-3)}
.cap-msg{font-size:var(--t-sm); min-height:1.2em; margin-top:var(--s1)}
.cf-times{display:grid; grid-template-columns:1fr 1fr; gap:var(--s3)}
.cf-times.hidden{display:none}
.cf-check{display:flex!important; align-items:center; gap:var(--s2); font-size:var(--t-sm)!important; color:var(--ink)!important}
.cf-check input{width:auto; min-height:auto}
.cf-actions{display:flex; gap:var(--s2); align-items:center}

/* ---- tiers + rings (Menu face) ---- */
.tiers{display:grid; grid-template-columns:repeat(4,1fr); gap:var(--s2); margin-bottom:var(--s3)}
@media (max-width:520px){ .tiers{grid-template-columns:1fr 1fr} }
.tier{border-radius:var(--r-sm); padding:var(--s3); text-align:center}
.tier .n{font-size:var(--t-xl); font-weight:650; font-variant-numeric:tabular-nums}
.tier .l{font-size:var(--t-xs); font-weight:500}
.cs-complete{background:var(--complete-bg); color:var(--complete-fg)}
.cs-partial{background:var(--partial-bg); color:var(--partial-fg)}
.cs-estimated{background:var(--estimated-bg); color:var(--estimated-fg)}
.cs-unpriceable{background:var(--unpriceable-bg); color:var(--unpriceable-fg)}
.rings{display:flex; flex-wrap:wrap; gap:var(--s2); margin-bottom:var(--s3)}
.ring{font-size:var(--t-sm); color:var(--ink-2); background:var(--surface); border:1px solid var(--line-soft); border-radius:999px; padding:var(--s1) var(--s3)}
.ring b{font-variant-numeric:tabular-nums}

/* plates */
.plates{display:grid; gap:var(--s3)}
.plate{background:var(--surface); border:1px solid var(--line-soft); border-radius:var(--r-md); padding:var(--s4); box-shadow:var(--sh-1)}
.plate-top{display:flex; justify-content:space-between; gap:var(--s3); align-items:flex-start}
.plate .sec{font-size:var(--t-xs); color:var(--ink-3); margin-top:2px}
.badge{font-size:var(--t-xs); font-weight:500; border-radius:4px; padding:3px 8px; white-space:nowrap}
.badge.bold{font-weight:650}
.metrics{display:grid; grid-template-columns:repeat(4,1fr); gap:var(--s2); margin-top:var(--s3)}
.m .k{font-size:var(--t-xs); color:var(--ink-3); font-weight:500}
.m .v{font-size:var(--t-lg); font-weight:650; font-variant-numeric:tabular-nums}
.m.fail .v{color:var(--bad)}
.taint-row{margin-top:var(--s3); border-radius:var(--r-sm); padding:var(--s2) var(--s3); font-size:var(--t-sm); line-height:1.45}
.taint-row .hl{font-weight:650; margin-right:var(--s2)}

/* ---- P&L ---- */
.pnl-doctrine{font-size:var(--t-xs); color:var(--ink-3); margin:0 0 var(--s3)}
.pnl-week h3{margin-bottom:var(--s3)}
.pnl-venue{margin-bottom:var(--s3)}
.pnl-vname{font-size:var(--t-xs); font-weight:650; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-3); margin-bottom:var(--s1)}
.pnl-table{width:100%; border-collapse:collapse}
.pnl-table td{padding:var(--s1) 0; font-size:var(--t-sm); border-bottom:1px solid var(--line-soft)}
.pnl-table td.v{text-align:right; font-variant-numeric:tabular-nums; font-weight:500; padding-right:var(--s3)}
.pnl-table td.st{text-align:right}
.pnl-net td{font-weight:650}
.pnl-pooled{font-size:var(--t-sm); color:var(--ink-2); margin-top:var(--s2)}

/* ---- calendar ---- */
.cal-head{margin-bottom:var(--s3)}
.cal-nav{display:flex; align-items:center; justify-content:space-between; margin-bottom:var(--s2)}
.cal-title{font-size:var(--t-lg); font-weight:650; letter-spacing:-0.01em}
.cal-arrow{appearance:none; border:1px solid var(--line); background:var(--surface); border-radius:var(--r-sm); min-width:44px; min-height:44px; cursor:pointer; color:var(--ink-2); font-size:var(--t-sm)}
.cal-controls{display:flex; justify-content:space-between; align-items:center; gap:var(--s3)}
.seg{display:inline-flex; border:1px solid var(--line); border-radius:var(--r-sm); overflow:hidden}
.seg-btn{appearance:none; border:0; background:var(--surface); color:var(--ink-2); font:500 var(--t-sm)/1 "Inter",sans-serif; padding:var(--s2) var(--s4); min-height:44px; cursor:pointer}
.seg-btn.on{background:var(--ink); color:var(--surface); font-weight:650}
.cal-grid{display:grid; grid-template-columns:repeat(7,1fr); gap:var(--s1)}
.cal-dow{text-align:center; font-size:var(--t-xs); font-weight:500; color:var(--ink-3); padding:var(--s1) 0}
.cal-cell{
  appearance:none; border:1px solid var(--line-soft); background:var(--surface); cursor:pointer;
  border-radius:var(--r-sm); min-height:52px; padding:var(--s1);
  display:flex; flex-direction:column; align-items:center; gap:2px;
}
.cal-cell.empty{border:0; background:transparent; cursor:default}
.cal-cell.today{border-color:var(--accent); border-width:2px}
.cal-cell.sel{background:var(--accent-soft)}
.cal-dnum{font-size:var(--t-sm); font-weight:500; font-variant-numeric:tabular-nums}
.cal-dots{display:flex; gap:2px; flex-wrap:wrap; justify-content:center}
.cal-dot{width:5px; height:5px; border-radius:50%}
.cat-truck{background:var(--info-soft); color:var(--info); border:1px solid #c3d4e6}
.cat-den{background:var(--accent-soft); color:var(--accent); border:1px solid #e3c8bf}
.cat-catering{background:var(--ok-soft); color:var(--ok); border:1px solid #bccfb9}
.cat-prep{background:var(--warn-soft); color:var(--warn); border:1px solid #e3d5a8}
.cat-general{background:var(--surface-2); color:var(--ink-2); border:1px solid var(--line)}
.cat-fw{background:var(--fw-soft); color:var(--fw); border:1px solid #d5c3e8}
.cal-dot.cat-truck{background:var(--info)} .cal-dot.cat-den{background:var(--accent)}
.cal-dot.cat-catering{background:var(--ok)} .cal-dot.cat-prep{background:var(--warn)}
.cal-dot.cat-general{background:var(--ink-3)} .cal-dot.cat-fw{background:var(--fw)}
.cal-cat{font-size:var(--t-xs); font-weight:500; border-radius:4px; padding:2px 7px; white-space:nowrap}
.cal-row{
  display:flex; gap:var(--s2); align-items:center; width:100%; text-align:left;
  appearance:none; border:0; background:transparent; cursor:pointer;
  padding:var(--s2); min-height:48px; border-radius:var(--r-sm);
  font:400 var(--t-sm)/1.4 "Inter",sans-serif; color:var(--ink);
}
.cal-row:hover{background:var(--surface-2)}
.cal-row.fw-row{cursor:default; opacity:.92}
.cal-row-main{display:flex; flex-direction:column; min-width:0}
.cal-row-time{font-size:var(--t-xs); color:var(--ink-3)}
#cal-panel .card,#cal-body{margin-top:var(--s3)}
.wk-agenda{display:grid; gap:var(--s2)}
.wk-day{background:var(--surface); border:1px solid var(--line-soft); border-radius:var(--r-md); padding:var(--s2) var(--s3); box-shadow:var(--sh-1)}
.wk-day.today{border-color:var(--accent)}
.wk-date{display:flex; justify-content:space-between; align-items:center; font-size:var(--t-sm); font-weight:650; padding:var(--s1) 0}
.wk-add{appearance:none; border:0; background:transparent; color:var(--accent); font-size:var(--t-lg); min-width:44px; min-height:44px; cursor:pointer}
.wk-empty{color:var(--ink-3); font-size:var(--t-sm); padding:var(--s1) var(--s2)}
.cal-form-card label{display:grid; gap:var(--s1); font-size:var(--t-xs); font-weight:500; color:var(--ink-3); margin-top:var(--s2)}
.cal-form-card input,.cal-form-card select{
  width:100%; min-height:44px; padding:var(--s2) var(--s3);
  border:1px solid var(--line); border-radius:var(--r-sm); background:var(--surface);
  font:400 16px/1.4 "Inter",sans-serif; color:var(--ink); box-sizing:border-box;
}
.cal-sub{margin-top:var(--s4)}
.sub-btn{display:inline-block; background:var(--accent); color:var(--accent-ink); font:650 var(--t-sm)/1 "Inter",sans-serif; border-radius:var(--r-sm); padding:var(--s3) var(--s4); text-decoration:none; margin:var(--s2) 0}
.sub-url{font-size:var(--t-xs); color:var(--ink-3); word-break:break-all}

/* ---- board / announcements / leads ---- */
.ann .ann-text{color:var(--ink); font-size:var(--t-sm); margin:var(--s1) 0}
.ann-foot{display:flex; justify-content:space-between; align-items:center; gap:var(--s2); margin-top:var(--s2)}
.ann-acts{display:flex; gap:var(--s2)}
.ann.pinned{border-color:#e3d5a8; background:#fffdf4}
.pin-flag{font-size:var(--t-xs); font-weight:650; color:var(--warn)}
.pin-banner{
  display:flex; gap:var(--s2); align-items:flex-start;
  background:#fffdf4; border:1px solid #e3d5a8; border-radius:var(--r-md);
  padding:var(--s3) var(--s4); margin-bottom:var(--s3); font-size:var(--t-sm);
}
.pin-banner .ic{color:var(--warn)}
.lead-msg{font-style:italic; color:var(--ink-2)}
.lead-note{margin:var(--s1) 0; font-size:var(--t-sm); color:var(--ink-2)}
.lead-next{margin:var(--s1) 0; font-size:var(--t-sm)}
.lead-stages{overflow-x:auto; flex-wrap:nowrap; -webkit-overflow-scrolling:touch; padding-bottom:var(--s1); max-width:100%}
.lead-stages .chip{flex:none}
.lead-chip.on{font-weight:650}
.lead-chip.on.new{background:var(--info-soft); border-color:#c3d4e6; color:var(--info)}
.lead-chip.on.claimed{background:var(--surface-2); border-color:var(--line); color:var(--ink)}
.lead-chip.on.quoted,.lead-chip.on.awaiting{background:var(--warn-soft); border-color:#e3d5a8; color:var(--warn)}
.lead-chip.on.booked{background:var(--ok-soft); border-color:#bccfb9; color:var(--ok)}
.lead-chip.on.done{background:var(--surface-2); border-color:var(--line); color:var(--ink-2)}
.lead-chip.on.cold{background:var(--surface-2); border-color:var(--line); color:var(--ink-3)}
.lead-closed{margin-top:var(--s3)}
.lead-closed summary{color:var(--ink-3); font-size:var(--t-sm); padding:var(--s2) 0; cursor:pointer; min-height:44px}

/* ---- work core ---- */
.work-card{margin-bottom:var(--s4)}
.work-head{display:flex; justify-content:space-between; align-items:flex-start; gap:var(--s3)}
.trow{display:flex; align-items:center; gap:var(--s3); padding:var(--s2) 0; border-top:1px solid var(--line-soft)}
.trow:first-of-type{border-top:0}
.trow.done .ttitle{text-decoration:line-through; color:var(--ink-3)}
.tcheck{
  appearance:none; cursor:pointer; flex:none;
  width:44px; height:44px; border-radius:50%;
  border:2px solid var(--line); background:var(--surface);
  color:var(--ok); font-size:var(--t-lg); display:flex; align-items:center; justify-content:center;
}
.trow.done .tcheck{background:var(--ok-soft); border-color:var(--ok)}
.trow.done .tcheck .ic{animation:tick .22s ease-out}
.tmain{flex:1; min-width:0}
.ttitle{font-size:var(--t-md); font-weight:500}
.tmeta{font-size:var(--t-xs); color:var(--ink-3); display:flex; flex-wrap:wrap; gap:var(--s2); align-items:center; margin-top:2px}
.tcat{font-size:var(--t-xs); font-weight:500; border-radius:4px; padding:1px 7px}
.tcat-prep{background:var(--warn-soft); color:var(--warn)} .tcat-service{background:var(--info-soft); color:var(--info)}
.tcat-clean{background:var(--ok-soft); color:var(--ok)} .tcat-admin{background:var(--surface-2); color:var(--ink-2)}
.tcat-catering{background:var(--accent-soft); color:var(--accent)}
.tsys{font-size:var(--t-xs); color:var(--ink-3); border:1px solid var(--line); border-radius:4px; padding:0 6px}
.tdone-by{color:var(--ok); font-size:var(--t-xs)}
.carried{font-size:var(--t-xs); font-weight:650; color:var(--bad); background:var(--bad-soft); border-radius:4px; padding:1px 7px; margin-left:var(--s2)}
.tgroup{margin-top:var(--s3)}
.tgroup-head{font-size:var(--t-sm); font-weight:650; display:flex; justify-content:space-between; align-items:center; padding-bottom:var(--s1); border-bottom:1px solid var(--line)}
.titem{display:flex; gap:var(--s2); align-items:center; margin:var(--s1) 0}
.titem input{flex:1}
.titem select{width:auto}

/* ---- home ---- */
.sales-duo{display:grid; grid-template-columns:1fr 1fr; gap:var(--s3)}
@media (max-width:520px){.sales-duo{grid-template-columns:1fr}}
.prep-card{border-color:#e3d5a8}
.soon-row{display:flex; gap:var(--s2); align-items:center; padding:var(--s1) 0; font-size:var(--t-sm); min-width:0}
.count-chip{font-size:var(--t-xs); font-weight:650; border-radius:999px; padding:3px 9px; background:var(--surface-2); color:var(--ink-2); white-space:nowrap; font-variant-numeric:tabular-nums}
.count-chip.hot{background:var(--bad); color:#fff}
.bank-entry{display:flex; gap:var(--s2); margin-top:var(--s2)}
.bank-entry input{
  flex:1; min-width:0; min-height:44px; padding:var(--s2) var(--s3);
  border:1px solid var(--line); border-radius:var(--r-sm);
  font:400 16px/1.4 "Inter",sans-serif; font-variant-numeric:tabular-nums;
}
.bank-entry .cap-submit{width:auto; margin:0; flex:none; white-space:nowrap}

/* graph strip (§3E) */
.graph-card{border-left:3px solid var(--bad); padding:var(--s3) var(--s4)}
.gf{display:flex; gap:var(--s2); align-items:flex-start; padding:var(--s1) 0; font-size:var(--t-sm); line-height:1.4}
.gf-k{flex:none; display:flex; align-items:center}
.gf.conflict .gf-k{color:var(--bad)}
.gf.connection .gf-k{color:var(--info)}
.gf.connection{color:var(--ink-2)}

/* router */
.router-card{padding:var(--s3) var(--s4)}
.router-help{margin:var(--s2) 0 0; font-size:var(--t-xs); color:var(--ink-3)}

/* log */
.log-entry .log-text{white-space:pre-wrap; margin:0 0 var(--s2); font-size:var(--t-md); line-height:1.5; color:var(--ink)}

/* plans */
.plan .plan-head{display:flex; justify-content:space-between; align-items:center; width:100%;
  background:none; border:0; color:inherit; font:inherit; text-align:left; padding:0; cursor:pointer; min-height:44px}
.plan .plan-head h3{margin:0}
.plan-carat{color:var(--ink-3); display:flex}
.plan.archived{opacity:.6}

/* ---- footer / auth banner ---- */
.foot{max-width:1100px; margin:var(--s5) auto 0; padding:0 var(--s4); font-size:var(--t-xs); color:var(--ink-3)}
.auth-banner{
  background:var(--warn-soft); border:1px solid #e3d5a8; color:var(--warn);
  border-radius:var(--r-sm); padding:var(--s2) var(--s3); margin-bottom:var(--s2); font-weight:500;
}

/* ===== §3F — Menu face mimics the desktop MENU HEALTH screen (DESKTOP_DESIGN_SPEC §4) ===== */
.mono,.num{font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace}
.micro-h{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#666;
  border-bottom:1px solid #eaeaea;padding-bottom:4px;margin:var(--s5) 0 var(--s3)}
.tier-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--s2);margin-bottom:var(--s3)}
.tier-card{cursor:pointer;border-radius:5px;padding:var(--s2) var(--s3);border:2px solid transparent;
  text-align:left;transition:all .12s ease;appearance:none;font:inherit}
.tier-card .tc-top{display:flex;justify-content:space-between;align-items:center;gap:var(--s2)}
.tier-card .tc-label{font-weight:650;font-size:var(--t-sm)}
.tier-card .tc-count{background:#fff;border-radius:2px;padding:1px 7px;font-size:12px;font-weight:600;
  font-family:ui-monospace,Menlo,monospace}
.tier-card .tc-desc{font-size:12px;opacity:.85;margin-top:2px;line-height:1.35}
.tier-card.active{box-shadow:inset 0 0 0 1px currentColor}
.plate-tablewrap{background:#fff;border:1px solid #e5e5e5;border-radius:5px;overflow-x:auto}
.ptable{width:100%;border-collapse:collapse;font-size:.88em;font-variant-numeric:tabular-nums;min-width:640px}
.ptable th{padding:.5em .6em;font-size:11px;font-weight:600;color:#444;text-transform:uppercase;
  letter-spacing:.04em;text-align:left;background:#fafbfc;border-bottom:2px solid #e5e5e5;cursor:pointer;
  white-space:nowrap;user-select:none}
.ptable th.rt{text-align:right}
.ptable th.sorted{background:#eef3f9}
.ptable th .si{color:#1c4a8c;opacity:.85;margin-left:2px}
.ptable th .si.idle{opacity:.25}
.ptable td{padding:.55em .6em;border-bottom:1px solid #f0f0f0;vertical-align:top}
.ptable tr.prow{cursor:pointer;transition:background .12s}
.ptable tr.prow:hover{background:#f7f9fc}
.ptable tr.prow.sel{background:#f4f7fa}
.ptable td.rt{text-align:right;font-family:ui-monospace,Menlo,monospace}
.ptable .pname{font-weight:500}
.ptable .psec{color:#555}
.ptable .floorflag{color:#a02525;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.pbadge{display:inline-block;font-size:11px;font-weight:600;border-radius:3px;padding:2px 7px;white-space:nowrap}
.pdetail td{background:#fafbfc;border-bottom:1px solid #e5e5e5;font-size:.92em;color:#445566;padding:.7em .9em}
.pdetail .taint-row{margin-top:0}
.tgroup .soon-row .st.num{white-space:nowrap;flex:none;font-family:ui-monospace,Menlo,monospace}

/* ---- the record button: crown control, center of the thumb bar (touchpoint band 1) ---- */
.tab-rec{
  appearance:none; border:0; cursor:pointer; flex:none; align-self:center;
  width:50px; height:50px; margin-top:-16px; border-radius:999px;
  background:var(--brand); color:#fff;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 3px 10px rgba(21,70,58,.35);
}
.tab-rec .ic{width:24px; height:24px}
.tab-rec:active{transform:scale(.93)}
.record-sheet .router-help{margin-top:var(--s2)}
.record-sheet .bank-entry{margin-top:var(--s2)}

/* ---- live 86 strip (§3G ①): loud, crew-facing, the moment it's filed ---- */
.strip-86{
  display:flex; gap:var(--s2); align-items:baseline;
  background:var(--bad-soft); border:1px solid #dcb1a9; border-radius:var(--r-sm);
  padding:var(--s2) var(--s3); margin-bottom:var(--s2); font-size:var(--t-sm);
}
.strip-86 b{color:var(--bad)}
.strip-86 .ic{flex:none; color:var(--bad); align-self:center}

/* deliberate-stance feed card (POOLED/PARKED): neutral, not alarmed */
.feed.stance .val{color:#3a5a80}

/* ---- E1.15 · voice notes ---- */
.mic-btn{
  appearance:none; cursor:pointer; flex:none;
  min-width:48px; min-height:44px; border-radius:var(--r-sm);
  border:1px solid var(--line); background:var(--surface); color:var(--ink-2);
  display:flex; align-items:center; justify-content:center;
}
.mic-btn .ic{width:20px; height:20px}
.mic-btn.recording{background:var(--bad); border-color:var(--bad); color:#fff; animation:recpulse 1.2s ease-in-out infinite}
@keyframes recpulse{0%,100%{box-shadow:0 0 0 0 rgba(160,37,37,.35)}50%{box-shadow:0 0 0 7px rgba(160,37,37,0)}}
.rec-dot{display:inline-block; width:8px; height:8px; border-radius:999px; background:var(--bad); margin-right:6px; animation:recpulse 1.2s ease-in-out infinite; vertical-align:baseline}
.voice-row{display:flex; align-items:center; gap:var(--s2); margin:2px 0 4px; flex-wrap:wrap}
.voice-row audio{height:40px; max-width:100%; flex:1 1 220px; min-width:0}
@media (prefers-reduced-motion: reduce){ .mic-btn.recording,.rec-dot{animation:none} }

/* ---- E1.16 · catch-up strip + evening prompt ---- */
.catchup-card{border-left:3px solid var(--accent); padding:var(--s3) var(--s4)}
.catchup-head{margin:0 0 var(--s2); text-transform:none; font-weight:600}
.evening-card{background:#fef9e8; border-color:#d9c466}
.evening-card p{margin:0; color:#7a5e00}

/* ---- E1.17 · install hint ---- */
.install-card{border-style:dashed; background:var(--surface-2)}
.install-card p{margin:0 0 var(--s2)}

/* ---- W1 · trust layer ---- */
.strip-outbox{
  display:flex; gap:var(--s2); align-items:baseline;
  background:#f2f6fa; border:1px solid #b9c6d8; border-radius:var(--r-sm);
  padding:var(--s2) var(--s3); margin-bottom:var(--s2); font-size:var(--t-sm);
}
.strip-outbox b{color:#3a5a80}
.strip-outbox .ic{flex:none; color:#3a5a80; align-self:center}
#rec-pill{
  position:fixed; top:calc(env(safe-area-inset-top) + 8px); left:50%; transform:translateX(-50%);
  z-index:60; appearance:none; border:0; cursor:pointer;
  background:var(--bad); color:#fff; font:600 var(--t-sm)/1 "Inter",sans-serif;
  border-radius:999px; padding:10px 16px; min-height:38px;
  display:flex; align-items:center; gap:6px; box-shadow:0 3px 10px rgba(160,37,37,.4);
}
#rec-pill.hidden{display:none}
#rec-pill .rec-dot{background:#fff}

/* ---- W2 ---- */
.tab-b{position:relative}
.tab-badge{
  position:absolute; top:2px; right:8px; min-width:17px; height:17px;
  border-radius:999px; background:var(--bad); color:#fff;
  font:700 10px/17px "Inter",sans-serif; text-align:center; padding:0 4px;
  font-variant-numeric:tabular-nums;
}
.strip-86{align-items:center}
.strip-86 .strip-restock{margin-left:auto; flex:none; min-height:38px}
.strip-86 > span{min-width:0}
#stamp{cursor:pointer}

/* ---- W3 · feed-first feel ---- */
/* enter animation is for ARRIVAL only — after first paint the world stops shimmering */
body.settled .card, body.settled .plate, body.settled .pin-banner{animation:none}

/* chat-physics composer: one line, grows on focus, send icon — not a CMS form */
.feed-compose{display:flex; gap:var(--s2); align-items:flex-end; margin-top:var(--s3)}
.feed-compose textarea{
  flex:1; min-width:0; min-height:44px; max-height:160px; padding:10px var(--s3);
  border:1px solid var(--line); border-radius:22px; background:var(--surface);
  font:400 16px/1.4 "Inter",sans-serif; color:var(--ink); box-sizing:border-box;
  resize:none; transition:min-height .16s ease;
}
.feed-compose textarea:focus{min-height:88px; border-radius:var(--r-sm)}
.send-btn{
  appearance:none; border:0; cursor:pointer; flex:none;
  width:44px; height:44px; border-radius:999px;
  background:var(--accent); color:#fff;
  display:flex; align-items:center; justify-content:center;
}
.send-btn .ic{width:20px; height:20px}
.send-btn:active{transform:scale(.94)}
.compose-hint{margin:var(--s1) 0 0 var(--s3)}

/* voice bubble — the design system's player, not the browser's */
.voice-bubble{
  appearance:none; cursor:pointer; display:flex; align-items:center; gap:var(--s2);
  border:1px solid var(--line); background:var(--surface-2); border-radius:999px;
  padding:6px 14px 6px 6px; min-height:44px; width:min(100%,260px); margin:2px 0 4px;
}
.vb-btn{
  flex:none; width:32px; height:32px; border-radius:999px;
  background:var(--accent); color:#fff; display:flex; align-items:center; justify-content:center;
}
.vb-btn .ic{width:15px; height:15px}
.vb-track{flex:1; height:4px; border-radius:2px; background:var(--line); overflow:hidden; min-width:60px}
.vb-fill{display:block; width:0%; height:100%; background:var(--accent); transition:width .3s linear}
.vb-dur{font-size:var(--t-xs); color:var(--ink-2); font-variant-numeric:tabular-nums}
.voice-bubble.playing{border-color:var(--accent)}

/* arm-to-delete: the armed state is loud and short-lived */
.chip.armed,.tx.armed,.cal-del.armed{background:var(--bad)!important; border-color:var(--bad)!important; color:#fff!important; font-weight:700}

/* sheet exit — enter/exit symmetry */
.sheet.closing{animation:sheetdown .18s ease-in forwards}
@keyframes sheetdown{to{transform:translateY(100%); opacity:.6}}
.sheet-veil.closing{animation:fadeout .18s ease-in forwards}
@keyframes fadeout{to{opacity:0}}

/* ---- W3/W4 · bands + calendar + log filter ---- */
.band{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm);
  box-shadow:var(--sh-1); padding:var(--s2) var(--s4); margin:var(--s3) 0;
}
.band-label{
  font-size:var(--t-xs); text-transform:uppercase; letter-spacing:.06em;
  color:var(--ink-3); font-weight:600; margin:var(--s2) 0 var(--s1);
}
.band .card{border:0; box-shadow:none; background:transparent; padding:var(--s2) 0; border-radius:0; animation:none}
.band .cards .card:not(:first-child){border-top:1px solid var(--line-soft)}
.band .sales-duo .card{border-top:0}
.band .sales-duo .card + .card{border-left:1px solid var(--line-soft); padding-left:var(--s3)}

.cal-title{appearance:none; border:0; background:transparent; cursor:pointer;
  font:650 var(--t-lg)/1.2 "Inter",sans-serif; color:var(--ink); padding:var(--s1) var(--s2); border-radius:var(--r-sm)}
.cal-title:active{background:var(--surface-2)}
.cal-jump{position:absolute; width:1px; height:1px; opacity:0; pointer-events:none}
.cal-jump.show{position:static; width:auto; height:44px; opacity:1; pointer-events:auto}
.wk-day.quiet{padding:var(--s1) var(--s2); min-height:0}
.wk-day.quiet .wk-empty{display:none}
.wk-day.quiet .wk-date{margin:0}
.wk-day.quiet .wk-date span{color:var(--ink-3); font-size:var(--t-sm)}

#log-filter{margin-bottom:var(--s3)}
#log-filter input{
  width:100%; min-height:44px; padding:var(--s2) var(--s3); box-sizing:border-box;
  border:1px solid var(--line); border-radius:999px; background:var(--surface);
  font:400 16px/1.4 "Inter",sans-serif; color:var(--ink);
}

/* ---- W-pub · the canary chirp (deviation band — amber = the AI/deviation family) ---- */
.strip-canary{
  display:flex; gap:var(--s2); align-items:center;
  background:#fef9e8; border:1px solid #d9c466; border-radius:var(--r-sm);
  padding:var(--s2) var(--s3); margin-bottom:var(--s2); font-size:var(--t-sm);
}
.strip-canary b{color:#7a5e00}
.strip-canary .ic{flex:none; color:#7a5e00}
.strip-canary > span{min-width:0}
.strip-canary .chip{margin-left:auto; flex:none}
