/* Avilo — Factory module (board, job sheet, standard production, materials). Phone first; every class is .fac- prefixed. */

/* ---------- Header, tabs, search ---------- */
.fac-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 12px}
.fac-top h1{font:800 24px/1.2 var(--font-head);flex:1;margin:0;min-width:0}
.fac-reload{min-height:44px;padding:8px 14px}
.fac-new{order:3;width:100%}
@media (min-width:900px){
  .fac-new{order:0;width:auto}
}
.fac-tabs{margin-bottom:10px}
.fac-search{position:relative;margin:0 0 12px}
.fac-search>.i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.fac-search .input{padding-left:42px;padding-right:46px;border-radius:var(--r-pill)}
.fac-search .input::-webkit-search-cancel-button{display:none}
.fac-qx{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;background:none;border-radius:50%;display:grid;place-items:center;color:var(--muted)}
.fac-loading{display:flex;align-items:center;gap:10px;justify-content:center;padding:40px 16px;color:var(--muted);font-weight:600}
.fac-loading.small{justify-content:flex-start;padding:8px 0;font-size:13.5px}
.fac-spin{display:inline-block;width:18px;height:18px;flex:none;border:2.5px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-3px}
.fac-empty{padding:48px 16px}
.fac-empty>.i{width:36px;height:36px;color:var(--brand)}
.fac-empty p{max-width:420px;margin:0 auto 16px;line-height:1.5}
.fac-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Board: phone = stage chips + one list; computer = columns ---------- */
.fac-stages{margin-bottom:10px}
.fac-schip{flex:none;position:relative}
.fac-schip.zero:not(.on){color:var(--muted)}
.fac-dot{width:8px;height:8px;border-radius:50%;background:var(--danger);display:inline-block;flex:none}
.fac-board{display:block}
.fac-col{display:none}
.fac-col.on{display:block}
.fac-colh{display:none}
.fac-none{color:var(--muted);text-align:center;padding:28px 12px;margin:0;font-size:14px;border:1.5px dashed var(--line);border-radius:var(--r)}
@media (min-width:900px){
  .fac-stages{display:none}
  .fac-board{display:flex;gap:12px;overflow-x:auto;padding:0 2px 12px;align-items:flex-start;scrollbar-width:thin}
  .fac-col,.fac-col.on{display:flex;flex-direction:column;gap:10px;flex:1 0 250px;max-width:340px;background:var(--surface-2);border-radius:var(--r);padding:10px;min-height:160px}
  .fac-col.zero{flex:0 0 160px}
  .fac-colh{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 2px;font-size:14px}
  .fac-colh b{font-family:var(--font-head)}
  .fac-colh .n{min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:var(--surface);display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--ink-2)}
  .fac-none{padding:18px 8px;font-size:13px;border-color:var(--line);background:transparent}
  .fac-col .fac-card{margin:0}
  .fac-col .fac-ph{width:56px;height:56px}
}

/* ---------- Job card ---------- */
.fac-card{display:flex;gap:12px;padding:12px;margin:0 0 10px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);
  box-shadow:var(--shadow-1);cursor:pointer;text-align:left;transition:box-shadow .15s,border-color .15s}
