@font-face{font-family:Heebo;font-style:normal;font-weight:400;font-display:swap;
  src:url(/vendor/fonts/heebo-hebrew-400.woff2) format("woff2");
  unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F}
@font-face{font-family:Heebo;font-style:normal;font-weight:400;font-display:swap;
  src:url(/vendor/fonts/heebo-latin-400.woff2) format("woff2");
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:Heebo;font-style:normal;font-weight:600;font-display:swap;
  src:url(/vendor/fonts/heebo-hebrew-600.woff2) format("woff2");
  unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F}
@font-face{font-family:Heebo;font-style:normal;font-weight:600;font-display:swap;
  src:url(/vendor/fonts/heebo-latin-600.woff2) format("woff2");
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:Heebo;font-style:normal;font-weight:700;font-display:swap;
  src:url(/vendor/fonts/heebo-hebrew-700.woff2) format("woff2");
  unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F}
@font-face{font-family:Heebo;font-style:normal;font-weight:700;font-display:swap;
  src:url(/vendor/fonts/heebo-latin-700.woff2) format("woff2");
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:Heebo;font-style:normal;font-weight:800;font-display:swap;
  src:url(/vendor/fonts/heebo-hebrew-800.woff2) format("woff2");
  unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F}
@font-face{font-family:Heebo;font-style:normal;font-weight:800;font-display:swap;
  src:url(/vendor/fonts/heebo-latin-800.woff2) format("woff2");
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/*
 * Visual world v2, 09.08.2026, per Calanit's concept direction: soft cool
 * canvas, white rounded cards with a quiet shadow, indigo as the working
 * accent, green reserved for what is DONE. The AI tone moved to fuchsia so
 * machine-derived values never blend into the indigo accent.
 */
:root{
  /* מקום's own colour, not a stand-in.
     Sampled from the logo and the letterhead: aqua #64c8dc, navy #001e46,
     lime #a0c864. The aqua is far too light to carry text, so the brand tone
     is that hue darkened until it clears 4.5:1 on white — which is exactly the
     teal the client-facing quote and quality documents already use. Before
     this the app was indigo while the documents the customer actually
     receives were teal: one product, two colour worlds. */
  --color-brand:#0f6f70; --color-brand-strong:#0a5657;
  --color-brand-soft:#d7ecec; --color-brand-faint:#f1f8f8;
  --color-canvas:#edf2f2; --color-surface:#fff;
  --color-surface-subtle:#f2f7f7; --color-surface-hover:#e6efef;
  --color-text:#17212b; --color-text-muted:#52606d; --color-text-inverse:#fff;
  --color-border:#e0e9e9;
  /* 3.03:1 against every surface it is drawn on. It outlines inputs and
     secondary buttons, so it is a component boundary under WCAG 1.4.11 rather
     than decoration; the previous #c3cad9 sat at 1.6:1 and never met that. */
  --color-border-strong:#7d8b8a;
  --color-neutral:#46515c; --color-neutral-bg:#eef1f6;
  --color-info:#1d4ed8; --color-info-bg:#eff6ff;
  --color-success:#15703a; --color-success-bg:#e8f9ef;
  --color-warning:#8a4b08; --color-warning-bg:#fff7e6;
  --color-error:#b42318; --color-error-bg:#fef3f2;
  --color-ai:#a21caf; --color-ai-bg:#fdf4ff;
  /* Border tints. Every semantic family had a colour and a background and no
     edge, so each edge was written as a raw hex and copied around — #fecaca
     alone appeared seven times. Design-system rule 6 says a colour that is not
     a token does not go in; this is the tier that was missing. */
  --color-neutral-border:#d5dadd; --color-info-border:#bfdbfe;
  --color-success-border:#bbebce; --color-warning-border:#f2d29e;
  --color-error-border:#fecaca;   --color-ai-border:#f5d0fe;
  --color-focus:#0a5657;
  --color-nav-bg:#ffffff; --color-nav-text:#46515c; --color-nav-muted:#6b7688;
  --color-nav-hover:#edf2f2; --color-nav-border:#e0e9e9; --color-nav-active:#d7ecec; --color-nav-accent:#0f6f70;
  --color-nav-badge-bg:#d7ecec; --color-nav-badge-text:#0a5657;
  --font-sans:"Heebo","Noto Sans Hebrew",Arial,sans-serif;
  --font-size-xs:.75rem; --font-size-sm:.875rem; --font-size-md:1rem;
  --font-size-lg:1.125rem; --font-size-xl:1.375rem; --font-size-2xl:1.75rem;
  --line-height-tight:1.25; --line-height-normal:1.5;
  --radius-sm:.5rem; --radius-md:1rem; --radius-lg:1.25rem; --radius-pill:999px;
  --space-1:.25rem; --space-2:.5rem; --space-3:.75rem; --space-4:1rem;
  --space-6:1.5rem; --space-8:2rem; --space-10:2.5rem; --space-12:3rem; --space-16:4rem;
  --header-height:4rem; --nav-width:15.5rem; --control-height:2.75rem;
  /* 44px. The token existed at 40px and was applied to exactly one rule, so
     the nav passed and 27 of 38 other controls did not. */
  --target-min:2.75rem;
  --shadow-overlay:0 8px 24px #17212b29;
  /* Two layers, because one blurred shadow reads as fog rather than lift: a
     tight contact shadow anchors the card to the canvas, a wider soft one
     gives it height. Every frame that sits directly on the canvas uses this
     token, so the elevation of the whole app is one line to tune. */
  --shadow-card:0 1px 2px #17213114,0 8px 24px -6px #17213124;
  --transition-fast:.12s ease;
  /* Light only, and said out loud. Without this the browser renders native
     selects, date pickers and autofill in dark chrome on a machine set to
     dark, against a UI that is light. The details form carries date and
     datetime inputs, so this is not hypothetical. */
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--font-sans);background:var(--color-canvas);color:var(--color-text);
  direction:rtl;line-height:var(--line-height-normal)}
a{color:var(--color-brand-strong)}
a,button,.chip,.nav-item,.tender-tab,.icon-button{
  transition:background-color var(--transition-fast),color var(--transition-fast),
    border-color var(--transition-fast)}
:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;
  border-radius:var(--radius-sm)}
.sidebar :focus-visible{outline-color:var(--color-nav-accent)}
/* Present for a screen reader, absent from the page. Never display:none,
   which would hide it from assistive technology too. Used for table captions:
   every table has a name, and none of them takes a line of the layout. */
.visually-hidden{position:absolute;inline-size:1px;block-size:1px;margin:-1px;
  padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.skip-link{position:absolute;display:inline-flex;align-items:center;min-block-size:var(--target-min);
  inset-inline-start:-999px;inset-block-start:var(--space-2);
  z-index:60;padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);
  background:var(--color-surface);color:var(--color-text);font-weight:700;
  box-shadow:var(--shadow-overlay)}
.skip-link:focus-visible{inset-inline-start:var(--space-2)}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
h1,h2,h3{line-height:var(--line-height-tight);margin:0}
h1{font-size:var(--font-size-2xl);font-weight:700}
h2{font-size:var(--font-size-xl);font-weight:700}
h3{font-size:var(--font-size-lg);font-weight:700}

.app-frame{display:grid;grid-template-columns:var(--nav-width) minmax(0,1fr);
  grid-template-rows:var(--header-height) 1fr;
  grid-template-areas:"topbar topbar" "sidebar main";min-block-size:100vh}
