@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--gray-25:#fcfcfd;--gray-50:#f9fafb;--gray-100:#f2f4f7;--gray-200:#eaecf0;--gray-300:#d0d5dd;--gray-400:#98a2b3;--gray-500:#667085;--gray-600:#475467;--gray-700:#344054;--gray-900:#101828;--bg:var(--gray-50);--surface:#fff;--surface-sunken:var(--gray-50);--bg-hover:var(--gray-50);--border:var(--gray-200);--border-strong:var(--gray-300);--text:var(--gray-900);--text-dim:var(--gray-600);--text-faint:var(--gray-500);--accent:#1570ef;--accent-hover:#175cd3;--accent-text:#175cd3;--accent-soft:#eff8ff;--accent-border:#b2ddff;--violation:#b42318;--violation-strong:#d92d20;--violation-bg:#fef3f2;--violation-border:#fecdca;--warning:#b54708;--warning-strong:#dc6803;--warning-bg:#fffaeb;--warning-border:#fedf89;--unknown:#363f72;--unknown-strong:#4e5ba6;--unknown-bg:#f8f9fc;--unknown-border:#d5d9eb;--ok:#067647;--ok-strong:#079455;--ok-bg:#ecfdf3;--ok-border:#abefc6;--fp:#5925dc;--fp-bg:#f4f3ff;--fp-border:#d9d6fe;--radius:8px;--radius-sm:6px;--shadow-xs:0 1px 2px #1018280d;--shadow-lg:0 12px 16px -4px #10182814, 0 4px 6px -2px #10182808;--font:"Inter Variable", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11", "ss01";margin:0;font-size:14px;line-height:20px}a{color:inherit;text-decoration:none}h1,h2,h3{color:var(--text);margin:0}h1{letter-spacing:-.01em;font-size:22px;font-weight:600;line-height:30px}h2{font-size:16px;font-weight:600;line-height:24px}h3{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600;line-height:18px}code,.mono{font-family:var(--mono);font-size:12.5px}code{background:var(--gray-100);color:var(--gray-700);border-radius:4px;padding:1px 5px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}::selection{background:#d1e9ff}.shell{grid-template-columns:248px 1fr;min-height:100%;display:grid}.sidebar{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;gap:2px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:10px;padding:4px 8px 20px;font-size:15px;font-weight:600;display:flex}.brand-mark{background:var(--gray-900);color:#fff;border-radius:6px;flex:none;place-items:center;width:28px;height:28px;display:grid}.brand-sub{color:var(--text-faint);font-size:12px;font-weight:400;line-height:16px;display:block}.nav-section{text-transform:uppercase;letter-spacing:.05em;color:var(--gray-400);padding:12px 10px 6px;font-size:11px;font-weight:600}.nav-link{border-radius:var(--radius-sm);height:36px;color:var(--gray-700);align-items:center;gap:10px;padding:0 10px;font-weight:500;transition:background .12s,color .12s;display:flex}.nav-link svg{color:var(--gray-500);flex:none}.nav-link:hover{background:var(--gray-50)}.nav-link.active{background:var(--gray-100);color:var(--text)}.nav-link.active svg{color:var(--text)}.sidebar-foot{border-top:1px solid var(--border);color:var(--text-dim);margin-top:auto;padding:12px 8px 0;font-size:13px}.main{width:100%;max-width:1440px;padding:28px 40px 64px}.page-head{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;padding-bottom:20px;display:flex}.page-head p{color:var(--text-dim);margin:4px 0 0}.crumbs{color:var(--text-faint);align-items:center;gap:6px;margin-bottom:8px;font-size:13px;display:flex}.crumbs a:hover{color:var(--text);text-decoration:underline}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-xs);padding:20px}.card+.card{margin-top:16px}.card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=1100px){.grid-2,.grid-4{grid-template-columns:1fr 1fr}}@media (width<=800px){.shell{grid-template-columns:1fr}.sidebar{height:auto;position:static}.grid-2,.grid-4{grid-template-columns:1fr}.main{padding:20px}}.stack{flex-direction:column;gap:12px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spacer{flex:1}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.small{font-size:13px;line-height:18px}.stat{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-xs);padding:16px 18px 16px 20px;position:relative}.stat:before{content:"";background:var(--tone,var(--gray-300));border-radius:0 2px 2px 0;width:3px;position:absolute;top:14px;bottom:14px;left:0}.stat-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:28px;font-weight:600;line-height:36px}.stat-label{color:var(--text-dim);font-size:13px;font-weight:500}.stat.violation{--tone:var(--violation-strong)}.stat.violation .stat-value{color:var(--violation)}.stat.warning{--tone:var(--warning-strong)}.stat.warning .stat-value{color:var(--warning)}.stat.not_checkable{--tone:var(--unknown-strong)}.stat.not_checkable .stat-value{color:var(--unknown)}.stat.ok{--tone:var(--ok-strong)}.stat.ok .stat-value{color:var(--ok)}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);height:36px;color:var(--gray-700);font:inherit;cursor:pointer;box-shadow:var(--shadow-xs);white-space:nowrap;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-weight:600;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--gray-50);color:var(--text)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.btn-ghost{color:var(--text-dim);box-shadow:none;background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--gray-50);color:var(--text)}.btn-sm{height:32px;padding:0 12px;font-size:13px}.input,.select,.textarea{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);width:100%;height:36px;color:var(--text);font:inherit;box-shadow:var(--shadow-xs);padding:0 12px;transition:border-color .12s,box-shadow .12s}.input::placeholder,.textarea::placeholder{color:var(--gray-400)}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23667085' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:32px}.textarea{resize:vertical;height:auto;min-height:120px;padding:10px 12px}.code-editor{font-family:var(--mono);tab-size:2;white-space:pre;background:var(--gray-25);min-height:460px;font-size:12.5px;line-height:1.6}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 4px #d1e9ff}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--gray-700);font-size:13px;font-weight:500}.segmented{border:1px solid var(--border);border-radius:var(--radius);background:var(--gray-50);gap:2px;padding:2px;display:inline-flex}.segmented button{color:var(--text-dim);font:inherit;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;padding:6px 12px;font-size:13px;font-weight:500}.segmented button:hover{color:var(--text)}.segmented button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #1018281a,0 1px 2px #1018280f}.badge{white-space:nowrap;border:1px solid var(--border);height:22px;color:var(--gray-700);background:var(--gray-50);border-radius:999px;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;display:inline-flex}.badge:before{content:"";opacity:.85;background:currentColor;border-radius:50%;width:6px;height:6px}.badge.violation,.badge.failed,.badge.missing{color:var(--violation);background:var(--violation-bg);border-color:var(--violation-border)}.badge.warning,.badge.partial,.badge.running,.badge.processing,.badge.queued,.badge.draft,.badge.uploaded{color:var(--warning);background:var(--warning-bg);border-color:var(--warning-border)}.badge.not_checkable{color:var(--unknown);background:var(--unknown-bg);border-color:var(--unknown-border)}.badge.ok,.badge.succeeded,.badge.ready,.badge.active,.badge.passed,.badge.fixed{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-border)}.badge.absent,.badge.archived,.badge.open,.badge.neutral{color:var(--gray-700);background:var(--gray-50);border-color:var(--border)}.badge.accepted{color:var(--accent-text);background:var(--accent-soft);border-color:var(--accent-border)}.badge.false_positive{color:var(--fp);background:var(--fp-bg);border-color:var(--fp-border)}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-xs);overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--text-faint);white-space:nowrap;border-bottom:1px solid var(--border);background:var(--gray-50);padding:10px 16px;font-size:12px;font-weight:500;position:sticky;top:0}td{border-bottom:1px solid var(--border);vertical-align:top;color:var(--gray-700);padding:12px 16px}td strong,td b{color:var(--text)}tr:last-child td{border-bottom:0}tbody tr.clickable{cursor:pointer;transition:background .1s}tbody tr.clickable:hover{background:var(--gray-25)}tbody tr.selected{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.notice{border-radius:var(--radius);border:1px solid var(--warning-border);background:var(--warning-bg);color:var(--warning);align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;line-height:18px;display:flex}.notice.error{border-color:var(--violation-border);background:var(--violation-bg);color:var(--violation)}.notice.info{border-color:var(--border);background:var(--gray-50);color:var(--gray-700)}.notice svg{flex:none;margin-top:1px}.empty{text-align:center;color:var(--text-dim);padding:40px 24px}.progress{background:var(--gray-200);border-radius:999px;height:6px;overflow:hidden}.progress>span{background:var(--accent);height:100%;transition:width .3s;display:block}.spinner{border:2px solid var(--gray-200);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.fade-in{animation:.15s both fade-in}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.dropzone{border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--gray-25);text-align:center;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:28px;transition:border-color .12s,background .12s;display:flex}.dropzone:hover,.dropzone.drag{border-color:var(--accent);background:var(--accent-soft)}.dropzone-icon{border:1px solid var(--border);background:var(--surface);width:40px;height:40px;color:var(--gray-600);box-shadow:var(--shadow-xs);border-radius:8px;place-items:center;display:grid}.drawer-backdrop{z-index:40;background:#10182859;animation:.12s both fade-in;position:fixed;inset:0}.drawer{z-index:50;background:var(--surface);border-left:1px solid var(--border);width:min(580px,100vw);box-shadow:var(--shadow-lg);padding:20px 24px;animation:.16s both slide-in;position:fixed;top:0;bottom:0;right:0;overflow-y:auto}@keyframes slide-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:none}}.kv{grid-template-columns:150px 1fr;gap:8px 16px;font-size:13.5px;display:grid}.kv dt{color:var(--text-faint)}.kv dd{word-break:break-word;color:var(--text);margin:0}.measure{border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.measure>div{background:var(--gray-25);padding:12px 16px}.measure>div+div{border-left:1px solid var(--border)}.measure .v{font-variant-numeric:tabular-nums;font-size:22px;font-weight:600;line-height:30px}.plan-sketch{gap:8px;margin:0;display:grid}.plan-sketch svg{border-radius:var(--radius);border:1px solid var(--border);background-color:#fff;background-image:linear-gradient(var(--gray-100) 1px, transparent 1px), linear-gradient(90deg, var(--gray-100) 1px, transparent 1px);background-size:16px 16px;width:100%;max-height:300px}.plan-sketch svg *{vector-effect:non-scaling-stroke}.plan-space{fill:#ffffffd9;stroke:var(--gray-400);stroke-width:1.5px}.plan-space-main{fill:var(--violation-bg);stroke:var(--violation-strong)}.plan-label{fill:var(--gray-600);font-family:var(--font);pointer-events:none}.plan-exit-label{fill:var(--ok);font-weight:600}.plan-route{fill:none;stroke:var(--accent);stroke-width:2.25px;stroke-linejoin:round;stroke-dasharray:6 4;animation:1.2s linear infinite plan-dash}@keyframes plan-dash{to{stroke-dashoffset:-20px}}.plan-start{fill:var(--accent)}.plan-door{fill:var(--gray-900)}.plan-opens{stroke:var(--violation-strong);stroke-width:2.25px}.plan-exit{stroke:var(--ok-strong);stroke-width:2.25px;stroke-dasharray:4 3}.plan-route-tip{fill:var(--accent)}.plan-opens-tip,.plan-key-opens{fill:var(--violation-strong);color:var(--violation-strong)}.plan-exit-tip,.plan-key-exit{fill:var(--ok-strong);color:var(--ok-strong)}.timeline{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.timeline li{color:var(--gray-700);padding-left:18px;font-size:13px;position:relative}.timeline li:before{content:"";background:var(--gray-300);border-radius:50%;width:7px;height:7px;position:absolute;top:6px;left:3px}.check-row{border-bottom:1px solid var(--border);grid-template-columns:24px 1fr auto;align-items:start;gap:12px;padding:14px 0;display:grid}.check-row:last-child{border-bottom:0}.check-hint{color:var(--warning);margin-top:4px;font-size:13px;line-height:18px}.dot{border:1px solid #0000;border-radius:50%;place-items:center;width:24px;height:24px;display:grid}.dot.ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-border)}.dot.partial{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)}.dot.missing{background:var(--violation-bg);color:var(--violation);border-color:var(--violation-border)}.dot.absent{background:var(--gray-50);color:var(--gray-500);border-color:var(--border)}.bar{background:var(--gray-100);border-radius:999px;min-width:120px;height:8px;display:flex;overflow:hidden}.bar>span{height:100%;display:block}.seg-accepted{background:var(--accent)}.seg-fixed{background:var(--ok-strong)}.seg-fp{background:var(--fp)}.seg-open{background:var(--gray-300)}.login-wrap{grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:100%;display:grid}.login-panel{background:var(--surface);place-items:center;padding:40px 24px;display:grid}.login-card{width:min(420px,100%)}.login-aside{background:var(--gray-50);border-left:1px solid var(--border);color:var(--gray-700);flex-direction:column;justify-content:center;gap:20px;padding:56px;display:flex}.login-aside ul{gap:14px;margin:0;padding:0;list-style:none;display:grid}.login-aside li{grid-template-columns:20px 1fr;gap:12px;display:grid}.login-aside li svg{color:var(--accent);margin-top:2px}@media (width<=900px){.login-wrap{grid-template-columns:1fr}.login-aside{display:none}}.user-option{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;width:100%;color:inherit;font:inherit;text-align:left;box-shadow:var(--shadow-xs);align-items:center;gap:12px;padding:12px 14px;transition:border-color .12s,background .12s;display:flex}.user-option:hover:not(:disabled){border-color:var(--accent-border);background:var(--accent-soft)}.user-option:disabled{opacity:.6;cursor:wait}.avatar{width:32px;height:32px;color:var(--gray-700);background:var(--gray-100);border:1px solid var(--border);border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:600;display:grid}.nowrap{white-space:nowrap}.norm-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.norm-list li{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.norm-list li:first-child{border-top:0;padding-top:0}.tag-list{flex-wrap:wrap;gap:4px;max-width:360px;display:flex}.tag{border:1px solid var(--border);background:var(--gray-50);height:22px;color:var(--gray-700);white-space:nowrap;border-radius:6px;align-items:center;padding:0 8px;font-size:12px;display:inline-flex}.tag.mono{font-size:11.5px}.tag-warning{color:var(--warning);background:var(--warning-bg);border-color:var(--warning-border)}.modal-container{z-index:50;place-items:center;padding:16px;animation:.15s both fade-in;display:grid;position:fixed;inset:0}.modal-box{width:min(640px,100%);max-height:calc(100vh - 48px);box-shadow:var(--shadow-lg);border-radius:var(--radius);background:var(--surface);overflow-y:auto;margin:0!important}.tag-snip{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.tag-dev-bi{color:#b45309;background:#fffbeb;border:1px solid #fde68a;border-radius:4px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.tag-dev-sensata{color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:4px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.tag-dev-hilton{color:#6d28d9;background:#f5f3ff;border:1px solid #ddd6fe;border-radius:4px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.tag-dev-ink{color:#4338ca;background:#eef2ff;border:1px solid #c7d2fe;border-radius:4px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.tag-demo{color:var(--gray-700);background:var(--gray-100);border:1px solid var(--border);border-radius:4px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;font-weight:500;display:inline-flex}.tag-stricter{color:#9a3412;text-transform:uppercase;letter-spacing:.03em;background:#ffedd5;border:1px solid #fed7aa;border-radius:3px;align-items:center;gap:3px;padding:1px 5px;font-size:10px;font-weight:700;display:inline-flex}
