:root{--purple: #511dce;--purple-2: #6b2ff0;--violet: #7b3ff2;--teal: #0fb39a;--pink: #ff5cb8;--black: #0d0c14;--ink: #14121f;--ink-soft: #4a4860;--muted: #8a8799;--line: #eceaf3;--line-soft: #f4f2f9;--card: #ffffff;--bg: #f4f3f9;--sidebar: #ffffff;--field: #fbfaff;--purple-soft: #f1ecfd;--green: #16a34a;--red: #e02424;--amber: #c98a12}*{box-sizing:border-box}html,body{margin:0}body{color:var(--ink);background:var(--bg);font-family:IBM Plex Sans,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.muted{color:var(--muted);font-weight:400}.shell{min-height:100vh;display:flex}.sidebar{width:236px;flex:none;background:var(--sidebar);border-inline-end:1px solid var(--line);display:flex;flex-direction:column;padding:22px 16px;gap:26px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;padding:4px 6px}.brand-mark{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:#fff;font-weight:700;font-size:14px;background:linear-gradient(140deg,var(--purple),var(--violet));box-shadow:0 8px 18px #511dce59}.brand-name{font-weight:700;font-size:17px;letter-spacing:-.01em}.nav{display:flex;flex-direction:column;gap:4px}.nav-item{display:flex;align-items:center;gap:11px;font:inherit;font-size:14.5px;font-weight:600;color:var(--ink-soft);background:none;border:none;cursor:pointer;padding:11px 13px;border-radius:12px;text-align:start;transition:background .15s,color .15s}.nav-item:hover{background:var(--line-soft);color:var(--ink)}.nav-active{background:var(--purple-soft);color:var(--purple)}.nav-ico{display:inline-flex;align-items:center;justify-content:center}.sidebar-foot{margin-top:auto;font-size:12px;padding:6px}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 34px;background:#ffffffb3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.topbar-title h1{margin:0;font-size:22px;font-weight:700;letter-spacing:-.02em}.topbar-title p{margin:2px 0 0;font-size:13px}.content{padding:32px 34px 64px}.content .card{max-width:920px;margin:0 auto}.head-actions{display:flex;align-items:center;gap:9px}.icon-btn{width:38px;height:38px;border-radius:11px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:15px;display:grid;place-items:center;transition:background .15s,border-color .15s,transform .1s;color:var(--ink)}.icon-btn:hover{background:var(--purple-soft);border-color:var(--purple)}.icon-btn:active{transform:translateY(1px)}.chip{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;padding:8px 15px;border-radius:999px;white-space:nowrap}.chip-assignee{background:var(--black);color:#fff}.chip-dot{width:7px;height:7px;border-radius:50%;background:var(--pink)}.card{background:var(--card);border:1px solid var(--line);border-radius:26px;box-shadow:0 2px 4px #14122808,0 26px 60px #2d187814;padding:30px 32px 34px}.intro{margin:0 0 26px;font-size:15.5px;line-height:1.6;color:var(--ink-soft);padding-inline-start:16px;border-inline-start:4px solid var(--purple)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.uploads{margin-top:16px}.field{display:flex;flex-direction:column;gap:8px}.field-label{font-size:13px;font-weight:600;color:var(--ink-soft)}.input{font:inherit;font-size:15px;color:var(--ink);padding:13px 15px;border:1.5px solid var(--line);border-radius:12px;background:var(--field);outline:none;width:100%;transition:border-color .15s,box-shadow .15s,background .15s}.input::placeholder{color:#b6b3c6}.input:focus{border-color:var(--purple);background:#fff;box-shadow:0 0 0 4px #511dce21}.section-label{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:28px 0 12px}.section-label .muted{text-transform:none;letter-spacing:0;font-size:12px}.filebtn{display:flex;align-items:center;gap:13px;cursor:pointer;border:1.5px dashed #d4cdee;border-radius:14px;padding:14px 16px;background:var(--field);transition:border-color .15s,background .15s,transform .1s}.filebtn:hover{border-color:var(--purple);background:var(--purple-soft)}.filebtn:active{transform:translateY(1px)}.filebtn-set{border-style:solid;border-color:var(--purple);background:var(--purple-soft)}.filebtn-required{border-color:var(--red);background:#e024240d}.filebtn-required:hover{border-color:var(--red);background:#e0242414}.filebtn-required .filebtn-hint{color:var(--red);font-weight:600}.req-star{color:var(--red)}.filebtn-icon{flex:none;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--purple-soft);color:var(--purple)}.filebtn-set .filebtn-icon{background:#fff}.filebtn-required .filebtn-icon{background:#e024241a;color:var(--red)}.filebtn-text{display:flex;flex-direction:column;gap:2px;min-width:0}.filebtn-main{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filebtn-hint{font-size:12px;color:var(--muted)}.rules{border:1px solid var(--line);border-radius:16px;padding:18px 20px;display:flex;flex-direction:column;gap:14px;background:var(--field)}.rule{display:flex;align-items:center;gap:12px;font-size:15px;color:var(--ink-soft)}.rule-pending{color:var(--amber);font-weight:500}.status{flex:none;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700}.status-done{background:#16a34a24;color:var(--green)}.status-pending{background:#c98a1229;color:var(--amber)}.track-card{position:relative;border-radius:18px;padding:18px;color:#fff;overflow:hidden;background-color:var(--accent);background-image:linear-gradient(150deg,#ffffff29,#00000038);box-shadow:0 12px 26px #2d187829;transition:transform .12s,box-shadow .15s,filter .15s}.track-card:hover{transform:translateY(-2px);box-shadow:0 18px 36px #2d18783d}.track-off{filter:grayscale(.85);opacity:.6}.track-top{display:flex;align-items:center;justify-content:space-between}.track-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#fff3;color:#fff;box-shadow:inset 0 0 0 1px #ffffff2e}.track-name{margin:14px 0 1px;font-size:19px;font-weight:700}.track-tool{font-size:12.5px;opacity:.85;font-weight:500}.track-list{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:9px}.track-list li{font-size:13px;opacity:.95;padding-inline-start:16px;position:relative}.track-list li:before{content:"";position:absolute;inset-inline-start:0;top:6px;width:6px;height:6px;border-radius:50%;background:#ffffffe6}.track-file{margin:14px 0 0;font-size:12.5px;font-weight:600;background:#fff3;padding:6px 10px;border-radius:8px;word-break:break-all}.toggle{flex:none;width:42px;height:24px;border-radius:999px;border:none;background:#ffffff59;cursor:pointer;padding:0;position:relative;transition:background .18s}.toggle-knob{position:absolute;top:3px;inset-inline-start:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000004d;transition:inset-inline-start .18s}.toggle-on{background:#fff}.toggle-on .toggle-knob{inset-inline-start:21px;background:var(--accent)}.action-row{display:flex;align-items:center;gap:16px;margin-top:28px;flex-wrap:wrap}.btn-primary{font:inherit;font-size:15px;font-weight:600;color:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:9px;background:var(--black);border:none;border-radius:999px;padding:15px 28px;box-shadow:0 10px 24px #0d0c1447;transition:transform .1s,box-shadow .15s}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 14px 30px #0d0c145c}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}.btn-spark{color:var(--pink);font-size:14px}.run-warn{color:var(--red);font-size:13.5px;font-weight:600}.output{border:1px solid var(--line);border-radius:16px;overflow:hidden}.output-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;background:var(--field);border-bottom:1px solid var(--line-soft)}.output-title{font-size:15px;font-weight:700}.output-meta{font-size:13px;font-weight:600;color:var(--purple)}.case-row{display:flex;align-items:center;gap:14px;padding:14px 18px;border-bottom:1px solid var(--line-soft)}.case-row:last-child{border-bottom:none}.case-text{font-size:14.5px;color:var(--ink-soft);flex:1}.case-status{font-size:12px;font-weight:700}.case-pass{color:var(--green)}.case-fail{color:var(--red)}.chip-web{background:var(--purple-soft);color:var(--purple);font-size:12px;font-weight:700;padding:4px 11px;border-radius:999px}.chip-mobile{background:#efe7ff;color:var(--violet);font-size:12px;font-weight:700;padding:4px 11px;border-radius:999px}.chip-api{background:#e0f6f1;color:#0c8e7a;font-size:12px;font-weight:700;padding:4px 11px;border-radius:999px}.view-head{margin-bottom:22px}.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.view-title{margin:0;font-size:24px;font-weight:700;letter-spacing:-.02em}.view-sub{margin:5px 0 0;font-size:14px;color:var(--muted)}.back-btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:13.5px;font-weight:700;color:var(--purple);background:none;border:none;cursor:pointer;padding:0 0 18px}.table{display:flex;flex-direction:column}.trow{display:grid;grid-template-columns:1fr 84px 64px 156px 96px;align-items:center;gap:12px;padding:15px 12px}.thead{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line)}.trow-btn{font:inherit;text-align:start;background:none;border:none;border-bottom:1px solid var(--line-soft);cursor:pointer;animation:fadein .4s ease both;transition:background .12s;border-radius:12px}.trow-btn:hover{background:var(--purple-soft)}.run-ticket{display:flex;flex-direction:column;gap:3px;min-width:0}.run-ticket strong{color:var(--purple);font-size:15px}.run-title{font-size:13px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.col-cases,.col-when,.col-status,.col-tracks{font-size:13.5px}.track-dots{display:flex;gap:5px}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot-web{background:var(--purple)}.dot-api{background:var(--teal)}.dot-mobile{background:var(--violet)}.pill{font-size:12px;font-weight:700;padding:5px 12px;border-radius:999px;white-space:nowrap}.pill-passed{background:#16a34a24;color:var(--green)}.pill-failed{background:#e0242421;color:var(--red)}.pill-running{background:#c98a1229;color:var(--amber)}.stat-panel{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:14px;padding:16px 18px;background:#fff}.stat-bar{position:absolute;top:0;inset-inline-start:0;width:100%;height:3px;background:var(--accent)}.stat-track{font-size:14px;font-weight:700}.stat-line{display:flex;gap:12px;font-size:13px;margin-top:7px}.stat-pass{color:var(--green);font-weight:700}.stat-fail{color:var(--red);font-weight:700}.scan{border:1px solid var(--line);border-radius:16px;padding:18px 20px}.scan-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.scan-apk{font-size:14.5px;font-weight:700}.scan-app{font-size:13px;font-weight:700;color:var(--violet)}.scan-sub{margin:5px 0 14px;font-size:13px;color:var(--muted)}.finding{display:flex;align-items:center;gap:14px;padding:13px 0;border-top:1px solid var(--line-soft)}.finding-kind{flex:none;width:60px;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted)}.finding-body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.finding-label{font-size:14px;font-weight:600}.finding-detail{font-size:13px;color:var(--ink-soft)}.finding-dot{flex:none;width:10px;height:10px;border-radius:50%}.dot-pass{background:var(--green)}.dot-warn{background:var(--amber)}.dot-fail{background:var(--red)}.banner{margin-top:18px;padding:13px 16px;border-radius:12px;font-size:14px;font-weight:500}.banner-error{background:#e024241a;color:var(--red);border:1px solid rgba(224,36,36,.25)}.banner-ok{display:flex;gap:13px;align-items:flex-start;background:#16a34a14;border:1px solid rgba(22,163,74,.28);color:var(--ink)}.banner-ok-icon{flex:none;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--green);color:#fff}.banner-ok-title{font-weight:700;font-size:15px;color:var(--green)}.banner-ok-sub{font-size:13.5px;color:var(--ink-soft);margin-top:2px;line-height:1.5}.banner-ok-link{display:inline-flex;align-items:center;gap:5px;margin-top:8px;font-size:13px;font-weight:600;color:var(--purple);text-decoration:none}.banner-ok-link:hover{text-decoration:underline}.ticket-card{border:1px solid var(--line);border-radius:16px;padding:20px;background:var(--field)}.ticket-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.ticket-headline{display:flex;flex-direction:column;gap:4px;min-width:0}.ticket-key{font-size:13px;font-weight:700;color:var(--purple)}.ticket-summary{font-size:17px;font-weight:700;line-height:1.35}.ticket-link{flex:none;display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--purple);text-decoration:none;white-space:nowrap}.ticket-link:hover{text-decoration:underline}.ticket-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.meta-pill{font-size:12px;font-weight:600;color:var(--ink-soft);background:#fff;border:1px solid var(--line);padding:5px 11px;border-radius:999px}.ticket-desc{margin:16px 0 0;padding:14px 16px;background:#fff;border:1px solid var(--line);border-radius:12px;font:inherit;font-size:13.5px;line-height:1.6;color:var(--ink-soft);white-space:pre-wrap;word-break:break-word;max-height:320px;overflow:auto}[data-theme=dark] .meta-pill,[data-theme=dark] .ticket-desc{background:#1a1726}.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}.step{display:flex;gap:15px;align-items:flex-start;animation:fadein .45s ease both}.step-num{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:14px;color:#fff;background:linear-gradient(140deg,var(--purple),var(--violet));box-shadow:0 6px 14px #511dce4d}.step-body{display:flex;flex-direction:column;gap:3px;padding-top:3px}.step-title{font-size:15.5px;font-weight:700}.step-text{font-size:14px;color:var(--ink-soft);line-height:1.5}.conns{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:16px;overflow:hidden}.conn{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line-soft)}.conn:last-child{border-bottom:none}.conn-dot{width:9px;height:9px;border-radius:50%;flex:none}.conn-ok{background:var(--green);box-shadow:0 0 0 3px #16a34a29}.conn-progress{background:var(--amber);box-shadow:0 0 0 3px #c98a1229}.conn-name{font-size:14.5px;font-weight:700;min-width:150px}.conn-detail{font-size:13px;flex:1}.conn-badge{font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap}.badge-ok{background:#16a34a24;color:var(--green)}.badge-progress{background:#c98a1229;color:var(--amber)}[data-theme=dark]{--ink: #f4f2fb;--ink-soft: #bcb8d0;--muted: #837fa0;--line: #272336;--line-soft: #221f30;--card: #18152340;--bg: #0e0c16;--sidebar: #131019;--field: #1a1726;--purple-soft: #261d4a;--black: #ffffff}[data-theme=dark] body{background:radial-gradient(900px 500px at 90% -10%,rgba(123,63,242,.16),transparent 60%),var(--bg)}[data-theme=dark] .card{background:#16121f;box-shadow:0 2px 4px #0000004d,0 26px 60px #00000080}[data-theme=dark] .topbar{background:#131019b3}[data-theme=dark] .icon-btn{background:#1f1b2c}[data-theme=dark] .chip-assignee{background:#fff;color:#14121f}[data-theme=dark] .btn-primary{color:#14121f}[data-theme=dark] .stat-panel{background:#1c1828}[data-theme=dark] .chip-web{background:#261d4a}[data-theme=dark] .chip-mobile{background:#2a1d4f;color:#b79bff}[data-theme=dark] .chip-api{background:#103a33;color:#4fd6bf}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes fadein{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.card-enter{animation:rise .5s cubic-bezier(.22,1,.36,1) both}.rule,.track-card,.case-row{animation:fadein .45s ease both}@media(prefers-reduced-motion:reduce){.card-enter,.rule,.track-card,.case-row,.trow-btn{animation:none}}@media(max-width:860px){.grid-3{grid-template-columns:1fr}.sidebar{width:72px}.brand-name,.nav-item span:last-child,.sidebar-foot{display:none}.nav-item{justify-content:center}}@media(max-width:620px){.grid-2{grid-template-columns:1fr}.trow{grid-template-columns:1fr 70px}.col-tracks,.col-when{display:none}.content{padding:22px 18px 48px}}