.topbar{grid-area:topbar;position:sticky;inset-block-start:0;z-index:50;display:flex;
  align-items:center;justify-content:space-between;padding-inline:var(--space-6);
  background:var(--color-surface);border-block-end:1px solid var(--color-border)}
.topbar__brand{display:flex;align-items:center;gap:var(--space-3);font-weight:700}
.brand-emblem{inline-size:34px;block-size:34px;border-radius:50%;display:block}
.brand-logo{inline-size:170px;max-inline-size:60%;block-size:auto;display:block;
  margin-block-end:var(--space-6)}
.topbar__meta{display:flex;align-items:center;gap:var(--space-3);
  color:var(--color-text-muted);font-size:var(--font-size-sm)}
.acting-bar{display:flex;align-items:center;gap:var(--space-2);margin:0}
.acting-bar select{min-block-size:var(--target-min);padding:2px var(--space-2);
  border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);
  font-family:inherit;font-size:var(--font-size-sm)}
.topbar__search{display:flex;align-items:center;gap:var(--space-2);margin:0}
.topbar__search input{inline-size:220px;min-block-size:var(--target-min);
  padding:2px var(--space-3);border:1px solid var(--color-border-strong);
  border-radius:var(--radius-pill);font-family:inherit;font-size:var(--font-size-sm)}
.topbar__search .kbd{padding:1px 6px;border:1px solid var(--color-border);
  border-radius:var(--radius-sm);background:var(--color-surface-subtle);
  font-size:var(--font-size-xs);direction:ltr}
.icon-button{position:relative;display:grid;place-items:center;
  inline-size:var(--target-min);block-size:var(--target-min);border:none;border-radius:50%;cursor:pointer;
  background:transparent;color:var(--color-text-muted);font-size:18px;text-decoration:none}
.icon-button:hover{background:var(--color-surface-subtle);color:var(--color-text)}
.icon-button__count{position:absolute;inset-block-start:-2px;inset-inline-start:-2px;
  display:grid;place-items:center;min-inline-size:18px;block-size:18px;
  padding-inline:4px;border-radius:999px;background:var(--color-error);
  color:var(--color-text-inverse);font-size:11px;font-weight:700}

.sidebar{grid-area:sidebar;position:sticky;inset-block-start:var(--header-height);
  align-self:start;block-size:calc(100vh - var(--header-height));overflow:auto;
  display:flex;flex-direction:column;gap:var(--space-4);
  padding:var(--space-4) var(--space-3);background:var(--color-nav-bg);color:var(--color-nav-text);
  border-inline-end:1px solid var(--color-nav-border)}
.sidebar nav{display:grid;gap:var(--space-1)}
.nav-item{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;
  gap:var(--space-3);min-block-size:var(--target-min);padding-inline:var(--space-3);
  border-radius:var(--radius-sm);color:var(--color-nav-text);font-weight:600;
  text-decoration:none;position:relative}
.nav-item:hover{background:var(--color-nav-hover);color:var(--color-text)}
.nav-item--active{background:var(--color-nav-active);color:var(--color-brand-strong)}
.nav-item--active:before{content:"";position:absolute;inset-block:9px;inset-inline-start:0;
  inline-size:3px;border-radius:3px;background:var(--color-nav-accent)}
.nav-item__icon{display:grid;place-items:center}
.nav-item__badge{display:grid;place-items:center;block-size:24px;min-inline-size:24px;
  padding-inline:6px;border-radius:var(--radius-pill);background:var(--color-nav-badge-bg);
  color:var(--color-nav-badge-text);font-size:var(--font-size-xs);font-weight:700}
.sidebar__foot{margin-block-start:auto}
.demo-chip{padding:var(--space-2) var(--space-3);border:1px solid var(--color-nav-border);
  border-radius:var(--radius-sm);color:var(--color-nav-muted);
  font-size:var(--font-size-xs);text-align:center}

.main-content{grid-area:main;min-inline-size:0;padding:var(--space-6)}
.page-header{display:flex;justify-content:space-between;align-items:start;
  gap:var(--space-6);margin-block-end:var(--space-6)}
.page-header p{margin:var(--space-2) 0 0;max-inline-size:680px;color:var(--color-text-muted)}
.page-header__actions{display:flex;gap:var(--space-2);flex-wrap:wrap}
.eyebrow{color:var(--color-text-muted);font-size:var(--font-size-xs);font-weight:700}

.section-card{min-inline-size:0;padding:var(--space-6);border:1px solid var(--color-border);
  border-radius:var(--radius-md);background:var(--color-surface);margin-block-end:var(--space-6);
  box-shadow:var(--shadow-card)}
.section-card>h2,.section-card>h3{margin-block-end:var(--space-3)}
/* A frame nested inside a card is not a second elevation. Tables and KPI tiles
   appear both standalone and inside a card; stacking two shadows turns the
   inner edge to mud, so the nested copy keeps the border and drops the lift. */
.section-card .table-wrap,.section-card .kpi-tile{box-shadow:none}

.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--space-4);
  margin-block-end:var(--space-6)}
.kpi-tile{position:relative;overflow:hidden;display:grid;gap:var(--space-1);
  padding:var(--space-4);border:1px solid var(--color-border);
  border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-card)}
.kpi-tile:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;
  inline-size:3px;background:var(--color-neutral)}
.kpi-tile--success:before{background:var(--color-success)}
.kpi-tile--warning:before{background:var(--color-warning)}
.kpi-tile--error:before{background:var(--color-error)}
.kpi-tile strong{font-size:var(--font-size-2xl)}
.kpi-tile>span,.kpi-tile small{color:var(--color-text-muted)}
.kpi-link{display:block;color:inherit;text-decoration:none;border-radius:var(--radius-md)}
.kpi-link:hover .kpi-tile{border-color:var(--color-brand);background:var(--color-brand-faint)}

.overview-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.8fr);
  gap:var(--space-6);align-items:start;margin-block-end:var(--space-6)}
.overview-grid>.section-card{margin-block-end:0}

.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  min-block-size:var(--control-height);padding-inline:var(--space-4);
  border:1px solid transparent;border-radius:var(--radius-sm);
  font-family:inherit;font-size:var(--font-size-sm);font-weight:700;
  text-decoration:none;cursor:pointer}
.button:disabled{opacity:.48;cursor:not-allowed}
.button--primary{background:var(--color-brand);color:var(--color-text-inverse)}
.button--primary:hover{background:var(--color-brand-strong);color:var(--color-text-inverse)}
.button--secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}
.button--secondary:hover{background:var(--color-surface-subtle)}
.button--quiet{min-block-size:var(--target-min);padding-inline:var(--space-2);background:0 0;
  color:var(--color-brand-strong)}
.button--quiet:hover{background:var(--color-brand-soft)}
.button--danger{background:var(--color-surface);color:var(--color-error);border-color:var(--color-error-border)}
.button--danger:hover{background:var(--color-error-bg)}

.status-badge{display:inline-flex;align-items:center;inline-size:fit-content;
  min-block-size:26px;padding:2px 9px;border:1px solid transparent;
  border-radius:var(--radius-pill);font-size:var(--font-size-sm);font-weight:700;
  line-height:1.25;text-align:center;white-space:nowrap}
