:root{--bg:#f4f7fb;--card:#fff;--text:#1d2330;--muted:#6b7280;--line:#e3e6eb;--brand-blue:#005afb;--brand-teal:#009dd0;--brand-green:#01c99b;--brand-navy:#0b1a3a;--brand-gradient:linear-gradient(90deg, var(--brand-blue), var(--brand-teal), var(--brand-green));--primary:#0050e6;--primary-hover:#003fb8;--primary-bg:#eaf1ff;--ok:#057a5c;--ok-bg:#e2f7f0;--err:#b42318;--err-bg:#fdecea;--warn-bg:#fff8e1;--run:#0077a8;--run-bg:#e3f4fa;color:var(--text);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}a{color:var(--run);text-decoration:none}a:hover{text-decoration:underline}h1{margin:0 0 16px;font-size:20px}h2{margin:0;font-size:18px}h3{margin:0 0 8px;font-size:15px}code{background:#f0f1f4;border-radius:3px;padding:1px 4px;font-size:12px}.muted{color:var(--muted)}.small{font-size:12px}.pre{white-space:pre-wrap}.spacer{flex:1}.center{justify-content:center;align-items:center;min-height:100vh;display:flex}header.top{background:var(--brand-navy);color:#fff;z-index:10;border-bottom:3px solid #0000;border-image:var(--brand-gradient) 1;align-items:center;gap:16px;padding:10px 20px;display:flex;position:sticky;top:0}header.top a{color:#d3dcef}header.top nav{gap:4px;display:flex}header.top nav a{border-radius:6px;padding:6px 10px}header.top nav a.active,header.top nav a:hover,header.top .menubtn.active,header.top .menubtn:hover{color:#fff;background:#ffffff1f;text-decoration:none}header.top nav a.active,header.top .menubtn.active{box-shadow:inset 0 -2px 0 var(--brand-green)}header.top .brand{color:#fff;white-space:nowrap;align-items:center;gap:8px;font-weight:700;display:flex}header.top .brand img{width:26px;height:26px}header.top .brand:hover{text-decoration:none}header.top .queue{color:#d3dcef;font-size:12px}header.top .muted{color:#9fb0cf;font-size:12px}header.top button.link{color:#d3dcef}header.top nav{align-items:center}.menu{position:relative}header.top .menubtn{font:inherit;color:#d3dcef;background:0 0;border:0;border-radius:6px;padding:6px 10px}.menulist{background:var(--card);border:1px solid var(--line);z-index:20;border-radius:8px;flex-direction:column;min-width:190px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 8px 24px #0b1a3a2e}header.top .menulist a{color:var(--text);border-radius:6px;padding:8px 12px}header.top .menulist a:hover{background:var(--primary-bg);color:var(--primary);text-decoration:none}header.top .menulist a.active{color:var(--primary);box-shadow:none;background:var(--primary-bg);font-weight:600}main{max-width:1500px;margin:0 auto;padding:16px 20px 40px}section.narrow{max-width:720px}section>.row:first-child{margin-bottom:8px}.card{background:var(--card);border:1px solid var(--line);border-radius:8px;margin:12px 0;padding:14px 16px}.card.login{flex-direction:column;gap:12px;width:360px;display:flex}details.card>summary{cursor:pointer;font-weight:600}details.card[open]>summary{margin-bottom:10px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}label{flex-direction:column;gap:4px;margin-bottom:10px;font-weight:500;display:flex}label.inline,.radios label,.bug label.row{flex-direction:row;align-items:center;margin:0;font-weight:400}fieldset.radios{border:1px solid var(--line);border-radius:6px;gap:20px;margin:0 0 12px;padding:8px 12px;display:flex}input[type=text],input[type=email],input[type=password],input[type=number],input[type=url],input[type=search],input:not([type]),textarea,select{font:inherit;background:#fff;border:1px solid #c9ced8;border-radius:6px;min-width:0;padding:7px 9px}textarea{flex:1;min-width:260px}.row input:not([type=checkbox]){flex:1;min-width:240px}button,.button{font:inherit;cursor:pointer;color:var(--text);background:#fff;border:1px solid #c9ced8;border-radius:6px;padding:7px 14px;display:inline-block}button:hover:not(:disabled),.button:hover{background:#f0f1f4;text-decoration:none}button:disabled{opacity:.5;cursor:not-allowed}button.primary,.button.primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}button.danger{border-color:var(--err);color:var(--err)}button.link{color:var(--run);background:0 0;border:0;padding:0}button.link.danger{color:var(--err);margin-left:8px}button.chip{border-radius:12px;padding:2px 9px;font-size:12px}button.chip.active{background:var(--brand-navy);color:#fff;border-color:var(--brand-navy)}.error,.ok,.warn,.banner{border-radius:6px;margin:8px 0;padding:8px 12px}.error{background:var(--err-bg);color:var(--err)}.error-text{color:var(--err)}.ok{background:var(--ok-bg);color:var(--ok)}.warn{background:var(--warn-bg);color:#7a5600}.warn ul{margin:4px 0 0;padding-left:20px}.banner.err{background:var(--err-bg);color:var(--err);border:1px solid #f5c2bd}.pill{color:#444;white-space:nowrap;background:#eceef2;border-radius:10px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-block}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.err{background:var(--err-bg);color:var(--err)}.pill.run{background:var(--run-bg);color:var(--run)}.pill.gate{background:var(--primary-bg);color:var(--primary)}.pill.wait{color:#555;background:#eceef2}.pill.sev{color:#a04a00;background:#fdf0e6}table.grid{border-collapse:collapse;background:#fff;width:100%}table.grid th,table.grid td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:6px 8px}table.grid th{color:#4b5563;background:#f7f8fa;font-size:12px;font-weight:600;position:sticky;top:0}table.grid td.num,table.grid th.num{text-align:right;white-space:nowrap}table.grid td.wrap{white-space:pre-wrap;word-break:break-word}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#fafbfc}.tablewrap{border:1px solid var(--line);border-radius:6px;max-height:560px;margin-top:8px;overflow:auto}table.xlsx td{white-space:pre-wrap;word-break:break-word;max-width:420px;font-size:12px}table.xlsx td.rn{color:var(--muted);text-align:right;background:#fafbfc}table.xlsx tr.head td{color:#555;background:#fbfaf5}table.xlsx td.res{text-align:center;font-weight:700}td.res.P{background:var(--ok-bg);color:var(--ok)}td.res.F{background:var(--err-bg);color:var(--err)}td.res.PE{background:var(--warn-bg);color:#7a5600}.phases{flex-wrap:wrap;align-items:stretch;gap:8px 0;margin:12px 0;display:flex}.phasewrap{align-items:center;display:flex}button.phase{border-width:2px;flex-direction:column;align-items:flex-start;gap:2px;min-width:190px;padding:8px 12px;display:flex}button.phase.sel{outline-offset:1px;outline:2px solid #1d2330}button.phase.ok{border-color:var(--ok);background:var(--ok-bg)}button.phase.err{border-color:var(--err);background:var(--err-bg)}button.phase.run{border-color:var(--run);background:var(--run-bg)}button.phase.wait{border-style:dashed;border-color:#9aa3b5}button.phase.none{margin-left:16px}.gate{color:var(--primary);padding:0 8px;font-size:11px;font-weight:700;position:relative}.gate:before{content:"🔒 "}.gatebox{border:2px solid var(--primary);background:var(--primary-bg)}.card .gatebox{border-radius:8px;margin-top:12px;padding:12px}.livelog{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px 12px}.logbox{color:#d6dbe6;resize:vertical;background:#12161f;border-radius:6px;height:300px;margin-top:8px;padding:8px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto}.ev{align-items:baseline;gap:8px;display:flex}.ev .time{color:#6f7a90;flex:none}.ev .tag{color:#f5c451;flex:none}.ev .who{color:#9fb3d9;flex:none;width:52px}.ev.leader .who{color:#d9a8f0}.ev .kind{color:#8bd3a5;text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:260px;overflow:hidden}.ev .msg{white-space:pre-wrap;word-break:break-word}.ev.chan .kind,.ev.loi .kind,.ev.tool_loi .kind{color:#ff8a80;font-weight:700}.ev.chan .msg,.ev.loi .msg{color:#ffb4ab}.ev.cost .msg,.ev.redmine .msg{color:#f5c451}.ev.text .msg{color:#fff}.dot{background:#c0392b;border-radius:50%;width:8px;height:8px;display:inline-block}.dot.on{background:#2ecc71}.stats{align-items:center;gap:8px;margin-top:10px;display:flex}button.stat{min-width:80px;font-weight:600}button.stat.P{color:var(--ok)}button.stat.F{color:var(--err)}button.stat.PE{color:#7a5600}button.stat.sel{outline:2px solid #1d2330}.bug{border:1px solid var(--line);border-radius:6px;margin:6px 0;padding:8px 10px}.bug.logged{background:#f6fbf7}.bug .title{flex:1}.bugbody{padding:6px 4px 0 26px}.bugbody p{margin:4px 0}.evidence{flex-wrap:wrap;gap:8px;display:flex}.evidence img{border:1px solid var(--line);border-radius:4px;max-width:320px;max-height:200px}ul.files{columns:2;margin:0;font-size:12px}.markdown{line-height:1.55;overflow-x:auto}.markdown table{border-collapse:collapse}.markdown th,.markdown td{border:1px solid var(--line);vertical-align:top;padding:4px 8px}.markdown pre{background:#f5f6f8;padding:8px;overflow:auto}@media (width<=1100px){header.top{flex-wrap:wrap}button.phase{min-width:150px}ul.files{columns:1}}header.top select.project{color:#fff;background:#ffffff1a;border-color:#ffffff40;max-width:240px}header.top select.project option{color:var(--text)}.banner.info{background:var(--run-bg);color:var(--run);border:1px solid #b8e0ef}tr.mine td:first-child{box-shadow:inset 3px 0 0 var(--primary)}td.nowrap{white-space:nowrap}.card ul.small,.ok ul.small,.warn ul.small{margin:4px 0 0;padding-left:18px}.subcard{border:1px solid var(--line);background:#fcfcfd;border-radius:6px;margin-top:10px;padding:10px 12px}.subcard table.grid{margin:6px 0}.repolist{flex-direction:column;gap:2px;max-height:260px;padding:4px 0;display:flex;overflow:auto}.repolist label.inline{gap:6px}.warn-text{color:#7a5600}fieldset.tabs{border:0;flex-wrap:wrap;gap:0;margin:0 0 12px;padding:0;display:flex}fieldset.tabs legend{margin-bottom:4px;padding:0;font-weight:500}button.tab{border-radius:0;margin-left:-1px;padding:6px 14px}button.tab:first-of-type{border-radius:6px 0 0 6px;margin-left:0}button.tab:last-of-type{border-radius:0 6px 6px 0}button.tab.on{background:var(--primary-bg);border-color:var(--primary);color:var(--primary);z-index:1;font-weight:600;position:relative}.dropzone{text-align:center;cursor:pointer;background:#fcfcfd;border:2px dashed #c9ced8;border-radius:8px;margin-bottom:8px;padding:18px}.dropzone:hover,.dropzone.on{border-color:var(--primary);background:var(--primary-bg)}.dropzone:focus-visible{outline:2px solid var(--primary);outline-offset:2px}ul.filelist{margin:0 0 10px;padding:0;list-style:none}ul.filelist li{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:4px 0;display:flex}ul.filelist .fname{overflow-wrap:anywhere;flex:1;min-width:0}.assist{flex-wrap:wrap;align-items:center;gap:8px;margin:-2px 0 4px;display:flex}.assist select{font:inherit;background:#fff;border:1px solid #c9ced8;border-radius:6px;padding:6px 8px}.subcard textarea{width:100%;font:inherit;margin:8px 0}@media (width<=600px){button.tab{flex:50%;margin:0;border-radius:0!important}}.login-brand{flex-direction:column;align-items:center;gap:8px;margin-bottom:4px;display:flex}.login-brand img{width:56px;height:auto}.login-brand h1{background:var(--brand-gradient);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:20px}.card.login{background:var(--brand-gradient) top / 100% 4px no-repeat, var(--card);padding-top:22px}@media (width<=900px){header.top{flex-wrap:wrap;row-gap:8px}header.top .brand span{display:none}}.drawer-wrap{z-index:50;pointer-events:none;position:fixed;inset:0}.drawer-backdrop{opacity:0;background:#0b1a3a59;transition:opacity .2s;position:absolute;inset:0}.drawer{background:var(--card);width:min(720px,100vw);box-shadow:none;visibility:hidden;outline:none;flex-direction:column;transition:transform .25s,box-shadow .25s,visibility 0s linear .25s;display:flex;position:absolute;top:0;bottom:0;right:0;transform:translate(100%)}.drawer-wrap.open{pointer-events:auto}.drawer-wrap.open .drawer-backdrop{opacity:1}.drawer-wrap.open .drawer{visibility:visible;transition:transform .25s,box-shadow .25s,visibility;transform:translate(0);box-shadow:-12px 0 32px #0b1a3a38}.drawer-head{border-bottom:1px solid var(--line);background:var(--brand-gradient) bottom / 100% 3px no-repeat, var(--card);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.drawer-body{flex:1;padding:14px 20px 28px;overflow-y:auto}button.icon{color:var(--muted);background:0 0;border:0;padding:4px 8px;font-size:18px}button.icon:hover{color:var(--primary);background:var(--primary-bg)!important}@media (prefers-reduced-motion:reduce){.drawer,.drawer-backdrop{transition:none}}.pagehead{margin-bottom:10px}.card.empty{text-align:center;padding:32px}.tablewrap.jobs{background:#fff;max-height:none}table.grid.jobs td{vertical-align:middle;padding:8px 10px}table.grid.jobs th.wide{width:38%}.t-main{font-weight:600}.t-sub{align-items:center;gap:6px;margin-top:2px;display:flex}.tag{background:var(--primary-bg);color:var(--primary);border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600}.tag.api{color:var(--ok);background:#e2f7f0}td.status{white-space:nowrap}td.status .pill{align-items:center;gap:6px;display:inline-flex}.spin{border:2px solid;border-right-color:#0000;border-radius:50%;width:10px;height:10px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spin{animation:none}}td.progress .who{color:var(--run);margin-right:6px;font-weight:600}td.progress .who.leader{color:#7b3fbf}td.progress code.tool{margin-right:6px}td.result{white-space:nowrap}.kq b{margin-right:4px;font-weight:700}.kq .P{color:var(--ok)}.kq .F{color:var(--err)}.kq .PE{color:#7a5600}tr.running td:first-child{box-shadow:inset 3px 0 0 var(--run)}tr.fresh td{animation:2.5s ease-out 2 fresh}@keyframes fresh{0%{background:var(--primary-bg)}to{background:0 0}}.newjob form label{margin-bottom:12px}fieldset.radios{flex-wrap:wrap;row-gap:6px}fieldset.radios.sources{border-bottom-right-radius:0;border-bottom-left-radius:0;margin-bottom:0}.source-body{border:1px solid var(--line);background:#fbfcfe;border-top:0;border-radius:0 0 6px 6px;margin-bottom:12px;padding:12px}.source-body>:last-child{margin-bottom:0}.seg{border:1px solid #c9ced8;border-radius:6px;margin-left:8px;display:inline-flex;overflow:hidden}.seg button{border:0;border-radius:0;padding:4px 12px;font-size:13px}.seg button+button{border-left:1px solid #c9ced8}.seg button.on{background:var(--primary-bg);color:var(--primary);font-weight:600}.t-sub .tag+.tag{margin-left:-2px}textarea.desc{width:100%;font:inherit;margin:8px 0}.desc-view{color:#374151;max-height:160px;margin-top:6px;overflow:auto}.shell{min-height:100vh;display:flex}.shell-main{flex:1;min-width:0}.side{background:var(--brand-navy);color:#fff;z-index:10;border-right:3px solid #0000;border-image:linear-gradient(180deg, var(--brand-blue), var(--brand-teal), var(--brand-green)) 1;flex-direction:column;flex:none;gap:14px;width:236px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.side a{color:#d3dcef}.side .brand{color:#fff;align-items:center;gap:10px;padding:2px 6px 6px;font-size:15px;font-weight:700;line-height:1.25;display:flex}.side .brand img{flex:none;width:30px;height:30px}.side .brand:hover{text-decoration:none}.side-project{gap:4px;margin:0;padding:0 4px}.side-label,.side-group{letter-spacing:.04em;text-transform:uppercase;color:#8fa1c4;font-size:11px;font-weight:600}.side-group{padding:12px 10px 4px}.side select.project{width:100%;font:inherit;color:#fff;background:#ffffff1a;border:1px solid #ffffff40;border-radius:6px;padding:7px 8px}.side select.project option{color:var(--text)}.side-nav{flex-direction:column;gap:2px;display:flex}.side-nav a{border-radius:6px;align-items:center;gap:10px;padding:8px 10px;display:flex}.side-nav a .ico{text-align:center;opacity:.8;width:18px}.side-nav a:hover{color:#fff;background:#ffffff14;text-decoration:none}.side-nav a.active{color:#fff;box-shadow:inset 3px 0 0 var(--brand-green);background:#ffffff24;font-weight:600}.side-foot{color:#d3dcef;border-top:1px solid #ffffff1f;flex-direction:column;gap:6px;margin-top:auto;padding:12px 8px 0;font-size:12px;display:flex}.side-foot .who{color:#9fb0cf;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.side-foot button.link{color:#d3dcef;align-self:flex-start;font-size:13px}.shell-main>.banner{margin:12px 20px 0}.row.wrap-gap{row-gap:6px}.ok-text{color:var(--ok)}table.grid.sys td{vertical-align:top}table.grid td.actions{white-space:nowrap;text-align:right}table.grid td.actions>*+*{margin-left:6px}.tag.sys{color:#00658f;background:#e6f4fa}.rowcard{border:1px solid var(--line);background:#fff;border-radius:8px;margin:8px 0;padding:10px 12px}.rowcard .row{margin-top:4px}.grid2,.grid3{gap:0 12px;display:grid}.grid2{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:repeat(3,1fr)}.sysform label,.sysform select,.sysform input,.sysform textarea{width:100%}.sysform label.inline{width:auto}.sysform select,.sysform input,.sysform textarea,.newjob select{font:inherit;background:#fff;border:1px solid #c9ced8;border-radius:6px;padding:7px 9px}.sysform input.mono,input.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}fieldset.box{border:1px solid var(--line);border-radius:8px;margin:6px 0 12px;padding:8px 12px 2px}fieldset.box legend{padding:0 4px;font-size:13px;font-weight:600}.seg.tabs-seg{flex-wrap:wrap;margin:0 0 14px;display:flex}.seg.tabs-seg button{flex:auto;padding:7px 10px}.checklist{flex-wrap:wrap;gap:8px 18px;margin-bottom:12px;display:flex}.kv>div{overflow-wrap:anywhere;gap:8px;padding:2px 0;display:flex}.kv>div>span{width:96px;color:var(--muted);flex:none}.detect h3{margin-top:16px}.sticky-actions{background:var(--card);border-top:1px solid var(--line);margin-top:10px;padding:10px 0;position:sticky;bottom:-28px}@media (width<=1024px){.cards-table table,.cards-table thead,.cards-table tbody,.cards-table td{width:100%;display:block}.cards-table thead{display:none}.cards-table tr{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:1fr 1fr;gap:4px 16px;margin:8px 0;padding:8px 12px;display:grid}.cards-table td{overflow-wrap:anywhere;padding:4px 0;border:0!important}.cards-table td[data-label]:before{content:attr(data-label);color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:11px;font-weight:600;display:block}.cards-table td.actions{text-align:left;grid-column:1/-1;padding-top:8px;border-top:1px solid var(--line)!important}}@media (width<=700px){.cards-table tr{grid-template-columns:1fr}.cards-table td{border:0;padding:4px 0}.cards-table td[data-label]:before{content:attr(data-label);color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:11px;font-weight:600;display:block}.cards-table td.actions{text-align:left;padding-top:8px}.grid2,.grid3{grid-template-columns:1fr}.tablewrap.jobs{background:0 0;border:0;overflow:visible}table.grid.jobs,table.grid.jobs tbody,table.grid.jobs tr,table.grid.jobs td{width:100%;display:block}table.grid.jobs thead{display:none}table.grid.jobs tr{border:1px solid var(--line);background:#fff;border-radius:10px;margin:10px 0;padding:10px 12px 10px 40px;position:relative}table.grid.jobs td{border:0;padding:2px 0}table.grid.jobs td:first-child{width:auto;position:absolute;top:12px;left:12px;box-shadow:none!important}table.grid.jobs td.num,table.grid.jobs td.small:last-child{width:auto;color:var(--muted);text-align:left;margin-right:12px;display:inline-block}tr.running td:first-child{box-shadow:none}tr.running{border-left:3px solid var(--run)!important}.pagehead{flex-wrap:wrap}.pagehead select{flex:140px;min-width:0}.pagehead h2{flex:auto}}@media (width<=1100px){.tablewrap,.cards-table{-webkit-overflow-scrolling:touch;overflow-x:auto}main{max-width:100%}}@media (width<=600px){.drawer{width:100vw}.drawer-head{padding:12px 14px}.drawer-body{padding:12px 14px 24px}.row{row-gap:6px}input,select,textarea{font-size:16px}}@media (width<=700px){textarea{width:100%;min-width:0}}:root{--bg:#f6f9fd;--card:#ffffffdb;--line:#e2e8f2;--font-head:"Be Vietnam Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}html,body{background:#f6f9fd}h1,h2,h3,.side .brand,.hero-title{font-family:var(--font-head);letter-spacing:-.01em}#root{z-index:1;position:relative}.bg-fx{z-index:-1;pointer-events:none;background:radial-gradient(42% 38% at 6% 8%,#005afb29,#0000 70%),radial-gradient(36% 42% at 98% 42%,#01c99b26,#0000 70%),radial-gradient(34% 30% at 55% 105%,#009dd01f,#0000 70%),#f6f9fd;position:fixed;inset:0;overflow:hidden}.bg-fx:before{content:"";background-image:linear-gradient(#0b1a3a0b 1px,#0000 1px),linear-gradient(90deg,#0b1a3a0b 1px,#0000 1px);background-size:56px 56px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(75% 65% at 50% 35%,#000 30%,#0000 80%);mask-image:radial-gradient(75% 65% at 50% 35%,#000 30%,#0000 80%)}.bg-fx .blob{filter:blur(70px);opacity:.5;border-radius:50%;position:absolute}.bg-fx .b1{background:#6aa2ff;width:420px;height:420px;animation:26s ease-in-out infinite alternate drift1;top:-100px;left:-120px}.bg-fx .b2{background:#6ff0cf;width:460px;height:460px;animation:30s ease-in-out infinite alternate drift2;top:30%;right:-160px}.bg-fx .b3{opacity:.35;background:#7fd3f0;width:360px;height:360px;animation:34s ease-in-out infinite alternate-reverse drift1;bottom:-200px;left:40%}@keyframes drift1{to{transform:translate(60px,40px)scale(1.08)}}@keyframes drift2{to{transform:translate(-50px,-30px)scale(1.06)}}@media (prefers-reduced-motion:reduce){.bg-fx .blob{animation:none}}.card,.livelog,.tablewrap{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffd6;border-color:#cbd5e6cc}.card{border-radius:12px;box-shadow:0 1px 2px #0b1a3a0a,0 8px 24px -12px #0b1a3a1f}.subcard{background:#fafcffcc;border-color:#cbd5e6cc;border-radius:10px}table.grid{background:0 0}table.grid th{background:#f0f5fce6}.tablewrap{border-radius:12px}main h2{font-size:20px}button.primary,.button.primary{background:linear-gradient(90deg, var(--brand-blue), var(--brand-teal));border-color:#0000;box-shadow:0 6px 16px -8px #005afbb3}button.primary:hover:not(:disabled),.button.primary:hover{background:linear-gradient(90deg,#0047d6,#008cbb);border-color:#0000}.side{box-shadow:4px 0 24px -12px #0b1a3a80}.drawer{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff5}.login-page{min-height:100dvh;padding:calc(18px + env(safe-area-inset-top)) calc(clamp(16px, 4vw, 48px) + env(safe-area-inset-right)) calc(20px + env(safe-area-inset-bottom)) calc(clamp(16px, 4vw, 48px) + env(safe-area-inset-left));flex-direction:column;display:flex}.login-top{align-items:center;gap:12px;width:100%;max-width:1180px;margin:0 auto;display:flex}.login-logo{font-family:var(--font-head);color:#0b1a3a;align-items:center;gap:8px;font-size:22px;display:flex}.login-logo img{width:34px;height:34px}.login-logo b span{color:var(--brand-blue)}.login-top-tag{color:#fff;background:linear-gradient(90deg, var(--brand-blue), var(--brand-green));border-radius:999px;margin-left:auto;padding:6px 14px;font-size:12px;font-weight:600;box-shadow:0 6px 18px -8px #005afb99}.login-grid{flex:1;grid-template-columns:1.15fr .85fr;align-items:center;gap:clamp(24px,5vw,72px);width:100%;max-width:1180px;margin:0 auto;padding:32px 0;display:grid}.kicker{letter-spacing:.28em;color:#4b5873;margin-bottom:14px;font-size:11px;font-weight:600}.pill-tag{color:#1d2330;background:#ffffffbf;border:1px solid #d6dfec;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:500;display:inline-block}.hero-title{color:#0b1a3a;margin:22px 0 18px;font-size:clamp(32px,4.6vw,58px);font-weight:800;line-height:1.12}.hero-sub{color:#4b5563;max-width:560px;margin:0 0 18px;font-size:16px;line-height:1.6}.hero-points{flex-wrap:wrap;gap:8px 10px;margin:0;padding:0;list-style:none;display:flex}.hero-points li{color:#1d2330;background:#ffffffb3;border:1px solid #dfe7f2;border-radius:10px;padding:7px 12px;font-size:13px}.hero-points li span{color:var(--brand-blue);margin-right:4px;font-weight:700}.login-card{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffd1;border:1px solid #d6dfece6;border-radius:20px;flex-direction:column;gap:14px;padding:28px 26px 22px;display:flex;position:relative;overflow:hidden;box-shadow:0 30px 60px -30px #0b1a3a59,inset 0 0 0 1px #fff9}.login-card:before{content:"";background:var(--brand-gradient);height:4px;position:absolute;top:0;left:0;right:0}.login-card-head{align-items:center;gap:12px;margin-bottom:4px;display:flex}.login-card-head img{width:44px;height:auto}.login-card-head h2{color:#0b1a3a;margin:0;font-size:22px}.login-card-head p{margin:2px 0 0}.login-card label{margin:0}.login-card .field{flex-direction:column;gap:6px;display:flex}.login-card .field>label{color:#0b1a3a;font-size:14px;font-weight:600}.login-card .field-hint{color:#6b7690;font-size:12.5px;line-height:1.4}.login-card input{box-sizing:border-box;width:100%;min-height:46px;font-size:16px}.login-card input::placeholder{color:#9aa5b8}.pw-wrap{position:relative}.pw-wrap input{padding-right:64px}.pw-toggle{color:var(--brand-blue);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:6px 10px;font-size:13px;font-weight:600;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.pw-toggle:hover{background:#1d5de814}.login-next{color:#6b7690;text-align:center;border-top:1px solid #e6ecf4;margin:0;padding-top:12px;font-size:12.5px;line-height:1.45}.login-card input{font:inherit;background:#ffffffe6;border:1px solid #cfd8e6;border-radius:10px;padding:11px 12px}.login-card input:focus{border-color:var(--brand-blue);outline:none;box-shadow:0 0 0 3px #005afb26}.grad-btn{font-size:15px;border-radius:12px!important;padding:12px 16px!important}.center-text{text-align:center;margin:0}.login-foot{text-align:center;padding-top:8px}@media (width<=900px){.login-grid{grid-template-columns:1fr;gap:24px;padding:20px 0}.login-hero{text-align:center}.hero-sub{margin-left:auto;margin-right:auto}.hero-points{justify-content:center}.login-card{width:100%;max-width:440px;margin:0 auto}}@media (width<=520px){.kicker{letter-spacing:.14em;font-size:10px}.hero-points{display:none}.login-card{padding:22px 18px 18px}.login-page{padding-top:calc(28px + env(safe-area-inset-top))}.login-top-tag{box-shadow:none}}.center .card{border-radius:16px}.tag{white-space:nowrap;display:inline-block}.t-sub{flex-wrap:wrap;row-gap:4px}table.grid.jobs td.target{min-width:220px}:root{--brand-blue:#1d5de8;--brand-blue-dark:#1247c4;--brand-teal:#10b394;--brand-teal-dark:#0a8f77;--brand-green:#10b394;--brand-gradient:linear-gradient(90deg, #1d5de8, #10b394);--primary:#1d5de8;--primary-hover:#1247c4;--primary-bg:#eaf0fd;--run:#0a8f77;--run-bg:#e3f6f1;--font-head:"Lexend", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;font-family:"Source Sans 3",-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px}.pv-logo{align-items:center;gap:8px;height:30px;line-height:1;display:inline-flex}.pv-logo.lg{height:34px}.pv-logo img{width:auto;height:100%}.pv-word{font-family:var(--font-head);letter-spacing:-.025em;font-size:22px;font-weight:700}.pv-logo.lg .pv-word{font-size:25px}.pv-pivi{color:#1d5de8}.pv-tek{color:#10b394}.pv-logo.dark .pv-pivi{color:#5b8bff}.pv-logo.dark .pv-tek{color:#2dd4b3}.side .brand{flex-direction:column;align-items:flex-start;gap:4px;padding:4px 6px 8px}.side .brand .brand-sub{font-family:var(--font-head);letter-spacing:.18em;text-transform:uppercase;color:#9fb0cf;padding-left:2px;font-size:11px;font-weight:600}.login-logo{text-decoration:none!important}button.primary,.button.primary{background:linear-gradient(90deg,#1d5de8,#1a7fd6);box-shadow:0 6px 16px -8px #1d5de8b3}button.primary:hover:not(:disabled),.button.primary:hover{background:linear-gradient(90deg,#1247c4,#166fbd)}.grad-btn{background:linear-gradient(90deg,#1d5de8,#10b394)!important}.hero-title .grad,.grad{background:linear-gradient(90deg,#1d5de8,#10b394);color:#0000;-webkit-background-clip:text;background-clip:text}.side-nav a.active{box-shadow:inset 3px 0 #2dd4b3}.bg-fx{background:radial-gradient(42% 38% at 6% 8%,#1d5de826,#0000 70%),radial-gradient(36% 42% at 98% 42%,#10b39424,#0000 70%),radial-gradient(34% 30% at 55% 105%,#1d5de814,#0000 70%),#f6f9fd}.bg-fx .b1{background:#7da4f4}.bg-fx .b2{background:#7fe0c8}.drawer{width:max(50vw,560px);max-width:100vw}@media (width<=1100px){.drawer{width:min(720px,100vw)}}@media (width<=600px){.drawer{width:100vw}}.ai-btn{color:#1d5de8;background:linear-gradient(90deg,#1d5de80f,#10b39414);border-color:#b9cdf6;font-weight:600}.ai-btn:hover:not(:disabled){background:linear-gradient(90deg,#1d5de81f,#10b39424)!important}.aitext{margin-bottom:10px}.aitext label{margin-bottom:4px}.aitext textarea{width:100%}.listtable{margin:6px 0 14px}table.grid.lt{margin:4px 0 6px}table.grid.lt td{vertical-align:middle;padding:4px 6px}table.grid.lt th.n,table.grid.lt td.n{text-align:center;width:34px;color:var(--muted)}table.grid.lt th.x,table.grid.lt td.x{text-align:right;width:52px}table.grid.lt input{width:100%;font:inherit;background:0 0;border:1px solid #0000;border-radius:6px;padding:6px 8px}table.grid.lt input:hover{border-color:#d6dfec}table.grid.lt input:focus{border-color:var(--primary);background:#fff;outline:none}.combo{flex-direction:column;gap:4px;margin-bottom:10px;display:flex;position:relative}.combo input{width:100%;font:inherit;border:1px solid #c9ced8;border-radius:8px;padding:8px 10px}.combo-list{z-index:30;background:#fff;border:1px solid #d6dfec;border-radius:10px;max-height:320px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 16px 32px -16px #0b1a3a59}.combo-list .opt{text-align:left;background:0 0;border:0;border-radius:0;width:100%;padding:8px 12px;display:block}.combo-list .opt.on,.combo-list .opt:hover{background:var(--primary-bg)!important}.combo-list .pad{padding:10px 12px}.picked{background:#f3f7fe;border:1px solid #cfe0fb;border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;display:flex}.picked .issue{overflow-wrap:anywhere;flex:1;min-width:0}.redmine-src>label{margin-bottom:4px}.bug-head{gap:10px}.switch{cursor:pointer;align-items:center;gap:6px;font-weight:500;flex-direction:row!important;margin:0!important;display:inline-flex!important}.switch input{opacity:0;width:1px;height:1px;position:absolute}.switch .slider{background:#cfd6e2;border-radius:999px;flex:none;width:38px;height:22px;transition:background .2s;position:relative}.switch .slider:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #00000040}.switch input:checked+.slider{background:linear-gradient(90deg,#1d5de8,#10b394)}.switch input:checked+.slider:after{transform:translate(16px)}.switch input:focus-visible+.slider{outline:2px solid var(--primary);outline-offset:2px}.switch .sw-label{color:var(--muted);min-width:62px;font-size:12px}.bug-opts{background:#f6f9fe;border:1px solid #dbe5f5;border-radius:10px;grid-template-columns:1fr 1.4fr;gap:6px 14px;margin:8px 0 4px;padding:10px 12px 2px;display:grid}.bug-opts select{width:100%;font:inherit;background:#fff;border:1px solid #c9ced8;border-radius:8px;padding:7px 9px}.bug-opts.defaults{background:#ffffffb3}@media (width<=700px){.bug-opts{grid-template-columns:1fr}}td.cm{text-align:center;width:44px}.cm-btn{opacity:.45;background:0 0;border:1px solid #0000;border-radius:6px;padding:2px 6px;font-size:13px}tr:hover .cm-btn,.cm-btn.has{opacity:1}.cm-btn.has{background:var(--primary-bg);border-color:#b9cdf6}.cm-btn b{color:var(--primary);margin-left:2px;font-size:11px}tr.open td{background:#f3f7fe}tr.cm-row td{background:#f8fafe;padding:8px 12px}.cm-box{max-width:760px}.cm-item{border-left:3px solid var(--primary);background:#fff;border-radius:0 8px 8px 0;margin:6px 0;padding:6px 10px}.cm-item.sent{border-left-color:var(--ok);opacity:.8}.cm-new{align-items:flex-start;gap:8px;margin-top:6px;display:flex}.cm-new textarea{min-width:0;font:inherit;border:1px solid #c9ced8;border-radius:8px;flex:1;padding:6px 8px}.preview-img{border:1px solid var(--line);border-radius:8px;max-width:100%;margin-top:8px}.preview-text{white-space:pre-wrap;word-break:break-word;color:#dbe4f5;background:#0f1830;border-radius:10px;max-height:70vh;padding:12px;font-size:12px;overflow:auto}.markdown-box{margin-top:8px}ul.files button.link{text-align:left}.grid-redmine{grid-template-columns:1fr;align-items:end;gap:0 12px;margin-top:8px;display:grid}.grid-redmine input{width:100%}.grid-redmine .row{grid-column:1/-1}@media (width<=700px){.grid-redmine{grid-template-columns:1fr}}table.grid.xlsx td.rn,table.grid.xlsx th:first-child{white-space:nowrap;width:40px;color:var(--muted)}table.grid.xlsx td:nth-child(3){white-space:nowrap}.statusbar{flex-wrap:wrap;gap:8px;margin:4px 0 12px;display:flex}.statusbar .sb{background:#ffffffd9;border:1px solid #d6dfec;border-radius:10px;align-items:center;gap:8px;padding:8px 14px;font-weight:500;display:inline-flex}.statusbar .sb .cnt{text-align:center;color:#4b5563;background:#eef2f8;border-radius:999px;min-width:22px;padding:1px 7px;font-size:12px;font-weight:600}.statusbar .sb:hover{border-color:#b9cdf6}.statusbar .sb.on{border-color:var(--primary);color:var(--primary);background:var(--primary-bg);box-shadow:0 0 0 1px var(--primary) inset}.statusbar .sb.on .cnt{background:var(--primary);color:#fff}.statusbar .sb.loi .cnt{color:var(--err)}.statusbar .sb.loi.on .cnt{background:var(--err);color:#fff}.statusbar .sb.cho_duyet .cnt{color:#a05a00;background:#fff3dc}@media (width<=700px){.statusbar{flex-wrap:nowrap;padding-bottom:4px;overflow-x:auto}.statusbar .sb{white-space:nowrap}}.pagehead .switch .sw-label{min-width:0;color:var(--text);font-size:13px}.bell{color:#fff;text-align:left;background:#ffffff14;border:1px solid #ffffff2e;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;display:flex}.bell:hover{background:#ffffff29!important}.bell .badge{color:#fff;background:#ff5a5f;border-radius:999px;margin-left:auto;padding:0 7px;font-size:11px}.note{border:1px solid var(--line);background:#fff;border-radius:10px;margin:8px 0;padding:10px 12px}.note.unread{background:#f5f8ff;border-color:#b9cdf6}.role-line{color:#2dd4b3;font-size:12px;font-weight:600}.members-line{flex-wrap:wrap;gap:6px;display:flex}.mrole{background:#eef2f8;border-radius:999px;margin:1px 4px 1px 0;padding:2px 8px;font-size:12px;display:inline-block}.mrole i{color:#4b5563;margin-left:4px;font-style:normal;font-weight:600}.mrole.leader{background:#e3f6f1}.mrole.leader i{color:var(--brand-teal-dark)}.mrole.viewer i{color:var(--muted)}table.grid.lt select{font:inherit;background:#fff;border:1px solid #c9ced8;border-radius:6px;padding:5px 8px}.skill-text{border:1px solid #c9ced8;border-radius:8px;width:100%;margin-bottom:8px;padding:10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.5}pre.diff{border:1px solid var(--line);white-space:pre-wrap;background:#fbfcfe;border-radius:8px;max-height:50vh;padding:8px 10px;font-size:12px;overflow:auto}pre.diff .add{color:#0a5c35;background:#e4f7ec;display:block}pre.diff .del{color:#9b1c12;background:#fdeceb;-webkit-text-decoration:line-through #9b1c1259;text-decoration:line-through #9b1c1259;display:block}pre.diff .same{color:#6b7280;display:block}.feature-pick{margin-bottom:12px}.feature-pick>label{margin-bottom:4px}.combo-list .opt.create{color:var(--primary);border-top:1px solid var(--line);font-weight:600}.combo-list .opt .tag{margin-left:6px}.reuse{background:#f6f9ff;border:1px dashed #b9cdf6;border-radius:8px;flex-direction:column;gap:4px;margin-top:-4px;padding:8px 10px;display:flex}.reuse label.inline{align-items:flex-start;gap:6px}tr.dim td{opacity:.55}input.search{font:inherit;border:1px solid #c9ced8;border-radius:8px;min-width:200px;padding:7px 10px}ul.joblist{padding-left:18px}ul.joblist li{margin:4px 0}.feature-detail h3{margin-top:16px}.feature-form label{margin-bottom:10px}.feature-form select{font:inherit;border:1px solid #c9ced8;border-radius:6px;padding:7px 9px}.cf-wrap{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0b1a3a66;justify-content:center;align-items:center;padding:16px;animation:.15s ease-out cf-in;display:flex;position:fixed;inset:0}.cf{border-top:4px solid #0000;border-image:var(--brand-gradient) 1;background:#fff;border-radius:16px;gap:14px;width:min(480px,100%);padding:20px 22px 18px;display:flex;box-shadow:0 30px 60px -20px #0b1a3a73}.cf-icon{width:40px;height:40px;font:700 20px var(--font-head);color:#fff;background:linear-gradient(135deg,#1d5de8,#10b394);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.cf-icon.danger{background:linear-gradient(135deg,#e5484d,#c2410c)}.cf-body{flex:1;min-width:0}.cf-body h3{margin:4px 0 6px;font-size:17px}.cf-msg{color:#374151;overflow-wrap:anywhere;line-height:1.5}.cf-msg ul{color:#4b5563;max-height:40vh;margin:6px 0 0;padding-left:18px;font-size:13px;overflow:auto}.cf-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.cf-actions button{border-radius:10px;min-width:88px;padding:8px 16px}button.danger-solid{color:#fff;background:#d92d20;border-color:#d92d20;font-weight:600}button.danger-solid:hover{background:#b42318!important}@keyframes cf-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.cf-wrap{animation:none}}.side-top{align-items:flex-start;gap:6px;display:flex}.side-top .brand{flex:1;min-width:0}.side-toggle{color:#d3dcef;cursor:pointer;background:#ffffff14;border:1px solid #ffffff2e;border-radius:6px;flex:none;justify-content:center;align-items:center;width:28px;height:28px;padding:0;font-size:15px;line-height:1;display:inline-flex}.side-toggle:hover{color:#fff;background:#ffffff29}.brand-mark{width:30px;height:auto;display:none}.brand-full{display:contents}.side{transition:width .18s}@media (width>=861px){.shell.mini .side{width:64px;padding-left:8px;padding-right:8px;overflow-x:hidden}.shell.mini .side-top{flex-direction:column;align-items:center}.shell.mini .side .brand{align-items:center;padding:2px 0 4px}.shell.mini .brand-mark{display:block}.shell.mini .brand-full,.shell.mini .side-project,.shell.mini .side-group,.shell.mini .side-foot .who,.shell.mini .side-foot .queue,.shell.mini .side-foot .role-line{display:none}.shell.mini .side-nav a{justify-content:center;padding:9px 0}.shell.mini .side-nav a .lbl{display:none}.shell.mini .side-nav a .ico{opacity:1;width:auto;font-size:17px}.shell.mini .side-foot{align-items:center;padding:10px 0 0}.shell.mini .side-foot .lbl{display:none}.shell.mini .side-foot button.link{align-self:center;font-size:16px}}.scope-box{flex-direction:column;gap:6px;margin:8px 0;display:flex}.radio-card{border:1px solid var(--line,#d7deea);cursor:pointer;border-radius:8px;align-items:flex-start;gap:8px;padding:8px 10px;font-weight:400;display:flex}.radio-card.on{border-color:var(--brand,#1d5de8);background:color-mix(in srgb, var(--brand,#1d5de8) 7%, transparent)}.radio-card input{margin-top:3px}.radio-card .pill{margin-left:6px}.side-foot .logout .ico{display:none}@media (width>=861px){.shell.mini .side-foot .logout .ico{display:inline}}.tc-info{color:var(--muted,#5b6b86);flex-wrap:wrap;gap:4px 18px;margin:6px 0;display:flex}.tc-filter{margin:8px 0}.tc-filter .chip b{margin-left:4px}.chip.cxn b{color:#9a6700}.chip.F b{color:var(--err)}.chip.P b{color:var(--ok)}.tc-search{max-width:240px}.tc-table{table-layout:fixed;width:100%}.tc-table th.stt,.tc-table td.stt{width:128px}.tc-table th.kq,.tc-table td.kq{text-align:center;width:56px}.tc-table th.cm,.tc-table td.cm{text-align:center;width:52px}.tc-table td{vertical-align:top}.tc-table td.stt code{white-space:nowrap;font-size:12px}.tc-group td{background:color-mix(in srgb, var(--brand,#1d5de8) 7%, #fff);font-weight:600;font-family:var(--font-head)}.tc-row{cursor:pointer}.tc-row:hover td{background:color-mix(in srgb, var(--brand,#1d5de8) 4%, transparent)}.tc-row.open td{background:color-mix(in srgb, var(--brand,#1d5de8) 6%, transparent)}.tc-row.hl td{box-shadow:inset 0 0 0 9999px #ffd54f2e}.tc-row.hl td.stt{box-shadow:inset 3px 0 #f0b400,inset 0 0 0 9999px #ffd54f2e}.tc-req{margin-bottom:3px;font-size:12px}.tc-req .m{color:#1d4fc4;background:#e8eefc;border-radius:4px;padding:1px 5px;font-size:11px}.tc-req .m.POST,.tc-req .m.PUT,.tc-req .m.PATCH{color:#8a5a00;background:#fff3d6}.tc-req .m.DELETE{background:var(--err-bg);color:var(--err)}.tc-detail>td{background:#fafbfe}.tc-detail-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px 18px;margin-bottom:8px;display:grid}.tc-db{white-space:pre-wrap;background:#f1f4fa;border-radius:6px;margin:4px 0 0;padding:8px}.res{border-radius:4px;min-width:28px;padding:1px 6px;font-size:12px;font-weight:700;display:inline-block}.res.P{background:var(--ok-bg);color:var(--ok)}.res.F{background:var(--err-bg);color:var(--err)}.res.PE{background:var(--warn-bg);color:#7a5600}mark.cxn{color:#6b4a00;background:#fff1b8;border-radius:3px;padding:0 2px}.cm-btn{white-space:nowrap;opacity:.55}.cm-btn.has{opacity:1}@media (width<=860px){.tc-table,.tc-table tbody,.tc-table tr,.tc-table td{width:auto!important}.tc-table td.kq,.tc-table td.cm{text-align:left}.tc-group td{display:block}.tc-search{width:100%;max-width:none}}.sum-tiles{flex-wrap:wrap;gap:10px;margin-bottom:10px;display:flex}.tile{border:1px solid var(--line,#d7deea);background:#fff;border-radius:10px;flex-direction:column;min-width:130px;padding:10px 14px;display:flex}.tile span{color:var(--muted,#5b6b86);font-size:12px}.tile b{font-family:var(--font-head);font-size:20px;line-height:1.3}.tile small{color:var(--muted,#5b6b86);min-height:1em;font-size:11px}.tile.ok{background:var(--ok-bg);border-color:#9fdcc6}.tile.ok b{color:var(--ok)}.tile.err{background:var(--err-bg);border-color:#f5c2bd}.tile.err b{color:var(--err)}.tile.warn{background:var(--warn-bg);border-color:#f1d98a}.tile.warn b{color:#7a5600}.tile b i{font-style:normal}.tile b i.P{color:var(--ok)}.tile b i.F{color:var(--err)}.tile b i.PE{color:#7a5600}.sum-text{margin:4px 0 8px}.sum-issues ul{margin:4px 0;padding-left:18px}.sum-issues li{margin:3px 0}.pill.sev.s0{background:var(--err);color:#fff}.pill.sev.s1{background:var(--err-bg);color:var(--err)}.pill.sev.s2{background:var(--warn-bg);color:#7a5600}.pill.sev.s3{color:#4b5870;background:#eef1f6}.gatebox .steps{margin:4px 0 10px;padding-left:20px}.gatebox textarea{width:100%;margin-top:8px}.cf-list{flex-direction:column;gap:10px;margin-top:8px;display:flex}.cf-item{background:#fffdf5;border:1px solid #f1d98a;border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.cf-item.ok{background:#f6fcf9;border-color:#9fdcc6}.cf-n{color:#fff;background:#f0b400;border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;display:inline-grid}.cf-item.ok .cf-n{background:var(--ok)}.cf-q{flex:1;min-width:200px;font-weight:600}.cf-cases button.link{margin:0 4px;font-size:12px}.cf-edit{width:100%}.cf-answer{border:1px solid var(--line,#d7deea);background:#fff;border-radius:6px;padding:6px 10px}.chat-fab{z-index:40;color:#fff;background:linear-gradient(135deg, var(--brand,#1d5de8), var(--brand-green,#10b394));cursor:pointer;border:0;border-radius:999px;padding:11px 18px;font-weight:600;position:fixed;bottom:22px;right:22px;box-shadow:0 8px 24px -8px #1d5de899}.chat-fab:hover{filter:brightness(1.06)}.chat{flex-direction:column;gap:10px;height:100%;display:flex}.chat-list{flex-direction:column;flex:1;gap:10px;min-height:200px;display:flex}.chat-msg{border-radius:12px;max-width:92%;padding:8px 12px}.chat-msg.user{background:color-mix(in srgb, var(--brand,#1d5de8) 10%, #fff);align-self:flex-end}.chat-msg.ai{border:1px solid var(--line,#d7deea);background:#fff;align-self:flex-start}.chat-msg .markdown-box{background:0 0;border:0;padding:0}.chat-samples{flex-wrap:wrap;gap:6px;display:flex}.chat-input{background:inherit;align-items:flex-end;gap:8px;padding-top:6px;display:flex;position:sticky;bottom:0}.chat-input textarea{flex:1}@media (width<=860px){.chat-fab{bottom:14px;right:14px}}.pill.wait{background:var(--warn-bg);color:#7a5600}.cf-table td{vertical-align:top}.cf-table th.n,.cf-table td.n{text-align:center;width:36px}.cf-table th.act,.cf-table td.act{text-align:center;width:140px}.cf-table tr.ok td{background:#f6fcf9}.cf-table textarea{width:100%}@media (width<=860px){.cf-table th.act,.cf-table td.act,.cf-table td.n{text-align:left;width:auto}}.cxn-box{background:#fffaf0;border-left:3px solid #f0b400;border-radius:4px;flex-direction:column;gap:3px;margin-top:6px;padding:6px 8px;display:flex}.cxn-box.ok{border-left-color:var(--ok);background:#f3fbf7}button.sm{padding:3px 10px;font-size:12px}.tc-table th.cfcol,.tc-table td.cfcol{width:30%}.cfc{cursor:default;background:#fffaf0;border-left:3px solid #f0b400;border-radius:4px;flex-direction:column;gap:4px;margin-bottom:4px;padding:6px 8px;display:flex}.cfc.ok{border-left-color:var(--ok);background:#f3fbf7}.cfc textarea,.cfc input{width:100%;font-size:13px}.cfc .row{gap:6px}button.ai-btn.sm{padding:3px 10px;font-size:12px}.jsb{border:1px solid var(--line,#d7deea);z-index:5;background:#fff;border-radius:12px;align-items:flex-start;gap:12px;margin:8px 0 12px;padding:12px 16px;display:flex;position:sticky;top:8px;box-shadow:0 6px 18px -12px #0b1a3a59}.jsb .jsb-ico{place-items:center;min-width:20px;padding-top:2px;font-size:18px;line-height:1.2;display:grid}.jsb .spin{width:14px;height:14px}.jsb.t-run{background:var(--run-bg);border-color:#a9d8ec}.jsb.t-run b{color:var(--run)}.jsb.t-gate{background:#fffbea;border-color:#f1d98a}.jsb.t-gate b{color:#7a5600}.jsb.t-ok{background:var(--ok-bg);border-color:#9fdcc6}.jsb.t-ok b{color:var(--ok)}.jsb.t-err{background:var(--err-bg);border-color:#f5c2bd}.jsb.t-err b{color:var(--err)}.jsb.t-wait{background:#f4f6fb}.jsb .small{color:#3c4a63;margin-top:2px}@media (width<=860px){.jsb{position:static}}.jhead{padding:18px 20px 14px}.jhead-top{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.jhead-title{flex:1;min-width:260px}.jhead-title h2{margin:2px 0 0;font-size:22px;line-height:1.25}.jhead-kicker{letter-spacing:.04em;text-transform:uppercase;color:var(--muted,#5b6b86);align-items:center;gap:8px;font-size:12px;font-weight:600;display:flex}.kind-chip{text-transform:none;letter-spacing:0;color:#1d4fc4;background:#e8eefc;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600}.kind-chip.api{color:var(--ok);background:#e2f7f0}.kind-chip.both{color:#234;background:linear-gradient(90deg,#e8eefc,#e2f7f0)}.jhead-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pill.big{padding:5px 12px;font-size:13px}.jmeta{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:14px 0 4px;display:grid}.jmeta>div{background:#f6f8fc;border:1px solid #e6ebf4;border-radius:8px;flex-direction:column;gap:1px;min-width:0;padding:8px 10px;display:flex}.jmeta span{color:var(--muted,#5b6b86);text-transform:uppercase;letter-spacing:.03em;font-size:11px}.jmeta b{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.jmeta small{color:var(--muted,#5b6b86);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.jnote{margin:6px 0 0}.stepper{border-top:1px solid #e6ebf4;flex-wrap:wrap;align-items:center;gap:10px 0;margin-top:14px;padding-top:14px;display:flex}.st-step{text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:12px;align-items:center;gap:10px;padding:8px 12px;display:flex}.st-step:hover{background:#f4f7fd}.st-step.sel{border-color:var(--brand,#1d5de8);background:#fff;box-shadow:0 4px 14px -8px #1d5de880}.st-dot{color:#66738c;background:#eef1f6;border:2px solid #d7deea;border-radius:50%;flex:none;place-items:center;width:32px;height:32px;font-size:14px;font-weight:700;display:grid}.st-step.ok .st-dot{background:var(--ok);border-color:var(--ok);color:#fff}.st-step.run .st-dot{background:var(--run-bg);border-color:var(--run);color:var(--run)}.st-step.err .st-dot{background:var(--err);border-color:var(--err);color:#fff}.st-step.wait .st-dot{border-style:dashed}.st-step .spin{width:14px;height:14px}.st-text{flex-direction:column;display:flex}.st-text b{white-space:nowrap;font-size:14px}.st-text small{color:var(--muted,#5b6b86);white-space:nowrap;font-size:11px}.st-gate{color:#8a96ad;flex:1;align-items:center;gap:6px;min-width:120px;display:flex}.st-line{background:#d7deea;flex:1;min-width:12px;height:2px}.st-diamond{background:#eef1f6;border:2px solid #d7deea;border-radius:6px;flex:none;place-items:center;width:24px;height:24px;font-size:11px;display:grid;transform:none}.st-gate-lbl{white-space:nowrap;flex-direction:column;font-size:11px;font-weight:700;line-height:1.2;display:flex}.st-gate-lbl small{font-weight:400}.st-gate.active{color:#8a5a00}.st-gate.active .st-diamond{background:#fff1b8;border-color:#f0b400}.st-gate.active .st-line{background:#f0d27a}.st-gate.done{color:var(--ok)}.st-gate.done .st-diamond{background:var(--ok-bg);border-color:var(--ok)}.st-gate.done .st-line{background:#9fdcc6}.st-log{cursor:pointer;background:#f4f6fb;border:1px solid #e0e6f0;border-radius:999px;margin-left:auto;padding:6px 12px;font-size:13px}.st-log b{margin-left:4px}.st-log.sel{border-color:var(--brand,#1d5de8);background:#fff}@media (width<=860px){.stepper{flex-direction:column;align-items:stretch}.st-gate{min-width:0;padding-left:26px}.st-gate .st-line{display:none}.st-log{align-self:flex-start;margin-left:0}.jhead-title h2{font-size:19px}.jmeta{grid-template-columns:repeat(2,minmax(0,1fr))}.jmeta>div{padding:6px 8px}}.sec-head{align-items:center}.sec-toggle{cursor:pointer;color:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:8px;margin:0;padding:0;display:inline-flex}.sec-toggle h3{margin:0}.sec-toggle .chev{color:var(--muted,#5b6b86);font-size:12px;transition:transform .15s;display:inline-block}.sec.open .sec-toggle .chev{transform:rotate(90deg)}.sec-toggle:hover h3{color:var(--brand,#1d5de8)}.sec-toggle:focus-visible{outline:2px solid var(--brand,#1d5de8);outline-offset:3px;border-radius:4px}.sec.closed{padding-top:10px;padding-bottom:10px}.sec-body{margin-top:8px}.sec-full{white-space:nowrap}.sec-scroll{overscroll-behavior:contain;border:1px solid var(--line);border-radius:8px;max-height:min(62vh,560px);overflow:auto}.sec-scroll>table.grid th,.sec-scroll table.grid>thead th{z-index:2;position:sticky;top:0}.sec-scroll table.grid{border-radius:0}.bug-list.sec-scroll{max-height:min(65vh,620px);padding:0 10px}@media (prefers-reduced-motion:reduce){.sec-toggle .chev{transition:none}}@media (width<=860px){.sec-scroll{border:0;max-height:70vh}}.logbox.empty{height:auto}.ll-last{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sec-toggle .chev{text-align:center;width:14px;font-size:14px}.sec-scroll table.grid thead th{box-shadow:inset 0 -1px 0 var(--line);background:#f4f6fb}.chip.copy{border-style:dashed}.ev-copy{color:#c9d3ea;cursor:pointer;opacity:.35;background:0 0;border:1px solid #3a4560;border-radius:4px;flex:none;margin-left:auto;padding:0 5px;font-size:11px;line-height:18px}.ev:hover .ev-copy,.ev-copy:focus-visible{opacity:1}@media (hover:none){.ev-copy{opacity:.8}}.tabcard{padding:0;overflow:visible}.tabbar{border-bottom:1px solid var(--line);scrollbar-width:thin;align-items:flex-end;gap:2px;padding:8px 12px 0;display:flex;overflow-x:auto}.tabbtn{font:600 14px var(--font-head,inherit);color:var(--muted,#5b6b86);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;border-radius:6px 6px 0 0;flex:none;align-items:center;gap:6px;margin:0;padding:10px 14px 9px;display:inline-flex}.tabbtn:hover{color:var(--brand,#1d5de8);background:color-mix(in srgb, var(--brand,#1d5de8) 5%, transparent)}.tabbtn.active{color:var(--brand,#1d5de8);border-bottom-color:var(--brand,#1d5de8)}.tabbtn:focus-visible{outline:2px solid var(--brand,#1d5de8);outline-offset:-2px}.tabbadge{color:#4b5563;text-align:center;background:#eef2f8;border-radius:999px;min-width:20px;padding:1px 7px;font-size:12px;font-weight:600}.tabbtn.active .tabbadge{background:color-mix(in srgb, var(--brand,#1d5de8) 12%, #fff);color:var(--brand,#1d5de8)}.tabbadge.warn{color:#8a5a00;background:#fff3d6}.tabbadge.ok{color:#0f7a55;background:#e3f6ee}.tabbadge.err{background:var(--err-bg);color:var(--err)}.tabbody{padding:14px 16px 16px}.tab-tools{margin-bottom:8px}@media (width<=640px){.tabbar{padding:6px 6px 0}.tabbtn{padding:9px 10px 8px;font-size:13px}.tabbody{padding:12px}}.tabbody table.grid>thead th{top:var(--jsb-h,0px);z-index:3;box-shadow:inset 0 -1px 0 var(--line);background:#f4f6fb}.tabbar .tabbtn{box-sizing:border-box;height:42px;min-height:0;line-height:20px;display:inline-flex}.proj-pick{flex-wrap:wrap;gap:8px;margin:8px 0 4px;display:flex}.proj-chip{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:8px;padding:7px 12px;font-weight:600;display:inline-flex}.proj-chip code{color:var(--muted);font-size:11px;font-weight:400}.proj-chip.active{border-color:var(--brand,#1d5de8);color:var(--brand,#1d5de8);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand,#1d5de8) 15%, transparent)}.proj-chip.off{opacity:.6}.proj-chip .dot{background:#c8d0dd;border-radius:50%;width:8px;height:8px;display:inline-block}.proj-chip .dot.on{background:var(--ok,#12a37a)}.proj-chip .dot.err{background:var(--err,#d23f3f)}.proj-head{background:var(--card,#fff);border:1px solid var(--line);border-bottom:0;border-radius:12px 12px 0 0;flex-wrap:wrap;align-items:center;gap:12px;margin:14px 0 0;padding:14px 16px;display:flex}.proj-head h3{margin:0 0 6px}.proj-head.off h3{color:var(--muted)}.proj-head+.tabcard{border-top-left-radius:0;border-top-right-radius:0;margin-top:0}.ov-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;display:grid}.ov-grid .subcard{margin:0}.checklist{margin:6px 0 0;padding-left:0;list-style:none}.checklist li{padding:2px 0}dl.kv{grid-template-columns:max-content 1fr;gap:4px 12px;margin:8px 0;display:grid}dl.kv dt{color:var(--muted)}dl.kv dd{overflow-wrap:anywhere;margin:0}form.stack{flex-direction:column;gap:12px;display:flex}form.stack label{flex-direction:column;gap:4px;font-size:13px;font-weight:600;display:flex}.tabbody>.subcard:first-child{margin-top:0}@media (width<=640px){.ov-grid{grid-template-columns:1fr}.proj-head{padding:12px}.tabbar{scrollbar-width:none}.tabbar::-webkit-scrollbar{display:none}}.side-project{flex-direction:column;display:flex}.pswitch{position:relative}.pswitch-btn{color:#fff;cursor:pointer;text-align:left;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:10px;align-items:center;gap:10px;width:100%;padding:8px 10px;transition:background .15s,border-color .15s;display:flex}.pswitch-btn:hover,.pswitch-btn.open{background:#ffffff1f;border-color:#ffffff38}.pswitch-btn:focus-visible{outline-offset:2px;outline:2px solid #2dd4b3}.pavatar{color:#fff;font-weight:700;font-family:var(--font-head,inherit);letter-spacing:.02em;border-radius:8px;flex:none;place-items:center;display:inline-grid;box-shadow:inset 0 0 0 1px #ffffff2e}.pswitch-txt{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.pswitch-name{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.pswitch-sub{color:#8fa1c4;white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.pswitch-off{color:#f5a97f;font-weight:400}.pswitch-chev{color:#8fa1c4;flex:none;font-size:16px;line-height:1;transform:translateY(-3px)}.pswitch-pop{z-index:60;min-width:220px;max-height:340px;color:var(--text);background:#fff;border:1px solid #e3e8f2;border-radius:12px;padding:6px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 18px 40px -12px #0b1a3a73}.pswitch-q{width:100%;margin-bottom:6px}.pswitch-item{cursor:pointer;text-align:left;width:100%;color:inherit;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;padding:7px 8px;display:flex}.pswitch-item:hover{background:#f1f5fd}.pswitch-item.cur{background:color-mix(in srgb, var(--brand,#1d5de8) 8%, #fff)}.pswitch-item .pswitch-sub{color:var(--muted)}.pswitch-item .pswitch-name{font-size:13.5px}.pswitch-check{color:var(--brand,#1d5de8);font-weight:700}.pswitch.empty{padding:6px 4px}.side-nav a .ico{flex:none;place-items:center;width:20px;height:20px;display:inline-grid}.side-nav a .ico svg{display:block}.side-nav a.active .ico{opacity:1;color:#2dd4b3}.side .pswitch-btn,.side .pswitch-btn:hover,.side .pswitch-btn.open{color:#fff}.side .pswitch-btn:hover,.side .pswitch-btn.open{background:#ffffff1f;border-color:#ffffff3d}.pswitch-pop{min-width:0}.side{overflow-x:hidden}.side-project{overflow:visible}.side-label,.side-group{letter-spacing:.06em;color:#c9d5ec;font-size:12.5px;font-weight:700}.side-group{border-top:1px solid #ffffff1a;margin:16px 0 4px;padding:12px 10px 0}.side-nav a{font-size:14px}.side-nav .side-group~a{padding-left:18px}button.side-group{cursor:pointer;text-transform:uppercase;text-align:left;background:0 0;border-bottom:0;border-left:0;border-right:0;border-radius:0;justify-content:space-between;align-items:center;width:100%;font-family:inherit;display:flex}button.side-group:hover{color:#fff}button.side-group:focus-visible{outline-offset:2px;outline:2px solid #2dd4b3}button.side-group .chev{opacity:.8;font-size:12px;transition:transform .15s;transform:rotate(-90deg)}button.side-group.open .chev{transform:none}.side-sub{flex-direction:column;gap:2px;display:flex}.side-sub a{padding-left:18px}@media (prefers-reduced-motion:reduce){button.side-group .chev{transition:none}}@media (width>=861px){.shell:not(.mini) .side-sub.closed{display:none}}.side-nav button.side-group,.side-nav button.side-group:hover,.side-nav button.side-group:focus,.side-nav button.side-group:active{box-shadow:none;color:#c9d5ec;background:0 0;border-top:1px solid #ffffff1a}.side-nav button.side-group:hover{color:#fff}.guide .g-layout{grid-template-columns:260px 1fr;align-items:start;gap:16px;display:grid}.g-toc{background:var(--card);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:2px;max-height:calc(100vh - 24px);padding:12px;font-size:13px;display:flex;position:sticky;top:12px;overflow-y:auto}.g-toc b{font-family:var(--font-head,inherit);margin-bottom:6px}.g-toc a{color:#374151;border-radius:6px;padding:5px 8px;line-height:1.35;text-decoration:none}.g-toc a:hover{color:var(--brand,#1d5de8);background:#f1f5fd}.g-toc a.active{background:color-mix(in srgb, var(--brand,#1d5de8) 10%, #fff);color:var(--brand,#1d5de8);font-weight:600}.g-body{min-width:0}.g-sec{scroll-margin-top:12px;line-height:1.6}.g-sec h3{margin:0}.g-sec h4{margin:16px 0 6px;font-size:14.5px}.g-sec ul,.g-sec ol{padding-left:22px}.g-sec li{margin:4px 0}.g-who{color:#6b4fc4;background:#f1ecfd;border-radius:999px;padding:2px 8px;font-size:11.5px;font-weight:600}.g-btn{color:#1f2a44;white-space:nowrap;background:#f7f9fc;border:1px solid #cfd8e6;border-bottom-width:2px;border-radius:6px;margin:0 1px;padding:0 7px;font-size:.92em;font-weight:600;line-height:1.6;display:inline-block}.g-path{color:#1f2a44;font-weight:600}.g-path i{color:var(--muted);font-style:normal}.g-go{white-space:nowrap;margin-left:6px;font-weight:600}.g-steps{counter-reset:gs;list-style:none;padding-left:0!important}.g-steps>li{counter-increment:gs;margin:8px 0;padding-left:34px;position:relative}.g-steps>li:before{content:counter(gs);background:var(--brand,#1d5de8);color:#fff;border-radius:50%;place-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:grid;position:absolute;top:1px;left:0}.g-table{margin:8px 0 12px}.g-table table.grid td{vertical-align:top;font-size:13.5px;line-height:1.5}.g-table table.grid th:first-child{width:24%}.g-note{border-radius:10px;gap:10px;margin:10px 0;padding:10px 12px;font-size:13.5px;display:flex}.g-note>b{flex:none}.g-note.tip{background:#eaf7f2;border:1px solid #bfe6d6}.g-note.tip>b{color:#0f7a55}.g-note.warn{background:#fff7e3;border:1px solid #f3dd9b}.g-note.warn>b{color:#8a5a00}.g-errs{flex-direction:column;gap:6px;margin:8px 0;display:flex}.g-errs>div{border:1px solid var(--line);background:#fafbfe;border-radius:8px;grid-template-columns:minmax(200px,40%) 1fr;gap:10px;padding:8px 10px;font-size:13.5px;display:grid}.g-errs dt{color:var(--err,#c0392b);font-weight:600}.g-errs dd{margin:0}.g-flow{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.g-flow>div{background:#f1f5fd;border:1px solid #d9e3f5;border-radius:10px;flex-direction:column;flex:150px;gap:2px;padding:10px 12px;font-size:13px;display:flex}.g-flow>div b{font-family:var(--font-head,inherit);color:var(--brand,#1d5de8)}.g-flow>div.g-gate{background:#fff7e3;border-color:#f3dd9b}.g-flow>div.g-gate b{color:#8a5a00}.g-pre{white-space:pre-wrap;border:1px solid var(--line);background:#f7f9fc;border-radius:8px;padding:10px 12px;font-size:13px}.g-check ul{flex-direction:column;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.g-check li{border:1px solid var(--line);background:#fff;border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;display:flex}.g-check li.ok{background:#f3fbf7;border-color:#bfe6d6}.g-check li.ok .g-lbl{color:#4b5563}.g-tick{color:#4b5563;background:#e7ecf5;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:grid}.g-check li.ok .g-tick{background:var(--ok,#12a37a);color:#fff}.g-lbl{flex:1;min-width:180px;font-weight:600}.small-btn{padding:4px 10px;font-size:13px}.g-banner{align-items:center;gap:12px;display:flex}.g-banner>span{flex:1}@media (width<=900px){.guide .g-layout{grid-template-columns:1fr}.g-toc{max-height:none;position:static}.g-errs>div{grid-template-columns:1fr}}.sys-form{flex-direction:column;gap:4px;display:flex}.sys-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(220px,34%) 1fr;align-items:start;gap:6px 16px;padding:10px 0;display:grid}.sys-row.dirty{background:linear-gradient(90deg,#ffd54f1f,#0000 60%)}.sys-lbl{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sys-lbl label{font-size:13.5px;font-weight:600}.sys-in{flex-direction:column;gap:4px;min-width:0;display:flex}.sys-in input:not([type=checkbox]),.sys-in select{width:100%;max-width:560px}.pill.tiny{padding:1px 7px;font-size:10.5px}.setup .setup-step{padding:0;overflow:hidden}.setup-head{cursor:pointer;text-align:left;width:100%;color:inherit;background:0 0;border:0;border-radius:0;align-items:center;gap:12px;padding:14px 16px;font-size:15px;display:flex}.setup-head:hover{background:#f7f9fd}.setup-step.done .setup-head .g-tick{background:var(--ok,#12a37a);color:#fff}.setup-step.open .setup-head{border-bottom:1px solid var(--line)}.setup-body{padding:12px 16px 16px}.setup-body .card{box-shadow:none;margin:10px 0 0}.setup-hint{margin:0 0 10px;padding-left:18px;line-height:1.6}@media (width<=760px){.sys-row{grid-template-columns:1fr}}.rd{border:1px solid;border-radius:12px;margin:10px 0 14px;padding:12px 14px}.rd-block{background:#fff4f4;border-color:#f3c2c2}.rd-warn{background:#fffaeb;border-color:#f3dd9b}.rd-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.rd-ico{font-size:18px}.rd-title b{font-size:14.5px}.rd-block .rd-title b{color:#a32020}.rd-list{counter-reset:rd;flex-direction:column;gap:8px;margin:10px 0 0;padding-left:0;list-style:none;display:flex}.rd-list li{border:1px solid var(--line);background:#fff;border-radius:10px;grid-template-columns:1fr auto;align-items:start;gap:4px 12px;padding:10px 12px;display:grid}.rd-list li.chan{border-left:4px solid #e5484d}.rd-list li.cb{border-left:4px solid #f0b400}.rd-msg{font-size:13.5px;font-weight:600;line-height:1.5}.rd-fix{color:#374151;grid-column:1;font-size:13px;line-height:1.5}.rd-list li>a.button{white-space:nowrap;grid-area:1/2/span 2;align-self:center}@media (width<=640px){.rd-list li{grid-template-columns:1fr}.rd-list li>a.button{grid-area:auto/1;justify-self:start}}.ov{flex-direction:column;gap:18px;font-size:14.5px;line-height:1.6;display:flex}.ov h4{font-size:16px;font-family:var(--font-head,inherit);margin:0 0 6px}.ov-sec-head{flex-wrap:wrap;align-items:flex-start;gap:16px;margin-bottom:8px;display:flex}.ov-sec-head>div{flex:1;min-width:260px}.ov-sec-head p{margin:2px 0 0}.ov-card{border:1px solid var(--line);background:#fff;border-radius:14px;padding:18px 20px}.ov-ready{border:1px solid;border-radius:14px;padding:18px 20px}.ov-ready.good{background:#f1fbf6;border-color:#bfe6d6}.ov-ready.good h4{color:#0f7a55}.ov-ready.bad{background:#fff6f6;border-color:#f3c2c2}.ov-ready.bad h4{color:#a32020}.ov-ready .rd{background:0 0;border:0;margin:10px 0 0;padding:0}.ov-ready .rd-head{display:none}.ov-two{grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:18px;display:grid}.ov-targets td{vertical-align:middle;padding:10px 12px;font-size:14px}dl.ov-kv{grid-template-columns:max-content 1fr;gap:10px 18px;font-size:14px}dl.ov-kv dt{font-weight:600}.ov-form{flex-direction:column;gap:12px;max-width:520px;display:flex}.ov-form label:not(.switch){flex-direction:column;gap:4px;font-size:13.5px;font-weight:600;display:flex}.ov-members{flex-wrap:wrap;gap:8px;display:flex}.ov-members .mrole{padding:6px 12px;font-size:13.5px}@media (width<=640px){.ov-two{grid-template-columns:1fr}.ov-card,.ov-ready{padding:14px}}.dl-btn{color:#14532d;background:#f2faf5;border:1px solid #b9e2c9;border-radius:10px;align-items:center;gap:10px;max-width:320px;padding:6px 12px 6px 8px;text-decoration:none;transition:background .15s,border-color .15s,box-shadow .15s;display:inline-flex}.dl-btn:hover{background:#e3f5ea;border-color:#86cfa3;text-decoration:none;box-shadow:0 4px 12px -6px #1d7a4673}.dl-btn:focus-visible{outline-offset:2px;outline:2px solid #1d7a46}.dl-txt{flex-direction:column;min-width:0;line-height:1.2;display:flex}.dl-txt b{font-size:13px}.dl-txt small{color:#4b7a5e;white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.dl-arrow{color:#1d7a46;flex:none}.g2-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.g2-head h3{margin:0}.g2-actions{margin-top:12px}.bug-opts{grid-template-columns:1fr 1fr;align-items:start;gap:12px 16px;padding:12px 14px}.bug-opts .fld,.bug-opts .bug-parent{flex-direction:column;gap:6px;min-width:0;margin:0;display:flex}.fld-lbl{color:#374151;font-size:12.5px;font-weight:600;line-height:1.2}.bug-opts select,.bug-opts .combo input{box-sizing:border-box;width:100%;height:40px;font:inherit;background:#fff;border:1px solid #c9ced8;border-radius:8px;padding:0 12px;font-size:14px}.bug-opts .combo{flex-direction:column;gap:6px;display:flex;position:relative}.bug-opts .picked{flex-direction:column;gap:6px;display:flex}.bug-opts .picked .issue{white-space:nowrap;text-overflow:ellipsis;background:#fff;border:1px solid #c9ced8;border-radius:8px;align-items:center;min-height:40px;padding:0 12px;font-size:14px;display:flex;overflow:hidden}.bug-opts .picked>button.link{align-self:flex-start;font-size:12.5px}.bug-opts .picked{background:0 0;border:0;flex-wrap:nowrap;align-items:stretch;margin:0;padding:0}.tg-box h3{align-items:center;gap:8px;display:flex}.tg-logo{color:#fff;background:#229ed9;border-radius:50%;place-items:center;width:26px;height:26px;font-size:14px;display:inline-grid}.tg-prefs{flex-direction:column;gap:8px;margin:10px 0 12px;display:flex}.tg-steps{margin:6px 0 12px;padding-left:20px;line-height:1.7}.tg-admin h4{margin:16px 0 4px}.toasts{z-index:300;pointer-events:none;flex-direction:column;align-items:flex-end;gap:12px;width:min(440px,100vw - 32px);display:flex;position:fixed;top:18px;right:22px}.toast{pointer-events:auto;color:#fff;cursor:pointer;border-radius:14px;align-items:flex-start;gap:14px;width:100%;padding:16px 44px 18px 16px;font-size:15px;line-height:1.5;transition:opacity .45s,transform .45s;animation:.32s cubic-bezier(.2,.9,.3,1.2) toast-in;display:flex;position:relative;overflow:hidden;box-shadow:0 22px 44px -16px #0b1a3a8c,0 2px 6px #0b1a3a1f}.toast.leaving{opacity:0;transform:translate(24px)}.toast.t-ok{background:linear-gradient(135deg,#0f9f6e,#12b886)}.toast.t-err{background:linear-gradient(135deg,#d7263d,#ef4b5e)}.toast.t-warn{color:#fff;background:linear-gradient(135deg,#e08a00,#f5a524)}.toast.t-info{background:linear-gradient(135deg,#1d5de8,#3b82f6)}.toast-ico{color:#fff;background:#ffffff38;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:17px;font-weight:800;display:grid;box-shadow:inset 0 0 0 2px #ffffff8c}.toast-body{flex-direction:column;gap:2px;min-width:0;display:flex}.toast-head{letter-spacing:.01em;font-size:16px;font-weight:800;font-family:var(--font-head,inherit)}.toast-txt{overflow-wrap:anywhere;opacity:.96}.toast-x{color:#fff;cursor:pointer;background:#ffffff24;border:0;border-radius:8px;place-items:center;width:28px;height:28px;font-size:18px;line-height:1;display:grid;position:absolute;top:8px;right:8px}.toast-x:hover{background:#ffffff4d}.toast-bar{transform-origin:0;background:#ffffffb3;width:100%;height:4px;animation:linear forwards toast-bar;position:absolute;bottom:0;left:0}@keyframes toast-in{0%{opacity:0;transform:translate(40px)scale(.96)}}@keyframes toast-bar{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media (prefers-reduced-motion:reduce){.toast{transition:none;animation:none}.toast-bar{animation:none;display:none}}@media (width<=640px){.toasts{width:auto;top:12px;left:12px;right:12px}}.tg-test{margin:14px 0}.tg-test h4{margin:0 0 8px}.tg-result{flex-direction:column;gap:4px;margin:10px 0 0;padding:0;list-style:none;display:flex}.tg-needlink{margin-top:10px}.tg-code{background:#f3f9fe;border:1px dashed #9cc7e8;border-radius:10px;flex-direction:column;gap:8px;margin-top:12px;padding:12px 14px;display:flex}.tg-code>div:first-child{flex-direction:column;gap:4px;display:flex}.tg-code-v{letter-spacing:.12em;-webkit-user-select:all;user-select:all;background:#fff;border:1px solid #cfe0f0;border-radius:8px;align-self:flex-start;padding:4px 10px;font-size:22px;font-weight:700}.setup-sub{align-items:center;gap:8px;margin:14px 0 6px;font-size:14.5px;display:flex}.side-foot .queue{color:inherit;line-height:1.4;text-decoration:none}.side-foot a.queue:hover{color:#fff}.side-foot .queue-sub{color:#8fa1c4;font-size:11.5px}.desc-view.desc-full{border:1px solid var(--line);color:#1f2a44;background:#fbfcfe;border-radius:10px;max-height:none;margin-top:10px;padding:14px 18px;font-size:14.5px;line-height:1.65;overflow:visible}.desc-full h1{margin:4px 0 10px;font-size:20px}.desc-full h2{border-bottom:1px solid var(--line);margin:18px 0 6px;padding-bottom:4px;font-size:16.5px}.desc-full h3{margin:14px 0 4px;font-size:15px}.desc-full ul,.desc-full ol{margin:6px 0;padding-left:22px}.desc-full p{margin:6px 0}.mtop,.mbot,.drawer-close{display:none}@media (width<=860px){html,body{overflow-x:hidden}.shell{display:block}.mtop{z-index:40;height:56px;padding:0 10px;padding-top:env(safe-area-inset-top);background:var(--brand-navy,#0f1b3d);color:#fff;align-items:center;gap:10px;display:flex;position:sticky;top:0;box-shadow:0 4px 14px -8px #00000073}.mtop-btn{color:#fff;background:#ffffff14;border:0;border-radius:10px;flex:none;place-items:center;width:40px;height:40px;display:grid}.mtop-brand img{width:28px;height:28px;display:block}.mtop-title{flex-direction:column;flex:1;min-width:0;line-height:1.2;display:flex}.mtop-title b{font-size:16px;font-family:var(--font-head,inherit);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mtop-proj{color:#9fb3d9;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:0;align-self:flex-start;max-width:100%;padding:0;font-size:12px;overflow:hidden}.mtop .bell{color:#fff;background:#ffffff14;border:0;border-radius:10px;flex:none;padding:8px 10px;position:relative}.mtop .bell .lbl{display:none}.mtop .bell .badge{position:absolute;top:2px;right:2px}.side{z-index:60;width:min(300px,86vw);height:100%;padding:16px 14px calc(16px + env(safe-area-inset-bottom));visibility:hidden;box-shadow:none;flex-direction:column;transition:transform .25s,visibility 0s linear .25s;position:fixed;top:0;bottom:0;left:0;overflow:hidden auto;transform:translate(-105%)}.shell.drawer-on .side{visibility:visible;transition:transform .25s,visibility;transform:none;box-shadow:8px 0 30px #00000059}.shell.mini .side{width:min(300px,86vw)}.shell.mini .side-nav a .lbl,.shell.mini .side-group,.shell.mini .side-project,.shell.mini .brand-full{display:revert}.side-toggle{display:none}.drawer-close{color:#fff;background:#ffffff1a;border:0;border-radius:8px;place-items:center;width:34px;height:34px;font-size:22px;line-height:1;display:grid;position:absolute;top:12px;right:12px}.drawer-scrim{z-index:55;background:#080f2380;position:fixed;inset:0}body.drawer-open{overflow:hidden}.side-nav a{padding:11px 12px;font-size:15px}.side-foot .bell{display:none}.mbot{z-index:40;height:calc(60px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--line);background:#fff;grid-auto-columns:1fr;grid-auto-flow:column;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -6px 18px -12px #0b1a3a59}.mbot a,.mbot button{color:#6b7690;background:0 0;border:0;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:0;padding:0;font-size:11px;font-weight:600;text-decoration:none;display:flex}.mbot a.active,.mbot button.active{color:var(--brand,#1d5de8)}.mbot a.active:before{content:"";position:absolute}.mbot span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.shell-main{min-width:0}main{padding:12px 12px calc(84px + env(safe-area-inset-bottom));box-sizing:border-box;max-width:100%}.chat-fab{bottom:calc(72px + env(safe-area-inset-bottom));right:12px}.toasts{top:calc(64px + env(safe-area-inset-top))}.shell-main table.grid:not(.cards-table table){-webkit-overflow-scrolling:touch;max-width:100%;display:block;overflow-x:auto}.bug-head{flex-wrap:wrap;row-gap:6px}.bug-head .title{flex:100%;order:10;font-size:14px;line-height:1.45}.cards-table .tc-table tr.tc-row{grid-template-columns:1fr auto auto;grid-template-areas:"stt kq cm""case case case""mm mm mm""cf cf cf";gap:6px 10px;padding:10px 12px}.cards-table .tc-table td.stt{grid-area:stt;align-self:center}.cards-table .tc-table td.kq{grid-area:kq;align-self:center}.cards-table .tc-table td.cm{grid-area:cm;align-self:center}.cards-table .tc-table td.tc-case{grid-area:case;font-size:14px;font-weight:600;line-height:1.45}.cards-table .tc-table td.tc-mm{color:#374151;background:#f7f9fc;border-radius:8px;grid-area:mm;padding:8px 10px;font-size:13.5px}.cards-table .tc-table td.cfcol{grid-area:cf}.cards-table .tc-table td.stt:before,.cards-table .tc-table td.kq:before,.cards-table .tc-table td.cm:before,.cards-table .tc-table td.tc-case:before{display:none}.cards-table .tc-table td.tc-mm:before{content:"Mong muốn";margin-bottom:2px;font-size:10.5px}.cards-table .tc-table tr.tc-group td{background:0 0;border:0;padding:8px 4px 2px;font-size:14px}.cards-table .tc-table tr.tc-group{background:0 0;border:0;margin:14px 0 0;padding:0;display:block}.cards-table .tc-table tr.tc-detail{padding:10px;display:block}.evidence img{max-width:100%;height:auto}.evidence a{max-width:100%}.stepper{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-flow:row;align-items:flex-start;gap:2px;padding-bottom:6px;overflow-x:auto}.stepper::-webkit-scrollbar{display:none}.st-step{text-align:center;flex-direction:column;flex:none;align-items:center;gap:4px;min-width:74px;padding:6px}.st-step .st-dot{width:30px;height:30px}.st-text{align-items:center}.st-text b{white-space:normal;font-size:12px;line-height:1.2}.st-text small{white-space:normal;font-size:10px}.st-gate{flex-direction:column;flex:none;align-items:center;gap:4px;min-width:52px;padding:10px 0 0}.st-gate .st-line{display:none}.st-gate-lbl{text-align:center;white-space:normal;font-size:10px}.st-log{white-space:nowrap;flex:none;align-self:center;margin-left:4px;padding:6px 10px;font-size:12px}.jmeta>div{padding:6px 8px}.jmeta span,.jmeta small{font-size:10.5px}.jmeta b{font-size:13px}.chat-fab{place-items:center;width:52px;height:52px;padding:0;font-size:22px;display:grid}.chat-fab-lbl{display:none}}.rd-list li.rd-more{background:0 0;border:0;padding:6px 10px;display:block}@media (width<=860px){.rd-head{flex-wrap:nowrap;align-items:flex-start}.rd-title{flex:1;min-width:0}.rd-head .spacer{display:none}.rd-head>button.small-btn{flex:none}.cards-table td.num,.cards-table th.num{text-align:left}.cards-table td code{word-break:break-all}.cards-table td.actions{flex-wrap:wrap;gap:6px;display:flex}.drawer{border-radius:0;width:100%!important;max-width:100%!important}.drawer-body{padding-bottom:calc(24px + env(safe-area-inset-bottom))}}.side-allproj{color:#8fa1c4;margin-top:6px;font-size:12px;text-decoration:none;display:inline-block}.side-allproj:hover{color:#fff}.ppick-head{flex-wrap:wrap;align-items:flex-start;gap:16px;margin-bottom:14px;display:flex}.ppick-head>div{flex:1;min-width:260px}.ppick-head h2{margin:0 0 4px}.ppick-q{width:100%;max-width:420px;margin-bottom:14px}.ppick-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.ppick-card{text-align:left;border:1px solid var(--line);cursor:pointer;color:inherit;font:inherit;background:#fff;border-radius:16px;flex-direction:column;gap:10px;padding:18px;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex;box-shadow:0 10px 28px -20px #0b1a3a80}.ppick-card:hover{border-color:var(--brand,#1d5de8);transform:translateY(-2px);box-shadow:0 16px 32px -18px #1d5de873}.ppick-card:focus-visible{outline:3px solid color-mix(in srgb, var(--brand,#1d5de8) 40%, transparent);outline-offset:2px}.ppick-card.last{border-color:color-mix(in srgb, var(--brand,#1d5de8) 45%, var(--line))}.ppick-card.off{opacity:.7}.ppick-top{align-items:center;gap:12px;display:flex}.ppick-top .pavatar{border-radius:12px}.ppick-name{flex-direction:column;min-width:0;display:flex}.ppick-name b{font-size:17px;font-family:var(--font-head,inherit)}.ppick-name code{color:var(--muted);align-self:flex-start;font-size:12px}.ppick-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ppick-meta .pill{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;height:26px;padding:0 11px;font-size:12.5px;font-weight:600;line-height:1;display:inline-flex}.pill.info{color:#1d4fc4;background:#e8f0fe}.ppick-go{color:var(--brand,#1d5de8);align-self:flex-end;margin-top:auto;font-weight:700}.ppick-empty{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:28px 20px;display:flex}@media (width<=640px){.ppick-grid{grid-template-columns:1fr}}.login-note{color:#1d3f8a;background:#eef4ff;border:1px solid #c9dafc;border-radius:10px;padding:10px 12px;font-size:14px}.error.locked{background:#fdecec;border:1px solid #f3b4b4;font-weight:600}.login-rules{flex-direction:column;gap:4px;margin:4px 0 0;padding-left:18px;line-height:1.45;display:flex}.otp-input{letter-spacing:10px;text-align:center;font-variant-numeric:tabular-nums;font-weight:700;padding:12px!important;font-size:28px!important}.otp-actions{flex-wrap:wrap;justify-content:space-between;gap:10px;display:flex}.otp-actions .link:disabled{opacity:.55;cursor:default}.tg-force{flex-direction:column;gap:10px;width:100%;max-width:640px;margin:32px auto;display:flex}.tg-force h2{margin:0}tr.locked-row td{background:#fff5f5}.smtp-admin{flex-direction:column;gap:10px;display:flex}.smtp-admin .form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:end;gap:10px 14px;display:grid}.smtp-admin label.check{text-align:left;flex-direction:row;justify-content:flex-start;align-items:center;gap:8px;padding-bottom:10px;display:flex}.smtp-admin label.check input{flex:none;width:18px;height:18px;margin:0}.card.info{background:#f3f7ff;border-color:#d6e2fb;line-height:1.5}@media (width<=640px){.otp-input{letter-spacing:6px}.tg-force{margin:16px auto}}.pdocs{flex-direction:column;gap:10px;display:flex}.pdocs-grid{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:16px;display:grid}.pdocs-list{flex-direction:column;gap:4px;display:flex}.pdocs-item{text-align:left;border:1px solid var(--border,#e3e7ef);background:var(--card,#fff);cursor:pointer;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;display:flex}.pdocs-item.on{border-color:var(--primary);background:var(--primary-bg)}.pdocs-item.missing{color:var(--muted,#6b7690);border-style:dashed}.pdocs-name{overflow-wrap:anywhere;font-size:14px;font-weight:600}.pdocs-main{flex-direction:column;gap:10px;min-width:0;display:flex}.pdocs-text{width:100%;min-height:420px;font-family:ui-monospace,Menlo,monospace;font-size:13px;line-height:1.5}.pdocs-view{border:1px solid var(--border,#e3e7ef);white-space:pre-wrap;word-break:break-word;background:#f6f8fb;border-radius:8px;max-height:560px;margin:0;padding:12px;font-size:12.5px;line-height:1.5;overflow:auto}.pdocs-hist ul{flex-direction:column;gap:4px;margin:6px 0;padding:0;font-size:13px;list-style:none;display:flex}.pdocs-hist li{flex-wrap:wrap;align-items:center;gap:8px;display:flex}@media (width<=760px){.pdocs-grid{grid-template-columns:1fr}.pdocs-text{min-height:300px}}button.icon-btn,.icon-btn{flex:none;justify-content:center;place-items:center;line-height:0;padding:0!important}button.icon.icon-btn{display:inline-flex}button.icon-btn>svg,.icon-btn>svg{flex:none;display:block}button.icon.icon-btn{border-radius:8px;width:32px;height:32px}button:has(>svg:only-child):not(.icon-btn){justify-content:center;align-items:center;display:inline-flex}.sec-toggle,.sec-toggle h3{line-height:1.35}.sec-toggle{min-height:28px}@media (width<=1100px){.mtop-proj{align-items:center;gap:3px;line-height:1.5;display:inline-flex;padding:1px 0!important}}.sec-toggle .chev{flex:none;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.sec-toggle .chev svg{display:block}.pswitch-chev{justify-content:center;align-items:center;display:inline-flex;transform:rotate(90deg)}.pswitch-chev svg{display:block}.kb-running{align-items:center;gap:8px;display:flex}.kb-bar{border-top:1px solid var(--line,#e3e8f2);margin-top:10px;padding-top:10px}.kb-list{gap:10px;margin:8px 0 0;padding:0;list-style:none;display:grid}.kb-item{border:1px solid var(--line,#e3e8f2);background:var(--card,#fff);border-radius:12px;gap:4px;min-width:0;padding:12px 14px;display:grid}.kb-item.blocked{border-color:color-mix(in srgb, var(--err,#d33) 45%, transparent)}.kb-head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.kb-title{overflow-wrap:anywhere;font-size:15px}.kb-sum{overflow-wrap:anywhere;margin:0}.kb-item p{margin:0}.kb-warn{color:var(--err,#c0392b);margin:2px 0 0;padding-left:0;list-style:none}.kb-act{margin-top:6px}.kb-done,.kb-notes{margin-top:10px}.kb-done summary,.kb-notes summary{cursor:pointer}.kb-form{gap:12px;display:grid}.kb-form textarea{width:100%}.kb-preview{gap:8px;display:grid}.kb-preview h3{margin:4px 0 0}.kb-preview .diff{max-height:60vh;overflow:auto}.spec h3{overflow-wrap:anywhere}.spec-panel{margin-top:8px}.spec-pending{border:1px solid var(--line);background:var(--card);border-radius:12px;gap:6px;min-width:0;margin-top:10px;padding:12px 14px;display:grid}.spec-pending.cho_xac_nhan{border-color:color-mix(in srgb, var(--primary) 45%, transparent)}.spec-pending p{margin:0}.spec-base{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:10px;display:flex}.spec-list,.spec-hist{margin-top:10px}.spec-list summary,.spec-hist summary{cursor:pointer}.spec-review{gap:10px;margin-top:6px;display:grid}.spec-bar{padding:8px 0}.spec-items{gap:10px;margin:0;padding:0;list-style:none;display:grid}.spec-item{border:1px solid var(--line);background:var(--card);border-left-width:4px;border-radius:10px;gap:4px;min-width:0;padding:10px 12px;display:grid}.spec-item p{overflow-wrap:anywhere;margin:0}.spec-item.dung{border-left-color:var(--ok)}.spec-item.sai{border-left-color:var(--err);opacity:.7}.spec-old{text-decoration:line-through;-webkit-text-decoration-color:color-mix(in srgb, var(--err) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--err) 60%, transparent)}.spec-new .pill{margin-left:6px}.spec-edit{gap:8px;margin-top:4px;display:grid}.spec-edit textarea,.spec-edit input{width:100%}button.danger-btn.on{background:var(--err-bg);color:var(--err);border-color:var(--err)}.inherit{border-left:4px solid var(--primary)}.inherit ul{margin:6px 0 0;padding-left:18px}.inherit code{overflow-wrap:anywhere;margin-right:6px}.pham-vi{gap:6px;margin-top:10px;display:grid}@media (width<=1024px){.tablewrap.cards-table{-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;background:0 0;border:0;max-height:none;margin-top:0;overflow:visible}.cards-table table.grid td.num,.cards-table table.grid th.num{text-align:left}.cards-table table.feat-list tr{grid-template-columns:1fr 1fr;gap:6px 14px}.cards-table table.feat-list td.feat-name,.cards-table table.feat-list td.actions{grid-column:1/-1}.cards-table table.feat-list td.feat-name:before{display:none}.cards-table table.feat-list td.feat-name b{font-size:16px}}.guide-list{gap:10px;margin:8px 0 0;padding:0;list-style:none;display:grid}.guide-list li{border:1px solid var(--line);background:var(--card);border-radius:10px;gap:4px;min-width:0;padding:10px 12px;display:grid}.guide-list p{overflow-wrap:anywhere;margin:0}.guide-title{overflow-wrap:anywhere}.guide-doc{color:#111;text-align:justify;font-family:Times New Roman,Times,serif;font-size:16px;line-height:1.55}.guide-doc h1{text-align:center;color:#1f3864;margin:8px 0 16px;font-size:24px}.guide-doc h2{color:#1f3864;margin:22px 0 8px;font-size:20px}.guide-doc h3{color:#2e74b5;margin:16px 0 6px;font-size:17px}.guide-doc p{overflow-wrap:anywhere;margin:6px 0}.guide-bar{z-index:1;background:#fff;border-bottom:1px solid #e3e8f2;padding:8px 0;font-family:inherit;position:sticky;top:-8px}.guide-steps{margin:0;padding:0;list-style:none}.guide-step{color:#1f3864}.guide-doc figure{text-align:center;margin:8px 0 14px}.guide-doc figure img{border:1px solid #ccd3e0;border-radius:4px;max-width:100%;height:auto}.guide-doc figcaption{color:#444;margin-top:4px;font-size:14px;font-style:italic}.guide-note{background:#fff8e1;border-left:4px solid #f2b705;border-radius:6px;margin:8px 0;padding:8px 12px}.guide-note ul{margin:4px 0 0}.guide-faq{margin:8px 0}a.button.btn-dl{white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font:600 14px/1.2 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;text-decoration:none;display:inline-flex}.guide-bar{text-align:left;font:14px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.drawer.wide .guide-doc{max-width:1100px;margin:0 auto}@media (width<=900px){.drawer.wide{width:100vw!important}}button.btn-ico{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.gh{text-align:left;color:#0b1a3a;background:radial-gradient(120% 140% at 0 0,#eaf1ff 0%,#f4f8ff 45%,#effbf7 100%);border:1px solid #dbe5f5;border-radius:16px;margin:4px 0 22px;padding:20px 22px 18px;font:14px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;position:relative;overflow:hidden;box-shadow:0 10px 30px -18px #0b1a3a59}.gh:before{content:"";background:var(--brand-gradient);height:4px;position:absolute;inset:0 0 auto}.gh-top{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.gh-id{min-width:0}.gh-kicker{letter-spacing:.08em;text-transform:uppercase;color:#2e74b5;font-size:11.5px;font-weight:700;display:block}.guide-doc .gh-title{font-family:var(--font-head);text-align:left;color:#0b1a3a;overflow-wrap:anywhere;margin:4px 0 10px;font-size:24px;line-height:1.25}.gh-chips{flex-wrap:wrap;gap:6px;display:flex}.gh-chip{color:#33415c;background:#fff;border:1px solid #d6e0f0;border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:12.5px;display:inline-flex}.gh-ver{background:var(--brand-gradient);color:#fff;border-radius:14px;flex-direction:column;flex:none;justify-content:center;align-items:center;min-width:92px;padding:10px 14px;display:flex;box-shadow:0 10px 22px -10px #1d5de899}.gh-ver span{letter-spacing:.06em;text-transform:uppercase;opacity:.9;font-size:11px}.gh-ver b{font-family:var(--font-head);font-size:26px;line-height:1.1}.gh-meta{border-top:1px dashed #cfdaee;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px 18px;margin:16px 0 0;padding:12px 0 0;display:grid}.gh-meta div{min-width:0}.gh-meta dt{letter-spacing:.04em;text-transform:uppercase;color:#6b7690;font-size:11px;font-weight:600}.gh-meta dd{overflow-wrap:anywhere;margin:2px 0 0;font-weight:600}.gh-change{background:#ffffffb3;border-radius:10px;padding:8px 12px;font-size:13.5px;margin:12px 0 0!important}.gh-actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.guide-doc .guide-h1{margin-top:6px}@media (width<=600px){.gh-meta{grid-template-columns:1fr 1fr}.gh{padding:16px}.gh-top{flex-direction:column-reverse}.gh-ver{flex-direction:row;gap:8px;min-width:0;padding:6px 12px}.gh-ver b{font-size:18px}.guide-doc .gh-title{font-size:20px}}.drawer.wide .drawer-inner{max-width:1100px;margin:0 auto}.pdesc-text{white-space:pre-wrap;margin:8px 0 4px}.gchips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.gchip{color:#33415c;cursor:pointer;background:#fff;border:1px solid #c9d3e6;border-radius:999px;align-items:center;gap:6px;padding:5px 11px 5px 7px;font-size:13px;line-height:1.2;display:inline-flex}.gchip .gchip-box{color:#fff;border:1.5px solid #9aa8c2;border-radius:4px;justify-content:center;align-items:center;width:16px;height:16px;font-size:11px;font-weight:700;display:inline-flex}.gchip.on{border-color:var(--primary);color:#0b2a6b;background:#eaf1ff;font-weight:600}.gchip.on .gchip-box{background:var(--primary);border-color:var(--primary)}.gchip:disabled{opacity:.55;cursor:not-allowed}.gchip-empty{font-style:italic}.member-other{flex-wrap:wrap;align-items:center;gap:6px 10px;margin:6px 0;display:flex}.perm-matrix-wrap{-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:12px;margin-top:8px;overflow-x:auto}table.grid.perm-matrix{min-width:720px;margin:0}.perm-matrix th.pm-col{text-align:center;white-space:nowrap;min-width:96px}.perm-matrix td.pm-cell{text-align:center;vertical-align:middle}.perm-matrix tr.pm-cat td{color:#2e74b5;letter-spacing:.05em;text-transform:uppercase;background:#f2f6fd;font-size:12px;font-weight:700}.pm-tick{color:#fff;background:#fff;border:1.5px solid #b8c4da;border-radius:7px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;font-size:14px;font-weight:800;line-height:1;display:inline-flex}.pm-tick.on{background:var(--primary);border-color:var(--primary)}.pm-tick:hover{border-color:var(--primary)}.grp-list{gap:10px;margin-top:10px;display:grid}.grp-card{border:1px solid var(--line);background:var(--card);border-radius:12px;gap:6px;min-width:0;padding:12px 14px;display:grid}.grp-card p{margin:0}.grp-name{font-size:15px}.grp-tags{flex-wrap:wrap;gap:6px;display:flex}.grp-edit{gap:10px;margin-top:10px;display:grid}.grp-perms{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;display:grid}.grp-perms fieldset{border:1px solid var(--line);border-radius:10px;margin:0;padding:8px 12px}.grp-perms legend{color:#2e74b5;padding:0 4px;font-size:13px;font-weight:700}.grp-perm{align-items:flex-start;gap:8px;margin:6px 0;display:flex!important}.grp-perm input{margin-top:3px}.assign-bar{margin-bottom:6px}select:not([multiple]):not([size]){appearance:none;height:40px;color:var(--text);line-height:38px;font:inherit;cursor:pointer;text-overflow:ellipsis;vertical-align:middle;background-color:#fff;border:1px solid #c9d3e6;border-radius:10px;font-size:14px;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #0b1a3a0a;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235b6b88' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")!important;background-position:right 12px center!important;background-repeat:no-repeat!important;background-size:14px 14px!important;padding:0 36px 0 12px!important}input[type=text],input[type=email],input[type=password],input[type=number],input[type=url],input[type=search],input:not([type]){height:40px;font:inherit;box-sizing:border-box;vertical-align:middle;background-color:#fff;border:1px solid #c9d3e6;border-radius:10px;padding:0 12px;font-size:14px;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #0b1a3a0a}textarea{border:1px solid #c9d3e6;border-radius:10px;padding:10px 12px;transition:border-color .15s,box-shadow .15s}select:not([multiple]):not([size]):hover,input:not([type=checkbox]):not([type=radio]):not([type=file]):hover,textarea:hover{border-color:#9fb1d1}select:focus,input:not([type=checkbox]):not([type=radio]):not([type=file]):focus,textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #1d5de829}select:disabled,input:disabled,textarea:disabled{color:#8a96ad;cursor:not-allowed;background-color:#f3f5f9!important}select option{color:var(--text);background:#fff}table.grid select:not([multiple]):not([size]),table.grid input:not([type=checkbox]):not([type=radio]){border-radius:8px;height:34px;line-height:32px}.side select.project,header.top select.project{color:#fff;border-color:#ffffff40;background-color:#ffffff1a!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")!important}.field-inline{white-space:nowrap;align-items:center;gap:8px;margin:0;font-weight:600;display:inline-flex!important}.field-inline select{min-width:160px}.assign-bar{flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:6px;display:flex}.assign-bar input.search{flex:260px;min-width:0}tr.row-changed td{background:#fffbea}tr.row-changed .pill.gate{margin-left:8px}@media (width<=700px){select:not([multiple]):not([size]),input[type=text],input[type=email],input[type=password],input[type=number],input[type=url],input[type=search],input:not([type]){font-size:16px}}.field-inline{flex-direction:row!important;margin-bottom:0!important}@media (width<=700px){.bug-opts{grid-template-columns:1fr!important}}.agent-cfg{gap:4px;display:grid}.ac-sec{margin:6px 0 10px}.ac-sec h4{margin:8px 0 4px}.ac-sec p{margin:0 0 6px}.ac-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:4px 16px;display:grid}.ac-grid textarea,.ac-sec>label textarea{width:100%;min-width:0}.ac-cf{grid-template-columns:120px 1fr 1.2fr auto;align-items:center;gap:8px;margin:6px 0;display:grid}@media (width<=700px){.ac-cf{grid-template-columns:1fr 1fr}}.ac-preview{margin-top:10px}.tdai{border:1px solid var(--line);background:linear-gradient(135deg,#f5f8ff,#f2fbf8);border-radius:12px;gap:8px;margin:8px 0 14px;padding:12px 14px;display:grid}.tdai-form{gap:10px;display:grid}.tdai-form p{margin:0}.tdai-src{border:1px solid var(--line);background:#fff;border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;font-weight:400;flex-direction:row!important;margin:0!important;display:flex!important}.tdai-src.col{align-items:stretch;gap:6px;flex-direction:column!important}.tdai-src>span{gap:2px;display:grid}.tdai-src small{color:var(--muted);font-size:12px}.tdai-src input[type=checkbox]{margin-top:3px}.tdai-review{gap:10px;display:grid}.tdai-item{border:1px solid var(--line);background:#fff;border-radius:10px;gap:6px;min-width:0;padding:10px 12px;display:grid}.tdai-item p{margin:0}.tdai-item .diff,.tdai-item .pdocs-view{max-height:55vh;overflow:auto}.ov-desc .desc-box{border:1px solid var(--line);color:#1f2a44;background:#fbfcfe;border-radius:10px;max-height:300px;padding:12px 16px;font-size:14px;line-height:1.6;overflow:auto}.ov-desc .desc-box h1{margin:2px 0 8px;font-size:18px}.ov-desc .desc-box h2{margin:14px 0 6px;font-size:15.5px}.ov-desc .desc-box h3{margin:12px 0 4px;font-size:14.5px}.ov-desc .desc-box ul,.ov-desc .desc-box ol{margin:6px 0;padding-left:22px}.ov-desc .desc-box p{margin:6px 0}.ov-desc .ov-sec-head .small-btn+.small-btn,.ov-desc .ov-sec-head .small-btn+.primary{margin-left:8px}.filebtn{flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px;display:flex}.filebtn>label.button{cursor:pointer;color:var(--text);background:#f7f9fc;border:1px dashed #b8c2d3;border-radius:8px;align-items:center;gap:6px;padding:7px 14px;font-size:13.5px;font-weight:600;display:inline-flex;flex-direction:row!important}.filebtn>label.button:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-bg)}.filebtn-name{border:1px solid var(--line);background:#fff;border-radius:999px;align-items:center;gap:8px;padding:4px 10px;display:inline-flex}.pdocs-kinds{margin:4px 0 6px}.pdocs-kinds button{padding:7px 16px;font-size:14px}.pdocs-one{margin-top:12px}.tdai-src .button.small-btn{margin-top:6px;display:inline-block}.repo-line{align-items:center;gap:6px;margin:2px 0;display:flex}.rtype{text-align:center;color:#4b5565;background:#eef1f6;border-radius:4px;min-width:38px;padding:1px 6px;font-size:11px;font-weight:700;display:inline-block}.rtype.fe{color:#1d4ed8;background:#e6f0ff}.rtype.be{color:#057a5c;background:#e2f7f0}.rtype.job{color:#b45309;background:#fff1e0}.rtype.mobile{color:#7e22ce;background:#f3e8ff}.repo-pick{flex-direction:column;gap:4px;max-height:320px;margin:8px 0;display:flex;overflow:auto}.repo-row{border:1px solid var(--line);background:#fff;border-radius:8px;align-items:center;gap:10px;padding:6px 10px;display:flex}.repo-row.on{background:#f5f9ff;border-color:#b9d2f7}.repo-row select{width:auto;min-width:140px;padding:4px 8px}label.radio-card{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;align-items:flex-start;gap:10px;margin:6px 0;padding:10px 12px;flex-direction:row!important;display:flex!important}label.radio-card:has(input:checked){border-color:var(--primary);background:var(--primary-bg)}label.radio-card input{width:auto;margin-top:3px}label.radio-card span{flex-direction:column;gap:2px;display:flex}label.radio-card small{color:var(--muted);font-weight:400}.glg-head{align-items:flex-start;gap:12px;display:flex}.glg-head>div{flex:1}.glg-head h3{margin:0 0 4px}.glg-form{flex-direction:column;gap:10px;max-width:640px;margin:12px 0;display:flex}.glg-kv{margin-top:8px}.glg-help{background:#f5f9ff;border:1px solid #cfe0fb;border-radius:10px;max-width:900px;margin-top:14px;padding:10px 14px}.glg-help summary{cursor:pointer;color:var(--primary);font-weight:700}.glg-steps ol{margin:8px 0;padding-left:22px}.glg-steps ol>li{margin:8px 0;line-height:1.55}.glg-steps ul{margin:4px 0;padding-left:18px}.glg-steps .button.small-btn{margin:0 4px;padding:3px 10px;display:inline-flex}.tdai-src .button.small-btn{align-self:flex-start;width:auto;margin-top:8px;padding:5px 12px;display:inline-flex}.tdai-src>span{flex-direction:column;align-items:flex-start;display:flex}.repo-row>label.inline{flex:none;align-items:center;gap:8px;flex-direction:row!important;display:inline-flex!important}.repo-row code{white-space:nowrap}.feature-detail{flex-direction:column;gap:14px;display:flex}.feature-detail h3{margin:0}.fd-head{align-items:flex-start;gap:12px;display:flex}.fd-title h2{margin:0 0 6px;font-size:22px}.fd-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 18px}.fd-card-head{flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:10px;display:flex}.fd-card-head h3{align-items:center;gap:8px;font-size:16.5px;display:inline-flex}.fd-card-head .count{color:#4b5565;text-align:center;background:#eef1f6;border-radius:999px;min-width:22px;padding:0 7px;font-size:12.5px;line-height:20px;display:inline-block}.fd-desc{color:#1f2a44;border:1px solid var(--line);background:#fbfcfe;border-radius:10px;padding:10px 16px;font-size:14px;line-height:1.6}.fd-desc.clip{max-height:220px;overflow:auto}.fd-desc h1{margin:4px 0 8px;font-size:17px}.fd-desc h2{margin:12px 0 6px;font-size:15.5px}.fd-desc h3{margin:10px 0 4px;font-size:14.5px}.fd-desc ul,.fd-desc ol{margin:6px 0;padding-left:22px}.fd-desc p{margin:6px 0}.fd-jobs{border-color:#b9d2f7;box-shadow:0 2px 10px #1d4ed80f}.fd-jobs .fd-card-head h3{font-size:18px}.fd-jobtable td{vertical-align:middle;padding:10px;font-size:14px}.fd-jobtable td b{font-size:14.5px}.fd-result{flex-direction:column;gap:4px;min-width:150px;display:flex}.fd-bar{background:#eef1f6;border-radius:4px;height:8px;display:flex;overflow:hidden}.fd-bar i{height:100%;display:block}.fd-bar i.p{background:#12b886}.fd-bar i.f{background:#e5484d}.fd-bar i.pe{background:#c4cad4}.fd-empty{text-align:center;padding:18px 0 8px}.fd-empty p{color:var(--muted);margin:0 0 10px}.fd-attach{border-top:1px dashed var(--line);margin-top:10px;padding-top:10px}.fd-more{margin-top:6px}.fd-more summary{cursor:pointer;color:var(--primary);font-size:13px}ul.guide-rows{margin:0;padding:0;list-style:none}ul.guide-rows li{border:1px solid var(--line);background:#fbfcfe;border-radius:8px;align-items:center;gap:10px;margin:6px 0;padding:8px 10px;display:flex}ul.guide-rows .gr-main{flex-direction:column;min-width:0;display:flex}ul.guide-rows .small-btn+.small-btn{margin-left:0}ul.guide-rows .btn-dl{align-items:center;gap:4px;display:inline-flex}ol.fd-timeline{margin:0;padding:0 0 0 4px;list-style:none}ol.fd-timeline li{gap:12px;padding:6px 0 10px;display:flex;position:relative}ol.fd-timeline li:before{content:"";background:var(--line);width:2px;position:absolute;top:32px;bottom:-4px;left:13px}ol.fd-timeline li:last-child:before{display:none}ol.fd-timeline .ico{background:#eef1f6;border-radius:50%;flex:none;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;display:inline-flex}ol.fd-timeline li.k-job .ico{background:#e6f0ff}ol.fd-timeline li.k-dac_ta .ico,ol.fd-timeline li.k-nghiep_vu .ico{background:#fff1e0}ol.fd-timeline li.k-hdsd .ico{background:#e2f7f0}.welcome{z-index:2000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);cursor:pointer;background:#0b1a3a47;justify-content:center;align-items:center;padding:16px;animation:.35s both wIn;display:flex;position:fixed;inset:0}.welcome.out{animation:.45s both wOut}.welcome-card{text-align:center;color:#fff;border-radius:22px;width:min(520px,100%);padding:34px 32px 26px;animation:.6s cubic-bezier(.2,1.4,.4,1) both wPop;position:relative;overflow:hidden;box-shadow:0 24px 60px #0b1a3a59}.welcome.sang .welcome-card{color:#3b2300;background:linear-gradient(135deg,#ff9a3c 0%,#ffcf5c 55%,#ffe8a3 100%)}.welcome.trua .welcome-card{color:#053b2c;background:linear-gradient(135deg,#12b886 0%,#38d9a9 60%,#a5f3d0 100%)}.welcome.chieu .welcome-card{background:linear-gradient(135deg,#f76707 0%,#e8590c 40%,#845ef7 100%)}.welcome.toi .welcome-card{background:linear-gradient(135deg,#1d2b64 0%,#3b5bdb 60%,#5f3dc4 100%)}.welcome.khuya .welcome-card{background:radial-gradient(circle at 30% 20%,#3b3f8f 0%,#141a3d 55%,#0a0d24 100%)}.welcome-card h2{color:inherit;margin:8px 0;font-size:26px;line-height:1.25}.welcome-card p{opacity:.95;max-width:400px;margin:0 auto;font-size:15.5px;line-height:1.55}.welcome-icon{filter:drop-shadow(0 6px 12px #0000002e);font-size:54px;line-height:1;animation:2.4s ease-in-out infinite wFloat;display:inline-block}.welcome-hint{opacity:.65;margin-top:16px;font-size:12px;display:block}.welcome-glow{pointer-events:none;background:conic-gradient(#0000,#ffffff59,#0000 30%);animation:6s linear infinite wSpin;position:absolute;inset:-40%}.welcome-sparks i{width:6px;height:6px;animation:wSpark 1.6s ease-out calc(var(--i) * 70ms) both;transform:rotate(calc(var(--i) * 36deg)) translateX(0);background:#ffffffe6;border-radius:50%;position:absolute;top:50%;left:50%}.welcome.khuya .welcome-sparks i{width:3px;height:3px;animation:wTwinkle 2.2s ease-in-out calc(var(--i) * .18s) infinite;top:calc(10% + var(--i) * 8%);left:calc(6% + var(--i) * 9.3%);transform:none}.welcome-card>:not(.welcome-glow):not(.welcome-sparks):not(.welcome-stickers){position:relative}@keyframes wIn{0%{opacity:0}}@keyframes wOut{to{opacity:0}}@keyframes wPop{0%{opacity:0;transform:translateY(18px)scale(.86)}}@keyframes wFloat{50%{transform:translateY(-6px)rotate(-4deg)}}@keyframes wSpin{to{transform:rotate(360deg)}}@keyframes wSpark{0%{opacity:1;transform:rotate(calc(var(--i) * 36deg)) translateX(0) scale(1)}to{opacity:0;transform:rotate(calc(var(--i) * 36deg)) translateX(240px) scale(.3)}}@keyframes wTwinkle{50%{opacity:.15}}@media (prefers-reduced-motion:reduce){.welcome,.welcome-card,.welcome-icon,.welcome-glow,.welcome-sparks i{animation:none!important}}.pdesc2{background:var(--card);border:1px solid var(--line);border-radius:12px;margin:0 0 14px;padding:14px 18px}.pdesc2-head{flex-wrap:wrap;align-items:flex-start;gap:10px;margin-bottom:10px;display:flex}.pdesc2-head h3{margin:0 0 2px;font-size:16.5px}.pdesc2-head .small-btn+.small-btn,.pdesc2-head .small-btn+.primary{margin-left:6px}.doc-view{border:1px solid var(--line);color:#1f2a44;background:#fff;border-radius:10px;padding:16px 22px;font-size:14.5px;line-height:1.65}.doc-view.clip{background:#fbfcfe;max-height:240px;overflow:auto}.doc-view.full{padding:22px 30px}.doc-view h1{border-bottom:2px solid #e6ecf5;margin:2px 0 12px;padding-bottom:8px;font-size:21px}.doc-view h2{color:#1d3a8a;margin:20px 0 8px;font-size:17px}.doc-view h3{margin:14px 0 6px;font-size:15px}.doc-view p{text-align:justify;margin:6px 0}.doc-view ul,.doc-view ol{margin:6px 0;padding-left:24px}.doc-view li{margin:3px 0}.doc-view table{border-collapse:collapse;width:100%;margin:10px 0;font-size:14px}.doc-view th,.doc-view td{text-align:left;vertical-align:top;border:1px solid #dfe5ee;padding:6px 10px}.doc-view th{background:#f2f6fc;font-weight:700}.doc-view blockquote{color:#5c4400;background:#fffaeb;border-left:4px solid #f0b429;border-radius:0 8px 8px 0;margin:10px 0;padding:8px 14px}.doc-view code{background:#eef1f6;border-radius:4px;padding:1px 5px;font-size:13px}.doc-view a{color:var(--primary)}.dedit{flex-direction:column;gap:12px;min-height:calc(100vh - 140px);display:flex}.dedit-bar{z-index:2;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:6px 0;display:flex;position:sticky;top:0}.dedit-tools{flex-wrap:wrap;gap:4px;display:flex}.dedit-tools button{border-radius:6px;min-width:34px;padding:4px 10px;font-size:13px}.dedit-tools button.b{font-weight:800}.dedit-tools button.i{font-family:Georgia,serif;font-style:italic}.dedit-panes{flex:1;gap:12px;min-height:460px;display:grid}.dedit-panes.song_song{grid-template-columns:1fr 1fr}.dedit-panes.soan,.dedit-panes.xem{grid-template-columns:1fr}.dedit-text{resize:vertical;border-radius:10px;width:100%;height:100%;min-height:460px;padding:14px 16px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px;line-height:1.6}.dedit-preview{max-height:calc(100vh - 230px);overflow:auto}.dedit-foot{background:var(--card);border-top:1px solid var(--line);padding:10px 0 2px;position:sticky;bottom:0}.dedit-ai{background:linear-gradient(#f5f9ff,#fff);border:1px solid #cfe0fb;border-radius:12px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.dedit-ai-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.dedit-src{border:1px solid var(--line);background:#fff;border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.dedit-res{flex-direction:column;gap:8px;display:flex}.dedit-res ul{margin:4px 0 0;padding-left:20px}@media (width<=1000px){.dedit-panes.song_song,.dedit-ai-grid{grid-template-columns:1fr}}.feat-box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.feat-box .tablewrap{max-height:none;margin-top:0}.feat-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.feat-toolbar h3{align-items:center;gap:8px;margin:0;font-size:16.5px;display:inline-flex}.feat-toolbar .count{color:#4b5565;text-align:center;background:#eef1f6;border-radius:999px;min-width:22px;padding:0 7px;font-size:12.5px;line-height:20px;display:inline-block}.feat-toolbar select{width:auto}.feat-search{flex:320px;max-width:520px;position:relative}.feat-search input{width:100%;padding-left:34px;padding-right:30px}.feat-search .ico{opacity:.6;pointer-events:none;font-size:13px;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.feat-search .clear{color:var(--muted);background:0 0;border:0;padding:2px 6px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.feat-empty{text-align:center;padding:24px 0}.tag.job{color:#b45309;background:#fff1e0}.tag.hieu_nang{color:#7e22ce;background:#f3e8ff}.kind-note{border-left:3px solid #c9d6ee;padding-left:10px}.welcome.ha{background:#581c8740}.welcome.ha .welcome-card{color:#fff;background:linear-gradient(135deg,#ff8fc7 0%,#e879f9 45%,#a78bfa 100%);border-radius:28px;width:min(600px,100%);padding:48px 58px 34px;box-shadow:0 24px 70px #a855f773,inset 0 0 0 2px #ffffff59}.welcome.ha .welcome-card h2{text-shadow:0 2px 10px #7c3aed59;font-size:27px}.welcome.ha .welcome-card p{font-size:16px}.welcome.ha .welcome-icon{font-size:62px}.welcome.ha .welcome-sparks i{background:#fff0fb}.welcome-stickers{pointer-events:none;position:absolute;inset:0}.welcome-stickers b{left:calc(3% + (var(--i) * 7.8%));opacity:0;animation:wSticker 3.6s ease-in-out calc(var(--i) * .22s) infinite;filter:drop-shadow(0 3px 6px #7c3aed4d);pointer-events:none;font-size:30px;font-weight:400;position:absolute;top:5%}.welcome-stickers b:nth-child(odd){top:auto;bottom:5%}.welcome-stickers b:nth-child(4n+1){left:2%;top:calc(20% + var(--i) * 4%);bottom:auto}.welcome-stickers b:nth-child(4n+3){left:auto;right:2%;top:calc(14% + var(--i) * 4%);bottom:auto}.welcome-stickers b:nth-child(3n){font-size:22px}@keyframes wSticker{0%{opacity:0;transform:translateY(14px)scale(.6)rotate(-12deg)}25%{opacity:1;transform:translateY(0)scale(1)rotate(6deg)}70%{opacity:1;transform:translateY(-10px)scale(1.05)rotate(-6deg)}to{opacity:0;transform:translateY(-24px)scale(.8)rotate(10deg)}}@media (prefers-reduced-motion:reduce){.welcome-stickers b{opacity:1;animation:none!important}}.welcome.ha .welcome-card h2{white-space:nowrap;font-size:clamp(17px,2.6vw,26px)}.welcome.ha .welcome-card{width:min(720px,100%)}.welcome.ha .welcome-icon{filter:drop-shadow(0 8px 14px #7c3aed59);animation:none}.pig .pig-body{transform-origin:50% 90%;animation:1.3s ease-in-out infinite pigBounce}.pig .ear{transform-box:fill-box;transform-origin:50% 100%;animation:1.3s ease-in-out infinite pigEar}.pig .ear.r{animation-delay:.15s}.pig .eyes{transform-box:fill-box;transform-origin:50%;animation:3.6s infinite pigBlink}.pig .heart{transform-box:fill-box;transform-origin:50% 60%;animation:.9s ease-in-out infinite pigHeart}.pig .hand{transform-box:fill-box;transform-origin:0 100%;animation:.7s ease-in-out infinite alternate pigWave}.pig .steam{animation:1.6s ease-in-out infinite pigSteam}.pig .zz{animation:2s ease-in-out infinite pigZ}.pig .twinkle{animation:1.4s ease-in-out infinite pigTwinkle}.pig-ngu .pig-body{animation-duration:2.6s}.welcome-stickers b .pig{display:block}@keyframes pigBounce{0%,to{transform:translateY(0)scale(1)}45%{transform:translateY(-6px)scale(.98,1.03)}60%{transform:translateY(0)scale(1.04,.96)}}@keyframes pigEar{0%,to{transform:rotate(0)}50%{transform:rotate(-12deg)}}@keyframes pigBlink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes pigHeart{0%,to{transform:scale(1)}50%{transform:scale(1.25)}}@keyframes pigWave{0%{transform:rotate(-10deg)}to{transform:rotate(18deg)}}@keyframes pigSteam{0%{opacity:0;transform:translateY(4px)}50%{opacity:1}to{opacity:0;transform:translateY(-6px)}}@keyframes pigZ{0%{opacity:0;transform:translate(-4px,6px)}40%{opacity:1}to{opacity:0;transform:translate(4px,-8px)}}@keyframes pigTwinkle{0%,to{opacity:.2}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.pig *{animation:none!important}}.welcome.ha .welcome-card p{white-space:nowrap;max-width:none;font-size:clamp(13px,2vw,16px)}.baby .bb-body{transform-origin:50% 90%;animation:2s ease-in-out infinite bbTilt}.baby .cheek{transform-box:fill-box;transform-origin:50%;animation:1.2s ease-in-out infinite bbCheek}.baby .eyes,.mochi .eyes{transform-box:fill-box;transform-origin:50%;animation:3.4s infinite pigBlink}.baby .heart,.mochi .heart{transform-box:fill-box;transform-origin:50% 60%;animation:.9s ease-in-out infinite pigHeart}.baby .zz,.mochi .zz{animation:2s ease-in-out infinite pigZ}.mochi .mc-body{transform-origin:50% 85%;animation:1.4s ease-in-out infinite mcJelly}.welcome-stickers b .baby,.welcome-stickers b .mochi{display:block}@keyframes bbTilt{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)translateY(-3px)}}@keyframes bbCheek{0%,to{transform:scale(1)}50%{transform:scale(1.18)}}@keyframes mcJelly{0%,to{transform:scale(1)}30%{transform:scale(1.08,.92)}60%{transform:scale(.95,1.06)translateY(-4px)}}@media (prefers-reduced-motion:reduce){.baby *,.mochi *{animation:none!important}}@media (width<=760px){.welcome{align-items:center;padding:12px}.welcome-card,.welcome.ha .welcome-card{border-radius:22px;width:100%;padding:30px 18px 20px}.welcome-card h2{font-size:clamp(16px,5vw,22px)}.welcome.ha .welcome-card h2{font-size:clamp(14px,4.6vw,22px)}.welcome.ha .welcome-card p{white-space:normal;font-size:clamp(13px,3.8vw,15px)}.welcome-icon{font-size:44px}.welcome.ha .welcome-icon svg{width:76px;height:76px}.welcome-stickers b svg{width:34px;height:34px}}@media (width>=761px) and (width<=1100px){.welcome.ha .welcome-card{width:min(640px,94vw);padding:40px 40px 28px}}.perfsc{flex-direction:column;gap:10px;display:flex}.perfsc-sec{border-top:1px dashed var(--line);margin-top:6px;padding-top:8px}.perfsc-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px 12px;display:grid}.perfsc-grid small{color:var(--muted);font-size:11.5px;font-weight:400}.perfsc-req{border:1px solid var(--line);background:#fbfcfe;border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.perfsc-req-main{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.perfsc-req-main select{width:auto}.perfsc-req-main input{flex:260px}.perfsc-no{background:var(--primary-bg);width:24px;height:24px;color:var(--primary);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.perfrep{flex-direction:column;gap:14px;display:flex}.pr-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 18px}.pr-card h3{margin:0;font-size:16.5px}.pr-card h4{margin:14px 0 6px;font-size:14.5px}.pr-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.pr-ai{background:linear-gradient(#faf7ff,#fff);border-color:#d8c8fb}.pr-ai.ok{border-color:#a7e3c9}.pr-ai.err{border-color:#f5b5b0}.pr-score{color:#6d28d9;font-size:22px;font-weight:800}.pr-score small{color:var(--muted);font-size:12px}.pr-sum{margin:6px 0 10px;font-size:15px;line-height:1.6}.pr-kpis{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin:8px 0;display:grid}.pr-kpi{border:1px solid var(--line);background:#fff;border-radius:10px;flex-direction:column;padding:8px 12px;display:flex}.pr-kpi span{color:var(--muted);font-size:12px}.pr-kpi b{font-size:18px}.pr-kpi small{color:var(--muted);font-size:11.5px}.pr-kpi.tot{background:#f2fbf7;border-color:#a7e3c9}.pr-kpi.kem{background:#fff5f4;border-color:#f5b5b0}.pr-kpi.chap_nhan{background:#fffbef;border-color:#f6d58e}.pr-list{margin:4px 0;padding-left:20px}.pr-list li{margin:4px 0}.pr-table td,.pr-table th{white-space:nowrap}.pr-total td{background:#f2f6fc;font-weight:700}.pr-charts{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;margin:10px 0;display:grid}.pr-chart{border:1px solid var(--line);background:#fff;border-radius:10px;margin:0;padding:8px 10px}.pr-chart figcaption{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;font-size:13px;font-weight:700;display:flex}.pr-legend{color:var(--muted);gap:10px;font-size:12px;font-weight:400;display:inline-flex}.pr-legend i{align-items:center;gap:4px;font-style:normal;display:inline-flex}.pr-legend i:before{content:"";background:currentColor;border-radius:2px;width:12px;height:3px}.pr-chart svg{width:100%;height:auto}.pr-chart text{fill:#8a93a3;font-size:10px}.pr-chart .grid{stroke:#eef1f6}.pr-chart .lim{stroke:#e5484d;stroke-dasharray:5 4}.pr-legend .lim{color:#e5484d}.pr-chart polyline{stroke-width:2.2px;stroke-linejoin:round}.pr-chart .c1,.pr-legend .c1{stroke:#3b82f6;color:#3b82f6}.pr-chart .c2,.pr-legend .c2{stroke:#f59e0b;color:#f59e0b}.pr-chart .c3,.pr-legend .c3{stroke:#10b981;color:#10b981}.pr-chart .c4,.pr-legend .c4{stroke:#8b5cf6;color:#8b5cf6}.pr-chart .c5,.pr-legend .c5{stroke:#e5484d;color:#e5484d}@media (width<=860px){.drawer-wrap{bottom:calc(60px + env(safe-area-inset-bottom))}}.ai-suggest{background:linear-gradient(#faf7ff,#fff);border:1px solid #d8c8fb;border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.ai-note{background:#faf7ff;border-left:3px solid #a78bfa;border-radius:0 8px 8px 0;padding:6px 10px}.ai-note ul{margin:4px 0 0;padding-left:18px}.smtp-admin .form-grid{align-items:start}.smtp-admin .form-grid>.row{align-self:end}.smtp-admin .form-grid label>.muted.small{margin-top:4px;display:block}.sys-lbl{flex-wrap:nowrap;align-items:flex-start}.sys-lbl label{flex:auto;min-width:0}.sys-lbl .pill,.sys-lbl .link{flex:none;margin-top:1px}.kb-acts{flex-wrap:nowrap;align-items:center;gap:10px;display:inline-flex}@media (width<=640px){.kb-bar .spacer{display:none}.kb-bar b{flex:100%}}.stg{flex-direction:column;gap:14px;display:flex}.stg-card{border:1px solid var(--line);background:var(--card);border-radius:12px;flex-direction:column;gap:10px;padding:14px 18px;display:flex}.stg-card h3{margin:0;font-size:16px}.stg-form{flex-direction:column;gap:10px;display:flex}.sys-core>summary{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:4px 6px;list-style-position:inside;display:flex}.sys-core>summary .sys-core-hint{margin-left:auto}.sys-core[open]>summary{border-bottom:1px solid var(--line);margin-bottom:10px;padding-bottom:8px}.refskills tr.off td{opacity:.6}.refskills td code{word-break:break-all}@media (width<=1024px){.refskills .cards-table tr{grid-template-columns:1fr 1fr}.refskills .cards-table td:first-child,.refskills .cards-table td:nth-child(2){grid-column:1/-1}.refskills .cards-table td:nth-child(2) div{margin-left:6px;display:inline}}.loading{color:var(--muted);opacity:0;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px 0;font-size:13px;animation:.32s .15s forwards pvFadeIn;display:flex}.loading.sm{flex-direction:row;justify-content:flex-start;gap:8px;padding:6px 0;font-size:12.5px}.loading.full{letter-spacing:.01em;gap:14px;min-height:70vh;font-size:14px}.pv-loader{animation:2.4s ease-in-out infinite pvBreath;display:block;overflow:visible}.pv-loader path{fill:none;stroke-width:5.5px;stroke-linecap:round;stroke-linejoin:round}.pv-track{stroke:#1d5cff1a}.pv-draw{stroke-dasharray:100 100;stroke-dashoffset:100px;animation:2.4s cubic-bezier(.65,0,.35,1) infinite pvDraw}.loading.sm .pv-loader path{stroke-width:7px}@keyframes pvDraw{0%{stroke-dashoffset:100px}50%{stroke-dashoffset:0}to{stroke-dashoffset:-100px}}@keyframes pvBreath{0%,to{transform:scale(.96)}50%{transform:scale(1)}}@keyframes pvFadeIn{to{opacity:1}}.page-fade{animation:.26s cubic-bezier(.2,.8,.2,1) both pvPageIn}@keyframes pvPageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.pv-draw{stroke-dashoffset:0;animation:none}.pv-loader{animation:2s ease-in-out infinite pvPulse}.page-fade{animation:none}@keyframes pvPulse{0%,to{opacity:.55}50%{opacity:1}}}.gh-import .subcard ul{margin:6px 0;padding-left:18px}.gh-pre{white-space:pre-wrap;background:#f6f8fc;border-radius:8px;max-height:240px;padding:8px;overflow:auto}.gh-results{gap:10px;margin:8px 0;display:grid}.gh-repo{margin:0;padding:12px 14px}.gh-repo.off{opacity:.7}.gh-repo p{margin:6px 0}.gh-skills{flex-wrap:wrap;gap:6px 14px;margin-top:6px;display:flex}.gh-skills .chk{align-items:center;gap:6px;font-weight:400;display:inline-flex}.gh-res.dat{border-left:3px solid var(--ok,#0b7a5c)}.gh-res.khong,.gh-res.loi{border-left:3px solid var(--danger,#b42318)}.gh-res ul{margin:4px 0;padding-left:18px}textarea.gh-q{width:100%}.gh-skills .chk{align-items:center;gap:6px;flex-direction:row!important;margin:0!important;display:inline-flex!important}.gh-skills .chk input{margin:0;width:auto!important}.update-banner{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:90;color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#111b33eb;border-radius:999px;align-items:center;gap:10px;padding:8px 8px 8px 16px;font-size:13.5px;animation:.35s cubic-bezier(.2,.8,.2,1) both pvPageIn;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 12px 32px -8px #0b1a3a73}.update-banner button{color:#fff;cursor:pointer;background:linear-gradient(90deg,#1d5cff,#12c39b);border:0;border-radius:999px;padding:6px 14px;font-weight:600}.update-banner .ub-x{opacity:.7;background:0 0;padding:4px 8px;font-size:18px;line-height:1}@media (width<=860px){.update-banner{bottom:calc(76px + env(safe-area-inset-bottom))}}