.fac-card:hover{box-shadow:var(--shadow-2)}
.fac-card:focus-visible{outline-offset:2px}
.fac-card.urgent{border-left:4px solid var(--danger)}
.fac-card.late{border-color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,var(--line-2))}
.fac-ph{width:68px;height:68px;border-radius:var(--r-sm);overflow:hidden;background:var(--surface-2);display:grid;place-items:center;color:var(--brand);flex:none}
.fac-ph img{width:100%;height:100%;object-fit:cover}
.fac-ph .noimg span{display:none}
.fac-cb{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.fac-ctop{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fac-no{font:800 14px var(--font-head);letter-spacing:.02em;color:var(--ink-2)}
.fac-title{font-weight:700;font-size:15.5px;line-height:1.3;overflow-wrap:anywhere}
.fac-qty{color:var(--muted);font-weight:600;font-size:13.5px}
.fac-who{color:var(--ink-2);font-size:13.5px;overflow-wrap:anywhere}
.fac-meta{display:flex;flex-wrap:wrap;gap:3px 12px;font-size:12.5px;color:var(--muted);margin-top:3px}
.fac-meta span{display:inline-flex;align-items:center;gap:4px}
.fac-meta .i.sm{width:14px;height:14px}
.fac-late{color:var(--danger)!important;font-weight:700}
.fac-pend{color:var(--sand);color:color-mix(in srgb,var(--sand) 80%,var(--ink))}
.fac-qnext{margin-top:8px;align-self:flex-start;min-height:44px;padding:8px 14px;font-size:14px;max-width:100%}
.fac-list .fac-card{margin-bottom:10px}
@media (min-width:760px){
  .fac-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px}
  .fac-list .fac-card{margin:0}
}
.fac-kinds{margin-bottom:10px}
.fac-hint{margin:0 0 12px}

/* ---------- Materials needed ---------- */
.fac-mhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 6px}
.fac-mhead .subtle{flex:1;margin:0;min-width:180px}
.fac-h{font:700 16px var(--font-head);margin:16px 2px 10px}
.fac-sum{padding:6px 14px}
.fac-sum-row{display:grid;grid-template-columns:1fr auto;gap:0 12px;padding:10px 0;border-bottom:1px dashed var(--line)}
.fac-sum-row:last-child{border-bottom:0}
.fac-sum-row span{font-weight:700;text-align:right;white-space:nowrap}
.fac-sum-row b{overflow-wrap:anywhere}
.fac-prio{flex-wrap:nowrap}
.fac-prio .chip{flex:1;justify-content:center;padding:8px 10px}
.fac-sum-row small{grid-column:1/-1;color:var(--muted);font-size:12.5px}
.fac-needs{display:flex;flex-direction:column;gap:8px}
.fac-need{display:flex;align-items:center;gap:10px;padding:8px 10px 8px 4px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);flex-wrap:wrap}
.fac-need.needed{border-left:4px solid #D97706}
.fac-need.ordered{border-left:4px solid #2563EB}
.fac-need-main{flex:1 1 200px;min-width:0;border:0;background:none;text-align:left;padding:6px 8px;display:flex;flex-direction:column;gap:2px;border-radius:var(--r-sm)}
.fac-need-main:hover{background:var(--surface-2)}
.fac-need-top{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.fac-need-top b{font-size:15px}
.fac-need-qty{font-weight:700;color:var(--ink-2)}
.fac-need-main small{color:var(--muted);font-size:12.5px;overflow-wrap:anywhere}
.fac-need-btn{flex:none;min-height:44px;margin-left:auto}
@media (max-width:420px){.fac-need-btn{flex:1 1 100%;margin:0 0 0 8px}}

/* ---------- Job sheet ---------- */
.fac-js-status{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fac-track{display:flex;gap:4px;margin:12px 0 4px}
.fac-track i{flex:1;height:6px;border-radius:3px;background:var(--surface-3)}
.fac-track i.past{background:var(--ok)}
.fac-track i.now{background:var(--ink)}
.fac-step{margin:0 0 14px}
.fac-place{margin-bottom:12px}
.fac-place .chip{min-height:44px}
.fac-next{min-height:58px;font-size:17px;font-weight:700;margin:0 0 12px}
.fac-next .i{width:22px;height:22px}
.fac-jump{margin:0 0 16px}
.fac-jump .lbl{margin-bottom:8px}
.fac-jump .chip{min-height:44px}
.fac-jump .chip.fac-back{border-style:dashed}
.fac-jump .chip[disabled]{opacity:.5;pointer-events:none}
.fac-made{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--ok-soft);border-color:transparent}
.fac-made>.i{color:var(--ok)}
.fac-made .grow{flex:1;min-width:160px}
.fac-made b{display:block}
.fac-made small{color:var(--ink-2)}
.fac-orderbtn{margin:0 0 6px;justify-content:flex-start}
.fac-sec{padding:16px 0;border-top:1px solid var(--line-2)}
.fac-sec:first-of-type{margin-top:6px}
.fac-sec>h4{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-family:var(--font);font-weight:700;margin:0 0 10px;display:flex;gap:8px;align-items:baseline}
.fac-sec>h4 span{letter-spacing:0;text-transform:none;font-weight:600;font-size:12.5px;color:var(--ink-2)}
.fac-sec>p{margin:0}
.fac-desc{margin:10px 0 0;white-space:pre-line;color:var(--ink-2)}
.fac-due{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.fac-date{flex:1 1 180px;margin:0}
.fac-due .chip{min-height:44px}
.fac-due .chip.fac-urg.on{background:var(--danger);border-color:var(--danger);color:#fff}

/* people */
.fac-people{display:flex;flex-direction:column;gap:6px}
.fac-person{display:flex;align-items:center;gap:8px;padding:8px 6px 8px 12px;border:1px solid var(--line-2);border-radius:var(--r-sm)}
.fac-person .grow{flex:1;min-width:0}
.fac-person small{display:block;color:var(--muted);font-size:12px;font-weight:600}
.fac-person b{display:block;font-size:15px;overflow-wrap:anywhere}
.fac-person .btn{min-height:44px;flex:none}

/* materials checklist */
.fac-mats{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.fac-mat{display:grid;grid-template-columns:1fr auto;gap:6px 8px;align-items:center;padding:10px 6px 10px 12px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface)}
.fac-mat.received{background:var(--surface-2)}
.fac-mat.received .fac-mat-name b{text-decoration:line-through;color:var(--muted)}
.fac-mat-name{min-width:0}
.fac-mat-name b{display:block;overflow-wrap:anywhere}
.fac-mat-name small{color:var(--muted);font-weight:600}
.fac-mat-rm{width:44px;height:44px;padding:0}
.fac-seg{grid-column:1/-1;display:flex;border:1.5px solid var(--line);border-radius:var(--r-pill);overflow:hidden;margin-right:6px}
.fac-seg button{flex:1;min-height:44px;border:0;background:var(--surface);font-size:13.5px;font-weight:600;color:var(--ink-2);padding:6px 4px}
.fac-seg button+button{border-left:1.5px solid var(--line)}
.fac-seg button.on.needed{background:#FEF3C7;color:#92400E}
.fac-seg button.on.ordered{background:#DBEAFE;color:#1D4ED8}
.fac-seg button.on.received{background:#DCFCE7;color:#166534}
:root[data-theme="dark"] .fac-seg button.on.needed{background:#3A2C10;color:#FCD34D}
:root[data-theme="dark"] .fac-seg button.on.ordered{background:#1E2A4A;color:#93B4FF}
:root[data-theme="dark"] .fac-seg button.on.received{background:#14301F;color:#86EFAC}
@media (prefers-color-scheme:dark){
  :root[data-theme="auto"] .fac-seg button.on.needed{background:#3A2C10;color:#FCD34D}
  :root[data-theme="auto"] .fac-seg button.on.ordered{background:#1E2A4A;color:#93B4FF}
  :root[data-theme="auto"] .fac-seg button.on.received{background:#14301F;color:#86EFAC}
}
@media (min-width:640px){
  .fac-mat{grid-template-columns:1fr minmax(260px,auto) auto}
  .fac-seg{grid-column:auto;grid-row:1;grid-column-start:2;margin:0}
  .fac-mat-rm{grid-column:3;grid-row:1}
}
.fac-sugg{margin:0 0 10px}
.fac-mat-add{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fac-mat-add .fac-mat-item{grid-column:1/-1}
.fac-mat-add .fac-mat-addbtn{grid-column:1/-1;min-height:48px}
@media (min-width:640px){
  .fac-mat-add{grid-template-columns:1fr 90px 100px auto}
  .fac-mat-add .fac-mat-item,.fac-mat-add .fac-mat-addbtn{grid-column:auto}
}

/* photos, notes, history */
.fac-addph{cursor:pointer}
.fac-sec .photos{margin-bottom:10px}
.fac-sec .ph-tile img{cursor:zoom-in}
.fac-notes{min-height:96px;resize:vertical;line-height:1.45}
.fac-notes-row{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.fac-notes-row small{flex:1;min-width:160px}
.fac-hist{margin-top:6px}
.fac-hlist{list-style:none;margin:0;padding:0}
.fac-hlist li{padding:8px 0;border-bottom:1px dashed var(--line-2);display:flex;flex-direction:column;gap:1px;font-size:14px}
.fac-hlist li:last-child{border-bottom:0}
.fac-hlist small{color:var(--muted);font-size:12px}
.fac-stamp{font-size:12px;color:var(--muted);margin:14px 0 12px}
.fac-cancel{margin-top:4px}

/* ---------- Standard production form ---------- */
.fac-copy{justify-content:flex-start;margin-bottom:16px}
.fac-typechips{margin:0 -20px;padding:2px 20px 6px;scroll-padding:20px}
.fac-typechips .chip{flex:none}
.fac-mat-unit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B6B72' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:18px;padding-right:38px}
.fac-typein,.fac-datein{margin-top:10px}
.fac-fab{display:flex;align-items:center;gap:8px;padding:8px 6px 8px 12px;border:1px solid var(--line-2);border-radius:var(--r-sm);margin-bottom:8px}
.fac-fab .grow{flex:1;min-width:0}
.fac-fab small{display:block;color:var(--muted);font-size:12px;font-weight:600}
.fac-fab b{display:block;overflow-wrap:anywhere}
.fac-form .chips .chip .i.sm{color:var(--brand)}
.fac-form .chips .chip.on .i.sm{color:inherit}

/* ---------- Made by: own factory or a vendor (BRIEF-v2 §1.12) ---------- */
.fac-makers{margin-bottom:10px}
.fac-makers .chip{flex:none}
.fac-vendor .i.sm{width:13px;height:13px}
.fac-maker .fac-person{flex-wrap:wrap}
.fac-maker .fac-person b{display:flex;align-items:center;gap:6px}
.fac-venlink{padding:8px 0;min-height:44px;font-size:13px;color:var(--accent-ink);justify-content:flex-start}
.fac-makerchips{flex:1 1 100%;margin-top:6px}
.fac-makerchips .chip{flex:1;justify-content:center;min-height:44px}
@media (min-width:560px){.fac-makerchips{flex:0 0 auto;margin-top:0}.fac-makerchips .chip{flex:none}}
.fac-madeby .chips .chip{flex:1;justify-content:center}
.fac-venrow{display:flex;align-items:center;gap:10px;margin-top:10px;padding:8px 8px 8px 12px;border:1px solid var(--line-2);border-radius:var(--r-sm)}
.fac-venrow .grow{flex:1;min-width:0}
.fac-venrow small{display:block;color:var(--muted);font-size:12px;font-weight:600}
.fac-venrow b{display:block;overflow-wrap:anywhere}
.fac-venrow .btn{min-height:44px;flex:none}
/* material lines: group + vendor */
.fac-mat-group{display:inline-block;margin-left:6px;color:var(--muted);font-weight:600}
.fac-mat-ven{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:8px 12px;min-height:44px;font-size:13px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--ink-2);justify-content:flex-start}
.fac-mat-ven.has{background:#FEF3C7;color:#92400E}
:root[data-theme="dark"] .fac-mat-ven.has{background:#3A2C10;color:#FCD34D}
.fac-mat-venbtn{grid-column:1/-1;min-height:48px;justify-content:flex-start}
.fac-mat-venbtn.has{color:#92400E;border-color:#FCD34D}
:root[data-theme="dark"] .fac-mat-venbtn.has{color:#FCD34D}
@media (min-width:640px){
  .fac-mat-add{grid-template-columns:1fr 90px 100px 150px}
  .fac-mat-add .fac-mat-venbtn{grid-column:1/3}
  .fac-mat-add .fac-mat-addbtn{grid-column:3/5}
}
.fac-need-vendor{display:inline-flex;align-items:center;gap:4px;color:#92400E;font-weight:600}
:root[data-theme="dark"] .fac-need-vendor{color:#FCD34D}
.fac-need-top .badge{font-size:11px}
@media (max-width:639px){.fac-mat-add .fac-mat-grp{grid-column:1/-1}}

/* ---------- Materials needed: grouped by vendor / material group, one purchase list per vendor ---------- */
.fac-mby{margin:0 0 4px}
.fac-mby .chip{min-height:44px}
.fac-mblock{background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r);padding:10px;margin:0 0 12px}
.fac-mblock.none{background:transparent;border-style:dashed}
.fac-mblock-h{display:flex;align-items:center;gap:10px;padding:2px 2px 10px}
.fac-mblock-h .grow{flex:1;min-width:0}
.fac-mblock-h b{display:block;font:700 16px/1.25 var(--font-head);overflow-wrap:anywhere}
.fac-mblock-h small{display:block;color:var(--muted);font-size:12.5px}
.fac-mblock-ic{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--surface);color:var(--brand);flex:none}
.fac-mblock.none .fac-mblock-ic{color:var(--muted)}
.fac-mcall{flex:none;width:44px;height:44px;min-height:44px;padding:0}
.fac-mblock .fac-sum{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-sm);margin:0 0 8px}
.fac-macts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.fac-mact{flex:1 1 160px;min-height:48px}
.fac-need-acts{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto;flex:none;align-items:center}
.fac-need-acts .fac-need-btn{margin:0}
@media (max-width:420px){.fac-need-acts{flex:1 1 100%;margin:0 0 0 8px}.fac-need-acts .fac-need-btn,.fac-need-acts .stat{flex:1 1 0;margin:0;justify-content:center}.fac-need-acts .fac-need-btn{padding:10px 12px}}

/* ---------- Who has the job, Send to next, My tasks (BRIEF-v2 §1.11) ---------- */
.fac-with{font-weight:600;color:var(--ink-2)}
.fac-with.me{color:var(--accent-ink)}
.fac-withbox{margin-bottom:10px}
.fac-withbox.me{border-color:var(--ink);background:var(--surface-2)}
.fac-withbox small+small{margin-top:2px}
.fac-ava{width:40px;height:40px;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);display:grid;place-items:center;font:800 16px var(--font-head);flex:none}
.fac-uid{font-size:12.5px;font-weight:500;color:var(--muted)}
.fac-sendnext{min-height:52px;margin:0 0 4px}
.fac-withsec .hint{display:block;margin:0 0 10px}
.fac-hand{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column}
.fac-hand li{display:flex;flex-direction:column;gap:2px;padding:9px 0 9px 14px;border-left:2px solid var(--line-2);position:relative;font-size:14px}
.fac-hand li::before{content:"";position:absolute;left:-6px;top:14px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2px solid var(--muted)}
.fac-hand li:first-child::before{border-color:var(--ink);background:var(--ink)}
.fac-hand b{display:flex;align-items:center;gap:4px;flex-wrap:wrap;overflow-wrap:anywhere;font-weight:600}
.fac-hand b .i.sm{width:14px;height:14px;color:var(--muted)}
.fac-hand small{color:var(--muted);font-size:12.5px}
.fac-hnote{color:var(--ink-2);white-space:pre-line;overflow-wrap:anywhere}
/* "Send to next" picker */
.fac-sendnow{margin:0 0 12px;line-height:1.45}
.fac-psearch{margin-bottom:8px}
.fac-ulist{margin:0 -8px 12px;max-height:46vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.fac-ulist .item{min-height:56px}
.fac-uitem b{display:block;overflow-wrap:anywhere}
.fac-uitem.on{background:var(--surface-2);box-shadow:inset 0 0 0 2px var(--ink)}
.fac-tick{width:32px;height:32px;border-radius:50%;background:var(--ink);color:var(--bg);display:grid;place-items:center;flex:none}
.fac-tick .i{width:18px;height:18px}
.fac-sendnote{margin-bottom:4px}
.sheet .ft .fac-sendgo{flex:1;min-width:0}

/* Round 5 — jobs the showroom stopped today (order / item cancelled): a notice on top of the board, and the reason on a
   stopped job's card in Finished ("Order 1004 cancelled — job J1003 stopped"). */
.fac-stopped{margin:0 0 12px;border:1px solid var(--line-2);border-left:4px solid var(--danger);border-radius:var(--r);background:var(--surface);overflow:hidden}
.fac-stoph{display:flex;align-items:center;gap:6px;padding:10px 12px 8px;font:700 14px/1.3 var(--font);color:var(--danger)}
.fac-stoprow{display:flex;align-items:center;gap:8px;width:100%;min-height:52px;padding:8px 12px;border:0;border-top:1px solid var(--line-2);background:none;text-align:left;font:inherit;color:inherit;cursor:pointer}
.fac-stoprow:hover{background:var(--surface-2)}
.fac-stoprow .grow{flex:1;min-width:0}
.fac-stoprow b{display:block;font-size:14.5px;font-weight:600;overflow-wrap:anywhere}
.fac-stoprow small{display:block;font-size:12.5px;color:var(--muted);margin-top:1px;overflow-wrap:anywhere}
.fac-stoprow em{flex:none;font-style:normal;font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.fac-stopped > .btn{margin:4px 8px 8px}
.fac-stopnote{display:flex;align-items:flex-start;gap:4px;margin-top:4px;font-size:13px;font-weight:600;color:var(--danger)}
.fac-stopnote .i{flex:none;margin-top:2px}

/* ---------- R15-1 #13: All stages / Late, stage tags, days waiting, Oldest first, scroll arrows ---------- */
@media (min-width:900px){
  .fac-stages{display:flex} /* the chips row shows on laptops too: "All stages" and "Late" live there */
  .fac-col.on{box-shadow:inset 0 0 0 2px var(--ink)}
}
.fac-sortrow{display:flex;justify-content:flex-end;margin:-2px 0 10px}
.fac-sort{min-height:40px;padding:6px 14px}
.fac-sort[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.fac-latechip .fac-dot{margin-right:2px}
.fac-stagetag{font-size:11.5px;text-transform:none;letter-spacing:0}
.fac-stagetag.s-material{background:#FDF0E1;color:#8A4B0C}
.fac-stagetag.s-fabric-order{background:#FCE8EF;color:#9D1B4A}
.fac-stagetag.s-fabric-check{background:#F7E6F7;color:#7D2380}
.fac-stagetag.s-karigar{background:#E8EEFC;color:#2346A0}
.fac-stagetag.s-polish{background:#E6F4F1;color:#14655A}
.fac-stagetag.s-sofa{background:#EEE9FB;color:#4F2FA0}
.fac-stagetag.s-finishing{background:#E9F3DF;color:#3F6212}
.fac-stagetag.s-ready{background:#DDF3E4;color:#166534}
:root[data-theme="dark"] .fac-stagetag{filter:brightness(.85) saturate(1.1)}
.fac-days{font-weight:700;color:var(--ink-2)}
.fac-days.old{color:var(--danger)}
.fac-with.none{color:var(--muted);font-weight:500}
/* arrows + edge fade where the stage chips or the columns run off the edge (laptop; hidden when nothing overflows) */
.fac-scrollwrap{position:relative}
.fac-arr{display:none}
@media (min-width:900px) and (pointer:fine){
  .fac-arr{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink);display:grid;place-items:center;box-shadow:var(--shadow-2,0 4px 14px -6px rgba(0,0,0,.35));cursor:pointer}
  .fac-arr[hidden]{display:none}
  .fac-arr.l{left:-6px}
  .fac-arr.r{right:-6px}
  .fac-scrollwrap[data-sw="board"] .fac-arr{top:90px;transform:none}
  .fac-scrollwrap.fade-l::before,.fac-scrollwrap.fade-r::after{content:"";position:absolute;top:0;bottom:0;width:36px;pointer-events:none;z-index:2}
  .fac-scrollwrap.fade-l::before{left:0;background:linear-gradient(90deg,var(--bg),transparent)}
  .fac-scrollwrap.fade-r::after{right:0;background:linear-gradient(270deg,var(--bg),transparent)}
}

/* ---------- r32 M10 (DESIGN-r32 B.M10): "told by phone" — the order desk moves a job on what the factory said on the phone ---------- */
.fac-told{margin:0 0 14px;padding:12px;border:1.5px dashed var(--line);border-radius:var(--r);background:var(--surface-2)}
.fac-told .lbl{display:block;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700;margin:0 0 8px}
.fac-toldchips .chip{min-height:48px;max-width:100%;white-space:normal;text-align:left}
.fac-toldchips .chip .i.sm{flex:none;color:var(--brand)}
.fac-toldchips .chip.on .i.sm{color:inherit}
.fac-toldchips .chip.fac-toldready{border-color:var(--ok);color:var(--ok)}
.fac-toldwho{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:13px;color:var(--ink-2)}
.fac-toldwho .btn{min-height:40px;padding:6px 10px}
.fac-qtold{white-space:normal;text-align:left}
.fac-qtold .i.sm{flex:none}

/* ---------- r32 M11 (DESIGN-r32 B.M11): Vendor pieces — Outside / Imported order lines, their steps, WhatsApp / Call ---------- */
.fac-vfilters{margin:0 0 10px}
.fac-vfilters .chip{min-height:48px}
.fac-vlist{display:flex;flex-direction:column;gap:10px}
@media (min-width:900px){
  .fac-vlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}
}
.fac-vrow{display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);box-shadow:var(--shadow-1);min-width:0}
.fac-vrow.late{border-color:var(--danger);border-left:4px solid var(--danger)}
.fac-vrow.problem{border-color:var(--danger);background:var(--surface)}
.fac-vrow.injob{box-shadow:none;border-style:dashed;padding:10px}
.fac-vmain{display:flex;flex-direction:column;gap:3px;border:0;background:none;padding:0;text-align:left;font:inherit;color:inherit;cursor:pointer;min-width:0;min-height:48px}
.fac-vtop{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fac-vtop b{font-size:15.5px;overflow-wrap:anywhere}
.fac-vmain small{display:block;color:var(--muted);font-size:12.5px;overflow-wrap:anywhere}
.fac-vwho{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13.5px;color:var(--ink-2)}
.fac-vwho .i.sm{color:var(--muted);flex:none}
.fac-vwho .grow{flex:1;min-width:0;overflow-wrap:anywhere}
.fac-vwho small{color:var(--muted)}
.fac-vnone{color:#92400E;font-weight:600}
:root[data-theme="dark"] .fac-vnone{color:#FCD34D}
.fac-vdue{display:inline-flex;align-items:center;gap:4px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.fac-vdue.late{color:var(--danger);font-weight:700}
.fac-vpills{display:flex;flex-wrap:wrap;gap:6px}
.fac-vpill{display:inline-flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;min-height:48px;padding:6px 12px;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font:inherit;font-size:13.5px;font-weight:600;color:var(--ink-2);cursor:pointer;text-align:left;max-width:100%}
.fac-vpill>span{display:inline-flex;align-items:center;gap:4px}
.fac-vpill .i.sm{width:14px;height:14px;flex:none;vertical-align:-2px;margin-right:4px}
.fac-vpill small{font-weight:500;font-size:11.5px;color:var(--muted);overflow-wrap:anywhere}
.fac-vpill.done{background:#DCFCE7;border-color:#86EFAC;color:#166534}
.fac-vpill.done small{color:#166534}
.fac-vpill.problem{background:#FEE2E2;border-color:#FCA5A5;color:#991B1B}
.fac-vpill.problem small{color:#991B1B}
.fac-vpill[disabled]{cursor:default;opacity:.9}
:root[data-theme="dark"] .fac-vpill.done{background:#14301F;border-color:#166534;color:#86EFAC}
:root[data-theme="dark"] .fac-vpill.done small{color:#86EFAC}
:root[data-theme="dark"] .fac-vpill.problem{background:#3A1414;border-color:#7F1D1D;color:#FCA5A5}
:root[data-theme="dark"] .fac-vpill.problem small{color:#FCA5A5}
.fac-vproblem{display:flex;align-items:flex-start;gap:6px;font-size:13px;font-weight:600;color:var(--danger)}
.fac-vproblem .i{flex:none;margin-top:2px}
.fac-vproblem span{overflow-wrap:anywhere}
.fac-vacts{display:flex;gap:8px;flex-wrap:wrap}
.fac-vact{flex:1 1 150px;min-height:46px;text-decoration:none;padding:8px 12px}
.fac-vact small{color:var(--muted);font-weight:500;margin-left:4px}
.fac-vwhere .chip,.fac-vqc .chip{min-height:52px}
.fac-vqc{flex-direction:column;align-items:stretch}
.fac-vqc .chip{justify-content:flex-start}
.fac-vqc .fac-vqcbad{border-color:var(--danger);color:var(--danger)}
.fac-vqcnote{margin-top:12px}
.fac-vsteps .fac-vrow{margin:0}

/* ---------- r35: stage tiles (owner voice a2) — In factory · Carpenter · Polish · Upholstery · Ready · Late ---------- */
.fac-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}
.fac-tile{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;min-height:64px;padding:8px 12px;
  background:var(--surface);border:1.5px solid var(--line-2);border-radius:var(--r);box-shadow:var(--shadow-1);color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-width:0}
.fac-tile b{font:800 24px/1.1 var(--font-head)}
.fac-tile span{font-size:13px;font-weight:600;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.fac-tile.all{background:var(--brand-soft);border-color:var(--brand)}
.fac-tile.zero b{color:var(--muted)}
.fac-tile.late{border-color:var(--danger);background:var(--danger-soft)}
.fac-tile.late b,.fac-tile.late span{color:var(--danger)}
.fac-tile.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}
.fac-tile:focus-visible{outline-offset:2px}
.fac-grpbar{display:flex;align-items:center;gap:10px;min-height:48px;padding:4px 4px 4px 14px;margin:0 0 10px;background:var(--surface-2);border-radius:var(--r-pill);font-size:15px}
.fac-grpbar .grow{flex:1;min-width:0}
.fac-grpbar .n{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:var(--surface);font-size:12px;font-weight:700}
.fac-grpbar .btn{min-height:44px}
.fac-qbig{min-height:48px;font-size:16px;font-weight:700;padding:10px 18px;align-self:stretch;justify-content:center}
@media (min-width:640px){
  .fac-tiles{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}
}
@media (min-width:900px){
  .fac-tile{min-height:76px}
  .fac-tile b{font-size:28px}
  .fac-qbig{align-self:flex-start}
}

/* r36: factory privacy + photos (owner voice a3) — the card's spec line + photo count, the job sheet's Photos & papers slider,
   the order line that replaces "Open order" for a factory-only login. Chrome 109: no nesting, no color-mix. */
.fac-ph{position:relative}
.fac-phn{position:absolute;right:3px;bottom:3px;display:inline-flex;align-items:center;gap:2px;padding:1px 5px;border-radius:10px;background:rgba(0,0,0,.62);color:#fff;font-size:11px;font-weight:700;line-height:16px}
.fac-phn .i{width:12px;height:12px}
.fac-spec{font-size:13px;color:var(--ink-2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fac-orderline{margin:10px 0;padding:12px 14px;min-height:48px;background:var(--surface-2);border-radius:var(--r-sm);font-size:15px}
.fac-gal h4 span{font-weight:600;color:var(--muted);margin-left:6px}
.fac-galrow{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:2px 2px 8px;touch-action:pan-x pan-y}
.fac-galtile{flex:none;position:relative;width:132px;height:132px;min-height:48px;padding:0;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:var(--surface-2);scroll-snap-align:start;cursor:zoom-in}
.fac-galtile img{width:100%;height:100%;object-fit:cover;display:block}
.fac-galtag{position:absolute;left:0;right:0;bottom:0;padding:3px 6px;background:rgba(0,0,0,.6);color:#fff;font-size:11px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fac-galtag.paper{background:rgba(120,60,0,.78)}
/* r38: a PDF / Word order form in Photos & papers — a tile that opens the file (no picture to show) */
.fac-galtile.file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-style:dashed;cursor:pointer;color:inherit;text-decoration:none;padding-bottom:22px}
.fac-galtile.file b{font-size:18px;font-weight:800;letter-spacing:.06em}
.fac-galtile.file .i{width:28px;height:28px}
@media (min-width:900px){
  .fac-galtile{width:160px;height:160px}
}