.status-badge--neutral{color:var(--color-neutral);background:var(--color-neutral-bg);border-color:var(--color-neutral-border)}
.status-badge--info{color:var(--color-info);background:var(--color-info-bg);border-color:var(--color-info-border)}
.status-badge--success{color:var(--color-success);background:var(--color-success-bg);border-color:var(--color-success-border)}
.status-badge--warning{color:var(--color-warning);background:var(--color-warning-bg);border-color:var(--color-warning-border)}
.status-badge--error{color:var(--color-error);background:var(--color-error-bg);border-color:var(--color-error-border)}
.status-badge--ai{color:var(--color-ai);background:var(--color-ai-bg);border-color:var(--color-ai-border)}

.table-wrap{border:1px solid var(--color-border);border-radius:var(--radius-md);
  background:var(--color-surface);overflow-x:auto;box-shadow:var(--shadow-card)}
table{inline-size:100%;border-collapse:collapse}
th,td{padding:var(--space-3) var(--space-4);text-align:start;
  border-block-end:1px solid var(--color-border);font-size:var(--font-size-sm);vertical-align:top}
th{background:var(--color-surface-subtle);font-weight:700;font-size:var(--font-size-xs);
  color:var(--color-text-muted);white-space:nowrap}
tbody tr:last-child td{border-block-end:none}
tbody tr:hover td{background:var(--color-surface-hover)}
td.num,th.num{text-align:end;font-variant-numeric:tabular-nums;white-space:nowrap}

.filter-bar{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);
  border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);
  margin-block-end:var(--space-4);flex-wrap:wrap;box-shadow:var(--shadow-card)}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;min-block-size:var(--target-min);
  border:1px solid var(--color-border);border-radius:var(--radius-pill);
  background:var(--color-surface);color:var(--color-text);text-decoration:none;font-size:var(--font-size-sm)}
.chip:hover{background:var(--color-surface-subtle)}
.chip--active{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-text-inverse);font-weight:700}

.empty-state{display:grid;justify-items:center;gap:var(--space-2);
  padding:var(--space-12) var(--space-4);border:1px dashed var(--color-border-strong);
  border-radius:var(--radius-md);background:var(--color-surface);text-align:center}
.empty-state p{max-inline-size:520px;color:var(--color-text-muted);margin:0}

.form-field{display:grid;gap:var(--space-1);margin-block:var(--space-3);
  color:var(--color-text-muted);font-size:var(--font-size-sm);font-weight:600}
.form-field input,.form-field select,.form-field textarea{inline-size:100%;
  min-block-size:var(--control-height);padding:var(--space-2) var(--space-3);
  border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);
  background:var(--color-surface);color:var(--color-text);font-family:inherit;font-size:var(--font-size-sm)}
.form-field textarea{resize:vertical}
.form-field .hint{font-weight:400;color:var(--color-text-muted);font-size:var(--font-size-xs)}
/* Validation. The field that failed carries the colour, so the eye lands on the
   input to fix rather than on a summary at the top of the page. */
.form-field--error input,.form-field--error select,.form-field--error textarea{
  border-color:var(--color-error);box-shadow:0 0 0 1px var(--color-error)}
.field-error{font-weight:600;color:var(--color-error);font-size:var(--font-size-xs)}
/* A parsed line the arithmetic could not confirm. Loud on purpose: these are
   the two or three rows a person must check against the PDF. */
.row-warning td{background:var(--color-error-faint,rgba(220,38,38,.06))}
/* A quiet action that belongs to a heading rather than to the page. */
.button--inline{font-size:var(--font-size-xs);padding:2px var(--space-2);min-block-size:var(--target-min);
  min-block-size:auto;margin-inline-start:var(--space-3);vertical-align:middle}

input,select,textarea{font-family:inherit}
.inline-form{display:flex;gap:var(--space-2);align-items:center;margin:0;flex-wrap:wrap}
.inline-form select,.inline-form input{min-block-size:var(--control-height);
  padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);
  border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--space-6)}
.form-grid .form-field--wide{grid-column:1/-1}
.actions{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center}

.risk-box{display:grid;grid-template-columns:auto 1fr;gap:var(--space-3);
  padding:var(--space-3);border:1px solid var(--color-border);
  border-radius:var(--radius-sm);margin-block-end:var(--space-3)}
.risk-box p{margin:2px 0 0;color:var(--color-text-muted);font-size:var(--font-size-sm)}
.risk-box strong{font-size:var(--font-size-sm)}
.risk-box--error{background:var(--color-error-bg);border-color:var(--color-error-border)}
.risk-box--warning{background:var(--color-warning-bg);border-color:var(--color-warning-border)}
.risk-box--success{background:var(--color-success-bg);border-color:var(--color-success-border)}
.risk-box--info{background:var(--color-info-bg);border-color:var(--color-info-border)}
.risk-box--ai{background:var(--color-ai-bg);border-color:var(--color-ai-border)}

.definition-grid{display:grid;grid-template-columns:170px minmax(0,1fr);
  gap:var(--space-2) var(--space-4);font-size:var(--font-size-sm);margin:0}
.definition-grid dt{color:var(--color-text-muted);font-weight:600}
.definition-grid dd{margin:0}

.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:grid;grid-template-columns:32px 1fr;gap:var(--space-3);
  padding-block-end:var(--space-4);position:relative}
.timeline li:not(:last-child):before{content:"";position:absolute;inset-block:32px 0;
  inset-inline-start:15px;inline-size:2px;background:var(--color-border)}
.timeline__icon{z-index:1;display:grid;place-items:center;inline-size:32px;block-size:32px;
  border:1px solid var(--color-border);border-radius:50%;background:var(--color-surface);font-size:var(--font-size-xs)}
.timeline small{color:var(--color-text-muted);font-size:var(--font-size-xs)}
.timeline p{margin:2px 0 0;font-size:var(--font-size-sm)}

.totals{display:flex;gap:var(--space-6);flex-wrap:wrap;font-size:var(--font-size-sm);
  margin-block-start:var(--space-4);padding-block-start:var(--space-4);
  border-block-start:1px solid var(--color-border)}
.totals b{font-size:var(--font-size-lg)}
.pos{color:var(--color-success);font-weight:700}
.neg{color:var(--color-error);font-weight:700}
.hint{color:var(--color-text-muted);font-size:var(--font-size-sm)}
.cell-input{inline-size:96px;text-align:end;direction:ltr;
  min-block-size:2rem;padding:var(--space-1) var(--space-2);
  border:1px solid var(--color-border-strong);border-radius:var(--radius-sm)}
code{background:var(--color-surface-subtle);padding:2px 6px;border-radius:var(--radius-sm);
  font-size:var(--font-size-sm);word-break:break-all}

/* ---- day start (תמונת בוקר) ---- */
.day-hello{display:flex;align-items:center;justify-content:space-between;
  gap:var(--space-4);flex-wrap:wrap;margin-block-end:var(--space-4)}
.day-hello p{margin:2px 0 0;color:var(--color-text-muted);font-size:var(--font-size-sm)}
.scope-toggle{display:flex;gap:var(--space-1);padding:3px;border:1px solid var(--color-border);
  border-radius:var(--radius-pill);background:var(--color-surface)}
.scope-toggle a{display:inline-flex;align-items:center;min-block-size:var(--target-min);
  padding:4px 14px;border-radius:var(--radius-pill);text-decoration:none;
  color:var(--color-text-muted);font-size:var(--font-size-sm);font-weight:600}
.scope-toggle a.on{background:var(--color-brand);color:var(--color-text-inverse)}
.fire-strip{display:flex;align-items:center;gap:var(--space-3);
  padding:var(--space-3) var(--space-4);border:1px solid var(--color-error-border);
  border-radius:var(--radius-md);background:var(--color-error-bg);margin-block-end:var(--space-4)}
