:root{--navy:#152238;--navy-2:#1f3050;--pop:#ff5c26;--pop-deep:#e04a18;--pop-tint:#ffe8dd;--teal:#0e9384;--good:#1d9e5f;--bad:#b3261e;--ink:#152238;--muted:#5d6b82;--line:#eee7e1;--bg:#fff6f0;--card:#fff;--font:ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--ui-blue:#1670c8;--ui-blue-deep:#0f5aa3;--ui-green:#43a047;--ui-bg:#f0f2f4;--ui-chrome:#2b2f36;--ui-line:#d9dee3}*{box-sizing:border-box}body{font-family:var(--font);background:var(--ui-bg);color:var(--ink);margin:0}.app main{max-width:900px;margin:0 auto;padding:20px 16px 80px}h1{margin:.4em 0 .1em;font-size:1.5rem}h2{color:var(--navy);margin:0 0 12px;font-size:1.1rem}h3{color:var(--navy);margin:18px 0 8px;font-size:.95rem}.sub{color:var(--muted);margin:2px 0 12px;font-size:.85rem}.topbar{background:var(--ui-chrome);color:#fff;z-index:10;justify-content:space-between;align-items:center;padding:10px 18px;display:flex;position:sticky;top:0}.topbar-brand{letter-spacing:.5px;font-size:1.15rem;font-weight:800}.topbar-brand span{opacity:.85;font-weight:400}.topbar-tabs button{color:#cdd8ea;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:8px 14px;font-size:.95rem}.topbar-tabs button.on{background:var(--ui-blue);color:#fff;font-weight:600}.card{background:var(--card);border:1px solid var(--ui-line);border-radius:8px;margin:14px 0;padding:18px;box-shadow:0 1px 2px #10264d0d}.job-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.job-info{align-items:center;gap:14px;display:flex}.job-no{background:var(--ui-blue);color:#fff;white-space:nowrap;border-radius:10px;padding:10px 12px;font-size:.9rem;font-weight:700}.job-no.cp12{background:var(--ui-blue-deep)}.job-actions{align-items:center;gap:8px;display:flex}.job-name{color:var(--ui-blue-deep);margin-top:1px;font-size:.85rem;font-weight:600}.btn{cursor:pointer;border:none;border-radius:6px;padding:11px 18px;font-size:.95rem;font-weight:600}.btn.primary{background:var(--ui-blue);color:#fff}.btn.primary:hover{background:var(--ui-blue-deep)}.btn.secondary{color:#2b3a4e;border:1px solid var(--ui-line);background:#e8ecf0}.btn-link{color:var(--ui-blue);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:.9rem}.form-head{margin-bottom:4px}.grid2{grid-template-columns:1fr 1fr;gap:12px 16px;display:grid}@media (width<=640px){.grid2{grid-template-columns:1fr}}.field{flex-direction:column;gap:4px;display:flex}.field-label{color:var(--muted);font-size:.8rem;font-weight:600}.field-hint{color:var(--muted);font-size:.75rem}.input{border:1px solid var(--line);border-radius:8px;width:100%;padding:10px 12px;font-family:inherit;font-size:.95rem}.input:focus{outline:2px solid var(--ui-blue);border-color:#0000}.check-rows{flex-direction:column;display:flex}.check-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:9px 0;font-size:.92rem;display:flex}.check-row:last-child{border-bottom:none}.check-row.important{font-weight:700}.check-row.sub-row{color:var(--muted);border-bottom:1px dashed var(--line);padding-left:18px}.check-row .input{max-width:220px}.segmented{border:1px solid var(--line);border-radius:9px;flex-shrink:0;display:flex;overflow:hidden}.seg{cursor:pointer;color:var(--muted);border:none;border-left:1px solid var(--line);background:#fff;padding:9px 16px;font-size:.88rem}.seg:first-child{border-left:none}.seg.on{color:#fff;background:var(--ui-blue);font-weight:700}.seg.on.good{background:var(--good)}.seg.on.bad{background:var(--bad)}.badge{vertical-align:middle;border-radius:20px;margin-left:8px;padding:3px 8px;font-size:.72rem;font-weight:700}.badge.new{color:#8a6100;background:#fff3d6}.badge.released{color:var(--good);background:#dcf2e4;padding:8px 12px;font-size:.85rem}.error-box{color:var(--bad);background:#fdeceb;border:1px solid #f2b8b5;border-radius:10px;margin:12px 0;padding:12px 16px}.error-box ul{margin:6px 0 0;padding-left:20px}.warn-box{border-left:4px solid var(--bad);color:var(--bad);background:#fdeceb;border-radius:6px;margin:12px 0;padding:10px 14px;font-size:.9rem;font-weight:600}.checkline{align-items:center;gap:8px;margin-top:22px;font-size:.9rem;display:flex}.sig{flex-direction:column;gap:4px;margin:12px 0;display:flex}.sig-canvas{touch-action:none;background:#fbfcfe;border:1px dashed #9fb0c4;border-radius:8px;max-width:100%}.actions{justify-content:flex-end;margin-top:18px;display:flex}.actions .btn{background:var(--ui-green);padding:14px 28px;font-size:1.05rem}.actions .btn:hover{background:#388e3c}.cert-page{max-width:820px;margin:0 auto}.cert-toolbar{justify-content:space-between;margin:10px 0;display:flex}.cert{border:1px solid var(--line);background:#fff;border-radius:4px;padding:34px 38px;font-size:.82rem;line-height:1.45}.cert-head{border-bottom:3px solid var(--navy);justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;padding-bottom:14px;display:flex}.cert-brand{align-items:center;gap:12px;display:flex}.cert-logo-img{object-fit:contain;width:58px;height:62px}.brand-pop{color:var(--pop)}.cert-company{color:var(--navy);font-size:1rem;font-weight:700}.cert-company-sub{color:var(--muted);font-size:.75rem}.cert-title-block{text-align:right}.cert-title-block h1{color:var(--navy);margin:0;font-size:1.15rem}.cert-no{color:var(--pop-deep);margin-top:4px;font-family:ui-monospace,monospace;font-weight:700}.cert-parties{grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:6px;display:grid}.cert-parties h3,.cert-signatures h3{text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:0 0 4px;font-size:.75rem}.cert-parties p{margin:0}.cert-section{text-transform:uppercase;letter-spacing:.6px;color:var(--navy);border-bottom:1px solid var(--line);margin:16px 0 6px;padding-bottom:3px;font-size:.8rem}.cert-table{border-collapse:collapse;width:100%}.cert-table th,.cert-table td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:5px 8px}.cert-table th{color:var(--navy);text-transform:uppercase;letter-spacing:.4px;background:#eef2f7;font-size:.72rem}.cert-bad{color:var(--bad);font-weight:800}.cert-muted{color:var(--muted);font-style:italic}.cert-affirm{margin:6px 0;font-size:.8rem}.cert-banner{border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:0 0 14px;padding:11px 16px;font-size:.95rem;font-weight:700;display:flex}.cert-banner.good{color:var(--good);background:#e6f5ec;border:1px solid #bfe5cf}.cert-banner.bad{color:var(--bad);background:#fdeceb;border:1px solid #f2b8b5}.cert-banner.warn{color:#8a5606;background:#fff3d9;border:1px solid #f2ddab}.class-options{flex-direction:column;gap:10px;display:flex}.class-option{border:1.5px solid var(--line);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.class-option input{margin-top:3px}.class-option .class-desc{color:var(--muted);margin-top:2px;font-size:.82rem;font-weight:400;display:block}.class-option.on.id{border-color:var(--bad);background:#fdeceb}.class-option.on.ar{background:#fff3d9;border-color:#d9930d}.class-option.on.ncs{border-color:var(--navy-2);background:#eef2f7}.job-no.warning{background:var(--bad)}.job-no.install{background:var(--good)}.cert-banner-due{color:var(--ink);background:var(--pop-tint);border-radius:8px;padding:5px 10px;font-size:.8rem;font-weight:400}.cert-foot-help{color:var(--ink);margin-top:6px}.cert-signatures{grid-template-columns:1fr 1fr;gap:20px;margin-top:20px;display:grid}.cert-signatures img{height:55px;display:block}.cert-signatures p{border-top:1px solid var(--ink);margin:2px 0 0;padding-top:4px}.cert-foot{border-top:1px solid var(--line);color:var(--muted);margin-top:20px;padding-top:10px;font-size:.7rem}@media (width<=640px){.cert{padding:20px 14px}.cert-head{flex-direction:column}.cert-title-block{text-align:left}.cert-parties,.cert-signatures{grid-template-columns:1fr}.cert-table{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}}@media print{.no-print{display:none!important}body{background:#fff}.app main{max-width:none;padding:0}.cert{border:none;padding:0;font-size:9pt}@page{size:A4;margin:14mm}}.src-badge{letter-spacing:.8px;vertical-align:middle;color:#cdd8ea;background:#3a4a68;border-radius:6px;margin-left:10px;padding:3px 7px;font-size:.62rem;font-weight:800}.src-badge.live{background:var(--good);color:#fff}.login-page{background:var(--ui-bg);place-items:center;min-height:100dvh;padding:20px;display:grid}.login-card{text-align:center;width:100%;max-width:360px;padding:30px 26px}.login-logo{object-fit:contain;width:64px;height:68px}.login-card h1{margin:10px 0 0;font-size:1.3rem}.pin-input{letter-spacing:.5rem;text-align:center;margin:10px 0 6px;padding:12px;font-family:ui-monospace,monospace;font-size:1.9rem}.login-error{color:var(--bad);margin:4px 0 8px;font-size:.88rem;font-weight:600}.login-card .btn{width:100%;padding:14px;font-size:1rem}.login-card .field-hint{margin-top:12px;display:block}.list-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.topbar-tabs .signout{color:#9fb0c4;border-left:1px solid #47505d;border-radius:0;margin-left:6px;font-size:.82rem}.topbar-tabs .signout:hover{color:#fff}.history{padding:0;overflow:hidden}.history-head{text-align:left;cursor:pointer;width:100%;font:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.history-toggle{color:var(--ui-blue);white-space:nowrap;font-size:.85rem;font-weight:600}.history-list{border-top:1px solid var(--ui-line)}.history-item{border-bottom:1px solid var(--line);padding:12px 18px}.history-item:last-child{border-bottom:none}.history-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.history-note{margin-top:4px;font-size:.87rem}.history-note em{color:var(--muted);font-style:normal;font-weight:600}.history-flag{margin-top:4px;font-size:.85rem;font-weight:700}.history-flag.bad{color:var(--bad)}
