:root{--bg:#fbfbfa;--fg:#1a1a18;--mut:#6b6b66;--line:#e2e2dd;--card:#fff;--ok:#1a7f4b;--okbg:#e8f5ee;--bad:#b3261e;--badbg:#fdeceb;--warn:#8a6100;--warnbg:#fdf3e0;--acc:#2f5fd0;--p1:#2f6fd0;--p2:#0f8f7a;--p3:#c9761b;--p4:#4e7a27;--p5:#8353c9;--p6:#c4384f;--edge:#c8c8c2}@media(prefers-color-scheme:dark){:root{--bg:#16161a;--fg:#e8e8e4;--mut:#9a9a94;--line:#2e2e34;--card:#1e1e23;--ok:#5ec98d;--okbg:#12291d;--bad:#f08b84;--badbg:#2c1614;--warn:#e0b355;--warnbg:#2b2110;--acc:#7fa4f5;--p1:#6f9ef0;--p2:#3fc0a8;--p3:#e0a256;--p4:#8fbf5f;--p5:#ad83ef;--p6:#ef7286;--edge:#3a3a42}}:root[data-theme=light]{--bg:#fbfbfa;--fg:#1a1a18;--mut:#6b6b66;--line:#e2e2dd;--card:#fff;--edge:#c8c8c2;--ok:#1a7f4b;--okbg:#e8f5ee;--bad:#b3261e;--badbg:#fdeceb;--warn:#8a6100;--warnbg:#fdf3e0;--acc:#2f5fd0;--p1:#2f6fd0;--p2:#0f8f7a;--p3:#c9761b;--p4:#4e7a27;--p5:#8353c9;--p6:#c4384f}:root[data-theme=dark]{--bg:#16161a;--fg:#e8e8e4;--mut:#9a9a94;--line:#2e2e34;--card:#1e1e23;--edge:#3a3a42;--ok:#5ec98d;--okbg:#12291d;--bad:#f08b84;--badbg:#2c1614;--warn:#e0b355;--warnbg:#2b2110;--acc:#7fa4f5;--p1:#6f9ef0;--p2:#3fc0a8;--p3:#e0a256;--p4:#8fbf5f;--p5:#ad83ef;--p6:#ef7286}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.55 ui-sans-serif,-apple-system,Segoe UI,Roboto,sans-serif}.wrap{max-width:1180px;margin:0 auto;padding:24px 20px 56px}h1{font-size:20px;margin:0 0 4px;letter-spacing:-.01em}h2{font-size:15px;margin:30px 0 12px}.sub{color:var(--mut);font-size:13.5px;margin:0 0 18px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px}.tabs button{background:none;border:none;border-bottom:2px solid transparent;padding:9px 15px;font:inherit;font-size:14px;color:var(--mut);cursor:pointer;margin-bottom:-1px}.tabs button.on{color:var(--fg);border-bottom-color:var(--acc);font-weight:600}.tab{display:none}.tab.on{display:block}.stats{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}.stat{background:var(--card);border:1px solid var(--line);padding:10px 14px;min-width:104px}.stat b{display:block;font-size:19px;font-variant-numeric:tabular-nums}.stat span{color:var(--mut);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em}#drop{border:2px dashed var(--line);background:var(--card);padding:34px 20px;text-align:center;cursor:pointer;transition:.15s}#drop:hover,#drop.over{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 6%,var(--card))}#drop p{margin:6px 0 0;color:var(--mut);font-size:13px}#drop strong{font-size:15.5px}.verdict{padding:16px 18px;margin:20px 0 14px;border:1px solid}.verdict.ready{background:var(--okbg);border-color:var(--ok)}.verdict.conditional{background:var(--warnbg);border-color:var(--warn)}.verdict.not_ready{background:var(--badbg);border-color:var(--bad)}.verdict h3{margin:0 0 4px;font-size:16.5px}.verdict .meta{font-size:13px;color:var(--mut)}table{width:100%;border-collapse:collapse;font-size:13.5px}.scroll{overflow-x:auto;border:1px solid var(--line);background:var(--card)}th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);font-weight:600}tr:last-child td{border-bottom:none}.tag{display:inline-block;padding:1px 7px;border-radius:5px;font-size:11px;font-weight:600;white-space:nowrap}.tag.pass{background:var(--okbg);color:var(--ok)}.tag.fail{background:var(--badbg);color:var(--bad)}.tag.m{background:color-mix(in srgb,var(--fg) 9%,transparent);color:var(--fg)}.det{color:var(--mut);font-size:12.5px;margin-top:3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.src{color:var(--mut);font-size:11.5px;margin-top:3px}a{color:var(--acc)}.bar{height:7px;border-radius:4px;background:var(--line);overflow:hidden;margin-top:8px;max-width:280px}.bar i{display:block;height:100%}.hint{color:var(--mut);font-size:12.5px;margin-top:8px}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;background:color-mix(in srgb,var(--fg) 6%,transparent);padding:1px 5px;border-radius:4px}button.b{font:inherit;font-size:13px;border:1px solid var(--line);background:var(--card);color:var(--fg);padding:5px 11px;border-radius:7px;cursor:pointer}button.b:hover{border-color:var(--acc)}button.b.on{background:var(--acc);border-color:var(--acc);color:#fff}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--acc);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px}@keyframes sp{to{transform:rotate(360deg)}}.gbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}.gbar input[type=search]{font:inherit;font-size:13px;padding:5px 10px;border-radius:7px;border:1px solid var(--line);background:var(--card);color:var(--fg);min-width:190px}.gbar label{font-size:12.5px;color:var(--mut);display:inline-flex;gap:4px;align-items:center;cursor:pointer}.gwrap{display:grid;grid-template-columns:1fr 320px;gap:12px;position:relative}@media(max-width:900px){.gwrap{grid-template-columns:1fr}}#cv{width:100%;height:640px;background:var(--card);border:1px solid var(--line);border-radius:10px;display:block;cursor:grab;touch-action:none;box-shadow:0 4px 20px #00000026}#cv.drag{cursor:grabbing}#panel{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;max-height:640px;overflow-y:auto;font-size:13px;box-shadow:0 4px 20px #00000026}#panel h3{margin:0 0 4px;font-size:15px;line-height:1.3;color:var(--fg)}#panel .k{color:var(--mut);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin:12px 0 4px}#panel .nb{padding:6px 8px;border-radius:6px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .15s ease}#panel .nb:hover{background:color-mix(in srgb,var(--acc) 12%,transparent);color:var(--acc)}#panel .nb:last-child{border-bottom:none}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:-1px}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--mut);margin-top:10px}.gwrap.fs{display:block;background:var(--bg);padding:0}.gwrap.fs #cv{height:100vh;border:none;border-radius:0}.gwrap.fs #panel{position:fixed;top:14px;right:14px;width:380px;max-height:calc(100vh - 28px);box-shadow:0 8px 32px #00000073;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:none;z-index:10}.gwrap.fs #panel.show{display:block}#fsbar{display:none}.gwrap.fs #fsbar{display:flex;gap:8px;position:fixed;top:14px;left:14px;z-index:10}.pclose{display:none;float:right;font:inherit;font-size:15px;line-height:1;border:none;background:none;color:var(--mut);cursor:pointer;padding:2px 6px}.pclose:hover{color:var(--fg)}.gwrap.fs .pclose{display:block}.pipe{display:flex;flex-wrap:wrap;gap:0;align-items:stretch;margin:14px 0}.stage{background:var(--card);border:1px solid var(--line);padding:12px 14px;flex:1 1 150px;min-width:150px;opacity:0;animation:rise .5s ease forwards}.stage b{display:block;font-size:13.5px;margin-bottom:4px}.stage span{font-size:12px;color:var(--mut)}.stage .tag{margin-top:6px}.arrow{flex:0 0 34px;display:flex;align-items:center;justify-content:center;position:relative;color:var(--mut);font-size:17px}.arrow i{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--acc);left:2px;animation:flowdot 1.6s linear infinite}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes flowdot{0%{left:2px;opacity:0}15%{opacity:1}85%{opacity:1}to{left:26px;opacity:0}}@media(prefers-reduced-motion:reduce){.stage{animation:none;opacity:1}.arrow i{animation:none;display:none}}@media(max-width:760px){.pipe{flex-direction:column}.arrow{transform:rotate(90deg);flex-basis:26px}}.meterrow{display:grid;grid-template-columns:190px 1fr 130px;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px}.meterrow:last-child{border-bottom:none}.meter{height:10px;border-radius:5px;background:color-mix(in srgb,var(--fg) 8%,transparent);overflow:hidden}.meter i{display:block;height:100%;width:0;background:var(--ok);transition:width 1.1s cubic-bezier(.2,.7,.2,1)}.meter i.acc{background:var(--acc)}.meter i.warn{background:var(--warn)}.meterrow .val{font-variant-numeric:tabular-nums;text-align:right;color:var(--mut)}@media(max-width:640px){.meterrow{grid-template-columns:1fr;gap:4px}.meterrow .val{text-align:left}}.pol h2{margin-top:26px}.pol p,.pol li{font-size:14px;color:var(--fg)}.pol .src{font-size:12.5px}.callout{background:var(--card);border:1px solid var(--line);padding:14px 16px;margin-bottom:14px}.callout h3{margin:0 0 6px;font-size:14.5px}.callout p{margin:0 0 8px;font-size:13.5px;color:var(--mut)}.tag.w{background:color-mix(in srgb,var(--acc) 14%,transparent);color:var(--acc)}.cite{background:color-mix(in srgb,var(--fg) 3.5%,transparent);padding:9px 11px;margin:7px 0;font-size:13px}.cite a{font-size:12px}.tree summary{cursor:pointer;list-style:none;display:flex;gap:9px;align-items:baseline;padding:6px 8px;border-radius:7px}.tree summary::-webkit-details-marker{display:none}.tree summary:before{content:"\25b8";font-size:10px;color:var(--mut);width:10px;flex:none;display:inline-block;transition:transform .12s}.tree details[open]>summary:before{transform:rotate(90deg)}.tree summary:hover{background:color-mix(in srgb,var(--fg) 5%,transparent)}.grp>summary{font-weight:600;font-size:14.5px;padding:10px 8px;margin-top:6px}.grp>summary small{font-weight:400;color:var(--mut);font-size:12.5px}.node{margin-left:19px}.node>summary b{font-weight:600;font-size:13.5px}.fields{margin-left:46px;padding:2px 0 12px}.f{display:grid;grid-template-columns:158px 1fr;gap:12px;padding:5px 0;font-size:13.5px;align-items:start}.f>span:first-child{color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding-top:3px}.mod{font-size:10.5px;padding:1px 6px;border-radius:4px;font-weight:600;white-space:nowrap}.mod.normative{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.mod.informative{background:color-mix(in srgb,var(--fg) 10%,transparent);color:var(--mut)}.mod.mixed{background:color-mix(in srgb,var(--acc) 15%,transparent);color:var(--acc)}.mod.interpretive{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn)}.cat{font-size:11px;color:var(--mut);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.rule{display:grid;grid-template-columns:118px 1fr;gap:10px;font-size:13px;padding:3px 0}.rule>span:first-child{font-weight:600}@media(max-width:640px){.f,.rule{grid-template-columns:1fr;gap:2px}.fields{margin-left:24px}}