.fire-strip>span{color:var(--color-error);font-weight:800}
.fire-strip b{color:var(--color-error)}
.fire-strip__go{margin-inline-start:auto;flex-shrink:0}
.pipeline{list-style:none;display:flex;margin:var(--space-4) 0 0;padding:0}
.pipeline>li{position:relative;flex:1;min-inline-size:0;display:grid;justify-items:center;
  gap:var(--space-1);text-align:center;padding-inline:var(--space-2)}
.pipeline>li:not(:first-child)::before{content:"";position:absolute;block-size:2px;
  inset-block-start:26px;inset-inline-start:calc(-50% + 36px);inline-size:calc(100% - 72px);
  border-radius:1px;background:var(--color-border)}
.pipeline__node{z-index:1;display:grid;place-items:center;inline-size:54px;block-size:54px;
  border:2px solid var(--color-border-strong);border-radius:50%;background:var(--color-surface);
  font-size:var(--font-size-xl);font-weight:800;color:var(--color-text);text-decoration:none}
.pipeline__node:hover{box-shadow:0 0 0 4px var(--color-brand-soft);border-color:var(--color-brand)}
.pipeline__node--hot{border-color:var(--color-error);color:var(--color-error)}
.pipeline__node--warm{border-color:var(--color-warning)}
.pipeline__stage{font-weight:700;font-size:var(--font-size-sm)}
/* No overflow:hidden. It clipped the segments' extended hit areas away, so the
   44px targets below were drawn and then cut off at the 8px bar. The pill ends
   are rounded on the first and last segment instead, which gives the same
   silhouette and lets the touch area escape the bar. */
.pipeline__load{display:flex;inline-size:100%;block-size:8px;border-radius:var(--radius-pill);
  background:var(--color-surface-subtle)}
.pipeline__seg:first-child{border-start-start-radius:var(--radius-pill);
  border-end-start-radius:var(--radius-pill)}
.pipeline__seg:last-child{border-start-end-radius:var(--radius-pill);
  border-end-end-radius:var(--radius-pill)}
.pipeline__load--empty{max-inline-size:40px}
.pipeline__seg{position:relative;display:block;block-size:100%;min-inline-size:10px;
  background:var(--color-brand)}
/* The bar is 8px because its length is the data. Rather than fatten it, the
   hit area is extended past the drawing, so the segment is a 44px target that
   still looks like an 8px bar. */
.pipeline__seg::after{content:"";position:absolute;inset-block:-18px;inset-inline:0}
.pipeline__seg+.pipeline__seg{border-inline-start:2px solid var(--color-surface)}
.pipeline__seg--warn{background:var(--color-warning)}
.pipeline__seg--err{background:var(--color-error)}
.pipeline__seg--mute{background:var(--color-border-strong)}
.pipeline__caption{font-size:var(--font-size-xs);color:var(--color-text-muted);
  font-variant-numeric:tabular-nums}
.pipeline__caption--warning{color:var(--color-warning);font-weight:700}
.pipeline__caption--error{color:var(--color-error);font-weight:700}
.intake-chip{display:inline-flex;align-items:center;margin-block-start:2px;
  padding:1px 8px;border-radius:var(--radius-pill);background:var(--color-info-bg);
  border:1px solid var(--color-info-border);color:var(--color-info);font-size:var(--font-size-xs);font-weight:700}
.closed-line{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;
  margin-block-start:var(--space-4);padding-block-start:var(--space-4);
  border-block-start:1px solid var(--color-border);
  font-size:var(--font-size-sm);color:var(--color-text-muted)}
.closed-line__rate{margin-inline-start:auto}
.day-queue{list-style:none;margin:0;padding:0}
.day-queue>li{display:flex;align-items:center;gap:var(--space-4);
  padding:var(--space-3) var(--space-2);border-block-end:1px solid var(--color-border)}
.day-queue>li:last-child{border-block-end:none}
.day-queue__hot{background:var(--color-error-bg);border:1px solid var(--color-error-border)!important;
  border-radius:var(--radius-sm);padding-inline:var(--space-4)!important;
  margin-block-end:var(--space-2)}
.day-queue__rank{flex:none;display:grid;place-items:center;inline-size:30px;block-size:30px;
  border:2px solid var(--color-border-strong);border-radius:50%;font-weight:800;
  color:var(--color-text-muted);font-size:var(--font-size-sm)}
.day-queue__hot .day-queue__rank{border-color:var(--color-error);color:var(--color-error)}
.day-queue__what{min-inline-size:0;flex:1}
.day-queue__what>a{display:inline-block;padding-block:12px;margin-block:-12px;
  font-weight:700;text-decoration:none;
  margin-inline-end:var(--space-2)}
.day-queue__what>a:hover{text-decoration:underline}
.day-queue__what>span{display:block;font-size:var(--font-size-xs)}
.day-queue__due{flex:none;font-size:var(--font-size-xs);font-weight:700;
  padding:2px 10px;border-radius:var(--radius-pill);color:var(--color-neutral);
  background:var(--color-neutral-bg);border:1px solid var(--color-neutral-border);white-space:nowrap}
.day-queue__due--warning{color:var(--color-warning);background:var(--color-warning-bg);
  border-color:var(--color-warning-border)}
.day-queue__due--error{color:var(--color-error);background:var(--color-error-bg);
  border-color:var(--color-error-border)}
.day-queue__more{text-align:center;margin:var(--space-3) 0 0;font-size:var(--font-size-sm)}
.day-queue__more a{display:inline-block;padding-block:12px;margin-block:-12px;padding-inline:var(--space-2)}

/* ---- the unified feed (consolidation 22.08.2026) ---- */
.now-group{margin-block-start:var(--space-4)}
.now-group>h3{display:flex;align-items:center;gap:var(--space-2);
  font-size:var(--font-size-sm);font-weight:800;color:var(--color-text-muted);
  margin-block-end:var(--space-2)}
.day-queue__rank--dot{background:transparent;color:var(--color-text-muted);
  box-shadow:none;font-size:var(--font-size-lg)}
.now-new{display:inline-block;inline-size:8px;block-size:8px;border-radius:50%;
  background:var(--color-brand);margin-inline-end:var(--space-1);vertical-align:middle}
.feed-tasks{list-style:none;margin:var(--space-2) 0 0;padding:0;
  border-inline-start:2px solid var(--color-border);
  padding-inline-start:var(--space-3);display:grid;gap:var(--space-1)}
.feed-task{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;
  font-size:var(--font-size-sm);color:var(--color-text)}
.feed-task__title{font-weight:600}
.feed-task__act{margin-inline-start:auto}
details.updates{margin-block-start:var(--space-4);border:1px solid var(--color-border);
  border-radius:var(--radius-md);background:var(--color-surface)}
details.updates>summary{cursor:pointer;padding:var(--space-3) var(--space-4);
  font-weight:700;font-size:var(--font-size-sm);color:var(--color-text-muted);
  list-style-position:inside}
details.updates[open]>summary{border-block-end:1px solid var(--color-border)}
details.updates>.notif-list,details.updates>.day-queue,details.updates>p{
  padding:var(--space-3) var(--space-4);margin:0}

/* ---- תמונת מצב (insights) ---- */
.hero-kpi{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);
  flex-wrap:wrap;background:var(--color-surface);border-radius:var(--radius-lg);
  padding:var(--space-5) var(--space-6);margin-block-end:var(--space-4);
  border-inline-start:5px solid var(--color-border);box-shadow:var(--shadow-sm)}
