:root{--on-primary:#1b1300}
/* Comfort: extensões ao tema base (paleta âmbar sobre azul-ardósia) */
:root{--chart-0:#8aa0c2;--chart-1:#d97706;--warn:#d97706;--late:#dc2626}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--chart-0:#6f86ab;--chart-1:#f59e0b}}
:root[data-theme="dark"]{--chart-0:#6f86ab;--chart-1:#f59e0b}
.navgroup{margin:.9rem .75rem .3rem;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:#7d8aa3}
.tag-admin{margin-left:auto;font-size:.62rem;text-transform:uppercase;letter-spacing:.05em;border:1px solid #ffffff44;border-radius:99px;padding:0 .4rem;color:#c8d1e0}
.sidebar{overflow-y:auto}
.narrow{max-width:480px;margin:3rem auto}
.right{text-align:right}.nowrap{white-space:nowrap}.mt{margin-top:1rem}.mb0{margin-bottom:0}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.pill.draft,.pill.planned,.pill.request,.pill.confirmed{background:#e0e7ff;color:#3730a3}
.pill.sent,.pill.ordered,.pill.in_production,.pill.qc,.pill.partial{background:#dbeafe;color:#1e40af}
.pill.won,.pill.approved,.pill.received,.pill.delivered,.pill.ready,.pill.paid,.pill.ok{background:#dcfce7;color:#166534}
.pill.lost,.pill.cancelled,.pill.late,.pill.bad{background:#fee2e2;color:#991b1b}
.pill.expired,.pill.on_hold,.pill.pending,.pill.warn{background:#fef3c7;color:#92400e}
.pill.done{background:#dcfce7;color:#166534}.pill.in_progress{background:#dbeafe;color:#1e40af}
.pill.p1{background:#fee2e2;color:#991b1b}.pill.p2{background:#e5e7eb;color:#374151}.pill.p3{background:#f1f5f9;color:#64748b}
.good{color:var(--ok)}.bad{color:var(--danger)}.warnc{color:var(--warn)}
.stat.late b{color:var(--late)}.stat.good b{color:var(--ok)}
.stat a{color:inherit}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem}
.grid2>.card,.grid3>.card{margin-bottom:0}
.toolbar{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-bottom:1rem}
.toolbar form{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;flex:1;margin:0}
.toolbar input[type=search],.toolbar input[name=q]{max-width:280px}
.toolbar select,.toolbar input[type=date]{width:auto}
.pager{display:flex;gap:.4rem;align-items:center;justify-content:center;margin-top:1rem;color:var(--muted)}
.pager a,.pager span.cur{padding:.25rem .6rem;border:1px solid var(--line);border-radius:8px}.pager span.cur{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
/* barras de progresso e gráficos SVG */
.meter{width:100%;height:10px;border-radius:99px;border:0;overflow:hidden;appearance:none;background:var(--line)}
.meter::-webkit-progress-bar{background:var(--line)}.meter::-webkit-progress-value{background:var(--primary)}.meter::-moz-progress-bar{background:var(--primary)}
.meter.over::-webkit-progress-value{background:var(--danger)}.meter.over::-moz-progress-bar{background:var(--danger)}
.chart svg{display:block;width:100%;height:auto}
.chart .grid{stroke:var(--line);stroke-width:1}.chart .tick{fill:var(--muted);font-size:11px}
.chart .s0{fill:var(--chart-0)}.chart .s1{fill:var(--chart-1)}.chart .lbl{fill:var(--text);font-size:10px}
.legend{display:flex;gap:1rem;font-size:.82rem;color:var(--muted);margin:.4rem 0}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:.3rem}.legend .s0{background:var(--chart-0)}.legend .s1{background:var(--chart-1)}
/* editor de linhas (orçamentos, ficha técnica) */
.lines{width:100%}.lines input,.lines select{min-width:0}.lines td{vertical-align:top;white-space:normal}
.lines .w-qty{width:90px}.lines .w-money{width:110px}.lines .w-pct{width:80px}.lines .w-sm{width:130px}
.calc-hint{font-size:.78rem;color:var(--muted);display:block;margin-top:.2rem}
.sumbox{margin-left:auto;max-width:360px}.sumbox dl{display:grid;grid-template-columns:1fr auto;gap:.3rem 1rem;margin:0}.sumbox dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.sumbox .tot{font-weight:700;font-size:1.1rem}
.lookup{position:relative}.lookup .combo-list{position:absolute}
/* ordem de produção: fluxo */
.flow{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;margin:.4rem 0 1rem}
.flow .step{padding:.35rem .7rem;border-radius:99px;border:1px solid var(--line);font-size:.82rem;background:var(--surface)}
.flow .step.done{background:#dcfce7;color:#166534;border-color:#bbf7d0}.flow .step.in_progress{background:#dbeafe;color:#1e40af;border-color:#bfdbfe;font-weight:600}
.flow .arrow{color:var(--muted)}
.timer{font-variant-numeric:tabular-nums;font-weight:600}
/* planeamento semanal */
.board{overflow-x:auto}.board table{min-width:900px}.board td{vertical-align:top;white-space:normal;min-width:130px;border-right:1px solid var(--line)}
.chip{display:block;margin:.2rem 0;padding:.3rem .5rem;border-radius:8px;background:color-mix(in srgb,var(--primary) 16%,transparent);font-size:.8rem;border-left:3px solid var(--primary)}
.chip.late{border-left-color:var(--late);background:color-mix(in srgb,var(--late) 12%,transparent)}
.cap{font-size:.78rem;color:var(--muted)}.cap.over{color:var(--danger);font-weight:600}
.checklist{list-style:none;padding:0;margin:0}.checklist li{display:flex;gap:.6rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--line)}
.alert.warn{background:#fef3c7;color:#92400e}
.kbd{font-family:ui-monospace,monospace;font-size:.85em;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:0 .35rem}
.print-doc{background:#fff;color:#111;padding:2rem;max-width:820px;margin:0 auto}
.print-doc table th,.print-doc table td{white-space:normal;border-color:#ddd}
@media print{.sidebar,.topbar,.no-print{display:none!important}.main{margin:0}body{background:#fff}.print-doc{padding:0}}
@media (max-width:860px){.grid2,.grid3{grid-template-columns:1fr}.lines{display:block;overflow-x:auto}.tag-admin{display:none}}
dialog.dlg{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);color:var(--text);padding:1.2rem;width:min(560px,calc(100vw - 2rem))}dialog.dlg::backdrop{background:#0008}

.big{font-size:1.5rem}
.lines .w-lg{min-width:230px}.lines td input+input,.lines td select+select,.lines td input+select{margin-top:.3rem}
tr.moved td{background:color-mix(in srgb,var(--primary) 18%,transparent)}
/* tabelas: largura total e responsivas; barra de colunas/seleção */
main,main.wide{max-width:none}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-wrap table{min-width:100%}
.tbl-tools{display:flex;align-items:center;gap:.6rem;margin:0 0 .5rem;position:relative}
.tbl-tools .grow{flex:1}
.sel-info{font-size:.9rem;color:var(--muted)}.sel-info b{color:var(--text)}
th.sel,td.sel{width:34px;padding-right:0}th.sel input,td.sel input{width:auto;margin:0;cursor:pointer}
@media (max-width:860px){.tbl-tools{flex-wrap:wrap}.tbl-pop{right:auto;left:0}}
/* widgets: ocupam todo o espaço disponível e reorganizam-se conforme a largura do ecrã */
.stats{grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr))}
.grid2{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}
.grid3{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.grid2>*,.grid3>*,.stats>*{min-width:0}
.stat b{font-size:clamp(1.25rem,2.2vw,1.7rem);overflow-wrap:anywhere}
.card{min-width:0}
.chart svg{max-height:340px}
.form-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr))}
.form-grid .span2{grid-column:span 2}.form-grid .span3{grid-column:1/-1}
.toolbar>form{min-width:0}.toolbar input[type=search],.toolbar input[name=q]{flex:1 1 200px}
.flow{row-gap:.4rem}
@media (max-width:860px){
  .form-grid .span2{grid-column:1/-1}
  main{padding:1rem .75rem}
  .row.between{flex-wrap:wrap;gap:.5rem}
  .toolbar .btn{flex:0 0 auto}
  .sumbox{max-width:none}
  th,td{padding:.55rem .5rem}
}
@media (min-width:1800px){.stats{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}
/* menu lateral escondido (modo produtividade) */
.side-toggle{margin-right:-.3rem}
.sidebar,.main{transition:transform .2s,margin .2s}
html[data-side="hidden"] .sidebar{transform:translateX(-100%)}
html[data-side="hidden"] .main{margin-left:0}
.burger{display:none}
@media (max-width:860px){.burger{display:none}}
.tblhost{min-width:0}
.tblhost>.table-wrap{margin-bottom:1.2rem}
.toolbar.period{flex:0 0 auto;flex-wrap:wrap;gap:.8rem;align-items:center}
.toolbar.period label,.toolbar label.row{flex-direction:row;align-items:center;gap:.5rem;color:var(--text)}
.toolbar.period input[type=date]{width:auto}
.tblhost.titled{position:relative}
.tblhost.titled>.tbl-tools{position:absolute;top:.85rem;right:1rem;margin:0;z-index:5}
.tblhost.titled>.tbl-tools .btn{background:var(--surface)}
@media (max-width:860px){.tblhost.titled>.tbl-tools{position:static;padding:0 0 .4rem}}
/* cartões lado a lado têm a mesma altura: o que tem menos conteúdo estica até ao fim */
.grid2,.grid3{align-items:stretch}
.grid2>.card,.grid3>.card{height:100%}
.tblhost{display:flex;flex-direction:column}
.tblhost>.table-wrap{flex:1 1 auto;margin-bottom:0}
.grid2>.tblhost,.grid3>.tblhost{height:100%}
.grid2>.tblhost>.table-wrap{height:auto}
/* interruptor (ativo/inativo) */
.switch{display:inline-flex;flex-direction:row;align-items:center;gap:.5rem;cursor:pointer;color:var(--text);font-weight:500}
.switch input{position:absolute;opacity:0;width:0;height:0}
.switch .track{width:40px;height:22px;border-radius:99px;background:var(--line);position:relative;transition:background .15s;flex:none}
.switch .track::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}
.switch input:checked+.track{background:var(--ok)}.switch input:checked+.track::after{transform:translateX(18px)}
.switch input:focus-visible+.track{outline:2px solid var(--primary);outline-offset:2px}
.switch-form{margin:0;display:flex;align-items:center}
.tbl-tools .menu summary{cursor:pointer;list-style:none}
/* seletor de cor de destaque */
.accent-wrap{position:relative}
.accent-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:40;width:250px;padding:.8rem;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px #0005;display:flex;flex-direction:column;gap:.7rem}
.accent-pop[hidden]{display:none}
.swatches{display:grid;grid-template-columns:repeat(5,1fr);gap:.4rem}
.swatch{border:2px solid var(--line);background:var(--bg);border-radius:10px;padding:4px;cursor:pointer}
.swatch:hover,.swatch:focus-visible{border-color:var(--text)}
.swatch .dot{display:block;width:100%;aspect-ratio:1;border-radius:6px}
.accent-pop input[type=color]{width:48px;height:32px;padding:0;border:1px solid var(--line);border-radius:8px;background:none;cursor:pointer}
.accent-pop .row{justify-content:space-between;color:var(--text)}
/* fotos de produtos */
.thumb{width:44px;height:44px;border-radius:10px;object-fit:cover;display:block;background:var(--bg);border:1px solid var(--line)}
.thumb.ph{display:block}
.photo-card{display:flex;gap:1.2rem;align-items:center;flex-wrap:wrap}
.pphoto{width:200px;height:150px;border-radius:14px;object-fit:cover;border:1px solid var(--line);background:var(--bg);display:grid;place-items:center;color:var(--muted)}
.photo-card>div:last-child{flex:1;min-width:240px}
/* pesquisa global centrada na barra de topo */
.topbar{position:sticky}
.gsearch{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,36vw);z-index:12}
.gsearch input{width:100%;padding:.5rem 4.2rem .5rem 2.3rem;border-radius:99px;background:var(--bg);border:1px solid var(--line)}
.gsearch input:focus{outline:2px solid var(--primary);outline-offset:0;background:var(--surface)}
.gs-ic{position:absolute;left:.8rem;top:50%;transform:translateY(-50%);width:16px;height:16px;fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;pointer-events:none}
.gs-kbd{position:absolute;right:.7rem;top:50%;transform:translateY(-50%);font-size:.68rem;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:0 .35rem;background:var(--surface);pointer-events:none}
.gsearch input:focus~.gs-kbd{display:none}
.gs-list{position:absolute;left:0;right:0;top:calc(100% + 8px);max-height:70vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 40px #0006;padding:.35rem}
.gs-list[hidden]{display:none}
.gs-group{padding:.55rem .7rem .2rem;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.gs-item{display:flex;gap:.7rem;align-items:center;padding:.5rem .7rem;border-radius:10px;color:var(--text);text-decoration:none}
.gs-item:hover{text-decoration:none}
.gs-item.active{background:color-mix(in srgb,var(--primary) 18%,transparent)}
.gs-i{width:26px;text-align:center;flex:none}
.gs-t{display:flex;flex-direction:column;min-width:0}.gs-t b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gs-t small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-empty{padding:1rem;text-align:center;color:var(--muted)}
@media (max-width:1180px){.gsearch{width:min(420px,30vw)}.gs-kbd{display:none}}
@media (max-width:860px){.topbar{flex-wrap:wrap}.gsearch{position:static;transform:none;order:10;flex:1 0 100%;width:auto;margin-top:.4rem}}
/* notificações */
.bell-wrap{position:relative}
.bell-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 4px;border-radius:99px;background:var(--danger);color:#fff;font-size:.65rem;font-weight:700;display:grid;place-items:center;border:2px solid var(--surface)}
.bell-badge[hidden]{display:none}
.bell-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:40;width:min(380px,92vw);max-height:70vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 40px #0006}
.bell-pop[hidden]{display:none}
.bell-head{display:flex;justify-content:space-between;align-items:center;padding:.7rem .9rem;border-bottom:1px solid var(--line)}
.bell-foot{display:block;text-align:center;padding:.65rem;border-top:1px solid var(--line);font-weight:600}
.notif{display:flex;gap:.7rem;align-items:flex-start;padding:.7rem .9rem;color:var(--text);text-decoration:none;border-bottom:1px solid var(--line)}
.notif:hover{background:var(--bg);text-decoration:none}
.notif.unread{background:color-mix(in srgb,var(--primary) 10%,transparent)}
.notif.unread .nt b::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--primary);margin-right:.4rem}
.ni{font-size:1.2rem;flex:none}.nt{display:flex;flex-direction:column;min-width:0;flex:1}.nt small{color:var(--muted)}.nw{font-size:.72rem;color:var(--muted);white-space:nowrap}
.toasts{position:fixed;right:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:60}
.toast{display:flex;flex-direction:column;max-width:340px;padding:.8rem 1rem;background:var(--surface);color:var(--text);border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:12px;box-shadow:0 10px 30px #0006;text-decoration:none;animation:tin .25s}
.toast:hover{text-decoration:none}.toast small{color:var(--muted)}
@keyframes tin{from{transform:translateY(10px);opacity:0}}
.notif-prefs{display:flex;flex-direction:column;gap:.35rem}
/* arquivo */
.chips{display:flex;flex-wrap:wrap;gap:.5rem}.mb{margin-bottom:1rem}
.chipbtn{display:inline-flex;gap:.45rem;align-items:center;padding:.4rem .9rem;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--text);font-weight:500}
.chipbtn:hover{text-decoration:none;background:var(--bg)}.chipbtn.on{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.chipbtn .cnt{font-size:.75rem;padding:0 .45rem;border-radius:99px;background:#00000022}
/* cores dos estados configuráveis */
.pill.c-gray{background:#e5e7eb;color:#374151}.pill.c-indigo{background:#e0e7ff;color:#3730a3}.pill.c-blue{background:#dbeafe;color:#1e40af}
.pill.c-green{background:#dcfce7;color:#166534}.pill.c-amber{background:#fef3c7;color:#92400e}.pill.c-red{background:#fee2e2;color:#991b1b}.pill.c-purple{background:#f3e8ff;color:#6b21a8}
select.prio-select{width:auto;border:0;padding:.15rem .5rem;font-weight:600;font-size:.8rem;border-radius:99px;cursor:pointer}

/* logótipo da empresa */
.sidebar .brand{padding:.5rem .75rem 1.1rem}.sidebar .brand a{display:block}
.sidebar .brand img.brand-logo{width:152px;max-width:100%;height:auto;border-radius:0;display:block}
.brand.big{padding:0 0 .4rem}.brand.big img{width:min(260px,72vw);height:auto;border-radius:0}
.logo-on-dark{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .logo-on-light{display:none}:root:not([data-theme="light"]) .logo-on-dark{display:block}}
:root[data-theme="dark"] .logo-on-light{display:none}:root[data-theme="dark"] .logo-on-dark{display:block}

/* ---- editor do fluxo de produção ---- */
.flow-palette{display:flex;flex-wrap:wrap;gap:.4rem;margin:.6rem 0}
.fchip{padding:.3rem .75rem;border-radius:99px;border:1px dashed var(--line);background:var(--bg);color:var(--text);font:inherit;font-size:.85rem;cursor:grab}
.fchip:hover{border-color:var(--primary);border-style:solid}
.flow-canvas{overflow:auto;border:1px solid var(--line);border-radius:var(--r);background-color:var(--bg);background-image:radial-gradient(var(--line) 1px,transparent 1px);background-size:20px 20px;max-height:70vh}
.flow-stage{position:relative;min-height:260px}
.flow-edges{position:absolute;inset:0;pointer-events:none;overflow:visible}
.flow-edge{fill:none;stroke:var(--muted);stroke-width:2}
.flow-arrowhead{fill:var(--muted)}
.flow-ghost{fill:none;stroke:var(--primary);stroke-width:2;stroke-dasharray:6 4}
.flow-edge-x{pointer-events:auto;cursor:pointer;opacity:.35}.flow-edge-x circle{fill:var(--surface);stroke:var(--muted)}.flow-edge-x text{fill:var(--text);font-size:13px}
.flow-edge-x:hover{opacity:1}.flow-edge-x:hover circle{stroke:var(--danger);fill:var(--danger)}.flow-edge-x:hover text{fill:#fff}
.fnode{position:absolute;width:176px;height:78px;box-sizing:border-box;padding:.5rem .9rem;border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:12px;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.08);cursor:grab;touch-action:none;user-select:none;display:flex;flex-direction:column;justify-content:center}
.fnode:focus-visible{outline:2px solid var(--primary)}
.fnode.drag{cursor:grabbing;box-shadow:0 6px 16px rgba(0,0,0,.18);z-index:5}
.fnode.start{border-left-color:var(--ok)}.fnode.bad{border-color:var(--danger);border-left-color:var(--danger)}
.fn-title{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fn-time{font-size:.85rem;color:var(--muted)}
.fn-note{font-size:.72rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fn-port{position:absolute;top:50%;width:14px;height:14px;margin-top:-7px;border-radius:50%;border:2px solid var(--muted);background:var(--surface)}
.fn-in{left:-8px}.fn-out{right:-8px;cursor:crosshair;touch-action:none}.fn-out:hover{border-color:var(--primary);background:var(--primary);transform:scale(1.25)}
.fn-rm{position:absolute;top:2px;right:6px;border:0;background:none;color:var(--muted);font-size:1.05rem;line-height:1;cursor:pointer;padding:2px 4px;border-radius:6px}.fn-rm:hover{color:#fff;background:var(--danger)}
.flow-foot{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:.5rem}.flow-msg.bad{color:var(--danger)}
.flow .stage{display:inline-flex;gap:.3rem;align-items:center}.flow .stage.par{padding:.2rem .4rem;border:1px dashed var(--muted);border-radius:99px}

/* estados com cor livre: --pc é definido por JS (CSSOM) a partir de data-pc */
.pill.pc{--pc:#6b7280;background:color-mix(in srgb,var(--pc) 16%,transparent);color:color-mix(in srgb,var(--pc) 70%,var(--text));border:1px solid color-mix(in srgb,var(--pc) 35%,transparent)}
.cellrow{display:flex;align-items:center;gap:.5rem;min-width:0}.cellrow input:not([type=color]){flex:1;min-width:0}.cellrow .pill{flex:none;white-space:nowrap}
.colorpick{width:44px;height:36px;padding:2px;flex:none;cursor:pointer;border-radius:9px}

/* gráfico de linhas */
.chart .line{fill:none;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.chart .l0{stroke:var(--chart-0)}.chart .l1{stroke:var(--chart-1)}
.chart .dot{stroke:var(--surface);stroke-width:1.5}.chart .d0{fill:var(--chart-0)}.chart .d1{fill:var(--chart-1)}
.legend .l0{background:var(--chart-0)}.legend .l1{background:var(--chart-1)}
.quick{display:flex;flex-wrap:wrap;gap:.4rem;margin:.2rem 0 .8rem}.quick .btn.on{border-color:var(--primary);color:var(--primary-d);font-weight:600}
