:root{--ink:#14181d;--ink-2:#1b2129;--panel:#222b35;--panel-2:#2a3540;--chrome-line:rgba(255,255,255,.09);--chrome-text:#cfd8e2;--chrome-muted:#7f8f9d;--canvas:#eef0ee;--surface:#ffffff;--surface-2:#f7f8f6;--text:#1b2127;--muted:#647281;--line:#dde1e4;--line-2:#e9ebee;--primary:#155fa8;--primary-d:#114e8c;--primary-soft:#e7f0fa;--amber:#e88f15;--amber-soft:#fdf0dd;--pass:#1f9457;--pass-soft:#e3f4ea;--fail:#cf3338;--fail-soft:#fbe6e7;--na:#7c8a97;--na-soft:#eef1f3;--pend:#b9772a;--catA:#cf3338;--catB:#e88f15;--catC:#3f7fc7;--mono:ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;--sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--r:8px;--shadow:0 1px 2px rgba(20,24,29,.06),0 4px 14px rgba(20,24,29,.05);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--shadow-sm:0 1px 2px rgba(20,24,29,.06);--shadow-md:0 1px 2px rgba(20,24,29,.06),0 4px 14px rgba(20,24,29,.05);--shadow-lg:0 18px 50px rgba(20,24,29,.18);--font-xs:11px;--font-sm:12px;--font-md:14px;--font-lg:18px;--font-xl:24px;--border:var(--line);--card-bg:var(--surface);--page-bg:var(--canvas);--status-info:#155fa8;--status-info-soft:#e7f0fa;--status-warn:#e88f15;--status-warn-soft:#fdf0dd;--status-danger:#cf3338;--status-danger-soft:#fbe6e7;--status-success:#1f9457;--status-success-soft:#e3f4ea;--status-muted:#7c8a97;--status-muted-soft:#eef1f3}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;max-width:100%;overflow-x:hidden}body{font-family:var(--sans);color:var(--text);background:var(--canvas);font-size:14px;line-height:1.45;-webkit-text-size-adjust:100%;min-height:100vh;overflow-wrap:break-word}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}img,svg,canvas,video{max-width:100%}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-thumb{background:#c3c9cf;border-radius:8px;border:3px solid var(--canvas)}.app{display:block;max-width:100vw;overflow-x:hidden}.side{position:fixed;top:0;left:0;bottom:0;width:236px;z-index:40;background:var(--ink);color:var(--chrome-text);display:flex;flex-direction:column;border-right:1px solid #000}.brand{padding:18px 18px 14px;border-bottom:1px solid var(--chrome-line)}.brand .logo{display:flex;align-items:center;gap:10px}.brand-logo{width:86px;min-width:86px;max-width:180px;display:flex;align-items:center;justify-content:center}.brand-logo img{display:block;max-width:86px;max-height:36px;width:auto;height:auto;object-fit:contain}.brand .mark{width:30px;height:30px;border-radius:7px;background:linear-gradient(150deg,var(--amber),#c5710b);display:grid;place-items:center;color:#1a1206;font-weight:800;font-family:var(--mono);font-size:15px;box-shadow:inset 0 0 0 1px #ffffff26}.brand h1{font-size:15px;margin:0;letter-spacing:.2px;font-weight:700}.brand .sub{font-size:11px;color:var(--chrome-muted);margin-top:1px}.proj{padding:11px 14px;border-bottom:1px solid var(--chrome-line);font-size:12px}.proj[data-action]{cursor:pointer}.proj[data-action]:hover{background:var(--ink-2)}.proj .pname{font-weight:600;color:#fff;font-size:13px;display:flex;justify-content:space-between;align-items:center;gap:6px}.proj .pmeta{color:var(--chrome-muted);font-family:var(--mono);font-size:11px;margin-top:3px}nav{padding:8px;overflow-y:auto;flex:1}.navsec{font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--chrome-muted);padding:12px 10px 5px}.navlink{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;color:var(--chrome-text);padding:9px 10px;border-radius:7px;margin:1px 0;font-size:13.5px;min-width:0}.navlink:hover{background:var(--ink-2)}.navlink.on{background:var(--panel);color:#fff;box-shadow:inset 2px 0 0 var(--amber)}.navlink .ico{width:17px;height:17px;flex:none;opacity:.9}.navlink .badge{margin-left:auto;background:var(--panel-2);color:var(--chrome-text);font-size:10.5px;padding:1px 6px;border-radius:20px;font-family:var(--mono);max-width:44px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none}.navlink.on .badge{background:var(--ink)}.navlink .badge.alert{background:var(--fail);color:#fff}.owner-tools{margin-top:12px;border-top:1px solid var(--chrome-line);padding-top:8px}.owner-tools summary{cursor:pointer;color:var(--chrome-muted);font-size:10px;letter-spacing:.13em;text-transform:uppercase;padding:8px 10px;list-style:none}.owner-tools summary::-webkit-details-marker{display:none}.owner-tools summary:hover{color:var(--chrome-text)}.side-foot{padding:10px 12px;border-top:1px solid var(--chrome-line);font-size:11px;color:var(--chrome-muted)}.storebar{height:5px;background:var(--ink-2);border-radius:4px;margin-top:6px;overflow:hidden}.storebar>i{display:block;height:100%;background:var(--amber)}main{margin-left:236px;min-height:100vh;position:relative;min-width:0;max-width:100%;overflow-x:hidden}.topbar{position:sticky;top:0;z-index:20;background:#eef0eedb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:13px 26px;display:flex;align-items:center;gap:14px;min-width:0}.topbar h2{margin:0;font-size:18px;font-weight:700;letter-spacing:-.01em}.topbar .crumb{font-size:12px;color:var(--muted);font-family:var(--mono)}.topbar .sp{flex:1}.wrap{padding:22px 26px 60px;max-width:1320px;min-width:0;overflow-x:hidden}#view{min-width:0;max-width:100%}.cb,.ch{min-width:0;max-width:100%;overflow-wrap:break-word}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--surface);border:1px solid var(--line);color:var(--text);padding:7px 13px;border-radius:7px;font-size:13px;font-weight:500;transition:.12s;white-space:normal;max-width:100%;line-height:1.25}.btn:hover{border-color:#c4cbd2;background:var(--surface-2)}.btn.pri{background:var(--primary);border-color:var(--primary);color:#fff}.btn.pri:hover{background:var(--primary-d)}.btn.amber{background:var(--amber);border-color:var(--amber);color:#241404}.btn.amber:hover{filter:brightness(.96)}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover{background:#0000000d}.btn.sm{padding:4px 9px;font-size:12px;border-radius:6px;white-space:nowrap}.btn.danger{color:var(--fail);border-color:var(--line)}.btn.danger:hover{background:var(--fail-soft);border-color:var(--fail)}.btn .ico{width:15px;height:15px}.ico{display:inline-flex;align-items:center;justify-content:center;flex:none;vertical-align:middle}.ico svg{width:100%;height:100%;display:block}svg{vertical-align:middle}.grid{display:grid;gap:16px;min-width:0;max-width:100%}.grid>*{min-width:0;max-width:100%}.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.page-grid,.dashboard-grid,.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:var(--space-4);min-width:0;max-width:100%}.register-layout,.detail-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);min-width:0;max-width:100%}.entity-card,.certificate-card,.blocker-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);min-width:0;max-width:100%;overflow:hidden}.action-row,.chip-row{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;min-width:0;max-width:100%}.meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:10px;min-width:0;max-width:100%}.certificate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px;min-width:0;max-width:100%}.page-intro{color:var(--muted);font-size:13px;line-height:1.45;max-width:980px;margin:0 0 var(--space-4)}.metric-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:var(--space-4);min-width:0;max-width:100%;overflow:hidden}.card-header{display:flex;align-items:flex-start;gap:var(--space-3);justify-content:space-between;min-width:0;max-width:100%}.section-title{margin:0 0 var(--space-3);font-size:15px;font-weight:700;line-height:1.3}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);min-width:0;max-width:100%;overflow:hidden}.card .ch{padding:13px 16px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;gap:10px;min-width:0;max-width:100%}.card .ch h3{margin:0;font-size:14px;font-weight:650}.card .cb{padding:16px;min-width:0;max-width:100%}.stat{padding:16px}.stat .k{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}.stat .v{font-size:30px;font-weight:750;letter-spacing:-.02em;margin-top:3px;font-variant-numeric:tabular-nums}.stat .x{font-size:12px;color:var(--muted);margin-top:2px}.stat .v small{font-size:15px;color:var(--muted);font-weight:600}.bar{height:8px;background:var(--line-2);border-radius:6px;overflow:hidden;display:flex}.bar>span{display:block;height:100%}.bar.thin{height:5px}.pct{font-family:var(--mono);font-variant-numeric:tabular-nums}table{width:100%;border-collapse:collapse}th{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);text-align:left;font-weight:600;padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:9px 12px;border-bottom:1px solid var(--line-2);vertical-align:middle;overflow-wrap:break-word}tr:last-child td{border-bottom:0}tbody tr{transition:.1s}tbody tr.click{cursor:pointer}tbody tr.click:hover{background:var(--surface-2)}.tag{font-family:var(--mono);font-weight:600;font-size:12.5px;letter-spacing:.02em;overflow-wrap:anywhere}.table-scroll{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{width:max-content;min-width:100%}.action-wrap,#vActions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}body.debug-hitboxes *{outline:1px solid rgba(255,0,0,.15)}.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:600;white-space:nowrap;max-width:100%;line-height:1.25}.pill .dot{width:7px;height:7px;border-radius:50%}.pill.pass{background:var(--pass-soft);color:#136b3e}.pill.fail{background:var(--fail-soft);color:#a4262b}.pill.na{background:var(--na-soft);color:#566570}.pill.pend,.pill.warn{background:var(--amber-soft);color:#8a5712}.pill.open{background:var(--fail-soft);color:#a4262b}.pill.prog{background:var(--amber-soft);color:#8a5712}.pill.closed{background:var(--na-soft);color:#566570}.pill.verif{background:var(--pass-soft);color:#136b3e}.pill.todo{background:var(--na-soft);color:#566570}.pill.doing{background:#e7f0fa;color:#0f4d8a}.pill.done{background:var(--pass-soft);color:#136b3e}.cat{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;font-weight:800;font-size:12px;color:#fff;font-family:var(--mono)}.cat.A{background:var(--catA)}.cat.B{background:var(--catB)}.cat.C{background:var(--catC)}.muted{color:var(--muted)}.small{font-size:12px}.row{display:flex;align-items:center;gap:10px}.right{margin-left:auto}.empty{text-align:center;padding:40px 20px;color:var(--muted)}.empty .ico{width:34px;height:34px;opacity:.4;margin-bottom:8px}label.fl{display:block;font-size:12px;font-weight:600;color:var(--muted);margin:0 0 5px}.inp,textarea.inp{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:7px;padding:8px 10px;font-size:13.5px;color:var(--text)}select,.inp:is(select),select.inp{width:100%;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-color:var(--surface);border:1px solid var(--line);border-radius:7px;padding:8px 34px 8px 10px;font-size:13.5px;color:var(--text);line-height:1.35;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}select:hover,.inp:hover,textarea.inp:hover{border-color:#c4cbd2}.inp:focus,textarea.inp:focus,select:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}select:disabled{color:var(--chrome-muted);background-color:var(--surface-2);cursor:not-allowed;opacity:1}textarea.inp{resize:vertical;min-height:64px}.field{margin-bottom:13px}.ff{display:grid;gap:13px;grid-template-columns:1fr 1fr}.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:2px;gap:2px}.seg button{background:none;border:0;padding:6px 12px;border-radius:6px;font-size:12.5px;font-weight:600;color:var(--muted)}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.checkgrid{display:flex;gap:8px;flex-wrap:wrap}.checkcard{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 11px;font-size:12.5px;font-weight:650;color:var(--text);cursor:pointer;transition:.12s;text-align:left}.checkcard:hover{border-color:#c4cbd2;background:var(--surface-2)}.checkcard.disabled{opacity:.58;cursor:not-allowed}.checkcard input[type=checkbox]{width:16px;height:16px;margin:0;flex:none;cursor:pointer;accent-color:var(--primary)}.checkcard input[type=checkbox]+.box{display:none}.checkcard.on{background:var(--primary-soft);border-color:var(--primary);color:#0f4d8a}.checkcard:has(input[type=checkbox]:checked){background:var(--primary-soft);border-color:var(--primary);color:#0f4d8a}.checkcard .box{width:16px;height:16px;border:1px solid var(--line);border-radius:4px;background:#fff;display:inline-grid;place-items:center;flex:none}.checkcard.on .box{background:var(--primary);border-color:var(--primary)}.checkcard.on .box:after{content:"";width:8px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg);margin-top:-2px}.checkcard .tag{font-size:12px}.checkcard .subtxt{font-size:12px;color:var(--muted);font-weight:500}.checkcard.on .subtxt{color:#42698d}.csvhint{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:12px}.csvresult{margin-top:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);padding:10px 12px}.csvresult ul{margin:7px 0 0;padding-left:18px;font-size:12px;line-height:1.45}#modalRoot:empty{pointer-events:none}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#10141980;z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;pointer-events:auto}.modal{position:relative;z-index:101;background:var(--surface);border-radius:12px;width:100%;max-width:560px;max-height:calc(100vh - 48px);box-shadow:0 20px 60px #0000004d;animation:pop .14s ease-out;pointer-events:auto;display:flex;flex-direction:column;overflow:hidden}.modal.wide{max-width:860px}@keyframes pop{0%{transform:translateY(8px) scale(.99);opacity:0}to{transform:none;opacity:1}}.modal .mh{padding:16px 20px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;gap:10px;flex:none}.modal .mh h3{margin:0;font-size:16px}.modal .mb{padding:20px;overflow-y:auto;min-height:0}.modal .mf{padding:14px 20px;border-top:1px solid var(--line-2);display:flex;gap:9px;justify-content:flex-end;flex-wrap:wrap;background:var(--surface-2);border-radius:0 0 12px 12px;flex:none}.x{margin-left:auto;background:none;border:0;color:var(--muted);font-size:22px;line-height:1;padding:0 4px}.x:hover{color:var(--text)}.eqhead{display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap}.eqhead .tagbox{font-family:var(--mono);font-weight:700;font-size:21px;letter-spacing:.02em}.stagebar{display:flex;gap:8px;margin:18px 0 6px;flex-wrap:wrap}.stagetab{flex:1;min-width:150px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:11px 13px;transition:.12s}.stagetab:hover{border-color:#bcc4cc}.stagetab.on{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.stagetab .sn{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700}.stagetab .st{font-size:14px;font-weight:650;margin:2px 0 7px}.stagetab .sp2{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:4px}.citem{border:1px solid var(--line-2);border-radius:9px;padding:12px 14px;margin-bottom:10px;background:var(--surface)}.citem.f-fail{border-color:#f0c5c7;background:#fef8f8}.citem.f-pass{background:#fbfdfb}.citem .top{display:flex;gap:12px;align-items:flex-start}.citem .txt{flex:1;font-size:13.5px;font-weight:500;padding-top:2px}.stbtns{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden;flex:none}.stbtns button{background:var(--surface);border:0;padding:6px 11px;font-size:12px;font-weight:700;color:var(--muted);border-right:1px solid var(--line)}.stbtns button:last-child{border-right:0}.stbtns button.on.pass{background:var(--pass);color:#fff}.stbtns button.on.fail{background:var(--fail);color:#fff}.stbtns button.on.na{background:var(--na);color:#fff}.citem .meta{display:flex;gap:10px;align-items:center;margin-top:10px;flex-wrap:wrap}.citem .meta select{max-width:170px}.citem textarea{min-height:34px;margin-top:9px;font-size:13px}.thumbs{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}.thumb{width:54px;height:54px;border-radius:7px;object-fit:cover;border:1px solid var(--line);cursor:zoom-in}.addphoto{width:54px;height:54px;border-radius:7px;border:1px dashed #c2c9d0;background:var(--surface-2);display:grid;place-items:center;color:var(--muted)}.addphoto:hover{border-color:var(--primary);color:var(--primary)}.matrix{overflow-x:auto}.matrix table{min-width:560px}.mcell{width:64px;text-align:center;padding:6px}.mbox{display:inline-flex;flex-direction:column;align-items:center;gap:3px}.mbox .ring{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;font-size:11px;font-weight:700;font-family:var(--mono);color:#fff}.filters{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.filters .inp,.filters select{width:auto;min-width:150px}.filters select.wide{min-width:210px}.execution-list{display:grid;gap:12px}.execution-item{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:14px;min-width:0}.execution-item-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;min-width:0}.execution-item-title{font-weight:700;min-width:0;overflow-wrap:anywhere;line-height:1.35}.execution-item-desc{color:var(--muted);margin-top:6px;line-height:1.4;overflow-wrap:anywhere}.execution-item-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;min-width:0}.execution-item-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.execution-item .row{min-width:0}.execution-item .pill{max-width:100%;overflow-wrap:anywhere}.search{flex:1;min-width:200px;max-width:340px}.actas{display:inline-flex;align-items:center;gap:7px}.actas select{padding-top:5px;padding-bottom:5px;font-size:12.5px;max-width:170px}.authgate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:radial-gradient(120% 120% at 50% 0%,#202b36,#11151a);display:flex;align-items:center;justify-content:center;padding:20px}.authcard{width:100%;max-width:440px;background:var(--surface);border-radius:14px;box-shadow:0 24px 70px #00000073;overflow:hidden}.authcard .ah{padding:20px 22px;border-bottom:1px solid var(--line-2)}.auth-logo{width:132px;max-width:180px;height:auto;display:block;object-fit:contain}.authcard .mark{width:34px;height:34px;border-radius:8px;background:linear-gradient(150deg,var(--amber),#c5710b);display:grid;place-items:center;color:#1a1206;font-weight:800;font-family:var(--mono);font-size:17px}.demo-note{background:var(--amber-soft);color:#8a5712;font-size:12px;padding:8px 11px;border-radius:8px;margin-top:12px;line-height:1.4}.loginlist{padding:9px;max-height:60vh;overflow-y:auto}.loginrow{display:flex;align-items:center;gap:12px;padding:10px 11px;border-radius:9px;cursor:pointer;border:1px solid transparent}.loginrow:hover{background:var(--surface-2);border-color:var(--line)}.rolebadge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:20px;white-space:nowrap}.rolebadge.lead{background:var(--primary-soft);color:#0f4d8a}.rolebadge.project_admin{background:#e0f2fe;color:#075985}.rolebadge.commissioning_lead{background:var(--primary-soft);color:#0f4d8a}.rolebadge.discipline_lead{background:#eef2ff;color:#3730a3}.rolebadge.client_approver{background:#ecfdf3;color:#067647}.rolebadge.technician,.rolebadge.member{background:var(--amber-soft);color:#8a5712}.rolebadge.viewer{background:var(--na-soft);color:#566570}.userchip{display:inline-flex;align-items:center;gap:9px}.userchip .uc-meta{display:flex;flex-direction:column;line-height:1.15}.userchip .uc-name{font-size:12.5px;font-weight:600}.stbtns button:disabled{opacity:.38;cursor:not-allowed}.ro-tag{font-size:11px;color:var(--muted);font-style:italic}.certladder{display:inline-flex;align-items:center}.certchip{display:inline-grid;place-items:center;min-width:44px;height:24px;padding:0 8px;border-radius:6px;font-family:var(--mono);font-size:11px;font-weight:700;color:#fff}.certchip.lock{background:#cfd5da;color:#6b7780}.certchip.rdy{background:var(--amber);color:#241404}.certchip.iss{background:var(--pass)}.certchip.imp{background:var(--fail)}.cstep{width:12px;height:2px;background:var(--line)}.certrow{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line-2);border-radius:10px;margin-bottom:10px}.certrow.compact{padding:8px 10px;margin-bottom:7px}.certrow .cinfo{flex:1;min-width:0}.breadcrumb{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 12px;color:var(--muted);font-size:12px}.crumb-link{border:0;background:transparent;color:var(--primary);font:inherit;font-weight:700;padding:0;cursor:pointer}.crumb-link:hover{text-decoration:underline}.crumb-sep{color:var(--muted-2)}.returnbar{margin:0 0 12px;display:flex;justify-content:flex-start}.highlight-target{outline:2px solid var(--primary)!important;background:#1463b914!important;scroll-margin-top:100px}.blocker-list{display:grid;gap:7px}.blocker-row{display:flex;align-items:flex-start;gap:8px;border:1px solid var(--line-2);border-radius:8px;background:var(--surface-2);padding:8px;min-width:0;max-width:100%;flex-wrap:wrap}.blocker-row.critical{border-color:#f0c5c7;background:var(--fail-soft)}.blocker-row.warning{border-color:#f5d6a2;background:var(--amber-soft)}.blocker-badge{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;border-radius:999px;background:#fff;color:var(--muted);border:1px solid var(--line);padding:2px 7px;white-space:nowrap}.blocker-main{flex:1;min-width:0}.blocker-title{font-size:12.5px;font-weight:700;line-height:1.35;overflow-wrap:anywhere;color:var(--text)}.blocker-meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:3px;color:var(--muted);font-size:11.5px}.blocker-row .btn{align-self:center;flex:none;white-space:normal}.blocker-card{padding:10px 11px;line-height:1.4;overflow-wrap:break-word}.blocker-card.mini{font-size:12.5px;background:var(--surface);box-shadow:none}.drawer-section{border-top:1px solid var(--line-2);padding-top:12px;margin-top:12px}.drawer-section h4{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.revtag{font-family:var(--mono);font-size:10px;font-weight:700;background:var(--primary-soft);color:#0f4d8a;padding:1px 6px;border-radius:5px}.impbadge{margin-top:6px;display:inline-flex;align-items:center;gap:6px;background:var(--fail-soft);color:#a4262b;font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:7px}.citem.f-imp{border-color:#f0c5c7;background:#fff7f7}.aibox{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:11px 12px;font-size:12.5px;line-height:1.5;margin-bottom:12px}.banner-warn{background:var(--amber-soft);color:#8a5712;border:1px solid #f5d6a2;border-radius:9px;padding:11px 14px;font-size:13px;margin-bottom:16px}.banner-danger,.banner-critical{background:var(--fail-soft);color:#a4262b;border:1px solid #f0c5c7;border-radius:9px;padding:11px 14px;font-size:13px;margin-bottom:16px}.auth-wrap{min-height:calc(100vh - 140px);display:grid;place-items:center;padding:32px;max-width:100%}.auth-card{width:min(100%,420px);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:24px}.auth-card h1{margin:10px 0 6px;font-size:24px;line-height:1.2}.auth-card .form-grid{display:grid;gap:12px;margin-top:18px}.auth-card label,.form-grid label{font-size:12px;font-weight:650;color:var(--muted)}.auth-card input{width:100%;border:1px solid var(--line);border-radius:7px;padding:9px 10px;background:#fff;color:var(--text);font-size:14px}.auth-card .auth-logo{display:flex;align-items:center;min-height:42px}.auth-card .auth-logo img{max-width:180px;max-height:46px;object-fit:contain}.project-picker{display:grid;gap:10px;margin-top:14px}.project-choice{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:2px;padding:12px 14px}.auth-status{min-height:22px;margin:12px 0 0;font-size:13px;color:var(--muted)}.auth-status.error{background:var(--fail-soft);color:#a4262b;border:1px solid #f0c5c7;border-radius:9px;padding:10px 12px}.auth-status.success{background:var(--pass-soft);color:#146c3e;border:1px solid #b9e4c8;border-radius:9px;padding:10px 12px}.auth-link-button{margin-top:12px}.banner-amber{background:var(--amber-soft);color:#8a5712;border:1px solid #f5d6a2;border-radius:9px;padding:11px 14px;font-size:13px;margin-bottom:16px}.banner-ok{background:var(--pass-soft);color:#107c41;border:1px solid #b7dfc7;border-radius:9px;padding:11px 14px;font-size:13px;margin-bottom:16px}.golden-path-panel{border-color:#f0c36a;background:linear-gradient(180deg,#fffaf0 0%,var(--card) 78%)}.golden-path-panel .card{border-radius:10px}.wp-hero .cb{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start}.wp-hero-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.wp-hero-title h2{margin:6px 0 4px;font-size:24px;letter-spacing:0}.wp-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}.wp-meta div{min-width:0;border:1px solid var(--line);border-radius:8px;padding:9px 10px;background:#fff}.wp-meta .k{font-size:11px;text-transform:uppercase;color:var(--muted);font-weight:700}.wp-meta .v{font-size:13px;font-weight:650;margin-top:3px;overflow-wrap:anywhere}.wp-action-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0 16px}.wp-action-group{border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px;min-width:0}.wp-action-group h4{margin:0 0 8px;font-size:12px;text-transform:uppercase;color:var(--muted);letter-spacing:.04em}.wp-action-group .row{gap:6px;flex-wrap:wrap}.wp-action-group .muted{display:block;margin-top:6px}.ta-example{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:14px}body.control-test-mode [data-control-test=button]{outline:2px solid #2563eb!important;outline-offset:2px}body.control-test-mode [data-control-test=select]{outline:2px solid #f59e0b!important;outline-offset:2px}body.control-test-mode [data-control-test=input]{outline:2px solid #16a34a!important;outline-offset:2px}body.control-test-mode [data-control-test=disabled]{outline:2px solid #9ca3af!important;outline-offset:2px}body.control-test-mode [data-control-test=missing],.form-control-broken{outline:3px solid #dc2626!important;outline-offset:2px}.visual-qa-highlight{outline:3px solid #155fa8!important;outline-offset:3px;background:#1463b914!important;box-shadow:0 0 0 6px #1463b91f!important;scroll-margin-top:100px}label.form-control-broken{box-shadow:0 0 0 3px #dc26261f}.control-test-badge{display:inline-flex;align-items:center;margin:2px 4px;padding:1px 5px;border-radius:5px;background:#111827;color:#fff;font-size:10px;line-height:1.25;font-family:var(--mono);vertical-align:middle;pointer-events:none;position:relative;z-index:5}body.control-test-mode [data-control-test=missing]+.control-test-badge{background:#dc2626}.system-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:16px;min-width:0;max-width:100%;overflow:hidden}.system-head{display:flex;align-items:flex-start;gap:12px;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line-2);min-width:0;max-width:100%;box-sizing:border-box}.system-head>div:first-child{min-width:0;max-width:100%}.system-head h3{margin:0;font-size:15px;line-height:1.35;overflow-wrap:anywhere}.system-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}.subgrid,.subsystem-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:12px;padding:14px;min-width:0;max-width:100%;box-sizing:border-box}.subcard,.subsystem-card{border:1px solid var(--line-2);border-radius:8px;background:var(--surface);padding:14px;min-width:0;max-width:100%;overflow:hidden;box-sizing:border-box}.subcard *,.subsystem-card *{box-sizing:border-box}.subhead{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;min-width:0;max-width:100%}.subhead>.pill{flex:none;max-width:46%;white-space:normal;text-align:center;line-height:1.25}.subtitle{display:flex;flex-direction:column;align-items:flex-start;gap:3px;background:none;border:0;padding:0;text-align:left;min-width:0;max-width:100%;font-weight:650;color:var(--text);cursor:pointer}.system-head h3,.subtitle span{overflow-wrap:anywhere}.subtitle:hover .tag{text-decoration:underline}.submetrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px;align-items:stretch;min-width:0;max-width:100%}.submetrics>div{min-width:0;max-width:100%;border:1px solid var(--line-2);border-radius:8px;background:var(--surface-2);padding:8px;overflow:hidden}.submetrics .k{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:800;margin-bottom:6px;line-height:1.15;overflow-wrap:anywhere}.tag-count{display:flex;align-items:center;justify-content:space-between;gap:8px}.tag-count b{font-family:var(--mono);font-size:18px;line-height:1}.stage-progress{display:grid;gap:4px;min-width:0;max-width:100%}.stage-progress-value{font-family:var(--mono);font-size:13px;font-weight:800;color:var(--text);line-height:1.1;overflow-wrap:anywhere}.stage-progress-basis{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;line-height:1.1}.stage-progress-count{font-size:11px;color:var(--muted);line-height:1.25;overflow-wrap:anywhere}.stage-progress .bar{width:100%;min-width:0}.subchips,.blockerline,.cert-actions,.subbuttons{display:flex;gap:6px;flex-wrap:wrap;align-items:center;min-width:0;max-width:100%}.subchips{margin-top:12px;align-items:flex-start}.chip{font-size:11.5px;border-radius:999px;background:var(--na-soft);color:#566570;padding:3px 8px;font-weight:650;white-space:normal;line-height:1.25;max-width:100%;overflow-wrap:anywhere}.chip.bad{background:var(--fail-soft);color:#a4262b}.chip.warn{background:var(--amber-soft);color:#8a5712}.blockerline{margin-top:10px;align-items:stretch}.blockchip{display:block;font-size:11.5px;background:var(--fail-soft);color:#a4262b;border:1px solid #f0c5c7;border-radius:7px;padding:5px 8px;line-height:1.35;max-width:100%;overflow-wrap:anywhere;min-width:0}.cert-actions{justify-content:space-between;align-items:flex-start;margin-top:12px;border-top:1px solid var(--line-2);padding-top:10px;gap:10px}.cert-actions .certladder{flex:1 1 190px;flex-wrap:wrap;gap:5px;min-width:0}.cert-actions .certchip{border:0;cursor:pointer}.subbuttons{justify-content:flex-end;flex:1 1 170px}.subbuttons .btn{max-width:100%}.subdetails{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line-2);min-width:0;max-width:100%;overflow:hidden}.subdetails>div{min-width:0;max-width:100%;border:1px solid var(--line-2);border-radius:8px;background:var(--surface-2);padding:10px;overflow:hidden}.subdetails h4{margin:0 0 6px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.subdetails ul{margin:0;padding-left:18px;font-size:12.5px;line-height:1.5;overflow-wrap:anywhere}.subdetails li{margin-bottom:5px;overflow-wrap:anywhere}.subdetails .certrow{background:var(--surface);align-items:flex-start;max-width:100%;overflow:hidden}.subdetails .certrow .cinfo{min-width:150px;overflow-wrap:anywhere}.subdetails .certrow .row{min-width:0}.subdetails .certrow .btn{white-space:normal}.subdetails .blocker-list{max-width:100%}.subdetails .blocker-row{max-width:100%;min-width:0}.blocker-summary-list{display:grid;grid-template-columns:1fr;gap:8px;min-width:0;max-width:100%}.certificate-ladder{display:grid;grid-template-columns:1fr;gap:10px;min-width:0;max-width:100%}.certificate-card{padding:10px 11px}.certificate-card.mini{background:var(--surface);box-shadow:none}.certificate-title{display:flex;align-items:center;gap:8px;min-width:0;max-width:100%;overflow-wrap:break-word}.certificate-title b{min-width:0;overflow-wrap:break-word}.kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.kcol{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:11px}.kcol h4{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);display:flex;justify-content:space-between}.ktask{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 11px;margin-bottom:8px;box-shadow:var(--shadow)}.ktask .tt{font-weight:600;font-size:13px}.ktask .tm{font-size:11.5px;color:var(--muted);margin-top:5px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.todaylist{display:grid;gap:10px}.todayitem{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:11px 12px;box-shadow:var(--shadow)}.todayitem.block{border-left:4px solid var(--fail)}.todayitem.due{border-left:4px solid var(--amber)}.todayitem.ready{border-left:4px solid var(--pass)}.todayitem .ti-head{display:flex;align-items:flex-start;gap:10px}.todayitem .ti-main{flex:1;min-width:0}.todayitem .ti-title{font-weight:650;font-size:13.5px}.todayitem .ti-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:5px;font-size:11.5px;color:var(--muted)}.todayitem .ti-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.timeline{position:relative;border-left:2px solid var(--line);margin-left:6px;padding-left:0}.mile{position:relative;padding:0 0 4px 18px;margin-bottom:6px}.mile:before{content:"";position:absolute;left:-7px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--surface);border:2px solid var(--primary)}.mile.done:before{background:var(--pass);border-color:var(--pass)}.avatar{width:24px;height:24px;border-radius:50%;display:inline-grid;place-items:center;font-size:11px;font-weight:700;color:#fff;background:var(--primary);flex:none}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);align-items:center}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}hr.sep{border:0;border-top:1px solid var(--line-2);margin:18px 0}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:9px;font-size:13px;z-index:200;box-shadow:0 8px 30px #0000004d;opacity:0;transition:.2s}.toast.show{opacity:1;transform:translate(-50%) translateY(-4px)}.eqphoto{width:88px;height:88px;border-radius:10px;object-fit:cover;border:1px solid var(--line);cursor:zoom-in;flex:none}.eqthumb{width:30px;height:30px;border-radius:6px;object-fit:cover;border:1px solid var(--line);vertical-align:middle;margin-right:8px}.docgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.libgrid{display:grid;grid-template-columns:minmax(360px,42%) 1fr;align-items:start}.slot{border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden;display:flex;flex-direction:column}.slot .sh{padding:9px 12px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:650}.slot .sbody{flex:1;min-height:150px;display:flex;align-items:center;justify-content:center;background:var(--surface-2);position:relative}.dropzone{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted);font-size:12.5px;padding:24px;text-align:center;cursor:pointer;width:100%}.dropzone:hover{color:var(--primary)}.dropzone .ico{width:24px;height:24px}.pidwrap{position:relative;width:100%;height:158px;overflow:hidden;cursor:pointer}.pidwrap img{width:100%;height:100%;object-fit:cover;display:block}.sthumb{width:100%;height:158px;object-fit:cover;display:block;cursor:zoom-in}.placehint{position:absolute;top:8px;left:8px;background:#14181dd1;color:#fff;font-size:11px;padding:3px 8px;border-radius:6px}.drawing{position:relative;display:inline-block;max-width:100%;line-height:0}.drawing img{max-width:100%;display:block}.pin{position:absolute;transform:translate(-50%,-100%);pointer-events:none;display:flex;flex-direction:column;align-items:center;z-index:3}.pin .lbl{background:var(--fail);color:#fff;font-size:10px;font-weight:700;padding:1px 5px;border-radius:4px;white-space:nowrap;font-family:var(--mono)}.pin .needle{width:2px;height:9px;background:var(--fail)}.pin .dotp{width:12px;height:12px;border-radius:50%;background:var(--fail);border:2px solid #fff;box-shadow:0 0 0 1px var(--fail)}#printRoot{display:none}#printRoot .pp h2{font-size:16px;margin:18px 0 8px;border-bottom:1px solid #999;padding-bottom:4px}#printRoot .pp h3{font-size:13px;margin:12px 0 5px}#printRoot table{width:100%;border-collapse:collapse;font-size:11px;margin-bottom:8px}#printRoot th,#printRoot td{border:1px solid #c4c4c4;padding:5px 7px;text-align:left;vertical-align:top}#printRoot .ppimg{max-width:100%;border:1px solid #999}.report-logo{max-width:180px;max-height:56px;width:auto;height:auto;object-fit:contain}@media print{@page{margin:14mm}body{background:#fff;min-height:0}.app,#modalRoot,.toast,.scrim-side,.scrim{display:none!important}#printRoot{display:block!important;color:#000}#printRoot .pp{page-break-after:always}#printRoot .pp:last-child{page-break-after:auto}}@media (min-width:1400px){.wrap{max-width:1480px}.subgrid{grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr))}}@media (max-width:1200px){.cols-4,.wp-meta,.wp-action-groups{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-layout,.register-layout,.subgrid{grid-template-columns:1fr}.submetrics{grid-template-columns:repeat(2,minmax(0,1fr))}.subdetails{grid-template-columns:1fr}}@media (max-width:900px){.cols-3,.cols-2,.page-grid,.dashboard-grid,.card-grid,.certificate-grid{grid-template-columns:1fr}.system-head,.cert-actions{flex-direction:column;align-items:stretch}.system-actions,.subbuttons{justify-content:flex-start}.cert-actions .certladder,.subbuttons{flex-basis:auto;width:100%}.pill,.rolebadge,.btn.sm{white-space:normal}}@media (max-width:880px){main{margin-left:0}.side{width:240px;z-index:60;transform:translate(-100%);transition:.2s}.side.open{transform:none}.scrim-side{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:55;display:none;pointer-events:none}.scrim-side.open{display:block;pointer-events:auto}.menubtn{display:inline-flex!important}.cols-4{grid-template-columns:1fr 1fr}.cols-3,.cols-2,.kanban,.ff,.docgrid,.libgrid{grid-template-columns:1fr}.wrap{padding:14px}.table-scroll,.card .cb{overflow-x:auto;-webkit-overflow-scrolling:touch}.topbar{flex-wrap:wrap;padding:10px 14px;gap:8px}.topbar h2{font-size:16px}.topbar .sp{display:none}#actingAs{margin-left:auto}#vActions{order:6;flex-basis:100%;justify-content:flex-start;flex-wrap:wrap;gap:7px}.btn{padding:9px 14px}.btn.sm{padding:7px 11px}.stbtns button{padding:10px 13px}.navlink{padding:12px}.inp,select,textarea,.actas select{font-size:16px}.stagetab{min-width:46%}.card .ch{flex-wrap:wrap}.subgrid{grid-template-columns:1fr;padding:12px}.submetrics{grid-template-columns:1fr 1fr}.subdetails{grid-template-columns:1fr}.system-head,.cert-actions{flex-direction:column;align-items:stretch}.system-actions,.subbuttons{justify-content:flex-start}.subhead{flex-direction:column}.subhead>.pill{max-width:100%}.scrim{padding:14px 10px}.addphoto{width:42px;height:42px}.eqphoto{width:72px;height:72px}}@media (max-width:560px){.wrap{padding:12px}.topbar h2{font-size:15px}.stat{padding:13px}.stat .v{font-size:23px}.stat .v small{font-size:13px}.wp-hero .cb,.wp-meta,.wp-action-groups{grid-template-columns:1fr}.certrow{flex-wrap:wrap;gap:10px}.citem .top{flex-wrap:wrap}.legend{font-size:11px;gap:10px}.modal .mb{padding:16px}.modal .mh{padding:14px 16px}.modal .mf{padding:12px 16px}.search{max-width:none}.stagetab{min-width:100%}.submetrics{grid-template-columns:1fr}.subcard{padding:10px}.cert-actions .certladder,.subbuttons{flex-basis:auto;width:100%}}.menubtn{display:none}