.hero-kpi--success{border-inline-start-color:var(--color-success)}
.hero-kpi--error{border-inline-start-color:var(--color-error)}
.hero-kpi__label{display:block;font-size:var(--font-size-sm);font-weight:700;
  color:var(--color-text-muted)}
.hero-kpi__num{display:block;font-size:2.4em;font-weight:800;line-height:1.15;
  color:var(--color-text);font-variant-numeric:tabular-nums}
.hero-kpi__sub{display:block;font-size:var(--font-size-sm);color:var(--color-text-muted)}
.hero-kpi__verdict{max-inline-size:340px;font-size:var(--font-size-sm);line-height:1.5}
.hero-kpi--success .hero-kpi__verdict b{color:var(--color-success)}
.hero-kpi--error .hero-kpi__verdict b{color:var(--color-error)}
.hero-kpi__verdict span{display:block;color:var(--color-text-muted)}
.owner-load{display:flex;align-items:center;gap:var(--space-3)}
.owner-load__bar{display:inline-block;block-size:10px;border-radius:999px;
  background:var(--color-brand)}
.horizon{display:grid;grid-template-columns:repeat(14,1fr);gap:var(--space-1);
  margin-block-start:var(--space-3)}
.horizon__day{display:grid;justify-items:center;gap:4px;padding:var(--space-2) 2px;
  border-radius:var(--radius-sm)}
.horizon__day--today{background:var(--color-brand-soft);outline:2px solid var(--color-brand)}
.horizon__day--rest{background:var(--color-surface-subtle)}
.horizon__dow{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:600}
.horizon__num{font-size:var(--font-size-sm);font-weight:700;font-variant-numeric:tabular-nums}
.horizon__pins{display:grid;gap:3px;min-block-size:22px;align-content:start}
.horizon__pin{inline-size:9px;block-size:9px;border-radius:50%;background:var(--color-brand)}
.horizon__pin--warn{background:var(--color-warning)}
.horizon__pin--err{background:var(--color-error)}

/* ---- CEO view: a briefing, not a workspace ----
 * Rows are wide and few on purpose. Nothing here is a table: a decision the
 * CEO must take should read as a sentence with a button, not as a cell. */
.ceo-list{list-style:none;margin:0;padding:0}
.ceo-row{display:flex;align-items:center;gap:var(--space-4);
  padding:var(--space-3) var(--space-2);border-block-end:1px solid var(--color-border)}
.ceo-row:last-child{border-block-end:none}
.ceo-row--hot{background:var(--color-error-bg);border:1px solid var(--color-error-border);
  border-radius:var(--radius-sm);padding-inline:var(--space-4);margin-block-end:var(--space-2)}
.ceo-row__what{min-inline-size:0;flex:1}
.ceo-row__what>a{display:inline-block;padding-block:12px;margin-block:-12px;
  font-weight:700;text-decoration:none;
  margin-inline-end:var(--space-2)}
.ceo-row__what>a:hover{text-decoration:underline}
.ceo-row__what>span{display:block;font-size:var(--font-size-xs)}
.ceo-row__actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;
  justify-content:flex-end}
.ceo-inline-form{display:inline}
.ceo-count{display:inline-grid;place-items:center;min-inline-size:1.75rem;padding:0 .4rem;
  margin-inline-start:var(--space-2);border-radius:var(--radius-pill);
  background:var(--color-brand-soft);color:var(--color-brand-strong);
  font-size:var(--font-size-sm);font-weight:800;vertical-align:middle}
.ceo-count--error{background:var(--color-error-bg);color:var(--color-error)}
.ceo-costbar{display:inline-block;inline-size:70px;block-size:8px;border-radius:var(--radius-pill);
  background:var(--color-neutral-bg);overflow:hidden;vertical-align:middle;
  margin-inline-end:var(--space-2)}
.ceo-costbar>span{display:block;block-size:100%}
.ceo-feed{list-style:none;margin:0;padding:0}
.ceo-feed>li{display:flex;align-items:center;gap:var(--space-3);
  padding:var(--space-2) 0;border-block-end:1px solid var(--color-border);
  font-size:var(--font-size-sm)}
.ceo-feed>li:last-child{border-block-end:none}
.ceo-feed__time{flex:none;inline-size:5.5rem;color:var(--color-text-muted);
  font-size:var(--font-size-xs);font-variant-numeric:tabular-nums}
.ceo-settings{display:grid;gap:var(--space-4);max-inline-size:34rem}
.ceo-settings label{display:grid;gap:var(--space-1);font-weight:600}
.ceo-settings h2{margin-block:var(--space-4) 0}
.ceo-settings .hint{font-weight:400}
@media (max-width:640px){
  /* Stack the queue row on a phone. Left as a flex row, the title column is
     squeezed to about 40px and a Hebrew tender name renders as a vertical
     column of letters. */
  .day-queue>li{flex-wrap:wrap;gap:var(--space-2) var(--space-3)}
  .day-queue__what{flex:1 0 100%;order:2}
  .day-queue__rank{order:1}
  .day-queue__due{order:3}

  /* The title must own a full line: side by side with the badge it collapsed
     to one word per line (verified at 375px, 11.08). */
  .ceo-row{flex-wrap:wrap;gap:var(--space-2)}
  .ceo-row__what{flex:1 0 100%}
  .ceo-row__actions{inline-size:100%}
  .ceo-row__actions .button,.ceo-row>.button{flex:1;text-align:center}
  .ceo-feed>li{flex-wrap:wrap}
  .ceo-feed__time{inline-size:auto}
  .ceo-feed>li>a{flex:1 0 100%}
}

/* ---- work queue & tender lists ---- */
.work-list{list-style:none;margin:0;padding:0}
.work-item{display:flex;justify-content:space-between;align-items:start;gap:var(--space-4);
  padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);
  border-block-end:1px solid var(--color-border)}
.work-item:last-child{border-block-end:none}
/* The stripe marks a blocked row and nothing else. It used to sit on EVERY row
   in the same info blue, which made it decoration wearing the costume of
   meaning, and it competed with the two stripes in this app that do carry
   state. Same rule as .notif--unread: if it is always on, it says nothing. */
.work-item--blocked{border-inline-start:3px solid var(--color-error);
  background:var(--color-error-bg)}
/* A link that IS the row. In this app a table cell or a list row holds a title
   and a few badges, never a paragraph, so raising these to the target minimum
   cannot swallow prose. They are the primary navigation of the board, the CEO
   view and every report, and they were 21px tall. */
td>a,.ceo-list li>a,.ceo-feed li>a{display:inline-block;padding-block:12px;margin-block:-12px}
.work-item__title{display:inline-block;padding-block:12px;margin-block:-12px;
  font-weight:700;text-decoration:none;margin-inline-end:var(--space-2)}
.work-item__title:hover{text-decoration:underline}
.compact-record{display:flex;justify-content:space-between;align-items:start;
  gap:var(--space-4);padding-block:var(--space-3);
  border-block-end:1px solid var(--color-border)}
.compact-record:last-child{border-block-end:none;padding-block-end:0}
.readiness{display:flex;align-items:center;gap:var(--space-2);min-inline-size:110px}
.readiness__bar{flex:1;block-size:6px;border-radius:999px;background:var(--color-surface-subtle);
  overflow:hidden;min-inline-size:56px}
.readiness__bar span{display:block;block-size:100%}
.next-action{font-weight:600}
.greeting{color:var(--color-text-muted)}

