:root{font-family:Inter,system-ui,Arial,sans-serif;color:#17231c;background:#eef3ef;--green:#1c5c40;--line:#d4e0d8;--orange:#b96116;--red:#a63333}*{box-sizing:border-box}body{margin:0}header{background:#153d2d;color:#fff;padding:18px 22px;display:flex;justify-content:space-between;align-items:center;gap:14px}header h1{margin:0;font-size:24px}header small{opacity:.8}.header-actions{display:flex;gap:8px;align-items:center}main{width:100%;max-width:none;margin:0;padding:clamp(10px,1.2vw,24px)}.card{min-width:0;background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;box-shadow:0 4px 18px rgba(22,61,44,.06)}.station-toolbar{display:flex;gap:10px;align-items:end;margin-bottom:16px}.station-toolbar label{max-width:240px}.station-toolbar .hint{margin-left:auto;max-width:620px}.station-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(340px,.7fr);gap:16px;margin-bottom:16px}.active-panel{position:sticky;top:12px;align-self:start}.order-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.order-card{min-width:0;background:#fff;border:2px solid var(--line);border-left:7px solid #2b7b55;border-radius:13px;padding:14px;cursor:pointer}.order-card:hover,.order-card.selected{border-color:#2b7b55}.order-card.urgent{border-left-color:var(--orange)}.order-card.ready{border-left-color:#2462a3}.order-top{display:flex;justify-content:space-between;gap:8px}.order-card h3{margin:0}.dimension-list{display:grid;gap:8px}.dimension{background:#f4f8f5;border:1px solid var(--line);border-radius:9px;padding:9px}.dimension strong{font-size:18px}.progress{height:9px;border-radius:999px;background:#dfe8e2;overflow:hidden;margin-top:5px}.progress span{display:block;height:100%;background:#2e9364}button,.button{cursor:pointer;border:0;border-radius:9px;padding:10px 13px;background:#28744f;color:#fff;font-weight:800;text-decoration:none}.secondary{background:#dfe9e3!important;color:#1d4934!important}.danger{background:var(--red)!important}.warn{background:var(--orange)!important}.mini{padding:6px 8px;font-size:11px;margin:2px}label{display:block;font-size:12px;font-weight:800;margin:8px 0;color:#365044}input,select{width:100%;border:1px solid #c6d6cc;border-radius:8px;padding:10px;background:#fff}.full{width:100%}.badge{display:inline-block;background:#e0eee6;color:#185038;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:900}.badge.high{background:#ffe7d2;color:#843d00}.badge.blue{background:#dceafb;color:#174d83}.badge.red{background:#f5dcdc;color:#8d2828}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.section-title h2{margin:0}.section-title small,.hint,.empty{color:#6b7b71}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;max-height:430px}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:9px;border-bottom:1px solid #e5ede8;text-align:left;vertical-align:top;font-size:13px}th{background:#eaf2ed;position:sticky;top:0}.message{padding:10px 12px;background:#dff2e6;border-radius:9px;margin-bottom:10px;font-weight:700}.message.error{background:#f7dede;color:#862626}.hidden{display:none!important}hr{border:0;border-top:1px solid var(--line);margin:14px 0}@media(max-width:980px){.station-layout{grid-template-columns:1fr}.active-panel{position:static}.station-toolbar{align-items:stretch;flex-direction:column}.station-toolbar .hint{margin-left:0}}@media(max-width:650px){header{align-items:flex-start;flex-direction:column}.order-grid{grid-template-columns:1fr}main{padding:9px}th,td{font-size:12px;padding:7px}}

.ingestion-control-card{margin-bottom:16px;border-left:7px solid #8a9b90}.ingestion-control-card.running{border-left-color:#2e9364}.ingestion-control-card.error{border-left-color:var(--red)}.ingestion-control-head{display:flex;justify-content:space-between;align-items:center;gap:18px}.ingestion-control-head h2{margin:0 0 4px}.ingestion-actions{display:flex;gap:9px;flex-wrap:wrap}.ingestion-status{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:10px;margin-top:14px}.ingestion-metric{padding:10px;border:1px solid var(--line);border-radius:9px;background:#f5f8f6}.ingestion-metric small{display:block;color:#6b7b71}.ingestion-metric strong{display:block;margin-top:4px;font-size:17px}.ingestion-detail{grid-column:1/-1;color:#52645a}.ingestion-actions button:disabled{opacity:.45;cursor:not-allowed}@media(max-width:900px){.ingestion-status{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){.ingestion-control-head{align-items:stretch;flex-direction:column}.ingestion-actions{display:grid;grid-template-columns:1fr}.ingestion-status{grid-template-columns:1fr}}

.reader-live-monitor{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.reader-current-step{padding:14px 16px;border-radius:11px;background:#173f2f;color:#fff}.reader-current-step small{opacity:.75;text-transform:uppercase;font-weight:900}.reader-current-step strong{display:block;margin-top:4px;font-size:20px}.reader-current-step p{margin:5px 0 0;opacity:.9}.reader-pipeline{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}.reader-pipeline-step{position:relative;padding:10px;border:1px solid var(--line);border-radius:9px;background:#f5f8f6;color:#627268;font-size:12px;font-weight:800}.reader-pipeline-step.done{background:#e4f2e9;color:#1b5b3d;border-color:#b7d6c3}.reader-pipeline-step.active{background:#fff1dc;color:#7b460c;border-color:#e0b36e;box-shadow:0 0 0 2px rgba(224,179,110,.18)}.reader-cursor{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:8px;margin-bottom:12px}.reader-cursor>div{padding:10px;border:1px solid var(--line);border-radius:9px;background:#f8faf9;min-width:0}.reader-cursor small{display:block;color:#6b7b71}.reader-cursor b{display:block;margin-top:4px;overflow-wrap:anywhere}.reader-section{margin-top:10px;border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}.reader-section summary{cursor:pointer;padding:11px 13px;background:#eaf2ed;font-weight:900}.reader-log{max-height:300px;overflow:auto}.reader-log-item{display:grid;grid-template-columns:90px 150px minmax(0,1fr);gap:10px;padding:9px 12px;border-bottom:1px solid #e5ede8;font-size:12px}.reader-log-item.error{background:#fff0f0;color:#842a2a}.reader-log-item.warn{background:#fff7e8;color:#78470e}.reader-log-item.success{background:#edf8f1}.reader-log-item .phase{font-weight:900}.reader-table{max-height:330px;border:0;border-radius:0}.reader-errors{max-height:260px;overflow:auto}.reader-error-item{padding:10px 12px;border-bottom:1px solid #edd4d4;background:#fff5f5;color:#7d2727}.reader-ok{padding:12px;color:#286346;background:#eff8f2}.reader-empty{padding:14px;color:#6b7b71}@media(max-width:900px){.reader-pipeline,.reader-cursor{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){.reader-pipeline,.reader-cursor{grid-template-columns:1fr}.reader-log-item{grid-template-columns:1fr;gap:3px}.reader-table{overflow-x:auto}}

.routing-selection-notice{flex:0 0 auto;padding:9px 13px;border-radius:999px;background:#dff0e5;color:#1a6341;font-size:12px;font-weight:950;letter-spacing:.04em;border:1px solid #b8d8c3}.routing-selection-notice.manual{background:#197a4b;color:#fff;border-color:#197a4b;box-shadow:0 3px 12px rgba(25,122,75,.2)}.routing-selection-notice.warehouse{background:#fff0dc;color:#81480c;border-color:#e7bd80}.order-card{transition:background .16s,border-color .16s,box-shadow .16s,transform .16s}.order-card:hover{transform:translateY(-1px)}.order-card.selected{background:#e3f5e9;border-color:#19834f;box-shadow:0 0 0 4px rgba(25,131,79,.16),0 10px 28px rgba(24,92,62,.16)}.order-card.selected.urgent,.order-card.selected.ready{border-left-color:#19834f}.order-status-stack{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.badge.route-selected{background:#197a4b;color:#fff;box-shadow:0 2px 8px rgba(25,122,75,.22)}

.operator-gate{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#123b2b,#236646)}.operator-login-card{width:min(620px,100%);padding:28px;background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.28)}.operator-login-card h1{margin:4px 0 8px;color:#173f2f}.operator-login-card p{color:#5d6e64;line-height:1.5}.operator-login-brand{font-size:12px;font-weight:950;letter-spacing:.18em;color:#2b8057}.operator-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin:16px 0}.operator-choice{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:14px;text-align:left;background:#eef7f1;color:#174a33;border:2px solid #c9ded1}.operator-choice:hover{border-color:#28744f;background:#e1f2e7}.operator-choice strong{font-size:16px}.operator-choice small{opacity:.75}.operator-badge{display:inline-flex;align-items:center;padding:7px 11px;border-radius:999px;background:#f5c66f;color:#563407;font-size:12px;font-weight:900}.login-error{margin-top:12px;padding:10px;border-radius:8px;background:#f7dede;color:#862626;font-weight:700}

.database-login-card{width:min(760px,100%)}.selected-operator-line{padding:10px 12px;margin:12px 0;background:#eef7f1;border:1px solid #c9ded1;border-radius:9px;color:#174a33}.database-gate-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:12px 0}.database-gate-actions button:disabled{opacity:.55;cursor:wait}.database-browser{margin-top:14px;border:1px solid var(--line);border-radius:11px;overflow:hidden}.database-browser-head{padding:11px 13px;background:#173f2f;color:#fff;overflow-wrap:anywhere}.database-browser-head small,.database-browser-head b{display:block}.database-browser-head small{opacity:.75}.database-found,.database-not-found{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 13px}.database-found{background:#e6f5eb;color:#18583b}.database-not-found{background:#fff4dc;color:#71460f}.database-folder-list{max-height:310px;overflow:auto;padding:7px;background:#f7faf8}.database-folder-row{display:flex;align-items:center;gap:9px;width:100%;padding:10px 11px;margin:3px 0;background:#fff;color:#214b37;border:1px solid #d7e3db;text-align:left}.database-folder-row:hover{border-color:#28744f;background:#eaf5ee}.database-folder-row.parent{background:#e6eee9}.database-folder-row b{overflow-wrap:anywhere}
.database-settings{display:grid;grid-template-columns:minmax(300px,1fr) auto;gap:12px 18px;align-items:end;margin-top:14px;padding:14px;border:1px solid #b9d7c2;border-radius:11px;background:#eef7f1}.database-settings label{margin-top:0}.database-settings small{display:block;color:#52685b}.database-settings-actions{display:flex;gap:9px;align-items:center;padding-bottom:1px}.database-settings-actions button:disabled{opacity:.55;cursor:wait}.database-settings .database-browser,.database-settings #databaseMessage{grid-column:1/-1}.database-settings #databaseMessage .message,.database-settings #databaseMessage .login-error{margin:0}

.station-menu{display:flex;gap:8px;margin:0 0 16px;padding:6px;background:#dfe9e3;border-radius:12px;overflow:auto}.station-menu button{flex:1;min-width:220px;background:transparent;color:#345245}.station-menu button.active{background:#fff;color:#174a33;box-shadow:0 3px 12px rgba(24,74,51,.12)}.station-panel{animation:panel-in .18s ease-out}@keyframes panel-in{from{opacity:.35;transform:translateY(3px)}to{opacity:1;transform:none}}

.route-panel{margin-bottom:18px}.route-list{display:grid;gap:8px;margin-top:12px}.route-item{display:grid;grid-template-columns:100px minmax(0,1fr) auto;gap:14px;align-items:center;background:#f3f8f5;border:1px solid #d4e0d8;border-radius:9px;padding:10px 12px}.warehouse-species{display:grid;grid-template-columns:minmax(260px,1fr) minmax(280px,1.4fr) auto;gap:14px;align-items:end;margin-top:12px;padding-top:12px;border-top:1px solid #d4e0d8}.warehouse-species details{grid-column:1/-1}.warehouse-species details .form-grid{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:12px;margin-top:10px}.next-route{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:14px;align-items:end;padding:14px;margin:12px 0;background:#eef7f1;border:1px solid #b9d7c2;border-radius:10px}.next-route small{display:block;margin-top:5px}.station-panel,.routing-workspace,.routing-workspace>div{min-width:0}.routing-workspace{display:grid;gap:18px}.order-grid{grid-template-columns:repeat(auto-fit,minmax(580px,1fr))}.order-material{margin:10px 0}.order-dimension-table{margin-top:12px;border:1px solid var(--line);border-radius:9px;overflow:auto}.order-dimension-table table{min-width:540px}.order-dimension-table th,.order-dimension-table td{padding:7px;font-size:12px}.quality-pill{display:inline-block;padding:3px 7px;border-radius:999px;background:#dceee3;color:#185038;font-weight:900}.dimension-progress-label{display:flex;justify-content:space-between;gap:8px}.order-total-line{margin-top:11px;padding-top:10px;border-top:1px solid var(--line)}.station-order-actions{display:flex;align-items:center;gap:10px;margin-top:12px;padding:10px;border-radius:9px;background:#f0f6f2;border:1px solid var(--line)}.station-order-actions button{flex:0 0 auto}.station-order-actions small{color:#5f7166;line-height:1.35}

.report-filters{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));gap:10px;align-items:end;padding:12px;background:#f3f8f5;border:1px solid var(--line);border-radius:10px}.report-filters button{margin-bottom:8px}.report-meta{margin:12px 0;color:#5b6e62}.report-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:10px;margin-bottom:14px}.report-kpi{padding:13px;border:1px solid var(--line);border-radius:10px;background:#fff}.report-kpi small{display:block;color:#6b7b71}.report-kpi strong{display:block;margin-top:5px;font-size:21px;color:#174a33}.report-block{margin-top:14px}.report-block h3{margin:0 0 8px}.report-table{max-height:570px}.classification-useful{color:#1e6b46;font-weight:800}.classification-rest{color:#8a5415;font-weight:800}.classification-error{color:#9a3030;font-weight:800}.report-empty{padding:18px;text-align:center;color:#6b7b71}.report-split{display:grid;grid-template-columns:1fr 1fr;gap:14px}.report-note{padding:10px 12px;background:#fff4da;border-radius:9px;color:#74490e}

@media(max-width:1150px){.report-filters{grid-template-columns:repeat(3,1fr)}.report-split{grid-template-columns:1fr}}
.latest-scans-card{width:100%;border-left:7px solid #2b7b55}.latest-scans-table{max-height:390px}.latest-scans-table table{min-width:1320px}.piece-history-table table{min-width:1180px}.piece-history-table{max-height:620px}.piece-history-table tr:has(.badge.red) td{background:#fff6f6}
@media(max-width:760px){.route-item,.warehouse-species,.warehouse-species details .form-grid,.next-route{grid-template-columns:1fr}.route-item .badge{justify-self:start}.order-grid{grid-template-columns:1fr}.report-filters{grid-template-columns:1fr}.station-menu button{min-width:190px}.header-actions{flex-wrap:wrap}.operator-login-card{padding:20px}.station-order-actions{align-items:stretch;flex-direction:column}.station-order-actions button{width:100%}}
@media(max-width:760px){.database-settings{grid-template-columns:1fr}.database-settings-actions{align-items:stretch;flex-direction:column}.database-settings-actions button{width:100%}.database-found{align-items:stretch;flex-direction:column}}

.intake-logs-card{margin-bottom:14px}.intake-logs-table{max-height:340px}.intake-logs-table tr.row-cancelled td{background:#fbeaea;color:#7a2b2b;text-decoration:line-through}.intake-logs-table tr.row-cancelled td:last-child{text-decoration:none}.intake-logs-table tr.row-remeasure td{background:#fff6e5}.inline-check{display:flex;align-items:center;gap:6px;font-size:12px;margin:0;white-space:nowrap}.inline-check input{width:auto;margin:0}

.database-tables{display:grid;gap:5px;margin-top:8px}.database-table-row{display:grid;grid-template-columns:20px auto 1fr;gap:8px;align-items:center;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:12px}.database-table-row.found{border-color:#a8d3ba;background:#f2faf5}.database-table-row.missing{border-color:#e0b4b4;background:#fdf3f3}.database-table-row.optional{border-color:#e3d5ac;background:#fdfaef}.database-table-row small{color:var(--muted)}.database-warning{margin-top:8px;padding:8px 10px;border:1px solid #e3d5ac;background:#fdfaef;border-radius:8px;font-size:12px;color:#6b551a}

/* Corespondența cod mașină → specie: rândurile nelegate sar în ochi. */
.species-mapping-card{margin-top:14px}
.species-mapping-card table{min-width:720px}
.species-mapping-card tr.row-unmapped td{background:#fff6e5}
.species-mapping-card select{width:100%;min-width:220px}

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

/* Totalurile rapoartelor: acoperă toată perioada, nu doar rândurile afișate. */
.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}
.quality-totals{display:flex;flex-wrap:wrap;gap:8px 16px;margin-bottom:10px;font-size:13px}
.quality-total{display:inline-flex;align-items:center;gap:6px}

/* Cele trei formate de descărcare a raportului, grupate. */
.report-downloads{display:flex;gap:6px;align-self:end}
.report-downloads button{min-width:64px}

/* Interfața deschisă din Manager: doar urmărește ce trimite stația. */
.database-settings.doar-urmarire{background:#f6f9f7;border-radius:9px}
.reader-location-note{grid-column:1/-1;margin-top:8px;padding:9px 11px;border-radius:8px;background:#eef5f0;border-left:4px solid #2c8b5e;font-size:12px;line-height:1.5}
.database-settings.doar-urmarire .reader-location-note{background:#fff7e8;border-left-color:#c98a13}

/* Interfața deschisă din Manager: se privește, nu se comandă. */
body.statie-doar-urmarire .comanda-statie,
body.statie-doar-urmarire [data-comanda-statie]{display:none!important}
body.statie-doar-urmarire .ingestion-actions{display:none}
/* Caseta destinației piesei următoare este a operatorului de la stație. */
body.statie-doar-urmarire .doar-operator{display:none}
.doar-manager{display:none}
body.statie-doar-urmarire .doar-manager{display:inline}
body.statie-doar-urmarire .order-card{cursor:default}

/* Modulul complet (Manager): secțiunea de preluare aparține stației, nu apare aici. */
.ingestion-monitor-head{display:none}
body.fara-preluare .ingestion-monitor-head{display:block;margin-bottom:12px}
body.fara-preluare .ingestion-monitor-head h2{margin:0 0 4px}
body.fara-preluare .ingestion-monitor-head small{color:#6d7c73}
body.fara-preluare .ingestion-control-head,
body.fara-preluare .database-settings{display:none!important}

/* Statia de incercare: se intra fara parola. Banderola sta sus, peste tot, ca
   nimeni sa nu confunde o instalare de proba cu una adevarata. */
.banderola-test{
  position:sticky;top:0;z-index:9999;
  background:#b3261e;color:#fff;
  font-weight:700;letter-spacing:.04em;font-size:13px;
  text-align:center;padding:8px 12px;
  box-shadow:0 2px 8px rgba(0,0,0,.25);
}
body.fara-logare #changeOperator{display:none}

/* Diferenta dintre volumul real si cel inregistrat: plusul in verde, minusul
   in rosu, ca ochiul sa prinda repede in ce parte se abate. */
.diferenta-plus{color:#0f7a3d;font-weight:600}
.diferenta-minus{color:#b3261e;font-weight:600}

/* Piese masurate carora masina nu le-a scris volumul: nu sunt erori, dar nici
   nu vin intregi de la masina, deci au culoarea lor. */
.classification-recuperata{color:#1f5f8b;font-weight:800}

/* Comanda care nu mai primește piese noi.
   Rămâne pe ecran - operatorul trebuie să vadă că există și în ce stare e -
   dar nu mai arată ca un buton, fiindcă apăsatul ei nu duce nicăieri. */
.order-card.nu-primeste{opacity:.72;cursor:default;border-style:dashed}
.order-card.nu-primeste:hover{box-shadow:none;transform:none}
.order-inchisa{display:inline-block;margin-bottom:8px;padding:3px 9px;border-radius:999px;
  background:#f3e7d4;color:#8a5a12;font-size:11px;font-weight:700;text-transform:uppercase}
