.lims-proto{--primary:#3b2998;--primary-hi:#4b36c4;--primary-soft:#edebfa;--primary-ghost:#f4f2fc;--ink:#191338;--ink-2:#4a4468;--ink-3:#8b86a8;--surface:#f6f5fb;--card:#fff;--line:#e5e2f1;--line-soft:#efedf8;--amber:#b45309;--amber-bg:#fef3e2;--green:#047857;--green-bg:#e7f6f0;--red:#b91c1c;--red-bg:#fceaea;--teal:#0e7490;--teal-bg:#e6f4f8;--violet-bg:#efebfb;--side:#1e1747;--side-2:#2a2060;--r:12px;--r-sm:8px;--shadow:0 1px 2px #1913380d,0 4px 14px #1913380f;--shadow-lg:0 8px 30px #19133824;--mono:"JetBrains Mono",monospace;--display:"Sora",sans-serif;--body:"Inter",sans-serif}.lims-proto *{box-sizing:border-box;margin:0;padding:0}.lims-proto{font-family:var(--body);background:var(--surface);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:13.5px;line-height:1.5}.lims-proto button{cursor:pointer;font-family:inherit}.lims-proto input,.lims-proto select,.lims-proto textarea{color:var(--ink);font-family:inherit;font-size:13px}.lims-proto ::placeholder{color:var(--ink-3)}.lims-proto .app{grid-template-columns:236px 1fr;height:100vh;display:grid;overflow:hidden}.lims-proto .side{background:linear-gradient(178deg,var(--side) 0%,var(--side-2) 100%);color:#cfc9ee;flex-direction:column;display:flex;overflow-y:auto}.lims-proto .side::-webkit-scrollbar{width:0}.lims-proto .brand{border-bottom:1px solid #ffffff14;align-items:center;gap:11px;padding:18px 16px 16px;display:flex}.lims-proto .brand-mark{background:linear-gradient(135deg,#6d4fe0,#3b2998);border-radius:10px;flex:none;place-items:center;width:38px;height:38px;display:grid;box-shadow:0 4px 12px #3b299880}.lims-proto .brand-mark svg{width:21px;height:21px}.lims-proto .brand h1{font-family:var(--display);color:#fff;letter-spacing:.2px;font-size:14.5px;font-weight:700}.lims-proto .brand p{color:#9a92c8;letter-spacing:.4px;margin-top:1px;font-size:10px}.lims-proto .nav-group{padding:14px 10px 4px}.lims-proto .nav-label{letter-spacing:1.4px;text-transform:uppercase;color:#7a72a8;padding:0 10px 7px;font-size:9.5px;font-weight:700}.lims-proto .nav-item{color:#beb7e4;text-align:left;background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;width:100%;padding:8px 10px;font-size:12.8px;font-weight:500;transition:all .15s;display:flex;position:relative}.lims-proto .nav-item svg{opacity:.85;flex:none;width:16px;height:16px}.lims-proto .nav-item:hover{color:#fff;background:#ffffff0f}.lims-proto .nav-item.active{color:#fff;background:#6d4fe047;font-weight:600}.lims-proto .nav-item.active:before{content:"";background:#8a6df5;border-radius:0 3px 3px 0;width:3px;position:absolute;top:7px;bottom:7px;left:-10px}.lims-proto .nav-item .pill{color:#231c05;background:#f59e0b;border-radius:20px;margin-left:auto;padding:0 6px;font-size:10px;font-weight:700;line-height:16px}.lims-proto .side-foot{color:#8a82b8;border-top:1px solid #ffffff14;margin-top:auto;padding:12px 16px;font-size:10.5px}.lims-proto .side-foot .env{align-items:center;gap:6px;margin-bottom:4px;display:flex}.lims-proto .dot{background:#34d399;border-radius:50%;width:7px;height:7px;box-shadow:0 0 6px #34d399}.lims-proto .main{flex-direction:column;display:flex;overflow:hidden}.lims-proto .topbar{background:var(--card);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:14px;height:56px;padding:0 20px;display:flex}.lims-proto .crumb{color:var(--ink-3);font-size:12px}.lims-proto .crumb b{color:var(--ink);font-weight:600}.lims-proto .search{flex:1;max-width:420px;position:relative}.lims-proto .search input{border:1px solid var(--line);background:var(--surface);border-radius:9px;outline:none;width:100%;height:34px;padding:0 12px 0 34px;transition:all .15s}.lims-proto .search input:focus{border-color:var(--primary-hi);background:#fff;box-shadow:0 0 0 3px #4b36c41f}.lims-proto .search svg{width:15px;height:15px;color:var(--ink-3);position:absolute;top:9px;left:11px}.lims-proto .top-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.lims-proto .icon-btn{border:1px solid var(--line);width:34px;height:34px;color:var(--ink-2);background:#fff;border-radius:9px;place-items:center;transition:all .15s;display:grid;position:relative}.lims-proto .icon-btn:hover{border-color:var(--primary-hi);color:var(--primary)}.lims-proto .icon-btn .badge{background:var(--red);color:#fff;border-radius:8px;place-items:center;min-width:15px;height:15px;padding:0 3px;font-size:9px;font-weight:700;display:grid;position:absolute;top:-4px;right:-4px}.lims-proto .lang-toggle{border:1px solid var(--line);border-radius:9px;display:flex;overflow:hidden}.lims-proto .lang-toggle button{color:var(--ink-3);background:#fff;border:none;padding:7px 11px;font-size:11.5px;font-weight:600}.lims-proto .lang-toggle button.on{background:var(--primary);color:#fff}.lims-proto .user{border-left:1px solid var(--line);align-items:center;gap:9px;padding-left:12px;display:flex}.lims-proto .avatar{color:#fff;width:32px;height:32px;font-size:12px;font-weight:700;font-family:var(--display);background:linear-gradient(135deg,#6d4fe0,#3b2998);border-radius:50%;place-items:center;display:grid}.lims-proto .user .nm{font-size:12px;font-weight:600;line-height:1.2}.lims-proto .user .rl{color:var(--ink-3);font-size:10.5px}.lims-proto .content{flex:1;padding:22px 24px 40px;overflow-y:auto}.lims-proto .screen{max-width:1240px;margin:0 auto;display:none}.lims-proto .screen.on{animation:.25s fadeUp;display:block}.lims-proto .ph{flex-wrap:wrap;align-items:flex-start;gap:14px;margin-bottom:18px;display:flex}.lims-proto .ph h2{font-family:var(--display);letter-spacing:-.2px;font-size:20px;font-weight:700}.lims-proto .ph .sub{color:var(--ink-2);margin-top:2px;font-size:12.5px}.lims-proto .ph .spacer{flex:1}.lims-proto .btn{white-space:nowrap;border:1px solid #0000;border-radius:9px;align-items:center;gap:7px;height:36px;padding:0 15px;font-size:12.5px;font-weight:600;transition:all .15s;display:inline-flex}.lims-proto .btn svg{width:15px;height:15px}.lims-proto .btn-primary{background:var(--primary);color:#fff}.lims-proto .btn-primary:hover{background:var(--primary-hi)}.lims-proto .btn-ghost{border-color:var(--line);color:var(--ink-2);background:#fff}.lims-proto .btn-ghost:hover{border-color:var(--primary-hi);color:var(--primary)}.lims-proto .btn-green{background:var(--green);color:#fff}.lims-proto .btn-red{color:var(--red);background:#fff;border-color:#f1c6c6}.lims-proto .btn-red:hover{background:var(--red-bg)}.lims-proto .btn-sm{border-radius:8px;height:29px;padding:0 11px;font-size:11.5px}.lims-proto .card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}.lims-proto .card-h{border-bottom:1px solid var(--line-soft);align-items:center;gap:10px;padding:13px 16px;display:flex}.lims-proto .card-h h3{font-family:var(--display);font-size:13.5px;font-weight:600}.lims-proto .card-h .spacer{flex:1}.lims-proto .card-b{padding:16px}.lims-proto .grid{gap:14px;display:grid}.lims-proto .g4{grid-template-columns:repeat(4,1fr)}.lims-proto .g3{grid-template-columns:repeat(3,1fr)}.lims-proto .g2{grid-template-columns:repeat(2,1fr)}.lims-proto .g23{grid-template-columns:2fr 1fr}@media (width<=1100px){.lims-proto .g4{grid-template-columns:repeat(2,1fr)}.lims-proto .g3,.lims-proto .g23{grid-template-columns:1fr}}.lims-proto .kpi{padding:15px 16px;position:relative;overflow:hidden}.lims-proto .kpi .lb{letter-spacing:.6px;text-transform:uppercase;color:var(--ink-3);font-size:11px;font-weight:600}.lims-proto .kpi .vl{font-family:var(--display);letter-spacing:-.5px;margin-top:4px;font-size:27px;font-weight:700}.lims-proto .kpi .tr{margin-top:3px;font-size:11.5px;font-weight:600}.lims-proto .kpi .tr.up{color:var(--green)}.lims-proto .kpi .tr.dn{color:var(--red)}.lims-proto .kpi .tr.nt{color:var(--ink-3)}.lims-proto .kpi .ic{border-radius:9px;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:13px;right:13px}.lims-proto .kpi .ic svg{width:17px;height:17px}.lims-proto .ic-v{background:var(--violet-bg);color:var(--primary)}.lims-proto .ic-a{background:var(--amber-bg);color:var(--amber)}.lims-proto .ic-g{background:var(--green-bg);color:var(--green)}.lims-proto .ic-r{background:var(--red-bg);color:var(--red)}.lims-proto .chip{white-space:nowrap;border-radius:20px;align-items:center;gap:5px;padding:2.5px 9px;font-size:10.8px;font-weight:600;display:inline-flex}.lims-proto .chip:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.lims-proto .c-violet{background:var(--violet-bg);color:var(--primary)}.lims-proto .c-amber{background:var(--amber-bg);color:var(--amber)}.lims-proto .c-green{background:var(--green-bg);color:var(--green)}.lims-proto .c-red{background:var(--red-bg);color:var(--red)}.lims-proto .c-teal{background:var(--teal-bg);color:var(--teal)}.lims-proto .c-grey{color:var(--ink-2);background:#efeef5}.lims-proto .tag{background:var(--surface);border:1px solid var(--line);color:var(--ink-2);border-radius:6px;padding:2px 8px;font-size:10.5px;font-weight:600;display:inline-block}.lims-proto .mono{font-family:var(--mono);font-size:12px;font-weight:500}.lims-proto .sid{font-family:var(--mono);color:var(--primary);font-size:12px;font-weight:600}.lims-proto table{border-collapse:collapse;width:100%}.lims-proto th{letter-spacing:.8px;text-transform:uppercase;color:var(--ink-3);text-align:left;border-bottom:1px solid var(--line);background:#fbfafe;padding:9px 14px;font-size:10.5px;font-weight:700}.lims-proto td{border-bottom:1px solid var(--line-soft);vertical-align:middle;padding:10px 14px;font-size:12.5px}.lims-proto tr:last-child td{border-bottom:none}.lims-proto tbody tr{transition:all .12s}.lims-proto tbody tr:hover{background:var(--primary-ghost)}.lims-proto tr.clickable{cursor:pointer}.lims-proto .td-main{font-weight:600}.lims-proto .td-sub{color:var(--ink-3);margin-top:1px;font-size:11px}.lims-proto .f-grid{grid-template-columns:repeat(3,1fr);gap:13px 16px;display:grid}.lims-proto .f-grid .span2{grid-column:span 2}.lims-proto .f-grid .span3{grid-column:span 3}@media (width<=1000px){.lims-proto .f-grid{grid-template-columns:1fr 1fr}}.lims-proto .field label{color:var(--ink-2);align-items:center;gap:5px;margin-bottom:5px;font-size:11px;font-weight:600;display:flex}.lims-proto .field label svg{width:12px;height:12px;color:var(--primary);opacity:.8}.lims-proto .field label .req{color:var(--red)}.lims-proto .field input,.lims-proto .field select,.lims-proto .field textarea{border:1px solid var(--line);background:#fff;border-radius:9px;outline:none;width:100%;height:36px;padding:0 11px;transition:all .15s}.lims-proto .field textarea{resize:vertical;height:auto;padding:9px 11px}.lims-proto .field input:focus,.lims-proto .field select:focus,.lims-proto .field textarea:focus{border-color:var(--primary-hi);box-shadow:0 0 0 3px #4b36c41f}.lims-proto .field .hint{color:var(--ink-3);margin-top:4px;font-size:10.5px}.lims-proto .seg{background:var(--surface);border:1px solid var(--line);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.lims-proto .seg button{color:var(--ink-3);background:0 0;border:none;border-radius:8px;padding:6px 14px;font-size:12px;font-weight:600;transition:all .15s}.lims-proto .seg button.on{color:var(--primary);box-shadow:var(--shadow);background:#fff}.lims-proto .rail{align-items:flex-start;gap:0;padding:20px 10px 12px;display:flex;overflow-x:auto}.lims-proto .rail-step{text-align:center;flex:1;min-width:96px;position:relative}.lims-proto .rail-step:before{content:"";background:var(--line);height:2px;position:absolute;top:14px;left:calc(15px - 50%);right:calc(50% + 15px)}.lims-proto .rail-step:first-child:before{display:none}.lims-proto .rail-step.done:before{background:var(--primary)}.lims-proto .rail-node{border:2px solid var(--line);width:29px;height:29px;color:var(--ink-3);z-index:1;background:#fff;border-radius:50%;place-items:center;margin:0 auto;font-size:11px;font-weight:700;display:grid;position:relative}.lims-proto .rail-node svg{width:13px;height:13px}.lims-proto .rail-step.done .rail-node{background:var(--primary);border-color:var(--primary);color:#fff}.lims-proto .rail-step.now .rail-node{border-color:var(--primary);color:var(--primary);animation:2s infinite pulse;box-shadow:0 0 0 5px #4b36c424}.lims-proto .rail-step .rn{margin-top:7px;font-size:11px;font-weight:700}.lims-proto .rail-step .rt{color:var(--ink-3);font-size:9.8px;font-family:var(--mono);margin-top:1px}.lims-proto .rail-step .rs{color:var(--ink-3);font-size:9.8px}.lims-proto .rail-step.done .rn{color:var(--ink)}.lims-proto .rail-step.now .rn{color:var(--primary)}.lims-proto .rail-step.todo .rn{color:var(--ink-3)}.lims-proto .rail-nav .rail-step{cursor:pointer}.lims-proto .rail-nav .rail-step.sel .rail-node{outline-offset:2px;outline:3px solid #4b36c42e}.lims-proto .rail-nav .rail-step.sel .rn{color:var(--primary)}.lims-proto .rail-nav .rail-step:hover .rail-node{border-color:var(--primary-hi)}.lims-proto .rail-step .rj{letter-spacing:.4px;text-transform:uppercase;color:var(--ink-3);margin-top:3px;font-size:9px;font-weight:600}.lims-proto .cust-hero{border-radius:var(--r);color:#fff;background:linear-gradient(120deg,#241a5c,#3b2998);flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:4px;padding:16px 20px;display:flex}.lims-proto .cust-hero .ci{background:#ffffff1f;border-radius:11px;flex:none;place-items:center;width:44px;height:44px;display:grid}.lims-proto .cust-hero .ci svg{width:22px;height:22px}.lims-proto .cust-hero .id{font-family:var(--mono);letter-spacing:.5px;font-size:17px;font-weight:600}.lims-proto .cust-hero .pn{color:#c9c2f0;margin-top:1px;font-size:12px}.lims-proto .cust-hero .spacer{flex:1}.lims-proto .cust-hero .hstat{text-align:right}.lims-proto .cust-hero .hstat .l{letter-spacing:.6px;text-transform:uppercase;color:#b7aee8;font-size:9.5px}.lims-proto .cust-hero .hstat .v{font-size:13px;font-weight:600;font-family:var(--mono);margin-top:2px}.lims-proto .seal{background:var(--green-bg);color:var(--green);border:1px solid #bfe6d6;border-radius:20px;align-items:center;gap:5px;padding:3px 9px;font-size:10.5px;font-weight:600;display:inline-flex}.lims-proto .seal svg{width:11px;height:11px}.lims-proto .seal.broken{background:var(--red-bg);color:var(--red);border-color:#f0c9c9}.lims-proto .stage-head{align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.lims-proto .stage-head .sn{background:var(--primary-soft);width:38px;height:38px;color:var(--primary);border-radius:10px;flex:none;place-items:center;font-weight:700;display:grid}.lims-proto .stage-head .sn svg{width:19px;height:19px}.lims-proto .stage-head h3{font-family:var(--display);font-size:16px;font-weight:600}.lims-proto .stage-head .sd{color:var(--ink-2);margin-top:2px;font-size:12px}.lims-proto .stage-head .owner{text-align:right;flex:none;margin-left:auto}.lims-proto .stage-head .owner .l{letter-spacing:.5px;text-transform:uppercase;color:var(--ink-3);font-size:9.5px}.lims-proto .stage-head .owner .v{margin-top:2px;font-size:12.5px;font-weight:600}.lims-proto .handoff{border:1px solid var(--line);border-radius:var(--r);align-items:stretch;gap:0;margin:14px 0;display:flex;overflow:hidden}.lims-proto .handoff .party{background:#fbfafe;flex:1;padding:14px 16px}.lims-proto .handoff .party .l{letter-spacing:.6px;text-transform:uppercase;color:var(--ink-3);font-size:9.5px}.lims-proto .handoff .party .who{margin-top:4px;font-size:13.5px;font-weight:600}.lims-proto .handoff .party .role{color:var(--ink-2);margin-top:1px;font-size:11px}.lims-proto .handoff .party .sig{font-family:var(--mono);color:var(--primary);align-items:center;gap:4px;margin-top:6px;font-size:10px;display:flex}.lims-proto .handoff .party .sig svg{width:11px;height:11px}.lims-proto .handoff .arrow{background:var(--primary);color:#fff;flex:none;place-items:center;width:60px;display:grid;position:relative}.lims-proto .handoff .arrow svg{width:20px;height:20px}.lims-proto .handoff .arrow .t{font-size:8.5px;font-family:var(--mono);color:#c9c2f0;position:absolute;bottom:6px}.lims-proto .stat-grid{background:var(--line);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;display:grid;overflow:hidden}.lims-proto .stat-grid .cell{background:#fff;padding:12px 14px}.lims-proto .stat-grid .cell .l{letter-spacing:.5px;text-transform:uppercase;color:var(--ink-3);font-size:9.5px}.lims-proto .stat-grid .cell .v{margin-top:3px;font-size:13.5px;font-weight:600}.lims-proto .stat-grid .cell .v.mono{font-family:var(--mono);font-size:12.5px}.lims-proto .retention-clock{border-radius:var(--r);background:var(--primary-ghost);border:1px solid var(--line);align-items:center;gap:14px;padding:14px 16px;display:flex}.lims-proto .retention-clock .big{font-family:var(--display);color:var(--primary);font-size:26px;font-weight:700}.lims-proto .aliquot{border:1px solid var(--line);border-radius:var(--r-sm);align-items:center;gap:10px;margin-bottom:8px;padding:10px 12px;display:flex}.lims-proto .aliquot .ab{border-radius:3px;flex:none;width:8px;height:34px}.lims-proto .aliquot .an{font-family:var(--mono);font-size:12px;font-weight:600}.lims-proto .app-foot{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;max-width:1240px;margin:26px auto 4px;padding:16px 4px 8px;display:flex}.lims-proto .app-foot .fl{color:var(--ink-3);font-size:11.5px;line-height:1.6}.lims-proto .app-foot .fl b{color:var(--ink-2);font-weight:600}.lims-proto .app-foot .fr{align-items:center;gap:16px;font-size:11.5px;display:flex}.lims-proto .app-foot .fr a{color:var(--primary);align-items:center;gap:5px;font-weight:500;text-decoration:none;display:inline-flex}.lims-proto .app-foot .fr a:hover{text-decoration:underline}.lims-proto .app-foot .fr a svg{width:13px;height:13px}.lims-proto .app-foot .fr .sep{color:var(--line)}.lims-proto .ip-mark{color:var(--ink-2);align-items:center;gap:6px;font-weight:600;display:inline-flex}.lims-proto .ip-mark .dot{background:linear-gradient(135deg,#4b36c4,#3b2998);border-radius:4px;width:14px;height:14px}.lims-proto .qa-hero{background:var(--line);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:16px;display:grid;overflow:hidden}.lims-proto .qa-std{background:#fff;align-items:center;gap:13px;padding:16px;display:flex}.lims-proto .ring{border-radius:50%;flex:none;place-items:center;width:52px;height:52px;display:grid;position:relative}.lims-proto .ring:after{content:"";background:#fff;border-radius:50%;position:absolute;inset:6px}.lims-proto .ring span{z-index:1;font-size:13px;font-weight:700;font-family:var(--display);position:relative}.lims-proto .qa-std .sl{font-size:12.5px;font-weight:600}.lims-proto .qa-std .sm{color:var(--ink-3);margin-top:2px;font-size:10.5px}.lims-proto .heat{gap:5px;display:grid}.lims-proto .heat .hrow{grid-template-columns:150px repeat(6,1fr);align-items:center;gap:5px;display:grid}.lims-proto .heat .hh{letter-spacing:.4px;text-transform:uppercase;color:var(--ink-3);text-align:center;padding-bottom:2px;font-size:9.5px;font-weight:700}.lims-proto .heat .hlab{color:var(--ink-2);font-size:11.5px;font-weight:500}.lims-proto .heat .hc{height:30px;font-size:10.5px;font-weight:700;font-family:var(--mono);border-radius:6px;place-items:center;display:grid}.lims-proto .hc.ok{background:var(--green-bg);color:var(--green)}.lims-proto .hc.warn{background:var(--amber-bg);color:var(--amber)}.lims-proto .hc.bad{background:var(--red-bg);color:var(--red)}.lims-proto .hc.na{background:var(--surface);color:var(--ink-3)}.lims-proto .wf{align-items:center;gap:0;margin:2px 0;display:flex}.lims-proto .wf .ws{color:var(--ink-3);align-items:center;gap:6px;font-size:10.5px;font-weight:600;display:flex}.lims-proto .wf .wd{background:var(--line);border-radius:50%;flex:none;width:9px;height:9px}.lims-proto .wf .ws.done .wd{background:var(--green)}.lims-proto .wf .ws.done{color:var(--green)}.lims-proto .wf .ws.now .wd{background:var(--primary);box-shadow:0 0 0 3px #4b36c429}.lims-proto .wf .ws.now{color:var(--primary)}.lims-proto .wf .wl{background:var(--line);flex:none;width:22px;height:2px}.lims-proto .wf .wl.done{background:var(--green)}.lims-proto .sev{border-radius:6px;align-items:center;gap:5px;padding:2px 8px;font-size:10.5px;font-weight:700;display:inline-flex}.lims-proto .sev.critical{background:var(--red-bg);color:var(--red)}.lims-proto .sev.major{background:var(--amber-bg);color:var(--amber)}.lims-proto .sev.minor{background:var(--teal-bg);color:var(--teal)}.lims-proto .mtx{border-collapse:collapse;width:100%}.lims-proto .mtx th{letter-spacing:.4px;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);text-align:center;padding:8px 6px;font-size:9.5px;font-weight:700}.lims-proto .mtx th:first-child{text-align:left}.lims-proto .mtx td{border-bottom:1px solid var(--line-soft);text-align:center;padding:9px 6px;font-size:11px}.lims-proto .mtx td:first-child{text-align:left;font-size:12px;font-weight:600}.lims-proto .dotc{border-radius:50%;place-items:center;width:15px;height:15px;margin:0 auto;display:inline-grid}.lims-proto .dotc.q{background:var(--green)}.lims-proto .dotc.t{background:var(--amber)}.lims-proto .dotc.x{background:#e5e2f1}.lims-proto .dotc svg{color:#fff;width:9px;height:9px}.lims-proto .set-tool{border:1px solid var(--line);border-radius:var(--r);background:#fff;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;padding:11px 14px;display:flex}.lims-proto .set-sel{color:var(--ink-2);align-items:center;gap:6px;font-size:11.5px;font-weight:600;display:flex}.lims-proto .set-sel select{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600}.lims-proto .ver-badge{font-size:11.5px;font-weight:700;font-family:var(--mono);border-radius:8px;align-items:center;gap:6px;padding:5px 11px;display:inline-flex}.lims-proto .ver-badge.draft{background:var(--amber-bg);color:var(--amber)}.lims-proto .ver-badge.prod{background:var(--green-bg);color:var(--green)}.lims-proto .wd-canvas{border:1px solid var(--line);border-radius:var(--r);background:#fbfafe radial-gradient(#e1ddf2 1px,#0000 0) 0 0/19px 19px;overflow:auto}.lims-proto .wd-node .n-rect{fill:#fff;stroke:var(--line);stroke-width:1.5px;transition:all .15s}.lims-proto .wd-node{cursor:pointer}.lims-proto .wd-node:hover .n-rect{stroke:var(--primary-hi)}.lims-proto .wd-node.n-sel .n-rect{stroke:var(--primary);stroke-width:2.5px;filter:drop-shadow(0 3px 8px #3b29982e)}.lims-proto .n-title{font:600 12px var(--display);fill:var(--ink)}.lims-proto .n-role{font:500 9.5px var(--body);fill:var(--ink-3)}.lims-proto .n-approve .n-rect{fill:var(--primary-ghost);stroke:#cfc5f2}.lims-proto .n-end .n-rect{fill:var(--red-bg);stroke:#f0c9c9}.lims-proto .n-start .n-rect{fill:var(--green-bg);stroke:#bfe6d6}.lims-proto .n-diamond{fill:var(--amber-bg);stroke:var(--amber);stroke-width:1.5px}.lims-proto .d-title{font:700 10px var(--body);fill:var(--amber)}.lims-proto .n-edge{stroke:#b3adcc;stroke-width:1.6px;fill:none;marker-end:url(#wfarrow)}.lims-proto .n-edge.cond{stroke-dasharray:5 4;stroke:var(--primary);marker-end:url(#wfarrowp)}.lims-proto .e-label{font:600 8.5px var(--mono);fill:var(--ink-2)}.lims-proto .e-label.cond{fill:var(--primary)}.lims-proto .props-f{border-bottom:1px solid var(--line-soft);padding:11px 0}.lims-proto .props-f:last-child{border-bottom:none}.lims-proto .props-l{letter-spacing:.5px;text-transform:uppercase;color:var(--ink-3);font-size:9.5px;font-weight:700}.lims-proto .props-v{color:var(--ink);margin-top:4px;font-size:12.5px}.lims-proto .props-v.mono{font-family:var(--mono);font-size:12px}.lims-proto .chainr{flex-wrap:wrap;align-items:center;gap:5px;margin-top:5px;display:flex}.lims-proto .chainr .cx{background:var(--primary-soft);color:var(--primary);border-radius:6px;padding:2px 8px;font-size:10.5px;font-weight:600}.lims-proto .chainr .ca{color:var(--ink-3);font-size:11px}.lims-proto .tgl{background:var(--primary);cursor:pointer;border-radius:20px;flex:none;width:32px;height:18px;position:relative}.lims-proto .tgl:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;position:absolute;top:2px;right:2px}.lims-proto .tgl.off{background:var(--line)}.lims-proto .tgl.off:after{left:2px;right:auto}.lims-proto .rulec{border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;padding:13px 15px}.lims-proto .rulec .rh{align-items:center;gap:8px;margin-bottom:8px;font-size:12.5px;font-weight:600;display:flex}.lims-proto .rulec .rh svg{width:15px;height:15px;color:var(--primary)}.lims-proto .rulei{border-top:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:10px;padding:6px 0;font-size:11.5px;display:flex}.lims-proto .rulei:first-of-type{border-top:none}.lims-proto .deploy-pipe{align-items:center;gap:0;display:flex}.lims-proto .dp-stage{border:1.5px solid var(--line);border-radius:var(--r);background:#fff;flex:1;padding:13px 15px;position:relative}.lims-proto .dp-stage.active{border-color:var(--primary);background:var(--primary-ghost)}.lims-proto .dp-stage .dps{letter-spacing:.6px;text-transform:uppercase;color:var(--ink-3);font-size:9.5px;font-weight:700}.lims-proto .dp-stage .dpv{font-family:var(--mono);margin-top:3px;font-size:14px;font-weight:700}.lims-proto .dp-stage .dpn{color:var(--ink-3);margin-top:2px;font-size:10.5px}.lims-proto .dp-arrow{width:34px;color:var(--ink-3);flex:none;place-items:center;display:grid}.lims-proto .dp-arrow svg{width:16px;height:16px}.lims-proto .backlink{color:var(--ink-3);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;margin-bottom:2px;font-size:12px;font-weight:600;display:inline-flex}.lims-proto .backlink:hover{color:var(--primary)}.lims-proto .backlink svg{width:14px;height:14px}.lims-proto .flow{align-items:stretch;gap:0;padding:2px 0;display:flex;overflow-x:auto}.lims-proto .flow .fs{border:1.5px solid var(--line);border-radius:var(--r-sm);text-align:center;background:#fff;flex:1;min-width:118px;padding:12px 10px}.lims-proto .flow .fs.done{background:var(--green-bg);border-color:#bfe6d6}.lims-proto .flow .fs.now{background:var(--primary-ghost);border-color:#cfc5f2}.lims-proto .flow .fs .fi{background:var(--surface);width:30px;height:30px;color:var(--ink-3);border-radius:9px;place-items:center;margin:0 auto 7px;display:grid}.lims-proto .flow .fs.done .fi{color:var(--green);background:#fff}.lims-proto .flow .fs.now .fi{background:var(--primary);color:#fff}.lims-proto .flow .fs .fi svg{width:15px;height:15px}.lims-proto .flow .fs .ft{font-size:11px;font-weight:600}.lims-proto .flow .fs .fsub{color:var(--ink-3);margin-top:2px;font-size:9.5px}.lims-proto .flow .fa{width:24px;color:var(--ink-3);flex:none;place-items:center;display:grid}.lims-proto .flow .fa svg{width:15px;height:15px}.lims-proto .termlog{border-radius:var(--r);font-family:var(--mono);color:#b9b2e0;background:#1b1440;padding:14px 16px;font-size:11px;line-height:1.75;overflow-x:auto}.lims-proto .termlog>div{white-space:pre}.lims-proto .termlog .t{color:#7a75a0}.lims-proto .termlog .ok{color:#5fd6a6}.lims-proto .termlog .in{color:#9db4ff}.lims-proto .termlog .out{color:#f2c48a}.lims-proto .termlog .hl{color:#fff;font-weight:600}.lims-proto .termlog .er{color:#ff9b9b}.lims-proto .live{color:var(--green);text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:6px;font-size:10.5px;font-weight:700;display:inline-flex}.lims-proto .live-dot{background:var(--green);border-radius:50%;width:8px;height:8px;animation:1.4s infinite lpulse;display:inline-block}.lims-proto .maprow{border-bottom:1px solid var(--line-soft);grid-template-columns:1fr 26px 1fr;align-items:center;gap:8px;padding:8px 0;display:grid}.lims-proto .maprow:last-child{border-bottom:none}.lims-proto .maprow .mf{font-family:var(--mono);color:var(--ink-2);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:10.5px}.lims-proto .maprow .mt{font-size:11.5px;font-weight:600}.lims-proto .maprow .mar{color:var(--primary);place-items:center;display:grid}.lims-proto .maprow .mar svg{width:13px;height:13px}.lims-proto .wchk{border:1px solid var(--line);border-radius:var(--r-sm);align-items:center;gap:10px;margin-bottom:8px;padding:11px 12px;display:flex}.lims-proto .wchk input{width:16px;height:16px;accent-color:var(--primary)}.lims-proto .wchk .wn{font-family:var(--mono);font-size:12px;font-weight:600}.lims-proto .conn-opt{border:1.5px solid var(--line);border-radius:var(--r-sm);cursor:pointer;padding:12px 14px}.lims-proto .conn-opt.sel{border-color:var(--primary);background:var(--primary-ghost)}.lims-proto .conn-opt .con{font-size:12.5px;font-weight:600}.lims-proto .conn-opt .cod{color:var(--ink-3);margin-top:2px;font-size:11px}.lims-proto .tabs{border-bottom:1px solid var(--line);gap:2px;margin-bottom:16px;display:flex;overflow-x:auto}.lims-proto .tabs button{color:var(--ink-3);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:9px 15px;font-size:12.5px;font-weight:600;transition:all .15s}.lims-proto .tabs button:hover{color:var(--ink)}.lims-proto .tabs button.on{color:var(--primary);border-bottom-color:var(--primary)}.lims-proto .bar-row{align-items:center;gap:10px;margin-bottom:11px;display:flex}.lims-proto .bar-row .bl{flex:none;width:120px;font-size:12px;font-weight:600}.lims-proto .bar-row .bt{background:var(--surface);border-radius:6px;flex:1;height:9px;overflow:hidden}.lims-proto .bar-row .bf{background:linear-gradient(90deg,#6d4fe0,#3b2998);border-radius:6px;height:100%}.lims-proto .bar-row .bv{width:60px;color:var(--ink-2);text-align:right;font-size:11.5px;font-family:var(--mono)}.lims-proto .list-row{border-bottom:1px solid var(--line-soft);align-items:center;gap:11px;padding:10px 0;display:flex}.lims-proto .list-row:last-child{border-bottom:none}.lims-proto .li-ic{border-radius:9px;flex:none;place-items:center;width:32px;height:32px;display:grid}.lims-proto .li-ic svg{width:15px;height:15px}.lims-proto .toolbar{flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:14px;display:flex}.lims-proto .toolbar select,.lims-proto .toolbar input{border:1px solid var(--line);background:#fff;border-radius:8px;outline:none;height:33px;padding:0 10px;font-size:12px}.lims-proto .storage-node{margin-left:0}.lims-proto .storage-node .sn-row{cursor:default;border-radius:8px;align-items:center;gap:8px;padding:7px 10px;transition:all .12s;display:flex}.lims-proto .storage-node .sn-row:hover{background:var(--primary-ghost)}.lims-proto .storage-node .sn-row svg{width:14px;height:14px;color:var(--primary);flex:none}.lims-proto .storage-node .kids{border-left:1px dashed var(--line);margin-left:22px;padding-left:8px}.lims-proto .env-tag{font-family:var(--mono);background:var(--teal-bg);color:var(--teal);border-radius:5px;padding:1px 7px;font-size:10px;font-weight:600}.lims-proto .coa{border:1px solid var(--line);background:#fff;border-radius:10px;padding:26px 30px;font-size:12px}.lims-proto .coa-head{border-bottom:2.5px solid var(--primary);justify-content:space-between;align-items:flex-start;margin-bottom:14px;padding-bottom:14px;display:flex}.lims-proto .coa-head .ar{text-align:right;direction:rtl;font-size:12.5px}.lims-proto .coa h4{font-family:var(--display);color:var(--primary);font-size:15px}.lims-proto .coa .meta{grid-template-columns:1fr 1fr;gap:4px 20px;margin:12px 0;font-size:11.5px;display:grid}.lims-proto .coa .meta b{font-weight:600}.lims-proto .coa table th{background:var(--primary-ghost);font-size:9.5px}.lims-proto .coa table td{padding:7px 12px;font-size:11.5px}.lims-proto .coa .verdict{background:var(--green-bg);color:var(--green);border-radius:9px;align-items:center;gap:8px;margin-top:14px;padding:11px 14px;font-size:12.5px;font-weight:700;display:flex}.lims-proto .coa .sigs{color:var(--ink-2);justify-content:space-between;margin-top:22px;font-size:10.5px;display:flex}.lims-proto .coa .sig-line{border-top:1px solid var(--ink-3);text-align:center;width:170px;padding-top:5px}.lims-proto .esig{font-family:var(--mono);color:var(--primary);background:var(--violet-bg);border-radius:4px;margin-bottom:4px;padding:2px 6px;font-size:9.5px;display:inline-block}.lims-proto .overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;background:#19133873;place-items:center;display:none;position:fixed;inset:0}.lims-proto .overlay.on{display:grid}.lims-proto .modal{box-shadow:var(--shadow-lg);background:#fff;border-radius:16px;width:430px;max-width:94vw;padding:22px;animation:.2s fadeUp}.lims-proto .modal h3{font-family:var(--display);margin-bottom:4px;font-size:16px}.lims-proto .modal .ms{color:var(--ink-2);margin-bottom:16px;font-size:12px}.lims-proto .modal .field{margin-bottom:12px}.lims-proto .modal-foot{justify-content:flex-end;gap:9px;margin-top:18px;display:flex}.lims-proto .toast{background:var(--ink);color:#fff;box-shadow:var(--shadow-lg);z-index:60;opacity:0;border-radius:11px;align-items:center;gap:9px;padding:12px 18px;font-size:12.5px;font-weight:500;transition:all .3s;display:flex;position:fixed;bottom:24px;right:24px;transform:translateY(80px)}.lims-proto .toast.on{opacity:1;transform:none}.lims-proto .toast svg{color:#34d399;width:15px;height:15px}.lims-proto .barcode{align-items:flex-end;gap:1.5px;height:44px;display:flex}.lims-proto .barcode i{background:var(--ink);width:2px;height:100%}.lims-proto .barcode i:nth-child(3n){width:1px}.lims-proto .barcode i:nth-child(4n){width:3px;height:100%}.lims-proto .barcode i:nth-child(5n){width:1px}.lims-proto .audit-row{border-bottom:1px solid var(--line-soft);gap:11px;padding:9px 0;font-size:12px;display:flex}.lims-proto .audit-row:last-child{border-bottom:none}.lims-proto .audit-row .at{font-family:var(--mono);color:var(--ink-3);flex:none;width:118px;font-size:10.5px}.lims-proto .audit-row .hash{font-family:var(--mono);color:var(--ink-3);margin-top:2px;font-size:9.5px}.lims-proto .spec-flag{font-family:var(--mono);border-radius:5px;padding:2px 7px;font-size:10.5px;font-weight:700}.lims-proto .in-spec{background:var(--green-bg);color:var(--green)}.lims-proto .oos{background:var(--red-bg);color:var(--red)}.lims-proto .pending-spec{color:var(--ink-3);background:#efeef5}@media (width<=860px){.lims-proto .app{grid-template-columns:64px 1fr}.lims-proto .brand h1,.lims-proto .brand p,.lims-proto .nav-item span,.lims-proto .nav-label,.lims-proto .side-foot,.lims-proto .nav-item .pill{display:none}.lims-proto .nav-item{justify-content:center}.lims-proto .f-grid{grid-template-columns:1fr}}.lims-proto .app{height:100%}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{box-shadow:0 0 0 5px #4b36c424}50%{box-shadow:0 0 0 8px #4b36c412}}@keyframes lpulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}