/* ---- tender shell ---- */
.breadcrumbs{display:flex;align-items:center;gap:var(--space-2);
  font-size:var(--font-size-sm);color:var(--color-text-muted);margin-block-end:var(--space-3)}
.breadcrumbs a{text-decoration:none}
.tender-context{background:var(--color-surface);border:1px solid var(--color-border);
  border-radius:var(--radius-md);padding:var(--space-6);margin-block-end:var(--space-4);
  box-shadow:var(--shadow-card)}
.tender-context__main{display:flex;justify-content:space-between;align-items:center;
  gap:var(--space-6)}
.tender-context h1{font-size:var(--font-size-xl);margin-block:var(--space-1) 2px}
.tender-context__meta{display:flex;flex-wrap:wrap;gap:var(--space-6);
  margin-block-start:var(--space-4);padding-block-start:var(--space-4);
  border-block-start:1px solid var(--color-border);font-size:var(--font-size-sm)}
.tender-context__meta dt{color:var(--color-text-muted);font-size:var(--font-size-xs);
  font-weight:700;margin-block-end:2px}
.tender-context__meta dd{margin:0}
.tender-tabs{display:flex;gap:var(--space-1);flex-wrap:wrap;
  border-block-end:1px solid var(--color-border);margin-block-end:var(--space-6)}
.tender-tab{padding:var(--space-3) var(--space-4);text-decoration:none;font-weight:600;
  color:var(--color-text-muted);border-block-end:3px solid transparent;
  font-size:var(--font-size-sm);white-space:nowrap}
.tender-tab:hover{color:var(--color-text);background:var(--color-surface-subtle)}
.tender-tab--active{color:var(--color-brand-strong);border-block-end-color:var(--color-brand)}
.stage-rail{list-style:none;display:flex;margin:var(--space-4) 0 0;
  padding:var(--space-4) 0 0;border-block-start:1px solid var(--color-border)}
.stage-rail__step{position:relative;flex:1;min-inline-size:0;display:grid;
  justify-items:center;gap:2px;text-align:center;padding-inline:var(--space-1)}
.stage-rail__step:not(:first-child)::before{content:"";position:absolute;block-size:2px;
  inset-block-start:13px;inset-inline-start:calc(-50% + 22px);inline-size:calc(100% - 44px);
  border-radius:1px;background:var(--color-border)}
.stage-rail__step--done:not(:first-child)::before,
.stage-rail__step--current:not(:first-child)::before{background:var(--color-success)}
.stage-rail__dot{z-index:1;display:grid;place-items:center;inline-size:28px;block-size:28px;
  border:2px solid var(--color-border-strong);border-radius:50%;
  background:var(--color-surface);color:var(--color-text-muted);
  font-size:14px;margin-block-end:2px}
.stage-rail__step--done .stage-rail__dot{background:var(--color-success);
  border-color:var(--color-success);color:var(--color-text-inverse)}
.stage-rail__step--current .stage-rail__dot{border-color:var(--color-brand);
  box-shadow:0 0 0 4px var(--color-brand-soft)}
.stage-rail__step--current .stage-rail__dot::after{content:"";inline-size:10px;
  block-size:10px;border-radius:50%;background:var(--color-brand)}
.stage-rail__step--warning .stage-rail__dot{border-color:var(--color-warning);
  box-shadow:0 0 0 4px var(--color-warning-bg)}
.stage-rail__step--warning .stage-rail__dot::after{background:var(--color-warning)}
.stage-rail__step--error .stage-rail__dot{border-color:var(--color-error);
  box-shadow:0 0 0 4px var(--color-error-bg)}
.stage-rail__step--error .stage-rail__dot::after{background:var(--color-error)}
.stage-rail__step--skipped .stage-rail__dot{border-style:dashed;
  border-color:var(--color-border);background:var(--color-surface-subtle)}
.stage-rail__name{font-size:var(--font-size-xs);font-weight:600;
  color:var(--color-text-muted);white-space:nowrap;max-inline-size:100%;
  overflow:hidden;text-overflow:ellipsis}
.stage-rail__step--done .stage-rail__name,
.stage-rail__step--current .stage-rail__name{color:var(--color-text)}
.stage-rail__step--current .stage-rail__name{font-weight:700}
.stage-rail__date{font-size:var(--font-size-xs);color:var(--color-text-muted);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.stage-rail__date--info{color:var(--color-info)}
.stage-rail__date--success{color:var(--color-success);font-weight:700}
.stage-rail__date--warning{color:var(--color-warning);font-weight:700}
.stage-rail__date--error{color:var(--color-error);font-weight:700}
.ai-field{display:grid;grid-template-columns:1fr auto;gap:var(--space-3);align-items:center;
  padding:var(--space-3);border:1px solid var(--color-ai-bg);
  border-inline-start:3px solid var(--color-ai);
  border-radius:var(--radius-sm);background:var(--color-ai-bg);margin-block-end:var(--space-2)}
.ai-field__value{font-weight:700}
.doc-row{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-3);
  align-items:center;padding:var(--space-3) 0;border-block-end:1px solid var(--color-border)}
.doc-row:last-child{border-block-end:none}

/* ---- notifications & help ---- */
.notif-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-3)}
.notif{display:flex;justify-content:space-between;align-items:start;gap:var(--space-4);
  padding:var(--space-4);border:1px solid var(--color-border);
  border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-card)}
.notif--unread{border-inline-start:3px solid var(--color-info)}
.notif__title{font-weight:700}
.notif__actions{display:flex;gap:var(--space-2);align-items:center;flex-shrink:0;flex-wrap:wrap}
.help-flow{list-style:none;margin:0;padding:0;counter-reset:step}
.help-flow li{position:relative;padding:var(--space-2) var(--space-10) var(--space-2) 0;
  counter-increment:step}
.help-flow li:before{content:counter(step);position:absolute;inset-inline-start:0;
  inset-block-start:var(--space-2);display:grid;place-items:center;
  inline-size:28px;block-size:28px;border-radius:50%;
  background:var(--color-brand);color:var(--color-text-inverse);font-weight:700;font-size:var(--font-size-sm)}

/* ---- admin ---- */
.admin-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:var(--space-4)}
.admin-links a{display:block;padding:var(--space-4);border:1px solid var(--color-border);
  border-radius:var(--radius-md);background:var(--color-surface);
  text-decoration:none;color:inherit;box-shadow:var(--shadow-card)}
.admin-links a:hover{border-color:var(--color-brand);background:var(--color-brand-faint)}
.admin-links strong{display:block;margin-block-end:4px}
.perm-table td{font-size:var(--font-size-xs)}
.perm-yes{color:var(--color-success);font-weight:700}
.perm-no{color:var(--color-border-strong)}

