:root{--pngec-green:#346664;--pngec-green-dark:#24504e;--pngec-mint:#64ca94;--pngec-mint-soft:#e4f3ec;--red:#c0182b;--black:#1a1a1a;--gold:#d4a017;--bg:#f2f3f1;--surface:#fff;--border:#dcdfda;--text:#1a1a1a;--text-muted:#5a635f;--status-declared:#245f52;--status-declared-bg:var(--pngec-mint-soft);--status-declared-border:#b3ddc8;--status-counting:#b45309;--status-counting-bg:#fdf3e7;--status-counting-border:#f0d5ab;--status-pending:#54555a;--status-pending-bg:#f0efeb;--green:#245f52;--amber:#b45309}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14.5px}.demo-banner{background:var(--black);color:#ffd100;text-align:center;padding:5px 12px;font-size:12px;font-weight:600}header.portal-header{background:var(--pngec-green);color:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 20px;display:flex}header.portal-header .brand{font-size:17px;font-weight:800}header.portal-header .brand .sub{color:#cfcfcf;margin-left:8px;font-size:12px;font-weight:400}nav.portal-nav{align-items:center;gap:6px;display:flex}nav.portal-nav a{color:#fff;opacity:.85;border-radius:5px;padding:6px 10px;font-size:13px;text-decoration:none}nav.portal-nav a.active,nav.portal-nav a:hover{opacity:1;background:#ffffff2e}.user-chip{color:#cfcfcf;align-items:center;gap:8px;font-size:12.5px;display:flex}.user-chip button{color:#cfcfcf;cursor:pointer;background:0 0;border:1px solid #fff6;border-radius:5px;padding:4px 8px;font-size:12px}main.container{max-width:1440px;margin:0 auto;padding:24px 28px}form.card,.login-shell{max-width:940px}.login-shell{max-width:360px}h2.page-title{margin:0 0 16px;font-size:18px}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:16px;padding:18px}.field-group{margin-bottom:14px}.field-group label{color:#444;margin-bottom:5px;font-size:12.5px;font-weight:700;display:block}.field-group select,.field-group input[type=text],.field-group input[type=password],.field-group input[type=number],.field-group input[type=file],.field-group textarea{border:1px solid var(--border);background:#fff;border-radius:6px;width:100%;padding:8px 10px;font-size:14px}.field-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;display:grid}.candidate-input-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.candidate-input-row:last-child{border-bottom:none}.candidate-input-row .cname{font-weight:600}.candidate-input-row .cparty{color:var(--text-muted);font-size:12px;font-weight:400}.candidate-input-row input{border:1px solid var(--border);text-align:right;border-radius:6px;width:110px;padding:7px 8px;font-size:14px}.checksum-banner{border-radius:6px;margin:14px 0;padding:10px 14px;font-size:13.5px;font-weight:700}.checksum-banner.balanced{background:var(--status-declared-bg);color:var(--status-declared);border:1px solid var(--status-declared-border)}.checksum-banner.unbalanced{color:var(--red);background:#fdeceb;border:1px solid #f6c3bf}button.primary-btn{background:var(--pngec-green);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:10px 18px;font-size:14px;font-weight:700}button.primary-btn:disabled{cursor:not-allowed;background:#c9c4bb}button.secondary-btn{color:var(--text);border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:6px;padding:8px 14px;font-size:13px}button.reject-btn{color:var(--red);border:1px solid var(--red);cursor:pointer;background:#fff;border-radius:6px;padding:8px 14px;font-size:13px;font-weight:600}button.publish-btn{background:var(--status-declared);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:8px 14px;font-size:13px;font-weight:600}.error-text{color:var(--red);margin-top:6px;font-size:13px}.success-text{color:var(--green);margin-top:6px;font-size:13px}.badge{text-transform:uppercase;letter-spacing:.02em;border-radius:999px;padding:3px 9px;font-size:10.5px;font-weight:700;display:inline-block}.badge.channel-direct{color:#3648c9;background:#eef2ff;border:1px solid #ccd4f7}.badge.channel-sms{background:var(--status-counting-bg);color:var(--status-counting);border:1px solid var(--status-counting-border)}.badge.channel-relay{color:#6a3fb5;background:#f3eefc;border:1px solid #ddcdf2}.badge.confirmed{background:var(--status-declared-bg);color:var(--status-declared);border:1px solid var(--status-declared-border)}.badge.awaiting{background:var(--status-counting-bg);color:var(--status-counting);border:1px solid var(--status-counting-border)}.badge.disputed{color:var(--red);background:#fdeceb;border:1px solid #f6c3bf}.reconcile{border-radius:6px;margin:8px 0;padding:8px 12px;font-size:13px;font-weight:600}.reconcile.match{background:var(--status-declared-bg);color:var(--status-declared);border:1px solid var(--status-declared-border)}.reconcile.mismatch{color:var(--red);background:#fdeceb;border:1px solid #f6c3bf}.sms-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:12px;padding:14px 16px}.sms-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.sms-body{border:1px solid var(--border);white-space:pre-wrap;word-break:break-word;background:#f7f6f3;border-radius:6px;padding:10px 12px;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:13px;line-height:1.5}.sms-meta{color:var(--text-muted);margin-top:6px;font-size:12px}.sms-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.sms-actions input{border:1px solid var(--border);border-radius:6px;width:90px;padding:7px 8px;font-size:14px}.simulator-note{color:var(--text-muted);background:var(--status-pending-bg);border:1px dashed var(--border);border-radius:6px;margin-bottom:14px;padding:10px 12px;font-size:12.5px}.pending-item{border:1px solid var(--border);background:var(--surface);border-radius:8px;margin-bottom:12px;padding:14px 16px}.pending-item .p-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.pending-item .p-title{font-weight:700}.pending-item .p-meta{color:var(--text-muted);font-size:12px}.pending-item .p-lines{margin:8px 0;font-size:13.5px}.pending-item .p-line{justify-content:space-between;padding:3px 0;display:flex}.pending-item .p-actions{gap:8px;margin-top:10px;display:flex}.pending-item img.evidence{border:1px solid var(--border);border-radius:6px;max-width:160px;margin-top:8px}.login-shell{max-width:360px;margin:90px auto}.login-shell h1{text-align:center;font-size:20px}.login-shell .demo-creds{color:var(--text-muted);text-align:center;margin-top:14px;font-size:12px;line-height:1.6}.empty-state{text-align:center;color:var(--text-muted);padding:30px 0;font-size:14px}.photo-prepared{color:var(--status-declared);background:var(--status-declared-bg);border:1px solid var(--status-declared-border);border-radius:6px;margin-top:8px;padding:8px 10px;font-size:12.5px}.filter-row{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.filter-chip{background:var(--surface);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:999px;padding:6px 12px;font-family:inherit;font-size:12.5px}.filter-chip:hover{border-color:var(--pngec-green)}.filter-chip.active{background:var(--pngec-green);border-color:var(--pngec-green);color:#fff;font-weight:700}.table-wrap{border:1px solid var(--border);background:var(--surface);border-radius:8px;overflow-x:auto}table.register-table{border-collapse:collapse;width:100%;font-size:13.5px}table.register-table th{background:var(--pngec-green);color:#fff;text-align:left;text-transform:uppercase;letter-spacing:.04em;padding:10px 12px;font-size:11.5px;position:sticky;top:0}table.register-table td{border-bottom:1px solid var(--border);vertical-align:top;padding:10px 12px}table.register-table td.num{text-align:right;white-space:nowrap}table.register-table .note{color:var(--text-muted);font-size:12px}table.register-table .never{color:var(--status-counting);font-weight:700}tr.silent-row td{background:#fdf3e7}tr.silent-row td:first-child{box-shadow:inset 3px 0 0 var(--status-counting)}.step-label{text-transform:uppercase;letter-spacing:.05em;color:var(--pngec-green);margin-bottom:10px;font-size:11.5px;font-weight:700}.sub-title{color:var(--pngec-green-dark);margin:16px 0 8px;font-size:14px}.success-banner{background:var(--status-declared-bg);color:var(--status-declared);border:1px solid var(--status-declared-border);border-radius:8px;margin-bottom:14px;padding:10px 14px;font-size:13.5px;font-weight:600}.scanner{margin-top:4px}.scanner-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.scanner-viewport{aspect-ratio:4/3;background:#111;border-radius:8px;max-height:360px;margin-bottom:8px;position:relative;overflow:hidden}.scanner-viewport video{object-fit:cover;width:100%;height:100%;display:block}.scanner-reticle{border:3px solid var(--pngec-mint);pointer-events:none;border-radius:10px;position:absolute;inset:18% 22%;box-shadow:0 0 0 9999px #00000059}.scanner-typed{gap:8px;display:flex}.scanner-typed input{border:1px solid var(--border);text-transform:uppercase;border-radius:6px;flex:1;padding:9px 10px;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:15px}.box-card{border:1px solid var(--border);border-left:4px solid var(--pngec-green);background:var(--surface);border-radius:8px;margin-bottom:12px;padding:12px 14px}.box-serial{letter-spacing:.04em;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:20px;font-weight:800;display:flex}.box-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px 16px;font-size:13.5px;display:grid}.box-grid .k{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;display:block}.box-flags{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.box-strip{background:var(--status-pending-bg);border:1px solid var(--border);border-radius:6px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;padding:8px 12px;font-size:13.5px;display:flex}.status-pill{white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-block}.status-pill.s-pending{background:var(--status-pending-bg);color:var(--status-pending);border:1px solid var(--border)}.status-pill.s-active{color:#3648c9;background:#eef2ff;border:1px solid #ccd4f7}.status-pill.s-warn{background:var(--status-counting-bg);color:var(--status-counting);border:1px solid var(--status-counting-border)}.status-pill.s-bad{color:var(--red);background:#fdeceb;border:1px solid #f6c3bf}.status-pill.s-done{background:var(--status-declared-bg);color:var(--status-declared);border:1px solid var(--status-declared-border)}.custody{border-left:2px solid var(--border);margin:0 0 8px;padding:0;list-style:none}.custody li{flex-wrap:wrap;gap:10px;padding:4px 0 4px 14px;font-size:13px;display:flex;position:relative}.custody li:before{content:"";background:var(--pngec-green);border-radius:50%;width:10px;height:10px;position:absolute;top:10px;left:-6px}.custody li.bad:before{background:var(--red)}.custody .when{color:var(--text-muted);min-width:150px}.custody .what{text-transform:capitalize;font-weight:700}.custody .who{color:var(--text-muted)}.custody .detail{color:var(--text);flex-basis:100%;padding-left:160px;font-size:12.5px}@media (width<=640px){.custody .detail{padding-left:0}}.action-form{border-top:1px dashed var(--border);margin-top:8px;padding-top:8px}.action-form textarea{border:1px solid var(--border);border-radius:6px;width:100%;padding:8px 10px;font-family:inherit;font-size:14px}tr.row-selected td{background:var(--pngec-mint-soft)}.report.ok{border-left:4px solid var(--status-declared)}.report.bad{border-left:4px solid var(--red)}.report-stats{color:var(--text-muted);flex-wrap:wrap;gap:16px;font-size:13px;display:flex}table.recon td.num,table.recon th.num{text-align:right}.label-sheet{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;display:grid}.label{border:1px dashed var(--border);break-inside:avoid;background:#fff;border-radius:4px;align-items:center;gap:8px;padding:6px;display:flex}.label img{flex:none;width:92px;height:92px}.label-text{min-width:0;font-size:9.5px;line-height:1.25}.label-serial{letter-spacing:.04em;margin-bottom:2px;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:13px;font-weight:800}.label-line{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.label-foot{color:var(--pngec-green);letter-spacing:.04em;margin-top:3px;font-size:7px;font-weight:700}@media print{.no-print,.demo-banner,header.portal-header{display:none!important}main.container{max-width:none;padding:0}.label-sheet{grid-template-columns:repeat(3,63.5mm);gap:0 2.5mm}.label{box-sizing:border-box;border:none;width:63.5mm;height:38.1mm;padding:2mm}.label img{width:30mm;height:30mm}}table.recon td:first-child,table.recon th:first-child{min-width:200px}table.register-table td:nth-child(2){min-width:180px}.seat-choice{margin:6px 0 12px}.seat-option{border:1px solid var(--border);cursor:pointer;border-radius:6px;align-items:flex-start;gap:10px;margin-bottom:6px;padding:8px 10px;font-size:13.5px;font-weight:400;display:flex}.seat-option input{margin-top:3px}.seat-option.selected{border-color:var(--pngec-green);background:var(--pngec-mint-soft)}.seat-option.blocked{opacity:.7;cursor:not-allowed}.tabs{flex-wrap:wrap;gap:6px;margin:4px 0 14px;display:flex}.tabs button{background:var(--surface);border:1px solid var(--border);cursor:pointer;color:var(--text-muted);border-radius:999px;padding:6px 14px;font-size:13px}.tabs button.active{background:var(--pngec-green);border-color:var(--pngec-green);color:#fff;font-weight:600}.review-notice{color:var(--red);background:#fdeceb;border:1px solid #f6c3bf;border-radius:6px;margin:8px 0;padding:8px 12px;font-size:13px}.review-banner{color:var(--status-counting);background:#fdf3e7;border:1px solid #f0d5ab;border-radius:6px;margin-bottom:12px;padding:10px 14px;font-weight:600}.pending-item.item-warn{border-color:#f6c3bf}.card.card-ok{border-color:var(--status-declared-border);background:var(--status-declared-bg)}.card.card-warn{background:#fff7f6;border-color:#f6c3bf}.history{border-left:3px solid var(--border);margin:8px 0;padding-left:10px;font-size:12.5px}.history-row{grid-template-columns:150px 220px 1fr;gap:10px;padding:3px 0;display:grid}.history-row.check-ok .history-text{color:var(--status-declared)}.history-row.check-mismatch .history-text{color:var(--red)}.history-row.amend .history-text{color:var(--status-counting)}.history-when{color:var(--text-muted);white-space:nowrap}.history-who{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=720px){.history-row{grid-template-columns:1fr;gap:2px}}.check-form{border-top:1px dashed var(--border);width:100%;margin-top:6px;padding-top:10px}.field-group.inline{grid-template-columns:minmax(160px,1fr) 140px;align-items:center;gap:10px;margin-bottom:6px;display:grid}.field-group.inline label{margin:0}.checksum{border-radius:6px;margin:8px 0;padding:6px 10px;font-size:13px;font-weight:600}.checksum.ok{background:var(--status-declared-bg);color:var(--status-declared)}.checksum.bad{color:var(--red);background:#fdeceb}.policy-options{gap:10px;display:grid}.policy-option{border:1px solid var(--border);cursor:pointer;background:var(--surface);border-radius:8px;grid-template-columns:20px 1fr;align-items:start;gap:10px;padding:10px 12px;display:grid}.policy-option.selected{border-color:var(--pngec-green);background:var(--pngec-mint-soft)}.policy-option input{margin-top:3px}.policy-option .note{margin-top:4px}.section-title{color:var(--pngec-green-dark);margin:18px 0 8px;font-size:15px}table.data-table{border-collapse:collapse;width:100%;font-size:13px}table.data-table th,table.data-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:8px 10px}table.data-table th{background:var(--pngec-mint-soft);color:var(--pngec-green-dark);text-transform:uppercase;letter-spacing:.03em;font-size:12px}
