.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background-image:linear-gradient(rgb(7 29 59/.58),rgb(7 29 59/.74)),url(/login-bg.png);background-size:cover;background-position:50%;background-repeat:no-repeat}.login-card{border-radius:var(--radius-lg);padding:38px 34px 30px;width:100%;max-width:420px;position:relative}.login-lang{position:absolute;top:18px;right:18px;color:var(--ink-2);font-size:var(--text-xs);font-weight:600;border-radius:var(--radius-pill);padding:5px 12px;line-height:1.4}.login-head{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:22px}.login-head h1{font-size:var(--text-2xl);margin:16px 0 4px;color:var(--ink);font-weight:700;letter-spacing:-.01em}.login-head .sub{color:var(--muted);font-size:var(--text-sm);margin:0}.login-card .field input{height:48px;border-radius:var(--radius-field);padding:0 14px;font-size:var(--text-base)}.login-card .btn.block{height:48px;margin-top:4px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:13px}.field label{font-size:var(--text-sm);font-weight:500;color:var(--ink-2)}.field .gp-select,.field input,.field select{padding:10px 12px;border-radius:var(--radius-field);color:var(--ink-2);font-size:var(--text-base)}.field input::placeholder{color:var(--placeholder)}.field input:disabled{opacity:.6;cursor:not-allowed}.field .fieldnote{font-size:var(--text-xs);color:var(--muted)}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}@media (max-width:700px){.grid2{grid-template-columns:1fr}}.hint{font-size:var(--text-xs);color:var(--muted);margin-top:16px;line-height:1.9;border-top:1px solid var(--line);padding-top:13px}.hint code{background:var(--brand-soft);padding:1px 6px;border-radius:5px;color:var(--brand-dark);font-weight:600;font-family:var(--font-num)}.err{background:var(--red-soft);color:var(--red);box-shadow:inset 0 0 0 1px var(--red-line);border-radius:var(--radius-field);padding:9px 12px;font-weight:500;margin-bottom:12px}.btn,.err{font-size:var(--text-sm)}.btn{display:inline-flex;align-items:center;gap:7px;border-radius:var(--radius-pill);color:var(--ink);padding:9px 16px;font-weight:600}.btn.primary{color:#fff}.btn.ok{color:var(--green)}.btn.danger{color:var(--red)}.btn.sm{padding:6px 13px;font-size:var(--text-xs)}.btn.block{display:flex;width:100%;justify-content:center}.btn:disabled{opacity:.55;cursor:not-allowed}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-field);color:var(--brand)}.iconbtn.danger{color:var(--red)}.iconbtn.ok{color:var(--green)}.topbar{display:flex;align-items:center;gap:8px;height:56px;padding:0 14px 0 8px;color:var(--ink);position:-webkit-sticky;position:sticky;top:0;z-index:20;background:var(--canvas)}.topbar .hamb{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:none;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-2)}.topbar .hamb:hover{background:var(--line-soft)}.topbar .topsearch{flex:1 1;display:flex;justify-content:center;padding:0 12px;min-width:0}.topbar .topsearch .box{position:relative;width:100%;max-width:440px;display:flex;align-items:center}.topbar .topsearch svg{position:absolute;left:14px;color:var(--placeholder);pointer-events:none;z-index:1}.topbar .topsearch input{width:100%;height:38px;border-radius:var(--radius-pill);padding:0 16px 0 40px;font-size:var(--text-sm);color:var(--ink-2)}.topbar .topsearch input::placeholder{color:var(--placeholder)}.topbar .topright{margin-left:auto;display:flex;align-items:center;gap:6px;flex:none}.topbar .conn{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-xs);color:var(--muted);white-space:nowrap}.topbar .conn i{width:7px;height:7px;border-radius:50%;background:var(--grey-2)}.topbar .conn.up i{background:var(--green);box-shadow:0 0 0 3px var(--green-soft)}.topbar .bell{position:relative;display:inline-flex;color:var(--ink-2)}.topbar .bell .dot{position:absolute;top:-2px;right:-2px;width:8px;height:8px;border-radius:50%;background:var(--red);border:1.5px solid var(--canvas)}.topbar .bellbtn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;background:transparent;border:0;color:var(--ink-2);border-radius:var(--radius-pill)}.topbar .bellbtn:hover{background:var(--line-soft)}.topbar .userbtn{display:inline-flex;align-items:center;gap:6px;background:transparent;border:0;border-radius:var(--radius-pill);padding:4px 6px 4px 4px;color:var(--ink-2)}.topbar .userbtn:hover{background:var(--line-soft)}.topbar .userbtn .uchev{color:var(--muted)}.topbar .avatar{width:34px;height:34px;border-radius:50%;background:var(--brand-soft);color:var(--brand-dark);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:700;flex:none}.topbar .langbtn{color:var(--ink-2);font-size:var(--text-xs);font-weight:600;letter-spacing:.02em;border-radius:var(--radius-pill);padding:5px 12px;line-height:1.4}@media (max-width:760px){.topbar .conn,.topbar .topsearch{display:none}}.menu-anchor{position:relative;display:inline-flex}.overlay{position:fixed;inset:0;z-index:30}.menu{position:absolute;top:calc(100% + 9px);right:0;z-index:31;border-radius:var(--radius-card);min-width:224px;overflow:hidden;color:var(--ink-2)}.menu .m-head{display:flex;align-items:center;gap:10px;padding:13px 14px;border-bottom:1px solid var(--line)}.menu .m-head .avatar{width:34px;height:34px;border-radius:50%;background:var(--brand-soft);color:var(--brand-dark);display:inline-flex;align-items:center;justify-content:center;font-weight:700}.menu .m-head b{display:block;font-size:var(--text-sm);color:var(--ink)}.menu .m-head span{font-size:var(--text-xs);color:var(--muted)}.menu .m-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:transparent;border:0;padding:11px 14px;font-size:var(--text-sm);color:var(--ink-2)}.menu .m-item:hover{background:var(--brand-soft)}.menu .m-item.danger,.menu .m-item.danger svg{color:var(--red)}.menu .m-lang{display:flex;gap:8px;align-items:center;padding:11px 14px;font-size:var(--text-xs);color:var(--muted);border-top:1px solid var(--line)}.menu .m-lang b{color:var(--ink);font-weight:700}.notif{min-width:328px}.notif .n-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--line)}.notif .n-head b{font-size:var(--text-sm);color:var(--ink)}.notif .n-head button{background:transparent;border:0;color:var(--brand);font-size:var(--text-xs);font-weight:600}.notif .n-list{max-height:340px;overflow-y:auto}.notif .n-item{display:flex;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line-soft)}.notif .n-item:last-child{border-bottom:0}.notif .n-item .ndot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex:none}.notif .n-item .ndot.info{background:var(--brand)}.notif .n-item .ndot.danger{background:var(--red)}.notif .n-item .ndot.warn{background:var(--orange)}.notif .n-item .ndot.ok{background:var(--green)}.notif .n-item .n-body{flex:1 1}.notif .n-item .n-body b{display:block;font-size:var(--text-xs);color:var(--ink)}.notif .n-item .n-body span{font-size:var(--text-xs);color:var(--muted)}.notif .n-item .n-time{font-size:var(--text-2xs);color:var(--muted);white-space:nowrap}.notif .n-empty{padding:26px;text-align:center;color:var(--muted);font-size:var(--text-xs)}.toggle{width:40px;height:22px;border-radius:var(--radius-pill);background:var(--color-ink-300);position:relative;border:0;transition:background .15s;flex:none}.toggle.on{background:var(--green)}.toggle .knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px rgb(18 24 31/.22)}.toggle.on .knob{left:20px}.layout{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 56px);transition:grid-template-columns .2s ease}.layout.rail{grid-template-columns:84px 1fr}nav.side{padding:10px 10px 20px;display:flex;flex-direction:column;gap:4px;position:-webkit-sticky;position:sticky;top:56px;height:calc(100vh - 56px);overflow-y:auto}.navitem{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;color:var(--ink-2);padding:9px 12px;border-radius:var(--radius-card);font-size:var(--text-sm);text-align:left;font-weight:500;white-space:nowrap;position:relative}.navitem svg{flex:none;color:var(--muted)}.navitem .navlabel{overflow:hidden;text-overflow:ellipsis}.navitem .navlabel-short{display:none}.navitem:hover{background:var(--line-soft);color:var(--ink)}.navitem:hover svg{color:var(--ink-2)}.navitem.on{font-weight:600}.navitem.on,.navitem.on svg{color:var(--brand-dark)}.navgroup-head .badge,.navitem .badge{margin-left:auto;background:var(--accent);color:var(--color-ink-900);font-size:var(--text-2xs);font-weight:700;border-radius:var(--radius-pill);min-width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}.navgroup{gap:2px}.navgroup,.navgroup-items{display:flex;flex-direction:column}.navgroup-items{gap:4px}.navgroup-items[hidden]{display:none}nav.side>.navgroup{margin-top:10px}.navgroup-head{display:flex;align-items:center;gap:6px;width:100%;border:0;background:transparent;color:var(--muted);padding:6px 12px;border-radius:var(--radius-card);font-size:var(--text-2xs);font-weight:700;text-align:left;white-space:nowrap;position:relative}.navgroup-head .navgroup-name{flex:1 1;overflow:hidden;text-overflow:ellipsis}.navgroup-head .navgroup-name-short{display:none}.navgroup-head:hover{background:var(--line-soft);color:var(--ink-2)}.navgroup-head.on{color:var(--brand-dark)}.navgroup-chev{flex:none;color:var(--muted);transition:transform .15s ease}.navgroup-head.on .navgroup-chev,.navgroup-head:hover .navgroup-chev{color:inherit}.navgroup.closed .navgroup-chev{transform:rotate(-90deg)}.layout.rail .navitem{flex-direction:column;gap:4px;padding:10px 4px}.layout.rail .navitem .navlabel{display:none}.layout.rail .navitem .navlabel-short{display:block;font-size:var(--text-2xs);font-weight:500;line-height:1.15;text-align:center;max-width:100%}.layout.rail .navitem .badge{position:absolute;top:6px;right:14px;margin:0}.layout.rail nav.side{padding-left:6px;padding-right:6px}.layout.rail .navgroup-head{justify-content:center;padding:6px 2px;gap:3px}.layout.rail .navgroup-head .navgroup-name{display:none}.layout.rail .navgroup-head .navgroup-name-short{display:block}.layout.rail .navgroup-head .badge{position:absolute;top:-4px;right:2px;margin:0}@media (max-width:820px){.layout,.layout.rail{grid-template-columns:72px 1fr}.layout .navitem{flex-direction:column;gap:4px;padding:10px 4px}.layout .navitem .navlabel{display:none}.layout .navitem .navlabel-short{display:block;font-size:var(--text-2xs);text-align:center}.layout .navitem .badge{position:absolute;top:6px;right:12px;margin:0}.layout nav.side{padding-left:5px;padding-right:5px}.layout .navgroup-head{justify-content:center;padding:6px 2px;gap:3px}.layout .navgroup-head .navgroup-name{display:none}.layout .navgroup-head .navgroup-name-short{display:block}.layout .navgroup-head .badge{position:absolute;top:-4px;right:0;margin:0}}main.view{padding:22px 24px;overflow-x:auto}.vh{display:flex;align-items:center;gap:10px;margin-bottom:18px;flex-wrap:wrap}.vh h2{margin:0;font-size:var(--text-xl);color:var(--ink);font-weight:700}.vh .vsub{color:var(--muted);font-size:var(--text-xs)}.vh .right{margin-left:auto;display:flex;gap:8px}.tiles{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px;margin-bottom:20px}@media (max-width:900px){.tiles{grid-template-columns:repeat(2,1fr)}}.tile{border-radius:var(--radius-card);padding:16px 18px;position:relative;overflow:hidden}.tile:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--tile-accent,var(--line))}.tile.c-gold{--tile-accent:var(--brand)}.tile.c-green{--tile-accent:var(--green)}.tile.c-amber{--tile-accent:var(--amber)}.tile.c-blue{--tile-accent:var(--brand-line)}.tile.c-red{--tile-accent:var(--red)}.tile .tv{font-size:var(--text-3xl);font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink);line-height:var(--leading-tight)}.tile .tl{font-size:var(--text-xs);color:var(--muted);font-weight:500;margin-top:2px}.tile.alert .tv{color:var(--red)}.tblwrap{border-radius:var(--radius-card);overflow:hidden}.tblscroll{overflow-x:auto}table.tbl{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.tbl thead th{text-align:left;font-size:var(--text-xs);color:var(--muted);font-weight:600;padding:13px 14px;border-bottom:1px solid var(--line);white-space:nowrap}.tbl tbody td{padding:13px 14px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.tbl tbody tr:last-child td{border-bottom:0}.tbl tbody tr:hover{background:rgb(255 255 255/.5)}.tbl tbody tr.on{background-color:var(--brand-soft);box-shadow:inset 3px 0 0 0 var(--brand)}.tbl tbody tr.on:hover{background-color:var(--brand-tint)}.tbl .primary-cell{color:var(--ink);font-weight:600}.rowbtns{display:flex;gap:6px;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;font-size:var(--text-2xs);font-weight:600;border-radius:var(--radius-pill);padding:3px 12px;white-space:nowrap}.pill.on{background:var(--green-soft);color:var(--green);box-shadow:inset 0 0 0 1px var(--green-line)}.pill.off{background:var(--line-soft);color:var(--muted);box-shadow:inset 0 0 0 1px var(--line)}.pill.warn{background:var(--orange-soft);color:var(--orange);box-shadow:inset 0 0 0 1px var(--orange-line)}.pill.dark{background:var(--pill-dark);color:#fff}.pill.red{background:var(--red-soft);color:var(--red);box-shadow:inset 0 0 0 1px var(--red-line)}.pill.mut{background:var(--canvas);box-shadow:inset 0 0 0 1px var(--line)}.idchip,.pill.mut{color:var(--muted)}.idchip{font-family:var(--font-num);font-size:var(--text-xs);font-weight:600}.empty{text-align:center;color:var(--muted);padding:30px 12px;font-size:var(--text-sm)}.formrow{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:16px}.card2{border-radius:var(--radius-card);padding:16px 18px;margin-bottom:18px}.tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}.tabs button{border:0;background:transparent;border-radius:var(--radius-pill);padding:7px 16px;font-size:var(--text-sm);font-weight:600;color:var(--muted)}.tabs button:hover{background:var(--line-soft);color:var(--ink-2)}.tabs button.on{background:var(--brand-soft);color:var(--brand-dark);box-shadow:inset 0 0 0 1px var(--brand-line)}.sevchip{display:inline-flex;align-items:center;gap:7px;font-size:var(--text-2xs);font-weight:700;border-radius:var(--radius-pill);padding:4px 12px;white-space:nowrap}.sevchip i{width:8px;height:8px;border-radius:50%;flex:none}.sevchip.red{background:var(--red-soft);color:var(--red);box-shadow:inset 0 0 0 1px var(--red-line)}.sevchip.red i{background:var(--red)}.sevchip.amber{background:var(--amber-soft);color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber-line)}.sevchip.amber i{background:var(--amber)}.wl-action{display:inline-flex;align-items:flex-start;gap:8px;border-radius:var(--radius-field);padding:8px 12px;font-size:var(--text-sm);font-weight:700;line-height:var(--leading-snug);max-width:380px}.wl-action svg{flex:none;margin-top:2px}.wl-action.red{background:var(--red-soft);color:var(--red);box-shadow:inset 0 0 0 1px var(--red-line)}.wl-action.amber{background:var(--amber-soft);color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber-line)}.wlform .field:last-of-type{margin-bottom:14px}.ovcard{margin-bottom:20px}.ovhead{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:10px}.ovhead svg{color:var(--muted);flex:none}.ovhead h3{margin:0;font-size:var(--text-base);color:var(--ink);font-weight:700}.ovhead .ovsub{color:var(--muted);font-size:var(--text-xs)}.ovempty{color:var(--muted);font-size:var(--text-sm);padding:6px 0 2px}.ovlist{list-style:none;margin:0;padding:0}.ovlist li{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 0;border-bottom:1px solid var(--line-soft)}.ovlist li:last-child{border-bottom:0}.ovlist .ovwho{flex:1 1;min-width:160px;display:flex;flex-direction:column}.ovlist .ovwho b{color:var(--ink);font-size:var(--text-sm)}.ovlist .ovtime,.ovlist .ovwho small{color:var(--muted);font-size:var(--text-xs)}.ovlist .ovlong,.ovlist .ovtime{white-space:nowrap}.ovlist .ovlong{color:var(--red);font-size:var(--text-xs);font-weight:700;min-width:108px;text-align:right}.sim{border-radius:var(--radius-card);padding:18px;margin-bottom:18px}.sim h3{margin:0 0 4px;font-size:var(--text-sm);color:var(--ink);font-weight:700}.sim .sub{margin:0 0 12px}.sim .sub,.simempty{color:var(--muted);font-size:var(--text-xs)}.simempty{padding:12px 0}.simgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:8px;gap:8px}.simrow{border-radius:var(--radius-field);padding:8px 10px;display:flex;align-items:center;gap:8px}.simrow .who{flex:1 1;font-size:var(--text-xs);overflow:hidden}.simrow .who b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}.simrow .who small{color:var(--muted)}.searchbar{position:relative;max-width:560px;margin-bottom:16px}.searchbar .si{position:absolute;left:15px;top:50%;transform:translateY(-50%);color:var(--placeholder);pointer-events:none;z-index:1}.searchbar input{width:100%;height:44px;border-radius:var(--radius-pill);padding:0 18px 0 44px;font-size:var(--text-sm);color:var(--ink-2)}.searchbar input::placeholder{color:var(--placeholder)}.fbar{position:relative;margin-bottom:14px}.fbar-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-height:44px;border-bottom:1px solid var(--line);padding-bottom:8px}.fbar-funnel{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;flex:none;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-2)}.fbar-funnel:hover{background:var(--line-soft)}.fbar-hint{background:transparent;border:0;color:var(--muted);font-size:var(--text-sm)}.fbar-hint:hover{color:var(--ink-2)}.fchip{display:inline-flex;align-items:center;gap:7px;color:#fff;border:0;border-radius:var(--radius-pill);padding:6px 8px 6px 13px;font-size:var(--text-xs);font-weight:500;max-width:280px}.fchip>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fchip-x{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;color:rgb(255 255 255/.75)}.fchip-x:hover{background:rgb(255 255 255/.16);color:#fff}.fbar-add,.fbar-clear{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--muted)}.fbar-add{width:28px;height:28px}.fbar-clear{width:32px;height:32px;margin-left:auto}.fbar-add:hover,.fbar-clear:hover{background:var(--line-soft);color:var(--ink-2)}.fmenu{position:absolute;left:0;top:100%;z-index:40;margin-top:4px;width:220px;max-height:320px;overflow-y:auto;border-radius:var(--radius-card);padding:4px}.fmenu button{display:block;width:100%;text-align:left;background:transparent;border:0;padding:9px 12px;border-radius:8px;font-size:var(--text-sm);font-weight:500;color:var(--ink)}.fmenu button:hover{background:var(--brand-soft)}.fpop{position:absolute;left:0;top:100%;z-index:40;margin-top:4px;width:280px;border-radius:var(--radius-card);padding:12px}.fpop-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.fpop-head b{font-size:var(--text-base);color:var(--ink)}.fpop-head button{display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;border:0;border-radius:50%;background:transparent;color:var(--muted)}.fpop-head button:hover{background:var(--line-soft)}.fpop-cap{font-size:var(--text-xs);color:var(--muted);margin-bottom:6px}.fpop-input{width:100%;height:40px;border-radius:var(--radius-field);padding:0 12px;font-size:var(--text-base);color:var(--ink-2)}.fpop-opts{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow-y:auto}.fpop-opts button{display:flex;align-items:center;justify-content:space-between;gap:8px;background:transparent;border:0;border-radius:8px;padding:8px 10px;font-size:var(--text-sm);color:var(--ink-2);text-align:left}.fpop-opts button:hover{background:var(--line-soft)}.fpop-opts button.sel,.fpop-opts button.sel svg{color:var(--brand-dark)}.fpop-foot{display:flex;justify-content:flex-end;margin-top:12px}.fpop-apply{height:34px;border:0;border-radius:var(--radius-pill);color:#fff;padding:0 18px;font-size:var(--text-sm);font-weight:600}.th-sort{display:inline-flex;align-items:center;gap:5px;background:transparent;border:0;padding:0;font:inherit;font-size:var(--text-xs);font-weight:600;color:var(--muted);cursor:pointer}.th-sort:hover{color:var(--ink-2)}.th-sort.active{color:var(--ink)}.th-sort svg{flex:none}.th-sort-neutral{color:var(--grey-2);opacity:.7}.note{border-radius:var(--radius-card);padding:11px 13px;font-size:var(--text-xs);color:var(--muted);margin-top:14px}.inline-reject{display:flex;gap:7px;margin-top:8px}.inline-reject input{flex:1 1;padding:7px 10px;border-radius:var(--radius-field);color:var(--ink-2);font-size:var(--text-xs)}#toasts{position:fixed;top:66px;right:18px;display:flex;flex-direction:column;gap:9px;z-index:70;max-width:330px}.toast{display:flex;gap:10px;align-items:flex-start;border-left:4px solid var(--brand);border-radius:var(--radius-card);padding:11px 13px;font-size:var(--text-xs);animation:slidein .18s ease}.toast.ok{border-left-color:var(--green)}.toast.danger{border-left-color:var(--red)}.toast.warn{border-left-color:var(--amber)}.toast .ic{flex:none;margin-top:1px;color:var(--brand)}.toast.ok .ic{color:var(--green)}.toast.danger .ic{color:var(--red)}.toast.warn .ic{color:var(--amber)}.toast b{display:block;color:var(--ink)}.toast span{color:var(--muted);font-size:var(--text-xs)}@keyframes slidein{0%{opacity:0;transform:translateX(14px)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.dw-host{display:flex;align-items:flex-start}.dw-main{flex:1 1 auto;min-width:0}.dw-panel{flex:none;width:0;overflow:hidden;transition:width .22s var(--e-soft)}.dw-panel.on{width:calc(var(--dw-w) + 18px)}.dw-inner{position:relative;width:var(--dw-w);margin-left:18px;border-radius:var(--radius-lg);padding:20px 22px 22px;opacity:0;transform:translateX(16px);transition:opacity .22s var(--e-soft),transform .22s var(--e-soft)}.dw-panel.on .dw-inner{opacity:1;transform:none}.dw-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px}.dw-head>div{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:3px}.dw-head>div:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:var(--radius-field)}.dw-head h3{margin:0;font-size:var(--text-lg);color:var(--ink);font-weight:700}.dw-sub{font-size:var(--text-xs);color:var(--muted)}.dw-foot{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.dw-back{display:none}@media (max-width:900px){.dw-back,.dw-host{display:block}.dw-back{position:fixed;inset:0;z-index:45;background-color:rgb(7 29 59/.42);opacity:0;pointer-events:none;transition:opacity .22s var(--e-soft)}.dw-back.on{opacity:1;pointer-events:auto}.dw-panel,.dw-panel.on{position:fixed;inset:0;z-index:46;width:auto;overflow-y:auto;padding:14px 10px 24px;pointer-events:none}.dw-panel{visibility:hidden;transition:visibility 0s linear .22s}.dw-panel.on{visibility:visible;transition:visibility 0s linear 0s}.dw-inner{width:auto;margin:0;padding:16px;transform:translateX(100%);pointer-events:auto}}@media print{.dw-host{display:block}.dw-panel,.dw-panel.on{width:auto;overflow:visible}.dw-inner{width:auto;margin:0;opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.dw-back,.dw-inner,.dw-panel{transition:none}.dw-inner{transform:none}}.cfm-sec{padding-top:14px;border-top:1px solid var(--line);margin-bottom:4px}.cfm-sec:first-of-type{border-top:0;padding-top:0}.cfm-sechead{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:10px}.cfm-sechead svg{color:var(--muted);flex:none}.cfm-sechead h4{margin:0;font-size:var(--text-base);color:var(--ink);font-weight:700}.cfm-hint{color:var(--muted);font-size:var(--text-xs);margin:0 0 10px;line-height:var(--leading-snug)}.cfm-empty{color:var(--muted);font-size:var(--text-sm);padding:10px 0 12px}.cfm-empty.warnbox{color:var(--red);background-color:var(--red-soft);box-shadow:inset 0 0 0 1px var(--red-line);border-radius:var(--radius-field);padding:11px 13px;font-weight:600}.cfm-form{display:block}.cfm-form .field:last-of-type{margin-bottom:14px}.cfm-list{list-style:none;margin:0 0 6px;padding:0;display:flex;flex-direction:column;gap:10px}.cfm-list li{border-radius:var(--radius-field);padding:11px 13px;background-color:var(--line-soft);box-shadow:inset 0 0 0 1px var(--line)}.cfm-row1{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:5px}.cfm-row1 b{color:var(--ink);font-size:var(--text-sm)}.cfm-row2{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:var(--text-xs);color:var(--muted)}.cfm-row2 b{color:var(--ink-2)}.cfm-geo{display:inline-flex;align-items:center;gap:4px}.cfm-geo svg{color:var(--muted)}.cfm-note{margin-top:7px;font-size:var(--text-xs);color:var(--ink-2);border-left:3px solid var(--brand-line);padding-left:9px;line-height:var(--leading-snug)}.cfm-ok{display:inline-flex;flex-direction:column;gap:3px;align-items:flex-start}.cfm-ok small{color:var(--muted);font-size:var(--text-2xs)}.anom-banner,.cfm-banner{display:flex;align-items:flex-start;gap:11px;border-radius:var(--radius-card);padding:13px 15px;margin-bottom:18px}.anom-banner>div,.cfm-banner>div{display:flex;flex-direction:column;gap:2px}.anom-banner b,.cfm-banner b{display:block;font-size:var(--text-sm)}.anom-banner span,.cfm-banner span{font-size:var(--text-xs)}.anom-banner svg,.cfm-banner svg{flex:none;margin-top:1px}.anom-banner.bad,.cfm-banner.bad{background-color:var(--red-soft);color:var(--red);box-shadow:inset 0 0 0 1px var(--red-line)}.anom-banner.good,.cfm-banner.good{background-color:var(--green-soft);color:var(--green);box-shadow:inset 0 0 0 1px var(--green-line)}.anom-banner.bad span,.anom-banner.good span,.cfm-banner.bad span,.cfm-banner.good span{color:var(--ink-2)}.chiprow{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.chiprow button{border-radius:var(--radius-pill);padding:7px 16px;font-size:var(--text-sm);font-weight:600;color:var(--ink-2)}.chiprow button.on{color:#fff}.prg{display:inline-flex;align-items:center;gap:9px;min-width:130px}.prg-bar{flex:1 1;height:7px;background-color:var(--line);overflow:hidden;min-width:60px}.prg-bar,.prg-fill{border-radius:var(--radius-pill)}.prg-fill{display:block;height:100%;background-color:var(--amber)}.prg-fill.full{background-color:var(--green)}.prg-num{font-size:var(--text-xs);color:var(--ink-2);font-weight:600;white-space:nowrap}.runcard{margin-bottom:18px}.runhead{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:10px}.runhead svg{color:var(--muted);flex:none}.runhead h3{margin:0;font-size:var(--text-base);color:var(--ink);font-weight:700}.runsub{display:inline-flex;gap:5px}.runline,.runsub{align-items:center;color:var(--muted);font-size:var(--text-xs)}.runline{display:flex;gap:14px;flex-wrap:wrap}.runline .prg{min-width:190px}.runwalked{color:var(--ink-2)}.runmissing{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}.runmissing b{font-size:var(--text-xs);color:var(--red)}.misschip{display:inline-flex;align-items:center;border-radius:var(--radius-pill);padding:4px 12px;font-size:var(--text-2xs);font-weight:600;background-color:var(--red-soft);color:var(--red);box-shadow:inset 0 0 0 1px var(--red-line)}.inc-box{border-radius:var(--radius-card);padding:13px 15px;margin-bottom:16px}.inc-box.has{background-color:var(--red-soft);box-shadow:inset 0 0 0 1px var(--red-line)}.inc-box.none{background-color:var(--green-soft);box-shadow:inset 0 0 0 1px var(--green-line)}.inc-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:8px}.inc-head h4{margin:0;font-size:var(--text-base);font-weight:700;color:var(--ink)}.inc-box.has .inc-head svg{color:var(--red)}.inc-box.none .inc-head svg,.inc-empty{color:var(--green)}.inc-empty{font-size:var(--text-sm);font-weight:600}.inc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}.inc-list li{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}.inc-at{flex:none;min-width:130px;font-size:var(--text-xs);color:var(--muted);font-weight:600}.inc-text{flex:1 1;min-width:200px;font-size:var(--text-sm);font-weight:600;color:var(--ink);line-height:var(--leading-snug);display:flex;flex-direction:column;gap:2px}.inc-text small{font-size:var(--text-2xs);font-weight:400;color:var(--muted)}.sc-list{list-style:none;margin:0;padding:0}.sc-list li{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--line-soft)}.sc-list li:last-child{border-bottom:0}.sc-time{flex:none;width:54px;font-size:var(--text-xs);color:var(--muted);font-weight:600;padding-top:2px}.sc-body{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:5px}.sc-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.sc-head b{font-family:var(--font-num);font-size:var(--text-xs);color:var(--ink)}.sc-head>span:not([class]){font-size:var(--text-sm);color:var(--ink-2);font-weight:600}.sc-skip{font-size:var(--text-xs);background-color:var(--amber-soft);box-shadow:inset 0 0 0 1px var(--amber-line);border-radius:var(--radius-field);padding:7px 11px;line-height:var(--leading-snug)}.sc-skip,.sc-skip b{color:var(--amber)}.sc-incident{display:flex;align-items:flex-start;gap:8px;font-size:var(--text-sm);font-weight:700;color:var(--red);background-color:var(--red-soft);box-shadow:inset 0 0 0 1px var(--red-line);border-radius:var(--radius-field);padding:9px 12px;line-height:var(--leading-snug)}.sc-incident svg{flex:none;margin-top:2px}.sc-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:var(--text-xs);color:var(--muted)}.sc-meta span{display:inline-flex;align-items:center;gap:4px}.sc-meta a{color:var(--brand);text-decoration:none;font-weight:600}.sc-meta a:hover{text-decoration:underline}.skip-list{list-style:none;margin:0;padding:0}.skip-list li{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 0;border-bottom:1px solid var(--line-soft)}.skip-list li:last-child{border-bottom:0}.skip-who{display:flex;flex-direction:column;min-width:150px}.skip-who b{font-family:var(--font-num);font-size:var(--text-sm);color:var(--ink)}.skip-who small{font-size:var(--text-xs);color:var(--muted)}.skip-why{flex:1 1;min-width:200px;font-size:var(--text-xs);color:var(--ink-2)}.sum-bad{box-shadow:inset 0 0 0 1.5px var(--red-line)}.qr-slot{display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;border-radius:var(--radius-card);padding:22px 18px;margin-bottom:16px;background-color:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand-line)}.qr-slot svg{color:var(--brand-dark)}.qr-slot b{font-size:var(--text-sm);color:var(--ink)}.qr-slot span{font-size:var(--text-xs);color:var(--ink-2);max-width:420px}.qr-field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.qr-field label{font-size:var(--text-sm);font-weight:500;color:var(--ink-2)}.qr-field .fieldnote{font-size:var(--text-xs);color:var(--muted);line-height:var(--leading-snug)}.qr-val{display:flex;align-items:center;gap:8px;border-radius:var(--radius-field);padding:9px 9px 9px 13px;background-color:var(--line-soft);box-shadow:inset 0 0 0 1px var(--line)}.qr-val code{flex:1 1;min-width:0;overflow-x:auto;white-space:nowrap;font-family:var(--font-num);font-size:var(--text-sm);color:var(--ink)}.anom{margin-bottom:16px}.anom.hot.red{box-shadow:inset 0 0 0 1.5px var(--red-line)}.anom.hot.warn{box-shadow:inset 0 0 0 1.5px var(--amber-line)}.anom-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.anom-head h3{margin:0;font-size:var(--text-base);color:var(--ink);font-weight:700}.anom-rank{flex:none;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background-color:var(--pill-dark);color:#fff;font-size:var(--text-2xs);font-weight:700}.anom-why{flex-basis:100%;font-size:var(--text-xs);color:var(--muted);line-height:var(--leading-snug)}.anom-clear{display:flex;align-items:center;gap:7px;font-size:var(--text-sm);font-weight:600;color:var(--green)}.anom-clear svg{flex:none}.an-reasons{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px}.anom-list{list-style:none;margin:0;padding:0}.anom-list li{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line-soft)}.anom-list li:last-child{border-bottom:0}.an-who{flex:1 1;min-width:170px;display:flex;flex-direction:column;gap:2px}.an-who b{font-size:var(--text-sm);color:var(--ink)}.an-who small{font-size:var(--text-xs);color:var(--muted)}.an-mid{display:flex;align-items:center;gap:9px;flex-wrap:wrap;min-width:120px}.an-side{display:flex;flex-direction:column;gap:2px;text-align:right;min-width:150px;margin-left:auto}.an-side small,.an-side span{font-size:var(--text-xs);color:var(--muted)}.an-alarm{color:var(--red);font-weight:700}.an-act{display:flex;align-items:center;gap:7px}.an-act small{font-size:var(--text-xs);color:var(--muted);text-align:right}.exp{display:inline-flex;flex-direction:column;gap:4px;align-items:flex-start}.exp .num{font-size:var(--text-xs);color:var(--ink-2)}.areapick{display:flex;gap:7px;flex-wrap:wrap}.areachip{display:inline-flex;align-items:center;gap:5px;border:0;border-radius:var(--radius-pill);padding:6px 13px;font-size:var(--text-xs);font-weight:600;background-color:var(--line-soft);color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line)}.areachip:hover{color:var(--ink)}.areachip.on{background-color:var(--brand-soft);color:var(--brand-dark);box-shadow:inset 0 0 0 1px var(--brand-line)}.qr-img{width:220px;height:220px;image-rendering:pixelated;background:#FFFFFF;padding:8px;border-radius:var(--radius-field,10px);border:1px solid var(--line)}@media print{body *{visibility:hidden}#qr-print-area,#qr-print-area *{visibility:visible}#qr-print-area{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}}.apnote{border:1px solid var(--line);background:var(--brand-soft);border-radius:var(--radius-card);padding:12px 16px;margin-bottom:14px}.apnote b{display:block;font-size:var(--text-sm);color:var(--ink);margin-bottom:4px}.apnote p{margin:0;font-size:var(--text-xs);color:var(--ink-2);line-height:var(--leading-normal)}.apnote p.eg{color:var(--muted);margin-top:4px}.aphead{display:inline-flex;flex-direction:column;gap:1px}.aphead small{font-weight:400;color:var(--muted);font-size:var(--text-2xs)}.apname{display:flex;flex-direction:column;gap:1px}.apname b{font-family:var(--font-num);color:var(--ink)}.apname b,.apname small{font-size:var(--text-xs)}.apname small{color:var(--muted)}.apwhere{font-size:var(--text-xs);color:var(--ink-2)}.apguard{display:flex;flex-direction:column;gap:3px;align-items:flex-start}.apguard small{color:var(--muted);font-size:var(--text-2xs)}.apguard .pill{gap:4px}.apguard .pill,.aptally{display:inline-flex;align-items:center}.aptally{gap:5px;flex-wrap:wrap;justify-content:flex-end}.aptally small{color:var(--muted);font-size:var(--text-2xs)}.apdev{display:inline-flex;gap:4px;flex-wrap:wrap}.apedit{position:fixed;z-index:60;top:50%;left:50%;transform:translate(-50%,-50%);width:min(440px,calc(100vw - 32px));background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-float);padding:18px;display:flex;flex-direction:column;gap:14px}.apedit .e-head{display:flex;align-items:center;gap:10px}.apedit .e-head b{font-size:var(--text-base);color:var(--ink)}.apedit .e-head .btn{margin-left:auto}.apedit .e-foot{display:flex;gap:8px;justify-content:flex-end}.apedit .fhint{display:block;margin-top:5px;color:var(--muted);font-size:var(--text-2xs);line-height:var(--leading-snug)}.apcheck{gap:8px;font-size:var(--text-sm);color:var(--ink-2);cursor:pointer}.apcheck,.simpoints{display:flex;align-items:center}.simpoints{gap:6px;flex-wrap:wrap;margin-bottom:12px}.simpoints .pl{font-size:var(--text-xs);color:var(--muted);margin-right:2px}.ptbtn{display:inline-flex;flex-direction:column;gap:1px;align-items:flex-start;padding:6px 12px;border-radius:var(--radius-field);border:1px solid var(--line);background:var(--surface);cursor:pointer;font:inherit;text-align:left}.ptbtn b{font-family:var(--font-num);font-size:var(--text-xs);color:var(--ink)}.ptbtn small{font-size:var(--text-2xs);color:var(--muted)}.ptbtn.on{border-color:var(--brand);background:var(--brand-soft)}.ptbtn.on b,.ptbtn.on small{color:var(--brand-dark)}.simlast{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border-radius:var(--radius-field);margin-bottom:12px;border:1px solid var(--line)}.simlast b{font-size:var(--text-sm)}.simlast span{font-size:var(--text-xs);color:var(--ink-2)}.simlast.ok{background:var(--green-soft);border-color:var(--green-line)}.simlast.ok b{color:var(--green)}.simlast.wrong{background:var(--orange-soft);border-color:var(--orange-line)}.simlast.wrong b{color:var(--orange)}.simlast.bad{background:var(--red-soft);border-color:var(--red-line)}.simlast.bad b{color:var(--red)}.ac-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.ac-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:8px}.ac-list li{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:var(--radius-field);border:1px solid var(--line)}.ac-role{display:flex;flex-direction:column;gap:1px;flex:1 1;min-width:0}.ac-role b{font-size:var(--text-sm);color:var(--ink)}.ac-role small{font-size:var(--text-2xs);color:var(--muted)}.ac-grant{margin-bottom:10px}.ac-perms{display:flex;flex-wrap:wrap;gap:6px}.ac-perms .pill{font-family:var(--font-num);font-size:var(--text-2xs)}.pmwrap{overflow:auto;max-height:460px;margin-bottom:12px;border:1px solid var(--line);border-radius:var(--radius-card)}.pm{width:100%;border-collapse:collapse;font-size:var(--text-xs)}.pm thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:var(--surface);border-bottom:1px solid var(--line);padding:8px 6px;text-align:center;font-weight:600;color:var(--ink-2)}.pm thead th span{display:block;margin-bottom:3px}.pm th.pm-mod{text-align:left;min-width:190px}.pm tbody th.pm-mod{display:flex;align-items:center;gap:8px;padding:7px 10px;font-weight:500}.pm tbody th.pm-mod span{display:flex;flex-direction:column;gap:1px}.pm tbody th.pm-mod b{font-size:var(--text-xs);color:var(--ink);font-weight:600}.pm tbody th.pm-mod small{font-family:var(--font-num);font-size:var(--text-2xs);color:var(--muted)}.pm tbody tr{border-top:1px solid var(--line-soft)}.pm tbody td{text-align:center;padding:7px 6px;min-width:62px}.pm tr.pm-group th{background:var(--canvas);text-align:left;padding:6px 10px;font-size:var(--text-2xs);font-weight:700;color:var(--muted);letter-spacing:.02em;text-transform:none}.pm-na{color:var(--placeholder)}.pm-locked{background:var(--brand-soft)}