@media (max-width:1100px){
  .kpi-grid{grid-template-columns:repeat(2,1fr)}
  .overview-grid{grid-template-columns:1fr}
}
@media (max-width:860px){
  /* Shell: topbar, then the nav as a horizontal strip, then content.
     The sidebar MUST have its own named area — auto-placement drops it into an
     implicit row BELOW the content, which on a phone means no visible
     navigation at all (found the hard way, 08.2026). */
  .app-frame{grid-template-columns:1fr;grid-template-rows:auto auto 1fr;
    grid-template-areas:"topbar" "sidebar" "main";padding-block-start:0}
  .topbar{position:static;block-size:auto;min-block-size:0;
    flex-wrap:wrap;gap:var(--space-2) var(--space-3);
    padding:var(--space-2) var(--space-3)}
  .topbar__meta{flex:1;flex-wrap:wrap;justify-content:flex-end;
    row-gap:var(--space-1)}
  /* Search drops to its own full-width row; the icons stay beside the brand */
  .topbar__search{order:9;flex-basis:100%}
  .topbar__search input{inline-size:100%}
  .topbar__search .kbd{display:none}
  .topbar__brand span:last-child{display:none}
  .acting-bar .hint{display:none}
  .acting-bar select{max-inline-size:9.5rem}

  /* Nav strip: one scrollable row of thumb-sized targets under the topbar */
  .sidebar{grid-area:sidebar;position:static;block-size:auto;
    flex-direction:row;align-items:center;gap:0;
    padding:0 var(--space-2);overflow-x:auto;overflow-y:hidden;
    border-inline-end:none;border-block-end:1px solid var(--color-nav-border)}
  .sidebar nav{display:flex;gap:var(--space-1);padding-block:var(--space-1);
    min-inline-size:max-content}
  .nav-item{grid-template-columns:auto auto;min-block-size:44px;
    white-space:nowrap}
  .nav-item--active:before{inset-block:auto 4px;inset-inline:10px;
    block-size:3px;inline-size:auto}
  .nav-item__badge{display:none}
  .sidebar__foot{display:none}

  /* iOS zooms the whole page when focusing an input under 16px. The
     !important is deliberate: component rules (.form-field input etc.) carry
     higher specificity, and this is a behavioural guard, not a style choice. */
  input,select,textarea{font-size:16px!important}

  .main-content{padding:var(--space-4)}
  .kpi-grid{grid-template-columns:1fr}
  .page-header{flex-direction:column;align-items:stretch}
  .page-header__actions .button{flex:1}
  .form-grid{grid-template-columns:1fr}
  .filter-bar .inline-form{flex:1 1 100%}
  .filter-bar input,.filter-bar select{flex:1;min-inline-size:0}
  .actions{align-items:stretch}
  .actions form{inline-size:100%}
  .actions .button{flex:1}
  .inline-form input,.inline-form select{flex:1;min-inline-size:0}

  /* Day start */
  .day-hello{flex-direction:column;align-items:stretch}
  /* Was 42px, which is the one place the mobile layout dropped a control below
     the target minimum. It is a drill-through link, not an ornament. */
  .pipeline__node{inline-size:var(--target-min);block-size:var(--target-min);font-size:var(--font-size-lg)}
  .pipeline>li:not(:first-child)::before{inset-block-start:20px;
    inset-inline-start:calc(-50% + 28px);inline-size:calc(100% - 56px)}
  .pipeline__stage,.pipeline__caption{font-size:11px}
  .pipeline__extra{display:none}
  .day-queue>li{flex-wrap:wrap}
  .day-queue>li .button{flex:1 1 100%}
  .fire-strip{flex-wrap:wrap}
  .fire-strip__go{flex-basis:100%}
  .horizon{grid-template-columns:repeat(7,1fr)}
  .horizon__day:nth-child(n+8){display:none}

  /* Tender file */
  .tender-context{padding:var(--space-4)}
  .tender-context__main{flex-direction:column;align-items:stretch}
  .tender-context__meta{gap:var(--space-3) var(--space-4)}
  .stage-rail{margin-block-start:var(--space-3);padding-block-start:var(--space-3)}
  .stage-rail__step{padding-inline:2px}
  .stage-rail__dot{inline-size:24px;block-size:24px;font-size:12px}
  .stage-rail__step:not(:first-child)::before{inset-block-start:11px;
    inset-inline-start:calc(-50% + 18px);inline-size:calc(100% - 36px)}
  .stage-rail__step--current .stage-rail__dot::after,
  .stage-rail__step--warning .stage-rail__dot::after,
  .stage-rail__step--error .stage-rail__dot::after{inline-size:8px;block-size:8px}
  .stage-rail__name,.stage-rail__date{font-size:11px}
  /* "עד 12/08, 12:00" is wider than a fifth of a phone; let it wrap at the comma */
  .stage-rail__date{white-space:normal;max-inline-size:100%}
  .tender-tabs{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;
    margin-inline:calc(var(--space-4) * -1);padding-inline:var(--space-4)}
  .tender-tab{flex-shrink:0}
  .ai-field{grid-template-columns:1fr}

  /* Lists and cards */
  .work-item{flex-wrap:wrap}
  .work-item .inline-form{flex-basis:100%}
  .work-item .inline-form .button{flex:1}
  .notif{flex-wrap:wrap}
  .notif__actions{flex-basis:100%;justify-content:flex-start}
  .compact-record{flex-wrap:wrap}
  .overview-grid{gap:var(--space-4)}
  .definition-grid{grid-template-columns:minmax(110px,40%) minmax(0,1fr)}

  /* Tables become labeled cards */
  .table-wrap{border:none;background:transparent}
  table,thead,tbody,th,td,tr{display:block}
  thead{display:none}
  /* On mobile a table row IS a card, so it earns the same elevation. */
  tbody tr{background:var(--color-surface);border:1px solid var(--color-border);
    border-radius:var(--radius-md);margin-block-end:var(--space-3);padding:var(--space-2) 0;
    box-shadow:var(--shadow-card)}
  td{border:none;display:flex;flex-wrap:wrap;justify-content:space-between;
    gap:var(--space-1) var(--space-4);padding:var(--space-2) var(--space-4)}
  td::before{content:attr(data-label);color:var(--color-text-muted);
    font-size:var(--font-size-xs);font-weight:600}
  td>.hint{flex-basis:100%}
  td.num{text-align:end}
  td .inline-form{flex-basis:100%}
  td .inline-form .button{flex:1}
}

/* ------------------------------------------------------------------ board
 * לוח מכרזים as a kanban, 22.08.2026, matched to the Sunday demo film:
 * tinted columns, white cards, colored deadline chips. The table view stays
 * reachable (?view=table); this is the default face of the same data. */
.board{display:flex;gap:var(--space-3);align-items:flex-start;overflow-x:auto;
  padding-block-end:var(--space-3)}
.board-col{flex:1 1 0;min-inline-size:218px;background:var(--color-surface-hover);border-radius:var(--radius-md);
  padding:var(--space-2)}
.board-col__head{display:flex;justify-content:space-between;align-items:center;
  font-size:12.5px;font-weight:800;color:var(--color-text-muted);padding:2px 6px 9px}
.board-col__head span{background:var(--color-surface);border-radius:10px;padding:0 8px;
  font-size:11.5px;font-variant-numeric:tabular-nums}
.board-col__empty{font-size:12px;color:var(--color-text-muted);text-align:center;
  padding:var(--space-4) 0}
.tcard{display:block;background:var(--color-surface);border-radius:10px;padding:11px 12px;
  margin-block-end:9px;box-shadow:0 1px 3px rgba(23,34,44,.08);
  border-inline-start:3px solid transparent;text-decoration:none;color:inherit;
  transition:box-shadow var(--transition-fast),transform var(--transition-fast)}
.tcard:hover{box-shadow:0 0 0 3px var(--color-brand-soft),0 6px 18px rgba(15,111,112,.18);
  transform:translateY(-1px)}
.tcard--hot{border-inline-start-color:var(--color-error)}
.tcard__title{font-size:12.8px;font-weight:700;line-height:1.4;color:var(--color-text);
  display:block}
