:root{--green:#1b5633;--green-dark:#153f29;--lime:#94d600;--bg:#f4f7f3;--line:#dfe7df;--text:#17231b;--muted:#6b756e;--danger:#b42318}*{box-sizing:border-box}html{font-family:Tahoma,Arial,sans-serif;color:var(--text);background:var(--bg)}body{margin:0}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.shell{min-height:100vh;display:grid;grid-template-columns:270px 1fr}.sidebar{background:var(--green-dark);color:white;display:flex;flex-direction:column;min-height:100vh;position:sticky;top:0;height:100vh}.brand{padding:20px;display:grid;gap:5px;text-align:center;border-bottom:1px solid #ffffff1a}.brand img{width:100%;height:82px;object-fit:contain;background:#fff;padding:10px;border-radius:6px}.brand strong{font-size:18px}.brand small{opacity:.6}.sidebar nav{padding:14px;display:grid;gap:5px}.sidebar nav a{padding:13px;border-radius:8px;color:#ffffffc7;font-weight:700}.sidebar nav a:hover{background:#ffffff12}.sidebar nav a.active{background:var(--lime);color:#173222}.bridge-icon{display:inline-grid;width:23px;margin-left:8px;border-bottom:4px solid currentColor}.secure{margin:auto 14px 14px;padding:13px;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;color:#fff}.secure small{opacity:.65}.main{min-width:0}.topbar{height:80px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px}.topbar h1{margin:0 0 4px;font-size:24px}.topbar small{color:var(--muted)}.user{display:flex;gap:14px;align-items:center}.user a{color:var(--danger);font-size:13px}.page{padding:24px;max-width:1500px;margin:auto}.grid{display:grid}.hero-grid{grid-template-columns:1.5fr .7fr;gap:18px}.card{background:white;border:1px solid #edf0ed;border-radius:12px;box-shadow:0 4px 18px #183d2510;overflow:hidden}.card-head{min-height:54px;padding:14px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}.card-head>div{display:grid;gap:5px}.card-head small{color:var(--muted)}.reading{padding:24px;display:flex;justify-content:space-between;align-items:center}.reading small,.reading p{color:var(--muted)}.reading p{font-size:12px;margin:5px 0 0}.reading b{font-family:Consolas,monospace;color:var(--green);font-size:78px;line-height:1}.reading span{font-size:22px;font-weight:bold;margin-right:10px}.bridge-visual{width:105px;height:105px;border:11px solid #e6f4d7;background:#f7fce9;border-radius:50%;display:grid;place-items:center;position:relative}.bridge-visual span{font-size:45px;color:var(--green);margin:0}.bridge-visual i{position:absolute;bottom:27px;width:58px;border-bottom:6px solid var(--green)}.ticket-number{background:var(--green-dark);color:white;padding:22px}.ticket-number>small{opacity:.6}.ticket-number>strong{display:block;font-size:27px;margin:12px 0}.ticket-number hr{border:0;border-top:1px solid #ffffff22}.ticket-number>div{display:flex;gap:50px;font-size:13px}.ticket-number span{opacity:.7}.ticket-number b{opacity:1;color:white}.form-card{margin-top:18px}.form-grid{padding:20px;display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.form-grid label,.login-card label{font-size:13px;font-weight:bold;display:grid;gap:8px}.form-grid input,.form-grid select,.form-grid textarea,.filters input,.settings input,select{width:100%;border:1px solid #ccd5cd;border-radius:7px;padding:10px;background:white}.form-grid .wide{grid-column:1/-1}.actions{padding:0 20px 20px;display:flex;gap:10px;justify-content:flex-start}.top-actions{padding:0 0 15px}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #cbd5cc;background:white;border-radius:7px;padding:10px 18px;cursor:pointer;font-weight:bold}.btn.primary{background:var(--green);border-color:var(--green);color:white}.btn:disabled{opacity:.45;cursor:not-allowed}.badge{display:inline-flex;border-radius:999px;padding:6px 11px;font-size:12px;font-weight:bold}.badge.green{background:#e7f5d5;color:var(--green)}.badge.offline{background:#fee4e2;color:var(--danger)}.badge.online{background:#dff5e7;color:#067647}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px}.stats article{background:white;border:1px solid var(--line);padding:18px;border-radius:10px;display:grid;gap:8px}.stats small{color:var(--muted)}.stats b{font-size:20px}.dashboard-stats{grid-template-columns:repeat(4,1fr);margin-top:0;margin-bottom:18px}.filters{display:flex;gap:10px;margin-bottom:15px}.filters input{max-width:300px}.table-card{overflow:hidden}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:12px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}th{background:#f5f8f5;color:#4d5b52}td a{color:var(--green)}.empty{text-align:center;color:var(--muted);padding:40px}.alert{margin:16px 20px 0;padding:12px;border-radius:7px;font-weight:bold}.alert.success{background:#e7f8ed;color:#08783c}.alert.error{background:#fee4e2;color:var(--danger);margin:0}.login-wrap,.verify-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,var(--green-dark),#276842)}.login-card,.verify-card{width:min(430px,100%);background:white;border-radius:14px;padding:30px;display:grid;gap:18px;box-shadow:0 20px 60px #0003;text-align:center}.login-card img,.verify-card img{width:100%;height:95px;object-fit:contain}.login-card h1,.login-card p{margin:0}.login-card p{color:var(--muted)}.login-card label{text-align:right}.login-card input{padding:12px;border:1px solid #ccd5cd;border-radius:7px}.seal{margin:auto;width:70px;height:70px;border-radius:50%;display:grid;place-items:center;font-size:38px;color:white}.valid .seal{background:#168a48}.invalid .seal{background:var(--danger)}.ticket-paper{position:relative;background:white;margin:auto;border:1px solid #cfd8d0;padding:24px;overflow:hidden}.ticket-paper.a5{width:148mm;min-height:205mm}.ticket-paper.receipt{width:78mm;min-height:150mm;padding:10px}.ticket-paper header{display:grid;grid-template-columns:130px 1fr 95px;align-items:center;border-bottom:3px solid var(--green);padding-bottom:14px}.ticket-paper header img{width:120px;height:65px;object-fit:contain}.ticket-paper h1{margin:0;color:var(--green)}.ticket-paper header p{margin:6px 0;color:var(--muted)}.security-stamp{border:3px double var(--green);border-radius:50%;width:90px;height:90px;display:grid;place-content:center;text-align:center;transform:rotate(-7deg);color:var(--green)}.security-stamp span{font-size:10px}.ticket-id{margin:18px 0;text-align:center;background:#eff8e2;border:1px solid #cbe49d;padding:14px}.ticket-id small{display:block}.ticket-id strong{font-size:24px;color:var(--green)}.ticket-paper dl{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);margin:0}.ticket-paper dl div{padding:10px;border-bottom:1px solid var(--line)}.ticket-paper dt{font-size:11px;color:var(--muted)}.ticket-paper dd{margin:5px 0 0;font-weight:bold}.ticket-weight{margin:18px 0;padding:16px;border:3px solid var(--green);display:flex;align-items:center;justify-content:center;gap:15px}.ticket-weight b{font-size:45px;font-family:Consolas,monospace;color:var(--green)}.ticket-weight strong{font-size:20px}.ticket-paper footer{display:grid;grid-template-columns:110px 1fr 130px;gap:14px;align-items:center;margin-top:20px;border-top:1px dashed #999;padding-top:14px}.qr canvas{width:100px!important;height:100px!important}.ticket-paper footer p{font-size:11px}.ticket-paper footer small{font-family:monospace}.sign{text-align:center;font-size:12px}.copy-watermark{position:absolute;inset:42% 5% auto;color:#b4231820;font-size:55px;font-weight:bold;transform:rotate(-20deg);text-align:center;pointer-events:none}.receipt header{grid-template-columns:85px 1fr}.receipt header img{width:80px}.receipt .security-stamp{display:none}.receipt h1{font-size:19px}.receipt .ticket-id strong{font-size:17px}.receipt dl{grid-template-columns:1fr}.receipt .ticket-weight b{font-size:34px}.receipt footer{grid-template-columns:90px 1fr}.receipt .sign{display:none}.notes{padding:10px;background:#f6f6f6}.print-page{background:white;padding:10px}
.supervisor-summary{display:flex;align-items:center;gap:18px;background:#eef8f0;border:1px solid #c9dfce;border-radius:12px;padding:16px 20px;margin-bottom:18px}.supervisor-summary article{min-width:130px;text-align:center}.supervisor-summary small{display:block;color:var(--muted)}.supervisor-summary b{font-size:32px;color:var(--green)}.supervisor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.review-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;box-shadow:0 4px 18px #183d2510}.review-card header,.review-primary,.review-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.review-card header small,.review-meta small,.review-weights small{display:block;color:var(--muted);font-size:11px}.review-card header a b{font-size:19px;color:var(--green)}.review-primary{margin:15px 0;padding:13px;background:#f6f9f6;border-radius:8px}.review-primary strong{font-size:25px}.review-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px}.review-meta span{padding:8px;border-bottom:1px solid var(--line)}.review-weights{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin:14px 0}.review-weights span{background:#f7faf7;padding:12px;text-align:center}.review-weights b{display:block;color:var(--green);font:700 22px Consolas,monospace}.review-form label{display:grid;gap:6px;font-size:12px;font-weight:bold}.review-form textarea{width:100%;border:1px solid #ccd5cd;border-radius:7px;padding:9px}.review-actions{justify-content:flex-start;margin-top:12px}.review-actions .btn{min-height:48px;font-size:15px;flex:1}.btn.reclassify{background:#fff1e8;border-color:#df7b38;color:#9b3e06}.validation-badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:bold;white-space:nowrap}.validation-badge.pending{background:#fff1cc;color:#8a5700}.validation-badge.approved{background:#e4f6e9;color:#08783c}.validation-badge.reclassified{background:#fde9dc;color:#9b3e06}.recent-review{margin-top:20px}.empty-state{padding:40px;text-align:center;color:var(--muted)}.ticket-validation{text-align:center;padding:9px;border-radius:6px;font-weight:bold;margin:-8px 0 14px}.ticket-validation.pending{background:#fff1cc;color:#8a5700;border:1px solid #e8c35a}.ticket-validation.approved{background:#e4f6e9;color:#08783c;border:1px solid #9dd0ac}.ticket-validation.reclassified{background:#fde9dc;color:#9b3e06;border:1px solid #e8ae88}.pending-watermark{position:absolute;inset:50% 2% auto;color:#8a57001c;font-size:43px;font-weight:bold;transform:rotate(-18deg);text-align:center;pointer-events:none}.pending-verification .seal{background:#d18b16}
@media(max-width:900px){.shell{display:block}.sidebar{height:auto;min-height:auto;position:static}.sidebar nav{grid-template-columns:repeat(4,1fr)}.secure{display:none}.brand{grid-template-columns:130px 1fr;align-items:center}.brand img{height:60px}.brand small{display:none}.hero-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr 1fr}.dashboard-stats{grid-template-columns:1fr 1fr}.topbar{padding:0 16px}.page{padding:14px}.supervisor-grid{grid-template-columns:1fr}.review-actions .btn{min-height:56px}}@media(max-width:600px){.sidebar nav{grid-template-columns:1fr 1fr}.form-grid,.stats,.dashboard-stats{grid-template-columns:1fr}.reading b{font-size:52px}.bridge-visual{display:none}.user span{display:none}.ticket-paper.a5{width:100%;min-height:0}.ticket-paper header{grid-template-columns:100px 1fr}.security-stamp{display:none}.ticket-paper dl{grid-template-columns:1fr}.ticket-paper footer{grid-template-columns:95px 1fr}.sign{display:none}.supervisor-summary{align-items:flex-start;flex-direction:column}.review-card{padding:13px}.review-card header,.review-primary,.review-actions{align-items:stretch;flex-direction:column}.review-meta{grid-template-columns:1fr}.review-actions .btn{width:100%}.review-weights b{font-size:18px}.pending-watermark{font-size:28px}}
@media print{.no-print,.sidebar,.topbar{display:none!important}.shell{display:block}.page{padding:0}.ticket-paper{border:0;box-shadow:none}.print-page{padding:0}@page{size:A5;margin:7mm}}
.weight-calculation{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:0 20px 18px;background:var(--line);border:1px solid var(--line);border-radius:9px;overflow:hidden}.weight-calculation>div{background:#f8faf8;padding:14px;text-align:center}.weight-calculation small{display:block;color:var(--muted);margin-bottom:6px}.weight-calculation b{font:700 26px Consolas,monospace;color:var(--green)}.weight-calculation span{margin-right:5px;font-size:12px}.ticket-calculation{margin:18px 0}.manual-test{margin:0 20px 18px;padding:12px;background:#fff7e8;border:1px solid #f1c36d;border-radius:8px;display:flex;gap:18px;align-items:center}.manual-test label{display:flex;gap:8px;align-items:center}.manual-test input[type=number]{width:180px;padding:8px}.ok-text{color:#08783c}.error-text{color:var(--danger)}
.form-alert{margin:14px 20px 0!important}.enter-hint{align-self:center;color:var(--muted);font-size:12px;font-weight:bold}.form-grid select:required:invalid{border-color:#d6a441;background:#fffaf0}.review-form{display:grid;gap:12px}.review-form textarea,.review-form select{width:100%;border:1px solid #ccd5cd;border-radius:7px;padding:11px;background:#fff}.operation-decision{padding:12px;background:#eef8f0;border:1px solid #c9dfce;border-radius:8px}.operation-decision select{min-height:48px;font-size:16px;font-weight:bold;color:var(--green)}
@media print{html,body,.print-page{width:auto!important;min-height:0!important;margin:0!important;padding:0!important;background:#fff!important}.ticket-paper.a5{width:auto!important;min-height:0!important;height:auto!important;margin:0!important;padding:4mm 5mm!important;border:0!important;overflow:visible!important;break-inside:avoid-page;page-break-inside:avoid}.ticket-paper.a5 header{grid-template-columns:30mm minmax(0,1fr) 22mm;gap:3mm;padding-bottom:2mm}.ticket-paper.a5 header img{width:28mm;height:15mm}.ticket-paper.a5 h1{font-size:22px}.ticket-paper.a5 header p{margin:1mm 0;font-size:11px}.ticket-paper.a5 .security-stamp{display:grid!important;width:20mm;height:20mm}.ticket-paper.a5 .ticket-id{margin:3mm 0;padding:2.5mm}.ticket-paper.a5 .ticket-validation{margin:-1mm 0 3mm;padding:2mm}.ticket-paper.a5 dl{grid-template-columns:1fr 1fr!important}.ticket-paper.a5 dl div{padding:2.2mm}.ticket-paper.a5 dl dt{font-size:10px}.ticket-paper.a5 dl dd{margin-top:1mm}.ticket-paper.a5 .ticket-calculation{margin:3mm 0}.ticket-paper.a5 .weight-calculation>div{padding:2.5mm}.ticket-paper.a5 .weight-calculation b{font-size:24px}.ticket-paper.a5 footer{grid-template-columns:24mm 1fr 30mm;gap:3mm;margin-top:3mm;padding-top:2mm;break-inside:avoid;page-break-inside:avoid}.ticket-paper.a5 .qr canvas{width:22mm!important;height:22mm!important}.ticket-paper.a5 footer p{margin:0;font-size:9px}.ticket-paper.a5 .sign{display:block!important;font-size:10px}.ticket-paper.a5 .notes{margin:2mm 0;padding:2mm;font-size:10px}@page{size:A5 portrait;margin:5mm}}
.role-form{padding:18px;border-bottom:1px solid var(--line)}.role-head{display:grid;grid-template-columns:1fr 160px 100px;gap:12px;align-items:center}.permission-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:15px 0}.permission-grid label{padding:9px;border:1px solid var(--line);border-radius:7px}.permission-grid small{display:block;color:var(--muted);margin-right:22px}.integration-info{padding:20px}.integration-info label{display:grid;gap:7px;margin:15px 0}.integration-info input{padding:10px;border:1px solid #ccd5cd;border-radius:7px;width:100%}
.sidebar nav a{display:flex;align-items:center;gap:9px}.truck-scale-icon{width:29px;height:21px;flex:0 0 29px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.bridge-visual svg{width:72px;height:58px;fill:none;stroke:var(--green);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.global-flash{margin:0 0 16px}.menu-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.menu-cards a{background:white;border:1px solid var(--line);border-radius:10px;padding:24px;display:grid;gap:8px;box-shadow:0 4px 18px #183d2510}.menu-cards a:hover{border-color:var(--lime)}.menu-cards b{color:var(--green);font-size:18px}.menu-cards small{color:var(--muted)}.management-grid{display:grid;grid-template-columns:330px 1fr;gap:18px}.manage-form{padding:20px;display:grid;gap:14px;align-content:start}.manage-form h2{margin:0}.manage-form label{display:grid;gap:7px;font-size:13px;font-weight:bold}.manage-form input,.manage-form select,.table-card input,.table-card select{width:100%;padding:9px;border:1px solid #ccd5cd;border-radius:6px;background:white}.integration-info{padding:20px}.integration-info form{margin-top:18px}@media(max-width:900px){.menu-cards{grid-template-columns:1fr 1fr}.management-grid{grid-template-columns:1fr}}@media(max-width:600px){.menu-cards{grid-template-columns:1fr}}
.report-filters{background:white;border:1px solid var(--line);border-radius:10px;padding:15px;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.report-filters label{font-size:12px;font-weight:bold;display:grid;gap:6px}.report-filters input,.report-filters select{width:100%;padding:9px;border:1px solid #ccd5cd;border-radius:6px}.report-actions{grid-column:1/-1;display:flex;gap:8px}.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}@media(max-width:900px){.report-filters{grid-template-columns:1fr 1fr}.report-grid{grid-template-columns:1fr}}@media(max-width:600px){.report-filters{grid-template-columns:1fr}}
.setup-wrap{min-height:100vh;background:#eef4ef;padding:30px;display:grid;place-items:center}.setup-card{width:min(920px,100%);background:white;border-radius:14px;padding:26px;box-shadow:0 20px 60px #153f2920;display:grid;gap:18px}.setup-card>header{display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line);padding-bottom:18px}.setup-card>header img,.success-card>img{width:180px;height:90px;object-fit:contain}.setup-card h1,.setup-card p{margin:0}.setup-card fieldset{border:1px solid var(--line);border-radius:10px;padding:17px;display:grid;gap:13px}.setup-card legend{font-weight:bold;color:var(--green);padding:0 8px}.setup-card label{display:grid;gap:7px;font-size:13px;font-weight:bold}.setup-card input,.setup-card select{width:100%;padding:11px;border:1px solid #cbd5cc;border-radius:7px}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.requirement-list{display:flex;flex-wrap:wrap;gap:8px}.requirement-list span{padding:6px 10px;border-radius:999px;font-size:12px}.requirement-list .ok{background:#e7f8ed;color:#08783c}.requirement-list .bad{background:#fee4e2;color:var(--danger)}.setup-card details{background:#f7f9f7;padding:12px;border-radius:7px}.setup-card summary{cursor:pointer;font-weight:bold}.setup-card .check{display:flex;grid-template-columns:auto 1fr;align-items:center;justify-content:flex-start}.setup-card .check input{width:auto}.hint{font-size:12px;color:var(--muted)}.setup-submit{min-height:48px}.success-card{text-align:center;max-width:620px;justify-items:center}.gateway-secret{width:100%;background:#f4f8f4;border:1px solid var(--line);padding:18px;border-radius:10px;display:grid;gap:12px;text-align:right}.gateway-secret small{color:var(--danger);font-weight:bold}@media(max-width:650px){.setup-wrap{padding:10px}.setup-card{padding:16px}.setup-card>header{display:grid}.setup-grid{grid-template-columns:1fr}}
.recycle-stats{grid-template-columns:repeat(4,1fr);margin-bottom:18px}.matrix-toolbar{display:flex;gap:24px;align-items:end;justify-content:space-between;margin-bottom:18px;padding:18px 22px}.matrix-toolbar form{min-width:320px}.matrix-toolbar label,.matrix-toolbar div{display:grid;gap:7px}.matrix-toolbar small{color:var(--muted)}.matrix-bulk-form{display:grid;grid-template-columns:minmax(220px,1fr) minmax(240px,1fr) auto;gap:14px;align-items:end;padding:20px}.matrix-bulk-form label{display:grid;gap:7px}.matrix-bulk-form input,.matrix-bulk-form select{width:100%;padding:10px;border:1px solid #ccd5cd;border-radius:7px;background:#fff}.matrix-table-card{margin-top:18px}.matrix-table{min-width:1450px}.matrix-table input,.matrix-table select{min-width:120px}.matrix-table td:nth-child(8) input{min-width:220px}.matrix-table code{white-space:nowrap}.matrix-table .btn{white-space:nowrap}@media(max-width:800px){.matrix-toolbar{align-items:stretch;flex-direction:column}.matrix-toolbar form{min-width:0;width:100%}.matrix-bulk-form{grid-template-columns:1fr}.recycle-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.production-stats,.production-kpis{grid-template-columns:repeat(4,1fr);margin-bottom:18px}.production-actions{display:flex;gap:10px;margin-bottom:18px}.production-form{overflow:visible}.production-form-grid{padding:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.production-form-grid label,.production-source-grid label,.output-line label{display:grid;gap:7px;font-size:13px;font-weight:bold}.production-form-grid input,.production-form-grid select,.production-form-grid textarea,.production-source-grid input,.production-source-grid select,.output-line input,.output-line select{width:100%;padding:11px;border:1px solid #ccd5cd;border-radius:7px;background:#fff}.production-form-grid .wide{grid-column:1/-1}.production-section{padding:20px;border-top:1px solid var(--line)}.production-section h3{margin:0 0 6px;color:var(--green)}.production-section>p{margin:0 0 16px;color:var(--muted)}.production-source-grid{display:grid;grid-template-columns:2fr 1fr;gap:14px}.ticket-picker{margin-top:15px;background:#f6f9f6;border-radius:8px;padding:12px}.ticket-picker summary{cursor:pointer;font-weight:bold}.ticket-picker>div{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px;max-height:230px;overflow:auto}.ticket-picker label{display:flex;gap:9px;align-items:center;background:#fff;border:1px solid var(--line);padding:10px;border-radius:7px}.output-lines{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.output-line{border:1px solid var(--line);background:#f8faf8;border-radius:9px;padding:14px;display:grid;gap:10px}.production-submit{padding:20px;border-top:1px solid var(--line);display:flex;gap:10px;align-items:center}.production-submit span{color:var(--muted);font-size:12px}.shift-head{display:grid;grid-template-columns:repeat(4,1fr);padding:18px;margin-bottom:18px}.shift-head>div{display:grid;gap:7px;padding:0 14px;border-left:1px solid var(--line)}.shift-head>div:last-child{border:0}.shift-head small{color:var(--muted)}.movements-card{margin-top:18px}.approval-history{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.approval-history article{padding:20px}.approval-history h3{margin:0 0 12px;color:var(--green)}.queue-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.inventory-product-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}.inventory-product-cards article{padding:18px;display:grid;gap:7px}.inventory-product-cards small,.inventory-product-cards span{color:var(--muted)}.inventory-product-cards b{font-size:24px;color:var(--green)}@media(max-width:900px){.production-form-grid{grid-template-columns:1fr 1fr}.output-lines{grid-template-columns:1fr}.queue-grid{grid-template-columns:1fr}.production-stats,.production-kpis,.shift-head{grid-template-columns:repeat(2,1fr)}.inventory-product-cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.production-form-grid,.production-source-grid,.production-stats,.production-kpis,.shift-head,.approval-history,.inventory-product-cards{grid-template-columns:1fr}.ticket-picker>div{grid-template-columns:1fr}.production-actions,.production-submit{align-items:stretch;flex-direction:column}.shift-head>div{border-left:0;border-bottom:1px solid var(--line);padding:12px 0}}
.production-source-grid[hidden],#matrix-source[hidden],#ticket-source[hidden],.output-readiness[hidden],.output-line[hidden]{display:none!important}.output-readiness{margin:0 0 14px;padding:11px 14px;border:1px solid #efb04d;border-radius:8px;background:#fff6e6;color:#8a4b00;font-weight:700}
.truck-counter{display:grid;grid-template-columns:42px 1fr 42px;gap:6px;direction:ltr}.truck-counter button{border:1px solid #ccd5cd;border-radius:7px;background:#eef6e8;color:#175632;font-size:22px;font-weight:800;cursor:pointer}.truck-counter input{text-align:center}

/* Recycling process 2.2 */
.stage-flow-summary{background:#eef7e7;border:1px solid #cfe4bf;border-radius:10px;color:#174f31;font-weight:700;margin:10px 0 16px;padding:12px 14px}
.ticket-allocation{margin-top:16px}.ticket-allocation h4{margin:0 0 10px}.ticket-allocation table input[type=number]{min-width:150px}
.v22-form .output-line{border:1px solid #dce6dd;border-radius:12px;background:#fbfdfb;padding:14px}.v22-form .output-line>b{color:#175632}
.variance-box{background:#fffaf0;border-color:#f1d69c}.workflow-config{margin-top:18px}.workflow-config table{font-size:.9rem}
.workflow-config .manage-form{align-self:start}.report-kpis{margin:16px 0}.evidence-card{margin-top:18px;padding:18px}.evidence-list{display:grid;gap:8px;margin:12px 0}.evidence-list a{background:#f3f8f4;border:1px solid #dbe8dd;border-radius:8px;color:#175632;padding:10px;text-decoration:none}.evidence-card form{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.evidence-card select,.evidence-card input{width:auto;min-width:180px}
@media(max-width:900px){.v22-form .production-form-grid,.v22-form .production-source-grid,.v22-form .output-lines{grid-template-columns:1fr}.ticket-allocation table{min-width:720px}.workflow-config{grid-template-columns:1fr}.report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.evidence-card form>*{width:100%}.evidence-card select,.evidence-card input{width:100%}}
@media(max-width:560px){.report-kpis{grid-template-columns:1fr}.v22-form{padding:12px}.v22-form .production-section{padding:12px}.production-submit{align-items:stretch}.production-submit .btn{width:100%}}

/* Top navigation 2.2.1 */
.shell{display:block;min-height:100vh}.site-header{position:sticky;top:0;z-index:100;background:var(--green-dark);box-shadow:0 2px 12px #153f2920}.site-masthead{height:72px;max-width:1500px;margin:auto;padding:8px 24px;display:flex;align-items:center;justify-content:space-between;gap:20px;color:#fff}.site-header .brand{padding:0;display:flex;align-items:center;gap:13px;text-align:right;border:0}.site-header .brand img{width:118px;height:54px;object-fit:contain;background:#fff;padding:5px 8px;border-radius:7px}.site-header .brand span{display:grid;gap:3px}.site-header .brand strong{font-size:19px}.site-header .brand small{opacity:.68}.header-user{display:flex;align-items:center;gap:13px;font-size:13px}.header-user .connection-state{color:#b6f34b}.header-user a{color:#ffd5cf}.header-nav{height:62px;padding:7px max(18px,calc((100% - 1500px)/2 + 24px));display:flex;align-items:stretch;gap:6px;background:#fff;border-bottom:1px solid var(--line)}.header-nav>a,.nav-more>summary{min-width:150px;padding:7px 18px;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:8px;color:#45534a;font-weight:700;cursor:pointer;list-style:none}.header-nav>a:hover,.nav-more>summary:hover{background:#f0f5f0;color:var(--green)}.header-nav>a.active,.nav-more.active>summary,.nav-more[open]>summary{background:var(--lime);color:#173222}.header-nav i{font-style:normal;font-size:20px;line-height:1}.nav-more{position:relative}.nav-more>summary::-webkit-details-marker{display:none}.nav-more>summary::marker{display:none;content:""}.nav-dropdown{position:absolute;top:52px;left:0;width:235px;padding:8px;display:grid;gap:3px;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:0 14px 35px #153f2930}.nav-dropdown a{padding:11px 13px;border-radius:7px;color:#425147;font-weight:700}.nav-dropdown a:hover{background:#f0f5f0;color:var(--green)}.nav-dropdown a.active{background:#e8f5d8;color:var(--green)}.topbar{height:auto;min-height:74px;padding:12px 28px}.main{min-width:0}.page{padding-top:20px}.sidebar{display:none!important}
@media(max-width:900px){.site-header{position:relative}.site-masthead{height:66px;padding:7px 14px}.site-header .brand img{width:96px;height:48px}.site-header .brand strong{font-size:17px}.site-header .brand small{display:none}.header-user b{display:none}.header-nav{height:72px;padding:7px;display:flex;gap:4px}.header-nav>a,.header-nav>.nav-more{flex:1;min-width:0}.header-nav>a,.nav-more>summary{min-width:0;padding:5px 3px;min-height:56px;flex-direction:column;gap:3px;font-size:12px;text-align:center}.header-nav .truck-scale-icon{margin:0}.nav-more{min-width:0}.nav-more>summary{width:100%}.nav-dropdown{top:64px;left:0;width:min(260px,90vw);text-align:right}.topbar{min-height:68px;padding:10px 16px}.topbar h1{font-size:22px}.page{padding:14px}.hero-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.site-masthead{height:58px}.site-header .brand img{width:78px;height:40px}.site-header .brand strong{font-size:15px}.header-user{gap:7px}.header-user .connection-state{font-size:0}.header-user .connection-state::after{content:"●";font-size:13px}.header-nav{height:66px}.header-nav>a,.nav-more>summary{min-height:51px;font-size:11px}.header-nav i{font-size:17px}.topbar{min-height:62px}.topbar h1{font-size:20px}.form-grid{grid-template-columns:1fr}}
@media print{.site-header{display:none!important}}
.anpr-panel{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 20px 18px;padding:12px 16px;border:1px solid #b8d7a5;border-radius:10px;background:#f1faeb}.anpr-panel div{display:flex;flex-direction:column;gap:5px}.anpr-panel small{color:#52645a}.anpr-panel img{width:180px;max-height:90px;object-fit:cover;border-radius:8px;border:1px solid #d5dfd2}.anpr-panel.approximate{border-color:#e8b04b;background:#fff8e9}.anpr-panel.unreadable{border-color:#e6a7a2;background:#fff0ef}@media(max-width:700px){.anpr-panel{margin:0 10px 14px}.anpr-panel img{width:120px}}
/* UI phase 1: grouped menu counters and breadcrumbs */
.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:#c2410c;color:#fff;font-size:12px;font-weight:800;line-height:1}
.nav-more>summary,.header-nav>a{position:relative}
.nav-dropdown a{display:flex;align-items:center;justify-content:space-between;gap:8px}
.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;font-size:13px;color:var(--muted)}
.breadcrumbs a{color:var(--green);font-weight:700}
.breadcrumbs b{color:#45534a;font-weight:700}
@media(max-width:900px){.header-nav .nav-badge{position:absolute;top:3px;inset-inline-start:6px;min-width:18px;height:18px;font-size:11px;padding:0 4px}}

/* UI phase 2: readable recycling operation form on desktop and phone */
.v22-form .card-head small{font-size:14px}
.v22-form .production-section h3{font-size:21px}
.v22-form .production-section>p,.v22-form .stage-flow-summary,.v22-form .hint{font-size:15px;line-height:1.7}
.v22-form .production-form-grid label,.v22-form .production-source-grid label,.v22-form .output-line label,.v22-form .variance-box label{font-size:15px;gap:8px}
.v22-form select,.v22-form input:not([type=checkbox]):not([type=hidden]),.v22-form textarea{font-size:17px;min-height:52px;padding:12px 14px;line-height:1.45;font-weight:600}
.v22-form select option{font-size:17px;padding:8px}
.v22-form .output-lines{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.v22-form .output-line{padding:16px;gap:12px}
.v22-form .output-line>b{font-size:18px;line-height:1.5}
.v22-form input[readonly]{background:#eef3ef;color:#175632;font-weight:800;border-style:dashed}
.v22-form input[readonly]::placeholder{color:#6d8a75;font-weight:600}
.v22-form .truck-counter{grid-template-columns:56px 1fr 56px}.v22-form .truck-counter button{min-height:52px;font-size:26px}
.v22-form .truck-estimate{font-size:14px;color:#3e5245}
.v22-form .ticket-allocation th,.v22-form .ticket-allocation td{font-size:15px;padding:12px 10px}
.v22-form .ticket-check{width:24px;height:24px}
.v22-form .production-submit .btn{font-size:17px;min-height:52px;padding:0 26px}
.matrix-info{display:grid;gap:5px;padding:11px 13px;border-radius:9px;background:#eef6e8;border:1px solid #cfe3c4;font-weight:600;line-height:1.55}
.matrix-info b{font-size:16px;color:#175632;overflow-wrap:anywhere}
.matrix-info span{font-size:15px;color:#3e5245}
.matrix-info .fill{height:9px;border-radius:5px;background:#dbe5dc;overflow:hidden}.matrix-info .fill i{display:block;height:100%;background:#2f8f4e}
.matrix-info.warn{background:#fff6e6;border-color:#efb04d}.matrix-info.warn span:last-child{color:#8a4b00;font-weight:800}.matrix-info.warn .fill i{background:#d9822b}
.matrix-info[hidden]{display:none!important}
@media(max-width:900px){.v22-form .output-lines{grid-template-columns:1fr}}
@media(max-width:560px){.v22-form select,.v22-form input:not([type=checkbox]):not([type=hidden]),.v22-form textarea{font-size:17px}.v22-form .production-section h3{font-size:19px}.v22-form .ticket-allocation table{min-width:0}.v22-form .ticket-allocation th:nth-child(3),.v22-form .ticket-allocation td:nth-child(3){display:none}}
/* Operation form: stage buttons, collapsed notes, tappable tickets, calculated values as text (pack 2026-10-22) */
.v22-form .production-form-grid .wide{grid-column:1/-1}
.v22-form label:has(#stage-select:not([type=hidden])){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.stage-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.stage-tile{min-height:64px;padding:12px;border:2px solid var(--line);border-radius:10px;background:#fff;color:var(--text);font:inherit;font-size:17px;font-weight:800;cursor:pointer}
.stage-tile:hover{border-color:var(--green)}
.stage-tile.on{background:var(--green);border-color:var(--green);color:#fff}
.stage-tile:focus-visible{outline:3px solid #936a00;outline-offset:2px}
.form-notes summary{cursor:pointer;color:var(--green);font-weight:700;padding:6px 0}
.form-notes label{margin-top:8px}
.ticket-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.ticket-row{cursor:pointer}
.ticket-row td{padding-block:14px}
.ticket-row .ticket-check{width:24px;height:24px}
.output-line input.output-quantity[readonly]{border-color:transparent;background:transparent;font-size:20px;font-weight:800;padding-inline:0;color:var(--green-dark)}
.production-submit .btn[disabled]{opacity:.45;cursor:not-allowed}
#save-blocked{margin-bottom:12px}
.quality-bulk{margin-bottom:18px}
.quality-bulk-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 20px;border-top:1px solid var(--line)}
/* Worker PIN on shared stage computers, trommel spread note, measurement report (pack 2) */
.rw-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 16px;margin-bottom:16px;font-size:16px}
.rw-overlay{position:fixed;inset:0;z-index:1000;background:rgba(10,30,18,.82);display:flex;align-items:center;justify-content:center;padding:16px}
.rw-overlay[hidden]{display:none!important}
.rw-panel{background:#fff;border-radius:16px;padding:24px;width:min(720px,100%);max-height:100%;overflow:auto;display:grid;gap:14px;text-align:center}
.rw-panel h2{margin:0;font-size:26px;color:var(--green-dark)}
.rw-panel p{margin:0;font-size:18px}
.rw-name-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-top:12px}
.rw-name{min-height:72px;border:2px solid var(--line);border-radius:12px;background:#f7faf6;font:inherit;font-size:20px;font-weight:800;color:var(--text);cursor:pointer}
.rw-name:hover,.rw-name:focus-visible{border-color:var(--green);outline:none}
.rw-dots{display:flex;justify-content:center;gap:16px;margin:8px 0}
.rw-dots i{width:22px;height:22px;border-radius:50%;border:3px solid var(--green)}
.rw-dots i.on{background:var(--green)}
.rw-keys{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:360px;margin:0 auto;width:100%}
.rw-keys button{min-height:72px;border:0;border-radius:12px;background:#eef4ee;font:inherit;font-size:28px;font-weight:800;color:var(--text);cursor:pointer}
.rw-keys button:active{background:var(--green);color:#fff}
.rw-keys button[data-key=cancel]{font-size:18px}
.rw-error{color:var(--danger);font-weight:800;font-size:17px}
.matrix-info.spread{background:#eef6ff;border-color:#9cc3ea}.matrix-info.spread span:last-child{color:#1d4f80;font-weight:800}
.report-hint{margin:0 0 16px}
.gap{font-weight:800;padding:2px 8px;border-radius:999px;white-space:nowrap}
.gap-ok{background:#e3f2e6;color:#1b5633}.gap-mid{background:#fff1d6;color:#8a4b00}.gap-high{background:#fde3df;color:#9b1c13}
td.gap-mid-cell{background:#fff6e6;font-weight:800}
td.num,th.num{font-variant-numeric:tabular-nums;text-align:left;direction:ltr}
/* Weighbridge picker on the new-weight screen (shown only when there is more than one weighbridge) */
.bridge-picker{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 16px}
.bridge-picker>span{font-weight:700}
.bridge-tile{display:flex;flex-direction:column;gap:4px;min-width:180px;padding:12px 16px;border:2px solid #d5ddd7;border-radius:12px;background:#fff;color:inherit;text-decoration:none}
.bridge-tile b{font-size:1.15rem}.bridge-tile small{color:#5d6b62}.bridge-tile .badge{align-self:flex-start;font-style:normal}
.bridge-tile.on{border-color:#1b5e3a;background:#eef7f0;box-shadow:0 0 0 2px #1b5e3a33}
.calibration-panel{margin:16px 20px 0;padding:14px 16px;border-radius:10px;background:#eef4ff;border:1px solid #9db7e8;color:#1d3a6e;display:grid;gap:6px}
.calibration-panel b{font-family:Consolas,monospace}
.calibration-panel[hidden],#sale-product-field[hidden],#sale-customer-field[hidden]{display:none!important}
/* Weighbridges settings: one card per weighbridge with labelled fields */
.wb-list{display:grid}.wb-item{padding:16px 20px;border-bottom:1px solid var(--line)}.wb-item:last-child{border-bottom:0}
.wb-item header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.wb-item header div{display:grid;gap:2px}.wb-item header b{font-size:17px}.wb-item header small{color:var(--muted)}
.wb-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px}.wb-grid label{display:grid;gap:6px;font-size:13px;font-weight:bold;min-width:0}
.wb-grid input,.wb-grid select{width:100%;min-width:0;border:1px solid #ccd5cd;border-radius:7px;padding:10px;background:white}
.wb-key{grid-column:span 2}.wb-key span{display:flex;gap:8px}.wb-key small{font-weight:normal;color:var(--muted)}
.wb-actions{display:flex;gap:10px;align-items:end;justify-content:flex-start}
@media(max-width:900px){.wb-grid{grid-template-columns:1fr 1fr}.wb-key{grid-column:1/-1}}
@media(max-width:560px){.wb-grid{grid-template-columns:1fr}}
.form-grid label{align-content:start}.form-grid input:not([type=checkbox]):not([type=radio]),.form-grid select{height:44px;line-height:normal}
/* Stronger card and section borders (26 Oct 2026). html body raises specificity over the pages' own <style> blocks. */
:root{--line:#c5d1c7}
html body :is(.card,.v22-form .output-line,.stats article,.supervisor-summary,.review-card,.menu-cards a,.report-filters,.setup-card fieldset,.output-line,.evidence-list a,.manual-test,.weight-calculation,.review-weights,.mt-panel,.rr-box,.mr-panel,.att-panel){border:2px solid #b4c3b7}
html body :is(.anpr-panel,.calibration-panel,.output-readiness,.stage-flow-summary,.matrix-info,.gateway-secret,.operation-decision){border-width:2px;border-style:solid}
html body .card-head{border-bottom:2px solid var(--line)}html body .production-section{border-top:2px solid var(--line)}
.review-actions .reject-ticket{background:#fff;color:#b42318;border:2px solid #b42318;font-weight:700}.review-actions .reject-ticket:hover{background:#b42318;color:#fff}
.review-tabs{display:flex;gap:10px;margin:0 0 16px;flex-wrap:wrap}.review-tabs a{display:flex;align-items:center;gap:8px;padding:10px 18px;border:2px solid #b4c3b7;border-radius:10px;background:#fff;font-weight:700;color:var(--green)}.review-tabs a span{background:#eef3ee;border-radius:999px;padding:2px 10px;font-size:13px}.review-tabs a.on{background:var(--green);border-color:var(--green);color:#fff}.review-tabs a.on span{background:#ffffff26;color:#fff}
