:root{--red:#E5484D;--red-bg:#FEF3F2;--red-bd:#FECDCA;--red-fg:#B42318;--amber:#F59E0B;--amber-bg:#FFFAEB;--amber-bd:#FEDF89;--amber-fg:#B54708;--green:#12A150;--green-bg:#ECFDF3;--green-bd:#ABEFC6;--green-fg:#067647;--bg:#F3F5F9;--surface:#FFFFFF;--surface-2:#F8FAFC;--line:#EEF2F6;--line-2:#E2E8F0;--text:#0F172A;--text-2:#334155;--muted:#64748B;--faint:#94A3B8;--shadow:0 1px 2px rgba(15,23,42,.04),0 6px 20px rgba(15,23,42,.05);--fs:14px;--pad:18px}[data-theme=dark]{--bg:#0B0E13;--surface:#12161D;--surface-2:#171C24;--line:#1C222B;--line-2:#252D38;--text:#E6E9EE;--text-2:#C5CCD6;--muted:#8B95A5;--faint:#5D6878;--red-bg:rgba(229,72,77,.12);--red-bd:rgba(229,72,77,.3);--red-fg:#FDA29B;--amber-bg:rgba(245,158,11,.12);--amber-bd:rgba(245,158,11,.3);--amber-fg:#FEC84B;--green-bg:rgba(18,161,80,.12);--green-bd:rgba(18,161,80,.3);--green-fg:#75E0A7;--shadow:none}[data-font=sm]{--fs:13px}[data-font=lg]{--fs:15.5px}[data-density=compact]{--pad:12px}*{box-sizing:border-box;margin:0;padding:0}body,html{background:var(--bg)}body{font-family:Inter,Segoe UI,system-ui,sans-serif;font-size:var(--fs);color:var(--text);font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.muted{color:var(--muted)}.small{font-size:.88em}.faint{color:var(--faint)}.shell{display:flex;min-height:100vh;background:linear-gradient(to right,var(--surface) 236px,var(--bg) 236px);color:var(--text);font-size:var(--fs)}.side{width:236px;flex:none;background:var(--surface);border-right:1px solid var(--line-2);padding:20px 14px;color:var(--text-2);position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{gap:10px;padding:0 8px 22px}.brand,.mark{display:flex;align-items:center}.mark{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,#2563EB,#7C3AED);color:#fff;justify-content:center;font-weight:700;font-size:13px}.brand b{display:block;color:var(--text);font-size:14.5px;font-weight:600}.brand span{font-size:12px;color:var(--muted)}.nv{display:flex;align-items:center;gap:11px;padding:7px 10px;border-radius:9px;font-weight:500;margin-bottom:2px;cursor:pointer;width:100%;background:none;border:0;text-align:left}.nv.on,.nv:hover{background:var(--surface-2)}.nv.on{color:var(--text);font-weight:600}.chip{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex:none;color:var(--c,var(--text-2));background:color-mix(in srgb,var(--c,var(--text-2)) 13%,transparent)}.cnt{font-size:11.5px;font-weight:600;background:var(--red);color:#fff;border-radius:999px;padding:1px 7px}.chev,.cnt{margin-left:auto}.chev{color:var(--faint);display:flex;transition:transform .15s}.cnt+.chev{margin-left:6px}.nv.open .chev{transform:rotate(90deg)}.subnav{margin:2px 0 8px 33px;border-left:2px solid var(--line-2)}.subnav a{display:block;padding:6px 12px;font-size:.95em;color:var(--muted)}.subnav a.on{color:var(--text);font-weight:600;border-left:2px solid var(--c);margin-left:-2px}.grp{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.6px;padding:18px 10px 6px}.dim{opacity:.45;pointer-events:none}.main{flex:1 1;padding:24px 30px 40px;min-width:0}.top{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.top h1{font-size:22px;font-weight:600;letter-spacing:-.4px}.top .d{color:var(--muted);font-size:.95em}.top .right{margin-left:auto;display:flex;gap:10px}.btn,.top .right{align-items:center}.btn{height:34px;padding:0 13px;border-radius:9px;font-size:.93em;font-weight:600;border:1px solid var(--line-2);background:var(--surface);color:var(--text-2);display:inline-flex;gap:7px;white-space:nowrap;cursor:pointer}.btn:hover{border-color:var(--faint)}.btn.pri{background:var(--text);border-color:var(--text);color:var(--surface)}.btn.red{background:var(--red);border-color:var(--red);color:#fff}.btn.sm{height:28px;padding:0 10px;font-size:.88em}.btn.wide{width:100%;justify-content:center;height:40px}.card{background:var(--surface);border-radius:16px;padding:var(--pad) 20px;box-shadow:var(--shadow);position:relative;overflow:hidden;border:1px solid var(--line)}.card.mod:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c)}.card h3{font-size:1em;font-weight:600;display:flex;align-items:center;gap:9px;margin-bottom:10px}.card h3 .meta{margin-left:auto;font-weight:500;font-size:.9em;color:var(--muted)}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:20px;gap:20px}.span2{grid-column:span 2}.alert{background:var(--red-bg);color:var(--red-fg);border:1px solid var(--red-bd);border-radius:10px}.alert,.ok{padding:10px 12px;font-size:.93em;margin-bottom:12px}.ok{background:var(--green-bg);color:var(--green-fg);border:1px solid var(--green-bd);border-radius:10px}.badge{display:inline-flex;align-items:center;gap:6px;font-size:calc(var(--fs) * .86);font-weight:500;padding:2px 9px 2px 7px;border-radius:999px;border:1px solid;white-space:nowrap}.badge .sym{font-size:.95em;line-height:1}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.b-red{color:var(--red-fg);background:var(--red-bg);border-color:var(--red-bd)}.b-amber{color:var(--amber-fg);background:var(--amber-bg);border-color:var(--amber-bd)}.b-green{color:var(--green-fg);background:var(--green-bg);border-color:var(--green-bd)}.b-gray{color:var(--muted);background:var(--surface-2);border-color:var(--line-2)}.tagm{font-size:.82em;font-weight:600;padding:2px 8px;border-radius:6px;color:var(--c);background:color-mix(in srgb,var(--c) 11%,transparent);white-space:nowrap}.hero{border-radius:18px;padding:24px 28px;display:grid;grid-template-columns:1.1fr 1.4fr auto;grid-gap:36px;gap:36px;align-items:center;margin-bottom:20px;border:1px solid}.hero.bad{background:linear-gradient(110deg,var(--red-bg) 0,var(--surface) 60%);border-color:var(--red-bd)}.hero.good{background:linear-gradient(110deg,var(--green-bg) 0,var(--surface) 60%);border-color:var(--green-bd)}.hero .k{font-size:.9em;text-transform:uppercase;letter-spacing:.6px;font-weight:600}.hero.bad .big,.hero.bad .k{color:var(--red-fg)}.hero.good .big,.hero.good .k{color:var(--green-fg)}.hero .big{font-size:34px;font-weight:700;letter-spacing:-.8px;margin:6px 0 4px}.hero .s{color:var(--text-2)}.seg{height:12px;border-radius:999px;overflow:hidden;gap:3px;margin:10px 0}.lg,.seg{display:flex}.lg{gap:16px;font-size:.9em;color:var(--text-2);flex-wrap:wrap}.lg i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}.hrow{justify-content:space-between;font-weight:500}.hrow,.task{display:flex}.task{align-items:center;gap:12px;padding:11px 12px;border-radius:12px;background:var(--surface-2);margin-bottom:8px;border-left:3px solid var(--s)}.task .tm{font-size:.86em;color:var(--muted);margin-top:2px}.task .r{margin-left:auto;display:flex;align-items:center;gap:10px}.qa{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.qa a{border-radius:12px;padding:14px 12px;display:flex;flex-direction:column;gap:10px;font-weight:600;background:color-mix(in srgb,var(--c) 8%,var(--surface))}.qa a span{width:32px;height:32px;border-radius:9px;background:var(--c);color:#fff;justify-content:center}.qa a span,.rowl{display:flex;align-items:center}.rowl{gap:10px;padding:9px 0;border-top:1px solid var(--line)}.rowl:first-of-type{border-top:0}.rowl .r{margin-left:auto;font-weight:600}.bar{background:var(--line);margin-top:7px}.bar,.bar>div{height:6px;border-radius:99px}.legend{display:flex;gap:20px;align-items:center;margin-top:18px;font-size:.86em;color:var(--muted);flex-wrap:wrap}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-size:.86em;color:var(--muted);font-weight:600;padding:10px 14px;border-bottom:1px solid var(--line-2);background:var(--surface-2);white-space:nowrap}.tbl td{padding:11px 14px;border-bottom:1px solid var(--line)}.tbl tr:last-child td{border-bottom:0}.tbl a.rowlink{font-weight:600}.tbl a.rowlink:hover{text-decoration:underline}.pills{display:flex;gap:8px;flex-wrap:wrap}.pills a{padding:6px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line-2);font-size:.9em;color:var(--text-2)}.pills a.on{background:var(--text);color:var(--surface);border-color:var(--text)}.search{height:38px;border:1px solid var(--line-2);border-radius:10px;background:var(--surface);padding:0 12px;width:280px}.form{display:grid;grid-gap:14px;gap:14px;max-width:560px}.form label,.login label{display:grid;grid-gap:6px;gap:6px;font-size:.92em;font-weight:500;color:var(--text-2)}.form input,.form select,.form textarea,.login input{height:40px;padding:0 12px}.form input,.form select,.form textarea,.login input,.login textarea{border:1px solid var(--line-2);border-radius:10px;background:var(--surface)}.login textarea{padding:10px 12px;color:var(--text);resize:vertical;word-break:break-all}.form textarea{height:90px;padding:10px 12px}.form .two{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.kv{display:grid;grid-template-columns:160px 1fr;grid-row-gap:10px;row-gap:10px}.kv span{color:var(--muted)}.tl>div{padding:8px 0 8px 14px;border-left:2px solid var(--line-2)}.seg2{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}.seg2 label{cursor:pointer}.seg2 input{display:none}.seg2 span{display:block;padding:7px 14px;border-radius:8px;font-weight:500;color:var(--muted)}.seg2 input:checked+span{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px rgba(15,23,42,.1)}.sw{display:flex;gap:10px;flex-wrap:wrap}.sw label{cursor:pointer}.sw input{display:none}.sw span{display:block;width:26px;height:26px;border-radius:50%}.sw input:checked+span{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--text)}.chk{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line);cursor:pointer}.chk input{width:18px;height:18px;accent-color:var(--text)}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#EEF4FF,#F3F5F9 50%,#F5F0FF)}.login-card{width:380px;background:#fff;border-radius:20px;padding:32px;box-shadow:0 20px 60px rgba(15,23,42,.12);display:grid;grid-gap:14px;gap:14px;color:#0F172A}.login-card h1{font-size:22px}.login-card .brand{padding:0}.card h2{font-size:1.05em;font-weight:650;display:flex;align-items:center;gap:9px;margin-bottom:12px}.card hr{border:0;border-top:1px solid var(--line);margin:14px 0}.btn.danger{color:var(--red-fg);border-color:var(--red-bd);background:var(--red-bg)}.btn:disabled{opacity:.55;cursor:default}.once{border:1px dashed var(--amber-bd);background:var(--amber-bg);border-radius:12px;padding:12px;display:grid;grid-gap:8px;gap:8px}.once code{font-size:1.15em;font-weight:700;letter-spacing:.5px}.codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:6px;gap:6px}.codes code{background:var(--surface);border-radius:6px;padding:4px 8px;font-size:1em}.steps{padding-left:18px;display:grid;grid-gap:4px;gap:4px;margin-bottom:6px}.pills .chk{border:1px solid var(--line-2);border-radius:999px;padding:6px 12px;font-size:.9em}.form .three{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px}.form.wide{max-width:none}.form textarea.tall{height:180px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.sec{border-top:1px solid var(--line);padding:14px 0}.sec:first-child{border-top:0;padding-top:0}.sec h4{font-size:.98em;font-weight:650;margin-bottom:6px;display:flex;gap:8px;align-items:baseline}.sec .body{white-space:pre-wrap;line-height:1.6;color:var(--text-2)}.need{color:var(--amber-fg);background:var(--amber-bg);border-radius:4px;padding:0 4px}.flow{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:.88em;color:var(--muted);margin:6px 0 14px}.flow b{color:var(--text);font-weight:600}.flow .on{color:var(--surface);background:var(--text);border-radius:999px;padding:2px 10px}.flow span:not(.on):not(.arr){padding:2px 10px;border:1px solid var(--line-2);border-radius:999px}.src{max-height:420px;overflow:auto;white-space:pre-wrap;font-size:.86em;background:var(--surface-2);border-radius:10px;padding:12px;color:var(--text-2)}.stat{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:14px;gap:14px;margin-bottom:18px}.stat>*{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow)}.stat .n{font-size:26px;font-weight:700;letter-spacing:-.5px}.stat .l{color:var(--muted);font-size:.9em}.stat .warn .n{color:var(--amber-fg)}.stat .bad .n{color:var(--red-fg)}.grp-blood{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-gap:8px;gap:8px}.grp-blood div{text-align:center;border:1px solid var(--line-2);border-radius:10px;padding:8px 4px}.grp-blood b{display:block;font-size:1.3em}.grp-blood span{color:var(--muted);font-size:.82em}.bt{font-weight:700;padding:1px 7px;border-radius:6px;background:var(--surface-2);border:1px solid var(--line-2);white-space:nowrap}@media (max-width:900px){.stat{grid-template-columns:1fr 1fr}.grp-blood{grid-template-columns:repeat(4,1fr)}.form .three{grid-template-columns:1fr}}.top>.pills:last-child,.top>.toolbar,.top>a.btn:last-child,.top>form:last-child{margin-left:auto}.tbl td.muted:first-child{white-space:nowrap}.form label.check,.login-card label.check{display:flex;flex-direction:row;gap:8px;align-items:flex-start;font-weight:400;font-size:.9em;color:var(--muted)}.form label.check input,.login-card label.check input{width:auto;margin-top:3px;flex:none}.idle-warn{position:fixed;right:18px;bottom:18px;z-index:50;background:var(--surface,#fff);border:1px solid var(--amber,#d97706);border-left-width:4px;border-radius:10px;padding:12px 14px;box-shadow:0 8px 24px rgba(0,0,0,.12);max-width:320px;font-size:.92em}.idle-warn b{display:block;margin-bottom:4px}.picker{display:grid;grid-gap:6px;gap:6px;max-height:320px;overflow:auto}.pick{display:flex!important;flex-direction:row!important;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line-2);border-radius:9px;font-weight:400!important;cursor:pointer}.pick.on{border-color:var(--m-bl,var(--text));background:var(--surface-2)}.pick input{width:auto!important;height:auto!important;margin:0}.pick .exp{margin-left:auto;font-size:.88em;color:var(--muted)}.tag-hint{font-size:.78em;font-weight:600;padding:1px 7px;border-radius:99px;background:var(--green-bg);color:var(--green-fg);border:1px solid var(--green-bd)}.app-ver{margin-top:auto;padding:14px 10px 4px;font-size:11.5px;line-height:1.5;color:var(--faint)}.app-ver b{color:var(--muted);font-weight:600;letter-spacing:.3px}.lm{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}.lm-left{flex:1 1 290px;max-width:370px;display:flex;flex-direction:column;gap:14px}.lm-right{flex:999 1 480px;min-width:0;display:flex;flex-direction:column;gap:12px}.lm-right>.alert,.lm-right>.ok{margin:0}.lm-card{display:flex;flex-direction:column;gap:12px}.lm-field{display:grid;grid-gap:6px;gap:6px}.lm-field>label,.lm-lbl{font-size:.9em;font-weight:600;color:var(--text-2)}.lm-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.lm-row>label{display:grid;grid-gap:6px;gap:6px;font-size:.9em;font-weight:500;color:var(--text-2)}.lm input:not(.lm-scan),.lm select,.lm-row input,.lm-row select{height:40px;border:1px solid var(--line-2);border-radius:9px;padding:0 10px;background:var(--surface);min-width:0}.lm-field select{width:100%}.lm-field .lm-row select{flex:1 1}.lm-seg{display:flex;gap:6px;background:var(--surface-2);padding:4px;border-radius:10px;border:1px solid var(--line)}.lm-seg button{flex:1 1;min-height:38px;border:0;border-radius:8px;font-weight:600;background:transparent;color:var(--muted);cursor:pointer}.lm-seg button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(15,23,42,.12)}.lm-seg button.on.k{color:#C2410C}.lm-pills{display:flex;flex-wrap:wrap;gap:6px}.lm-pills button{min-width:52px;min-height:40px;padding:0 12px;border-radius:9px;font-weight:600;border:1px solid var(--line-2);background:var(--surface);color:var(--text-2);cursor:pointer}.lm-pills button.on{border-color:#2563EB;background:#EFF6FF;color:#1D4ED8}.lm-scan{height:48px;border:2px solid #2563eb;border-radius:10px;padding:0 14px;font-size:18px;width:100%;outline:none;background:var(--surface)}.lm-scan:disabled{border-color:var(--line-2);background:var(--surface-2)}.btn.lm-blue{background:#2563EB;border-color:#2563EB;color:#fff}.btn.lm-orange{background:#EA580C;border-color:#EA580C;color:#fff}.btn.lm-del{color:var(--red-fg);border-color:var(--red-bd)}.lm-btn{height:40px}.lm-newco{display:grid;grid-gap:8px;gap:8px;padding:10px;border:1px dashed var(--line-2);border-radius:10px}.lm-newco label{display:grid;grid-gap:4px;gap:4px;font-size:.88em;font-weight:500}.lm-newco input{height:38px;border:1px solid var(--line-2);border-radius:8px;padding:0 10px}.lm-filled,.lm-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.lm-name{font-size:17px}.lm-tabs{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap;align-items:center}.lm-tabs button{min-height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);color:var(--text-2);font-size:.88em;cursor:pointer}.lm-tabs button.on{background:#EFF6FF;border-color:#2563EB;color:#1D4ED8;font-weight:600}.lm-gridbox{overflow-x:auto}.lm-grid{min-width:460px;display:grid;grid-template-columns:24px repeat(10,minmax(0,1fr));grid-gap:5px;gap:5px;align-items:center}.lm-hd{font-size:11.5px;color:var(--muted);font-weight:600;text-align:center}.lm-cell{aspect-ratio:1;min-height:36px;border-radius:7px;border:1.5px solid var(--line-2);background:var(--surface-2);padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;color:var(--text);font:inherit}span.lm-cell{cursor:default}.lm-cell b{font-size:10.5px;font-weight:600;line-height:1.1}.lm-cell i{font-style:normal;font-size:9px;font-weight:700;line-height:1.1}.lm-cell.has{background:#F1F5F9;border-color:#94A3B8}.lm-cell.out{background:#E0E7FF;border-color:#4F46E5}.lm-cell.out i{color:#4338CA}.lm-cell.in{background:#FEE2E2;border-color:#DC2626}.lm-cell.in i{color:#B91C1C}.lm-cell.ksk{background:#FFEDD5;border:2px dashed #ea580c}.lm-cell.ksk i{color:#C2410C}.lm-cell.cur{box-shadow:0 0 0 2.5px #2563EB}.lm-cell.sel{box-shadow:0 0 0 2.5px #EA580C}[data-theme=dark] .lm-cell.has{background:#1E293B}[data-theme=dark] .lm-cell b{color:#0F172A}[data-theme=dark] .lm-cell:not(.has) b{color:var(--text)}.lm-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--text-2)}.lm-legend span{display:flex;align-items:center;gap:6px}.lm-sw{width:14px;height:14px;border-radius:4px;display:inline-block;background:var(--surface-2);border:1.5px solid var(--line-2)}.lm-sw.cur{background:var(--surface);box-shadow:0 0 0 2px #2563EB}.lm-sw.has{background:#F1F5F9;border-color:#94A3B8}.lm-sw.in{background:#FEE2E2;border-color:#DC2626}.lm-sw.out{background:#E0E7FF;border-color:#4F46E5}.lm-sw.ksk{background:#FFEDD5;border:2px dashed #ea580c}.lm-dupin{color:#B91C1C;margin:0}.lm-dupout{color:#4338CA;margin:0}.lm-menu{border:1px solid #fdba74;background:#FFF7ED;border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:10px;color:#1F2937}.lm-find{display:grid;grid-gap:6px;gap:6px}.lm-res{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;padding:14px 0;border-top:1px solid var(--line)}.lm-resbody{flex:1 1 260px;min-width:0;display:flex;flex-direction:column;gap:6px}.lm-mini{display:grid;grid-template-columns:repeat(10,13px);grid-gap:2px;gap:2px;flex:none}.lm-mini span{width:13px;height:13px;border-radius:3px;background:var(--surface-2);border:1px solid var(--line-2)}.lm-mini span.f{background:#CBD5E1;border-color:#CBD5E1}.lm-mini span.h{background:#DC2626;border-color:#DC2626}.lm-loc{font-size:15px;font-weight:600}.lm-red{color:#DC2626}.mtop{display:none}@media (max-width:900px){.shell{display:block;background:var(--bg)}.mtop{gap:10px;position:-webkit-sticky;position:sticky;top:0;z-index:40;height:54px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--line-2)}.mtop,.mtop-btn{display:flex;align-items:center}.mtop-btn{width:42px;height:42px;border:0;border-radius:10px;background:var(--surface-2);color:var(--text);justify-content:center}.mtop-brand{display:flex;align-items:center;gap:8px;min-width:0}.mtop-brand b{display:block;font-size:14px;color:var(--text)}.mtop-brand small{display:block;font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60vw}.side{position:fixed;left:0;top:0;z-index:70;width:280px;max-width:86vw;transform:translateX(-105%);transition:transform .2s ease;box-shadow:0 0 40px rgba(15,23,42,.25)}.side.show{transform:none}.mback{position:fixed;inset:0;z-index:65;background:rgba(15,23,42,.4)}.main{padding:16px 16px 32px}.top h1{font-size:20px}.tbl{display:block;overflow-x:auto}}.lm-cam-on{min-height:44px}.lm-cam{display:grid;grid-gap:8px;gap:8px}.lm-cam-view{position:relative;border-radius:12px;overflow:hidden;background:#0F172A;aspect-ratio:4/3;max-height:42vh;width:100%;outline:4px solid transparent;transition:outline-color .15s}.lm-cam-view video{width:100%;height:100%;object-fit:cover;display:block}.lm-cam-view.ok{outline-color:#16A34A}.lm-cam-view.bad{outline-color:#DC2626}.lm-cam-aim{position:absolute;left:12%;right:12%;top:34%;bottom:34%;border:2px solid rgba(255,255,255,.85);border-radius:10px;box-shadow:0 0 0 999px rgba(15,23,42,.28);pointer-events:none}.lm-cam-view.ok .lm-cam-aim{border-color:#4ADE80}.lm-cam-view.bad .lm-cam-aim{border-color:#F87171}.lm-cam-top{position:absolute;left:8px;right:8px;top:8px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.lm-cam-btns{margin-left:auto;display:flex;gap:6px}.lm-cam-btns .btn{background:rgba(255,255,255,.92)}.lm-cam-st{font-size:12.5px;font-weight:600;padding:4px 10px;border-radius:999px;color:#fff;background:rgba(15,23,42,.7)}.lm-cam-st.ready{background:#2563EB}.lm-cam-st.wait{background:rgba(15,23,42,.75)}.lm-cam-last{position:absolute;left:8px;bottom:8px;font:600 18px/1.2 ui-monospace,monospace;color:#fff;background:rgba(15,23,42,.7);padding:4px 10px;border-radius:8px;max-width:calc(100% - 16px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lm-act{align-items:center}.lm-act>label{flex:0 0 auto}.lm-act select{flex:1 1 180px}@media (max-width:600px){.lm-left{max-width:none}.lm-grid{min-width:0;gap:3px;grid-template-columns:16px repeat(10,minmax(0,1fr))}.lm-cell{min-height:0;border-radius:5px}.lm-cell b{font-size:8.5px}.lm-cell i{font-size:7.5px}.lm-menu{position:fixed;left:0;right:0;bottom:0;z-index:60;max-height:75vh;overflow-y:auto;border-radius:16px 16px 0 0;border-width:1px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -8px 30px rgba(15,23,42,.25)}.lm-menu .btn,.lm-menu input,.lm-menu select{min-height:44px}.lm-act>*{flex:1 1 100%}.lm.cam-on .lm-left>.lm-card:last-child{order:-1}}.nv .ro{margin-left:auto;font-size:10.5px;font-weight:600;color:var(--amber-fg);background:var(--amber-bg);border:1px solid var(--amber-bd);border-radius:999px;padding:0 7px}.nv .ro+.cnt{margin-left:6px}.lic-note{background:#EFF6FF;border:1px solid #bfdbfe;color:#1E3A8A;border-radius:10px;padding:10px 14px;margin-bottom:16px;font-size:.93em;display:grid;grid-gap:2px;gap:2px}.lic-note.warn{background:var(--amber-bg);border-color:var(--amber-bd);color:var(--amber-fg)}[data-theme=dark] .lic-note:not(.warn){background:rgba(37,99,235,.12);border-color:rgba(37,99,235,.35);color:#BFDBFE}.ncc{min-height:100vh;background:var(--bg);display:flex;flex-direction:column}.ncc-top{display:flex;flex-wrap:wrap;gap:16px;align-items:center;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--line-2)}.ncc-top nav{display:flex;gap:14px}.ncc-top nav a{color:var(--text-2);font-weight:500}.ncc-top form{margin-left:auto;display:flex;gap:8px;align-items:center}.ncc-main{flex:1 1;padding:24px;max-width:1200px;width:100%;margin:0 auto;box-sizing:border-box}.ncc-foot{text-align:center;font-size:11.5px;color:var(--muted);padding:14px}.ncc-box{max-width:420px;margin:40px auto}.ncc-mods{border:1px solid var(--line-2);border-radius:10px;padding:10px 14px;display:grid;grid-gap:8px;gap:8px}.ncc-mods legend{font-size:.92em;font-weight:600;padding:0 6px}.ncc-pw{font-size:1.15em;letter-spacing:1px;background:var(--surface);padding:2px 8px;border-radius:6px}.ncc-lic{width:100%;font-family:monospace;font-size:12px;margin-top:6px;border:1px solid var(--line-2);border-radius:8px;padding:8px}.kho-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.kho-chips a{min-height:34px;padding:6px 12px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);color:var(--text-2);font-size:.9em;display:inline-flex;align-items:center}.kho-chips a.on{background:#EFF6FF;border-color:#2563EB;color:#1D4ED8;font-weight:600}.b-blue{color:#1E40AF;background:#EFF6FF;border-color:#BFDBFE}[data-theme=dark] .b-blue{color:#BFDBFE;background:rgba(37,99,235,.15);border-color:rgba(37,99,235,.4)}.fb-svg{width:100%;height:auto;display:block;font-family:inherit;font-size:12.5px}.fb-spine{stroke:var(--text-2);stroke-width:3}.fb-ar{fill:var(--text-2)}.fb-bone{stroke:var(--line-2);stroke-width:2}.fb-cat{font-weight:700;font-size:13.5px;fill:var(--text-2)}.fb-head rect{fill:rgba(220,38,38,.08);stroke:#DC2626;stroke-width:2}.fb-head text{fill:var(--text);font-size:13px}.fb-head text.b{fill:#DC2626;font-weight:700}.fb-box rect{stroke-width:1.25}.fb-box text{fill:var(--text)}.fb-box text.b{font-weight:600}.fb-box text.s{font-size:11px;fill:var(--muted)}.fb-box.root rect{fill:rgba(220,38,38,.12);stroke:#DC2626;stroke-width:2.5}.fb-box.root text{fill:#B91C1C}.fb-box.conf rect{fill:var(--surface);stroke:#DC2626;stroke-width:1.5}.fb-box.conf text.b{fill:#B91C1C}.fb-box.sus rect{fill:rgba(217,119,6,.1);stroke:#D97706}.fb-box.sus text{fill:#92400E}.fb-box.exc rect{fill:rgba(148,163,184,.12);stroke:var(--line-2)}.fb-box.exc text{fill:var(--faint);text-decoration:line-through}.fb-box.sel rect{stroke:#2563EB;stroke-width:3}.fb-box:hover rect{filter:brightness(.97)}[data-theme=dark] .fb-box.conf text.b,[data-theme=dark] .fb-box.root text{fill:#FCA5A5}[data-theme=dark] .fb-box.sus text{fill:#FCD34D}.fb-svg>g>text.s,.svg text.s{font-size:11px;fill:var(--muted)}.fb-list{display:none}.fb-grp{border:1px solid var(--line);border-radius:12px;margin-bottom:8px;overflow:hidden;background:var(--surface)}.fb-grp summary{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--surface-2);cursor:pointer;list-style:none}.fb-li{display:flex;gap:8px;align-items:flex-start;padding:9px 12px;border-top:1px solid var(--line);font-size:.95em;color:var(--text)}.fb-li i{width:10px;height:10px;border-radius:50%;flex:none;margin-top:5px;background:#D97706}.fb-li.root{font-weight:600;color:#B91C1C}.fb-li.confirmed i,.fb-li.root i{background:#DC2626}.fb-li.excluded{color:var(--faint);text-decoration:line-through}.fb-li.excluded i{background:var(--line-2)}.fb-li.d2{padding-left:28px}.fb-li.d3{padding-left:44px}.fb-li.d4{padding-left:60px}.fb-li.d5{padding-left:76px}.fb-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-2);margin-top:8px}.fb-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-2px;border:1.5px solid}.fb-legend i.root{background:rgba(220,38,38,.12);border:2.5px solid #dc2626}.fb-legend i.conf{border-color:#DC2626}.fb-legend i.sus{background:rgba(217,119,6,.1);border-color:#D97706}.fb-legend i.exc{background:rgba(148,163,184,.12);border-color:var(--line-2)}.fb-legend i.bar{border:1.5px dashed var(--text-2)}.q-steps{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 16px;position:-webkit-sticky;position:sticky;top:0;z-index:5;background:var(--bg);padding:6px 0}.q-steps a{font-size:12.5px;padding:4px 11px;border-radius:99px;background:var(--surface);border:1px solid var(--line-2);color:var(--muted)}.q-steps a.done{color:var(--green-fg);border-color:var(--green-bd);background:var(--green-bg)}.q-sec{scroll-margin-top:56px;margin-bottom:18px}.q-sec>h2{font-size:16px;margin-bottom:2px}.q-sec>.d{color:var(--muted);font-size:.9em;margin-bottom:10px}.q-tl{position:relative;padding-left:20px}.q-tl:before{content:"";position:absolute;left:6px;top:4px;bottom:4px;width:2px;background:var(--line-2)}.q-ev{position:relative;padding:6px 8px 8px;border-radius:8px}.q-ev:before{content:"";position:absolute;left:-19px;top:11px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2px solid var(--faint)}.q-ev.hot{background:var(--red-bg)}.q-ev.hot:before{background:#DC2626;border-color:#DC2626}.q-ev.warn{background:var(--amber-bg)}.q-ev.warn:before{border-color:#D97706}.q-ev .t{font-size:11.5px;color:var(--muted)}.q-ev .tag{font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:5px;margin-left:6px;background:var(--surface-2);color:var(--text-2)}.q-chk{display:flex;gap:8px;padding:7px 0;border-bottom:1px solid var(--line);align-items:flex-start}.q-chk b.q-ok{color:var(--green-fg);width:16px;flex:none}.q-chk b.q-no{color:#DC2626;width:16px;flex:none}.q-chk b.q-wn{color:#D97706;width:16px;flex:none}.q-why{display:grid;grid-gap:6px;gap:6px;margin:6px 0 12px}.q-why a,.q-why div{display:flex;gap:8px;align-items:flex-start;color:var(--text);padding:6px 8px;border-radius:8px;border:1px solid var(--line)}.q-why a.cur{border-color:#2563EB;background:rgba(37,99,235,.06)}.q-why .root{border-color:#FECACA;background:var(--red-bg)}.q-why small{flex:none;width:54px;color:var(--muted);font-weight:600;font-size:11.5px;padding-top:2px}.q-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);grid-gap:16px;gap:16px;align-items:start}.q-mx td,.q-mx th{text-align:center}.q-mx td:first-child,.q-mx th:first-child{text-align:left}.q-mx select{height:32px;min-width:52px;border:1px solid var(--line-2);border-radius:7px;background:var(--surface)}.q-str{font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;white-space:nowrap}.q-str.strong{background:var(--green-bg);color:var(--green-fg)}.q-str.medium{background:#DBEAFE;color:#1E40AF}.q-str.weak{background:var(--amber-bg);color:var(--amber-fg)}.q-heat{display:grid;grid-template-columns:28px repeat(5,1fr);grid-gap:4px;gap:4px;max-width:420px;font-size:12px}.q-heat span{aspect-ratio:1.6;display:flex;align-items:center;justify-content:center;border-radius:6px;font-weight:700}.q-heat .h{background:none;color:var(--muted);font-weight:600;aspect-ratio:auto}.q-heat .l1{background:var(--green-bg);color:var(--green-fg)}.q-heat .l2{background:var(--amber-bg);color:var(--amber-fg)}.q-heat .l3{background:var(--red-bg);color:var(--red-fg)}.q-heat .l4{background:#DC2626;color:#fff}.q-bar{height:10px;border-radius:5px;background:#2563EB;display:inline-block;vertical-align:middle}@media (max-width:900px){.q-grid{grid-template-columns:1fr}}@media (max-width:600px){.fb-svg{display:none}.fb-list{display:block}}.q-page .btn.pri,.q-page .pills a.on{background:#2563EB;border-color:#2563EB;color:#fff}@media (max-width:600px){.tbl.qc{display:block;overflow:visible}.tbl.qc thead{display:none}.tbl.qc tbody,.tbl.qc tr{display:block}.tbl.qc tr{padding:10px 12px;border-bottom:1px solid var(--line)}.tbl.qc td{display:flex;gap:10px;padding:3px 0;border:0}.tbl.qc td[data-l]:before{content:attr(data-l);flex:none;width:92px;color:var(--muted);font-size:.85em;padding-top:2px}.tbl.qc td.muted:before{content:none}}.q-staff{border:1px solid var(--line);border-radius:10px;padding:8px 12px 12px}.q-staff legend{font-size:.88em;color:var(--muted);padding:0 4px}.q-staff .chk{display:inline-flex;gap:6px;align-items:center;font-weight:400}.q-staff .chk input{height:auto;width:auto}.q-more>summary{list-style:none;display:inline-flex;align-items:center;cursor:pointer}.q-more>summary::-webkit-details-marker{display:none}.q-more[open]{flex-basis:100%}@media (max-width:600px){.q-page .kv{grid-template-columns:1fr;row-gap:2px}.q-page .kv dd{margin-bottom:8px}}.q-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:6px 0}.q-row input:not([type=checkbox]),.q-row select{flex:1 1 140px;min-width:0;height:38px;border:1px solid var(--line-2);border-radius:9px;padding:0 10px;background:var(--surface);color:var(--text)}.q-row .check{display:inline-flex;gap:6px;font-size:.9em;color:var(--muted)}@media (max-width:900px){.q-steps{position:static}}.upd-note{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:60;display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--surface);border:1px solid #bfdbfe;box-shadow:0 8px 24px rgba(15,23,42,.18);border-radius:12px;padding:10px 14px;width:min(440px,calc(100vw - 32px))}