.tcard__hint{font-size:11px;color:var(--color-text-muted);margin-block-start:3px;display:block}
.tcard__meta{display:flex;gap:6px;margin-block-start:7px;flex-wrap:wrap;align-items:center}
.tcard__meta .hint{font-size:11px}
.tcard__next{display:block;margin-block-start:7px;padding-block-start:7px;
  border-block-start:1px solid var(--color-border);font-size:11.5px;font-weight:700;
  color:var(--color-brand-strong)}
.deadchip{font-size:11px;font-weight:800;border-radius:6px;padding:2px 7px;
  background:var(--color-info-bg);color:var(--color-info);font-variant-numeric:tabular-nums}
.deadchip--warn{background:var(--color-warning-bg);color:var(--color-warning)}
.deadchip--bad{background:var(--color-error-bg);color:var(--color-error);animation:deadpulse 1.1s infinite}
.deadchip--mute{background:var(--color-surface-subtle);color:var(--color-text-muted)}
@keyframes deadpulse{0%,100%{box-shadow:0 0 0 0 rgba(196,58,58,.35)}
  50%{box-shadow:0 0 0 6px rgba(196,58,58,0)}}
@media (prefers-reduced-motion:reduce){.deadchip--bad{animation:none}}
@media (max-width:760px){.board{flex-direction:column}.board-col{min-inline-size:0}}

/* ------------------------------------------------------------ demo-look kit
 * 22.08.2026: the Sunday films and the app share one look. These classes are
 * the film's design system ported onto the app tokens (no raw hex; the brand
 * test enforces that). Used by decision, pricing, quality, readiness, result. */

/* what-the-system-read facts */
.ck{display:flex;gap:10px;align-items:flex-start;padding:7px 0}
.ck .ckb{inline-size:21px;block-size:21px;flex:0 0 auto;border-radius:50%;
  background:var(--color-success-bg);display:grid;place-items:center;margin-block-start:1px;
  color:var(--color-success);font-size:12px;font-weight:800}
.ck b{font-size:13.5px;font-weight:700;display:block;color:var(--color-text)}
.ck small{font-size:12.2px;color:var(--color-text-muted)}

/* the two big decision buttons */
.decbtns{display:flex;gap:10px;margin-block-start:10px}
.decbtn{flex:1;border:2px solid var(--color-border);border-radius:12px;padding:14px;
  text-align:center;font-weight:800;font-size:14.5px;color:var(--color-text);
  background:var(--color-surface);cursor:pointer;transition:all .2s}
.decbtn:hover{border-color:var(--color-border-strong)}
.decbtn--yes:hover,.decbtn--yes.sel{border-color:var(--color-brand);
  background:var(--color-brand-faint);color:var(--color-brand-strong);
  box-shadow:0 0 0 3px var(--color-brand-soft)}
.decbtn small{display:block;font-weight:500;color:var(--color-text-muted);
  font-size:11.5px;margin-block-start:3px}

/* pricing: locked catalog cells + the one editable column pair */
.pricelock{color:var(--color-text-muted);font-size:10px;margin-inline-start:4px}
td.cell-disc{background:var(--color-brand-faint)}
td.cell-disc .cell-input{font-weight:800;color:var(--color-brand-strong)}
.breakeven{display:flex;align-items:center;gap:10px;background:var(--color-warning-bg);
  border:1px solid var(--color-warning-border);border-radius:10px;padding:10px 13px;
  margin-block-start:10px;font-size:12.5px;font-weight:700;color:var(--color-warning)}
.breakeven b{font-size:16px}

/* quality: the library as clickable block cards */
.qpick{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.qpick label{display:flex;align-items:flex-start;gap:9px;background:var(--color-surface);
  border:1.5px solid var(--color-border);border-radius:10px;padding:10px 12px;
  font-size:12.8px;font-weight:700;color:var(--color-text);cursor:pointer;transition:all .2s}
.qpick label:hover{border-color:var(--color-border-strong)}
.qpick input{position:absolute;opacity:0;pointer-events:none}
.qpick label:has(input:checked){border-color:var(--color-brand);
  background:var(--color-brand-faint);box-shadow:0 0 0 2px var(--color-brand-soft)}
.qpick .qic{inline-size:26px;block-size:26px;flex:0 0 auto;border-radius:7px;
  background:var(--color-brand-faint);display:grid;place-items:center;font-size:13px}
.qpick small{display:block;font-weight:500;color:var(--color-text-muted);font-size:11px}

/* readiness gates as cards */
.gate{display:flex;align-items:center;gap:11px;background:var(--color-surface);
  border:1px solid var(--color-border);border-radius:11px;padding:12px 14px;
  margin-block-end:9px;transition:all .3s}
.gate i{inline-size:26px;block-size:26px;border-radius:50%;flex:0 0 auto;
  display:grid;place-items:center;font-style:normal;background:var(--color-surface-subtle);
  color:var(--color-text-muted);font-weight:800;font-size:12px}
.gate b{font-size:13.5px;color:var(--color-text)}
.gate small{display:block;font-size:11.5px;color:var(--color-text-muted)}
.gate--ok{border-color:var(--color-success-border)}
.gate--ok i{background:var(--color-success-bg);color:var(--color-success)}
.gate .actions{margin-inline-start:auto}

/* pricing worksheet: all columns on one screen, left to right, no sideways
 * scroll (22.08.2026, per Calanit). Compact type, tight numeric columns, the
 * item name truncates with a tooltip instead of pushing everything wide. */
.wsheet table{inline-size:100%;table-layout:fixed}
.wsheet col.c-item{inline-size:auto}
.wsheet col.c-xs{inline-size:44px}.wsheet col.c-s{inline-size:58px}
.wsheet col.c-m{inline-size:72px}.wsheet col.c-l{inline-size:84px}
.wsheet th{padding:5px 5px;font-size:10.5px;white-space:nowrap}
.wsheet td{padding:3px 5px;font-size:11.5px;white-space:nowrap}
.wsheet td:first-child{max-inline-size:220px;overflow:hidden;text-overflow:ellipsis}
.wsheet td:first-child .hint{display:none}
.wsheet .cell-input{inline-size:62px;min-block-size:auto;block-size:26px;
  padding:2px 5px;font-size:11.5px}
.wsheet .table-wrap{overflow-x:visible}
@media (max-width:1150px){.wsheet .table-wrap{overflow-x:auto}}

/* result: the win banner */
.winbanner{background:var(--color-success-bg);border:1.5px solid var(--color-success-border);
  border-radius:13px;padding:16px 18px;display:flex;align-items:center;gap:13px;
  margin-block-end:12px}
.winbanner .wic{font-size:30px}
.winbanner b{font-size:16px;color:var(--color-success);display:block}
.winbanner small{font-size:12px;color:var(--color-text-muted)}

/* Centred, chrome-free pages: login and anything without the app frame. */
.centered-page{min-block-size:100vh;min-block-size:100dvh;display:grid;place-items:center;
  padding:var(--space-6);background:linear-gradient(180deg,var(--color-surface-subtle),var(--color-surface-hover))}
.centered-card{inline-size:min(420px,100%);background:var(--color-surface);border:1px solid var(--color-border);
  border-radius:var(--radius-lg);padding:var(--space-8);box-shadow:var(--shadow-overlay)}
.centered-card .brand{display:flex;align-items:center;gap:var(--space-3);
  justify-content:flex-start;margin-block-end:var(--space-6);font-weight:700}
.lock{display:grid;place-items:center;inline-size:44px;block-size:44px;border-radius:var(--radius-md);
  background:var(--color-surface-subtle);margin-block-end:var(--space-4);font-size:20px}
