:root{font-family:Inter,system-ui,Arial,sans-serif;color:#1b251f;background:#f3f6f4;--green:#174a35;--green2:#247451;--line:#d9e4dd;--muted:#6d7c73;--danger:#a63333;--blue:#2b65a8}
*{box-sizing:border-box}body{margin:0}.topbar{background:linear-gradient(120deg,#143d2d,#1e6044);color:#fff;padding:18px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px}.topbar h1{margin:0;font-size:24px}.topbar small{opacity:.85}.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.role-pill{font-size:12px;font-weight:800;border:1px solid rgba(255,255,255,.35);padding:8px 10px;border-radius:999px}.tabs{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--line);padding:8px max(16px,calc((100vw - 1580px)/2));display:flex;gap:6px;overflow:auto}.tabs button{background:transparent;color:#365044;padding:10px 14px}.tabs button.active{background:#dcebe2;color:#123e2c}main{max-width:1580px;margin:auto;padding:18px}.tab-panel{display:none}.tab-panel.active{display:block}.card,.metric-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 5px 22px rgba(17,59,40,.06)}.card{padding:16px;margin-bottom:16px}.card h2,.card h3{margin-top:0}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:16px}.metric-card{padding:16px}.metric-card span{color:var(--muted);display:block;font-size:13px}.metric-card strong{font-size:28px;display:block;margin-top:7px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.layout-main-side{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(360px,.8fr);gap:16px}.sticky-card{position:sticky;top:66px;align-self:start;max-height:calc(100vh - 86px);overflow:auto}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.section-title h2,.section-title h3{margin:0}.section-title small{color:var(--muted)}button,.button{cursor:pointer;border:0;border-radius:9px;padding:10px 14px;background:var(--green2);color:#fff;font-weight:800;text-decoration:none;display:inline-block}button:hover,.button:hover{filter:brightness(.95)}button.secondary,.button.secondary{background:#e3ece6;color:#214b38}button.danger{background:var(--danger)}button.mini{padding:6px 9px;font-size:11px;margin-top:5px}button.icon{font-size:20px;padding:6px 12px}button.full{width:100%;margin-top:12px}input,select,textarea{width:100%;border:1px solid #c9d8cf;border-radius:8px;padding:9px 10px;background:#fff;color:#1b251f}textarea{resize:vertical}label{display:block;font-size:12px;font-weight:800;color:#385046;margin-bottom:8px}label input,label select,label textarea{margin-top:4px;font-weight:500}.form-grid{display:grid;gap:10px}.form-grid.two{grid-template-columns:1fr 1fr}.check{display:flex;align-items:center;gap:8px;margin-top:9px}.check input{width:auto}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;max-height:520px}.table-wrap.tall{max-height:calc(100vh - 190px)}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:10px;border-bottom:1px solid #e8eee9;text-align:left;vertical-align:top;font-size:13px}th{position:sticky;top:0;background:#edf4ef;z-index:2;color:#254637}small,.muted{color:var(--muted)}.badge{display:inline-block;border-radius:999px;padding:4px 8px;background:#e0efe6;color:#155038;font-size:11px;font-weight:900}.badge.blue{background:#dceafb;color:#174d83}.badge.red{background:#f7dede;color:#8e2525}.status-READY_FOR_TRANSPORT{background:#fff0c7;color:#7c5400}.status-CLOSED,.status-LOADED{background:#dceafb;color:#174d83}.status-IN_PRODUCTION{background:#e8e1fa;color:#513492}.progress{height:8px;background:#e4ece7;border-radius:999px;overflow:hidden;margin:6px 0}.progress span{display:block;height:100%;background:linear-gradient(90deg,#2c8b5e,#59b681)}.dimension-row{display:grid;grid-template-columns:1.2fr 1fr auto;gap:8px;align-items:end;background:#f5f8f6;border:1px solid var(--line);border-radius:10px;padding:10px}.stack{display:grid;gap:9px}.notification{border-left:4px solid var(--green2);background:#f7faf8;border-radius:8px;padding:10px 12px}.notification small{display:block;margin-top:2px}.notification p{margin:7px 0 0}.flow-list{line-height:1.7;margin-bottom:0}.legend{display:flex;gap:18px;flex-wrap:wrap}.dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:5px}.dot.general{background:#247451}.dot.order{background:#2b65a8}.message{padding:11px 13px;background:#def1e5;border-radius:9px;margin-bottom:12px;font-weight:700}.message.error{background:#f9dddd;color:#872525}.hidden{display:none!important}
.stock-master thead tr:first-child th{height:40px;white-space:nowrap}.filter-row th{top:40px;background:#e4efe7;padding:6px 8px}.filter-row select{font-size:12px;font-weight:500;padding:6px 8px;min-width:110px}.filter-row button.mini{margin-top:0;width:100%;white-space:nowrap}@media(max-width:720px){.stock-master .filter-row{display:none}}
.total-row{background:#f2f8f4}.legacy-stock{margin-top:14px}.legacy-row{display:grid;grid-template-columns:1.2fr 1fr 1.5fr;gap:10px;padding:10px;border-top:1px solid var(--line);font-size:13px}.stock-master{max-height:620px}.stock-group-row td{vertical-align:middle}.stock-group-row.expanded td{background:#edf6f0}.quality-pill{display:inline-flex;min-width:34px;justify-content:center;border-radius:7px;padding:5px 8px;background:#e7efe9;color:#174a35;font-weight:900}.expand-stock{white-space:nowrap;min-width:108px}.stock-details-row>td{padding:0 12px 14px;background:#f7faf8}.stock-detail-panel{overflow:auto;max-height:360px;border:1px solid #cddbd2;border-radius:9px;box-shadow:inset 0 2px 8px rgba(18,65,43,.05)}.stock-detail-panel table{min-width:720px}.stock-detail-panel th{position:sticky;top:0;background:#dfece3}.stock-detail-panel td{background:#fff}.stock-detail-panel .legacy-piece td{background:#fff9e9}@media(max-width:1050px){.layout-main-side,.two-col{grid-template-columns:1fr}.sticky-card{position:static;max-height:none}.table-wrap.tall{max-height:560px}}@media(max-width:720px){.topbar{align-items:flex-start;flex-direction:column}.tabs{padding:7px}.tabs button{white-space:nowrap}.form-grid.two{grid-template-columns:1fr}.dimension-row{grid-template-columns:1fr 1fr}.dimension-row>div{grid-column:2}.legacy-row{grid-template-columns:1fr}.stock-master{max-height:70vh;overflow-y:auto;overflow-x:hidden;border:0;background:transparent}.stock-master>table>thead{display:none}.stock-master>table>tbody{display:block}.stock-master tr.stock-group-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff}.stock-master tr.stock-group-row.expanded{margin-bottom:0;border-radius:10px 10px 0 0}.stock-master tr.stock-group-row>td{display:flex;flex-direction:column;gap:3px;padding:0;border:0;background:transparent}.stock-master tr.stock-group-row>td::before{content:attr(data-label);font-size:10px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.stock-master tr.stock-group-row>td:first-child,.stock-master tr.stock-group-row>td:last-child{grid-column:1/-1}.stock-master tr.stock-details-row{display:block;margin:0 0 10px}.stock-master tr.stock-details-row>td{display:block;padding:8px;border:1px solid var(--line);border-top:0;border-radius:0 0 10px 10px}.expand-stock{width:100%;min-width:0}.stock-detail-panel{max-height:300px}main{padding:10px}th,td{font-size:12px;padding:8px}}
.order-filter-bar{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr)) auto auto;gap:10px;align-items:end;margin:12px 0}.order-filter-bar label{margin:0}.order-filter-bar small{align-self:center;white-space:nowrap}.order-summary-row td{vertical-align:middle}.order-summary-row.expanded td{background:#edf6f0}.order-quality-totals{display:grid;gap:6px;min-width:220px}.order-quality-totals>div{display:grid;grid-template-columns:auto 1fr;gap:3px 8px;align-items:center;padding:6px 8px;border:1px solid #e0e9e3;border-radius:8px;background:#f8fbf9}.order-quality-totals small{grid-column:2}.expand-order{white-space:nowrap;min-width:110px}.order-details-row>td{padding:0 12px 14px;background:#f7faf8}.order-detail-panel{padding:12px;border:1px solid #cddbd2;border-top:0;border-radius:0 0 10px 10px}.log-filter-bar{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr)) auto auto;gap:10px;align-items:end;margin:12px 0}.log-filter-bar label{margin:0}.log-breakdown{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:14px}.orphan-note{background:#fdecec;border-color:#e8c0c0;color:#7a2b2b}.session-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#f6faf7}.session-info{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.session-info small{color:var(--muted)}.session-dot{width:10px;height:10px;border-radius:50%;background:#b9c6bf;flex:none}.session-info.live .session-dot{background:#2e9364;box-shadow:0 0 0 3px rgba(46,147,100,.2)}.session-actions{display:flex;gap:6px;flex-wrap:wrap}.session-actions .mini{margin-top:0}tr.session-row>td{background:#eef7f2}.volume-note{grid-column:1/-1;padding:10px 12px;border:1px solid #e2d8b8;background:#fdf8e7;border-radius:9px;font-size:12px;color:#5c4a12}.breakdown-card{border:1px solid var(--line);border-radius:10px;padding:10px;background:#f8fbf9}.breakdown-card h4{margin:0 0 8px;font-size:13px;color:#254637}.breakdown-card table{font-size:12px}.breakdown-card th,.breakdown-card td{padding:5px 6px}.breakdown-card th{position:static;background:#eaf2ed}.log-pager{display:flex;gap:8px;margin-top:10px}@media(max-width:1100px){.log-filter-bar{grid-template-columns:repeat(3,1fr)}}@media(max-width:720px){.log-filter-bar{grid-template-columns:1fr}.log-filter-bar button{width:100%}}
.order-detail-panel h4{margin:8px 0}.piece-panel{margin:10px 0;padding:12px;border:1px dashed #b9cfc2;border-radius:10px;background:#f6faf7}.piece-panel h4{margin:0 0 6px}.piece-panel .form-grid{margin-top:8px}.order-piece-panel{max-height:420px}.load-more{margin-top:10px}@media(max-width:1100px){.order-filter-bar{grid-template-columns:repeat(3,1fr)}.order-filter-bar button,.order-filter-bar small{align-self:end}}@media(max-width:720px){.order-filter-bar{grid-template-columns:1fr}.order-filter-bar button{width:100%}.order-master{max-height:72vh;overflow-y:auto;overflow-x:hidden;border:0;background:transparent}.order-master>table>thead{display:none}.order-master>table>tbody{display:block}.order-master tr.order-summary-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff}.order-master tr.order-summary-row.expanded{margin-bottom:0;border-radius:10px 10px 0 0}.order-master tr.order-summary-row>td{display:flex;flex-direction:column;gap:4px;padding:0;border:0;background:transparent}.order-master tr.order-summary-row>td::before{content:attr(data-label);font-size:10px;font-weight:900;color:var(--muted);text-transform:uppercase}.order-master tr.order-summary-row>td:first-child,.order-master tr.order-summary-row>td:nth-child(3),.order-master tr.order-summary-row>td:nth-child(4),.order-master tr.order-summary-row>td:last-child{grid-column:1/-1}.order-master tr.order-details-row{display:block;margin:0 0 10px}.order-master tr.order-details-row>td{display:block;padding:0}.order-detail-panel{padding:8px}.expand-order{width:100%;min-width:0}}

.auto-classification-note{align-self:stretch;padding:12px;border:1px solid #cbdcd1;border-radius:9px;background:#f1f7f3;color:#264d38}.auto-classification-note small{display:block;margin-top:4px;color:#567060}
.build-pill{font-size:12px;font-weight:800;border:1px solid rgba(255,255,255,.35);padding:8px 10px;border-radius:999px;background:rgba(255,255,255,.12)}
.order-actions{display:flex;gap:5px;flex-wrap:wrap}
/* Titlul „Piese înregistrate” stă pe același rând cu descărcarea listei pentru aviz. */
.order-piece-header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.order-piece-header h4{margin:0}.order-action-note{display:block;margin-top:5px;max-width:190px;color:var(--muted)}button:disabled{cursor:not-allowed;opacity:.5;filter:none}

/* Comandă nouă: specii multiple pe comandă și rândul de dimensiune extins. */
.species-picker{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px;padding:9px 10px;border:1px solid #c9d8cf;border-radius:8px;background:#fff;max-height:132px;overflow:auto}
.check.inline{display:inline-flex;margin-top:0;font-weight:600;font-size:12px;white-space:nowrap}
/* Formularul stă într-un panou îngust, deci rândul rămâne mereu pe doua coloane. */
.dimension-row.wide{grid-template-columns:1fr 1fr;align-items:end}
.dimension-row.wide label{margin-bottom:0}
.dimension-row.wide label:nth-of-type(5){grid-column:1/-1}
.dimension-row.wide .dim-window{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px dashed #cfe0d5;padding-top:8px}
.dimension-row.wide .dim-window small{white-space:nowrap;font-weight:800;color:#2c6c4d}
.order-totals-title{margin-top:18px}
.order-totals{max-height:320px}
.inline-select{display:flex;align-items:center;gap:8px;margin-bottom:0;white-space:nowrap}
.inline-select select{width:auto;margin-top:0}

.auth-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(120deg,#143d2d,#1e6044)}
.auth-card{background:#fff;border-radius:14px;padding:26px;width:100%;max-width:380px;box-shadow:0 12px 40px rgba(10,40,26,.28)}
.auth-brand{font-size:11px;font-weight:900;letter-spacing:.08em;color:#2c8b5e;margin-bottom:8px}
.auth-card h1{margin:0 0 18px;font-size:22px;color:#123e2c}
.auth-card label{margin-bottom:12px}
.auth-note{margin-top:12px;font-size:13px;color:var(--muted,#5c7267)}
.auth-note.error{color:#8e2525;font-weight:700}

/* Bușteni la care volumul mașinii nu iese din cotele înregistrate. */
.volume-mismatch{color:#8e2525;font-weight:700}

/* Semaforul stațiilor: verde cât cititorul raportează, roșu când tace. */
.station-pill{font-size:12px;font-weight:800;border-radius:999px;padding:8px 12px;background:#e0efe6;color:#155038;white-space:nowrap}
.station-pill.red{background:#f7dede;color:#8e2525}
.stations-card{margin-bottom:16px}
.stations-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.station-tile{border:1px solid var(--line);border-left:6px solid #2c8b5e;border-radius:11px;padding:12px;background:#fbfdfc}
.station-tile.red{border-left-color:#a63333;background:#fff7f7}
.station-tile.warn{border-left-color:#c98a13;background:#fffbf2}
.station-tile-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px;font-size:16px}
.station-tile-body{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.station-tile-body small{display:block;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase}
.station-tile-body b{font-size:15px}
.station-tile-body b.pending-warn{color:#8e2525}
.station-tile-error{margin-top:9px;padding:7px 9px;border-radius:8px;background:#f9dddd;color:#872525;font-size:12px;font-weight:700}
.station-tile-note{margin-top:9px;font-size:12px;color:#7c5400}
.badge.warn{background:#fff0c7;color:#7c5400}

/* Pastilele de totaluri ale stocului. Aceleași cu cele din ecranul stației:
   cele două ecrane trebuie să arate același lucru, ca o deosebire între hală
   și birou să se vadă dintr-o privire, nu după ce numeri rânduri. */
.report-totals{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px}
.report-totals>div{background:#edf4ef;border:1px solid #cddbd2;border-radius:9px;padding:8px 12px;min-width:130px}
.report-totals small{display:block;color:#6d7c73;font-size:11px;font-weight:700;text-transform:uppercase}
.report-totals b{font-size:19px}


/* ---- Contul de vizualizare -----------------------------------------------
   Vede tot, nu schimbă nimic. Formularele de lucru nu i se arată: toate cinci
   scriu (comandă nouă, recepție, nomenclator, client nou, utilizator nou), iar
   cele de conectare și de parolă rămân, fiindcă acelea sunt despre el însuși.
   Butoanele din tabele rămân la vedere, dar cererea lor este oprită în
   `auth.js`, cu explicație - acolo regula nu poate rămâne în urma codului. */
html[data-rol="VIEWER"] form:not(.auth-card){ display:none; }
.doar-vede{
  display:none;
  background:#fff8e1; border:1px solid #f0c36d; color:#6b4e00;
  border-radius:8px; padding:.6rem .9rem; margin:.6rem 0; font-size:.92rem;
}
html[data-rol="VIEWER"] .doar-vede{ display:block; }
