.app-main{padding:40px 0 80px}.app-hero{justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:36px;display:flex}.app-hero h1{margin:16px 0 14px;font-size:clamp(2rem,4.4vw,3.2rem)}.app-hero .lead{margin:0}.local-badge{color:var(--teal);background:#2af5d20f;border:1px solid #2af5d24d;border-radius:14px;flex:none;align-items:center;gap:14px;padding:14px 18px;display:flex}.local-badge svg{width:28px;height:28px}.local-badge b{color:var(--text);font-size:.95rem;display:block}.local-badge span{font:.75rem var(--mono);color:var(--muted)}.workspace{grid-template-columns:1fr 1fr;gap:20px;display:grid}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(12px);min-width:0;padding:24px}.run-panel{grid-column:1/-1}.panel-head{align-items:center;gap:12px;margin-bottom:18px;display:flex}.panel-head h2{margin:0;font-size:1.2rem}.panel-tools{margin-left:auto}.step{width:28px;height:28px;font:600 .8rem var(--mono);color:#03110e;background:var(--grad);border-radius:9px;place-items:center;display:grid}.dropzone{cursor:pointer;border:1.5px dashed var(--line-hi);transition:border-color .25s, background .25s, transform .25s var(--ease);background:#ffffff04;border-radius:14px;align-items:center;gap:18px;padding:26px;display:flex}.dropzone:hover,.dropzone.drag{border-color:var(--teal);background:#2af5d20d}.dropzone.drag{transform:scale(1.01)}.dropzone.has-file{border-style:solid;border-color:#2af5d273}.dropzone:focus-within{outline:2px solid var(--teal);outline-offset:3px}.dz-icon{width:52px;height:52px;color:var(--teal);transition:transform .4s var(--ease);background:#2af5d214;border:1px solid #2af5d240;border-radius:14px;flex:none;place-items:center;display:grid}.dropzone:hover .dz-icon{transform:translateY(-3px)}.dz-icon svg{width:26px;height:26px}.dz-text b{word-break:break-all;font-size:1.02rem;display:block}.dz-text span{color:var(--muted);font-size:.85rem}.demo-head{margin:22px 0 10px;font-size:.78rem}.demo-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;display:grid}.demo{text-align:left;cursor:pointer;color:var(--text);font:inherit;border:1px solid var(--line);transition:border-color .2s, background .2s, transform .25s var(--ease);animation:rise .5s var(--ease) both;animation-delay:calc(var(--i,0) * 50ms);background:#ffffff05;border-radius:12px;gap:3px;padding:12px 14px;display:grid}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.demo:hover{border-color:var(--line-hi);background:#ffffff0b;transform:translateY(-2px)}.demo.active{border-color:var(--teal);background:#2af5d212}.demo.loading{opacity:.6}.demo b{font-size:.9rem}.demo span{color:var(--muted);font-size:.78rem;line-height:1.4}.demo small{color:var(--dim);margin-top:4px;font-size:.68rem}select{font:500 .85rem var(--font);color:var(--text);border:1px solid var(--line-hi);appearance:none;cursor:pointer;background:#0a121c url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2393a6b9' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right 10px center/14px no-repeat;border-radius:10px;padding:8px 32px 8px 12px}.editor-wrap{border:1px solid var(--line);background:#060a10;border-radius:12px;transition:border-color .2s;position:relative}.editor-wrap:focus-within{border-color:#2af5d280}#contract-editor::placeholder{color:var(--dim);opacity:1}#contract-editor{resize:vertical;color:#cfe3f2;width:100%;height:300px;font:.8rem/1.65 var(--mono);tab-size:2;background:0 0;border:0;outline:none;padding:14px 16px;display:block}.contract-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;display:flex}.contract-status{font:.8rem var(--mono);color:var(--muted)}.contract-status.ok{color:var(--pass)}.contract-status.bad{color:var(--fail)}.contract-actions{gap:8px;display:flex}.help{margin-top:14px;font-size:.85rem}.help summary{cursor:pointer;color:var(--muted);font-weight:500}.help p{margin:10px 0 0;line-height:1.7}.help code{color:var(--teal);font-size:.8rem}.options{grid-template-columns:1fr 1fr;gap:12px;display:grid}.toggle{border:1px solid var(--line);cursor:pointer;border-radius:12px;align-items:flex-start;gap:14px;padding:14px 16px;transition:border-color .2s,background .2s;display:flex}.toggle:hover{border-color:var(--line-hi)}.toggle:has(input:checked){background:#2af5d20a;border-color:#2af5d266}.toggle input{opacity:0;pointer-events:none;position:absolute}.switch{background:#1a2836;border-radius:22px;flex:none;width:40px;height:22px;margin-top:2px;transition:background .25s;position:relative}.switch:after{content:"";width:16px;height:16px;transition:transform .3s var(--ease), background .25s;background:#8aa0b4;border-radius:50%;position:absolute;top:3px;left:3px}.toggle input:checked+.switch{background:#2af5d259}.toggle input:checked+.switch:after{background:var(--teal);box-shadow:0 0 10px var(--teal);transform:translate(18px)}.toggle input:focus-visible+.switch{outline:2px solid var(--teal);outline-offset:2px}.toggle b{font-size:.95rem;display:block}.toggle small{color:var(--muted);margin-top:2px;font-size:.82rem;line-height:1.45;display:block}.run-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:20px;display:flex}.selected{flex-direction:column;gap:2px;min-width:0;display:flex}.sel-name{word-break:break-all;font-weight:600}.selected .mono{font-size:.78rem}.btn-run{min-width:190px;padding:15px 28px;font-size:1rem}.btn-run.busy{color:#0000;position:relative}.btn-run.busy:after{content:"";border:2px solid #03110e;border-right-color:#0000;border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin;position:absolute}@keyframes spin{to{transform:rotate(360deg)}}.progress{margin-top:20px}.progress-track{background:#111c28;border-radius:8px;height:8px;overflow:hidden}.progress-bar{border-radius:inherit;background:var(--grad);width:0;height:100%;transition:width .15s linear;position:relative;overflow:hidden;box-shadow:0 0 16px #2af5d299}.progress-bar:after{content:"";background:linear-gradient(90deg,#0000,#ffffff73,#0000);animation:1.2s linear infinite shimmer;position:absolute;inset:0}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:20px;margin-top:10px;font-size:.8rem;display:flex}.progress-meta #progress-pct{color:var(--text);font-weight:600}.progress-meta .btn{margin-left:auto}.results{opacity:0;transition:opacity .6s var(--ease), transform .6s var(--ease);margin-top:44px;scroll-margin-top:90px;transform:translateY(16px)}.results.in{opacity:1;transform:none}.results-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;display:flex}.overall{align-items:center;gap:22px;min-width:0;display:flex}.overall h2{margin:0 0 4px;font-size:1.6rem}.file-line{word-break:break-all;margin:0 0 10px;font-size:.8rem}.overall-ring{--c:var(--skipped);width:96px;height:96px;font:650 1rem var(--display);text-transform:uppercase;letter-spacing:.06em;color:var(--c);background:radial-gradient(circle, color-mix(in srgb, var(--c) 14%, transparent), transparent 70%);border:2px solid var(--c);box-shadow:0 0 40px -6px var(--c), inset 0 0 20px -8px var(--c);border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.overall-ring:after{content:"";border:1px solid var(--c);opacity:.35;animation:ping 2.4s var(--ease) infinite;border-radius:50%;position:absolute;inset:-8px}@keyframes ping{0%{opacity:.5;transform:scale(.92)}to{opacity:0;transform:scale(1.18)}}.overall-ring.pass{--c:var(--pass)}.overall-ring.warn{--c:var(--warn)}.overall-ring.fail{--c:var(--fail)}.counts{flex-wrap:wrap;gap:8px;display:flex}.count{font:.78rem var(--mono);border:1px solid var(--line);color:var(--muted);background:#ffffff08;border-radius:8px;padding:4px 10px}.count b{color:var(--text)}.count.pass b{color:var(--pass)}.count.warn b{color:var(--warn)}.count.fail b{color:var(--fail)}.result-actions{flex-wrap:wrap;gap:8px;display:flex}.stats{grid-template-columns:repeat(5,1fr);gap:12px;margin:16px 0;display:grid}.stat{align-content:start;gap:4px;padding:16px 18px;display:grid}.stat>span{letter-spacing:.1em;text-transform:uppercase;font-size:.7rem}.stat b{font:600 1.15rem var(--display)}.stat small{font-size:.76rem;line-height:1.4}.interpretation{margin:8px 2px 20px;font-size:.85rem}.checks{gap:10px;display:grid}.check{border:1px solid var(--line);background:var(--panel);border-left:3px solid var(--skipped);animation:rise .45s var(--ease) both;animation-delay:calc(var(--i,0) * 45ms);border-radius:14px;overflow:hidden}.check.pass{border-left-color:var(--pass)}.check.warn{border-left-color:var(--warn)}.check.fail{border-left-color:var(--fail)}.check summary{cursor:pointer;align-items:center;gap:14px;padding:15px 18px;list-style:none;transition:background .2s;display:flex}.check summary::-webkit-details-marker{display:none}.check summary:hover{background:#ffffff06}.check summary code{color:var(--dim);font-size:.8rem}.check-name{font-weight:600}.check-n{margin-left:auto;font-size:.75rem}.check summary:after{content:"";border-right:2px solid var(--dim);border-bottom:2px solid var(--dim);width:8px;height:8px;transition:transform .3s var(--ease);margin-left:4px;transform:rotate(45deg)}.check[open] summary:after{transform:rotate(-135deg)}.check-body{gap:10px;padding:4px 18px 18px;display:grid}.finding{border:1px solid var(--line);background:#ffffff05;border-radius:10px;padding:14px 16px}.finding.fail{background:#ff5f6d0a;border-color:#ff5f6d33}.finding.warn{background:#ffb5470a;border-color:#ffb54733}.finding-head{align-items:flex-start;gap:12px;display:flex}.finding-head .pill{flex:none;margin-top:2px}.finding-head p{color:#c9d6e2;margin:0;font-size:.9rem}.facts{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.fact{font:.74rem var(--mono);border:1px solid var(--line);background:#ffffff0a;border-radius:7px;gap:6px;max-width:100%;padding:3px 9px;display:inline-flex}.fact i{color:var(--dim);font-style:normal}.fact b{color:var(--text);word-break:break-all;font-weight:500}.ev-head{color:var(--dim);text-transform:uppercase;letter-spacing:.08em;margin:12px 0 6px;font-size:.72rem}.ev-list{gap:4px;max-height:280px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.ev{font:.72rem/1.6 var(--mono);background:#070c12;border-radius:7px;flex-wrap:wrap;gap:4px 14px;padding:6px 10px;display:flex}.kv i{color:var(--dim);margin-right:5px;font-style:normal}.kv b{color:#b9d3e6;font-weight:500}.ev.pair{gap:3px;display:grid}.ev-row{flex-wrap:wrap;align-items:baseline;gap:2px 14px;display:flex}.ev-tag{text-transform:uppercase;letter-spacing:.08em;color:var(--cyan);min-width:70px;font-size:.66rem}.ev-tag.hot{color:var(--fail);font-weight:600}.inventory{margin-top:20px}.inventory h3{font-size:1.1rem}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.88rem}th{text-align:left;font:600 .7rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--dim);border-bottom:1px solid var(--line-hi);padding:10px 12px}td{border-bottom:1px solid var(--line);white-space:nowrap;padding:11px 12px}td.mono{font-size:.82rem}tbody tr{transition:background .2s}tbody tr:hover{background:#ffffff06}.upsell{background:radial-gradient(500px 200px at 100% 0%, #ffb5471a, transparent 70%), var(--panel);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;margin-top:20px;display:flex}.upsell h3{margin-bottom:6px}.upsell p{max-width:60ch;margin:0}.error-box{color:#ffc7cc;font:.88rem var(--mono);background:#ff5f6d14;border:1px solid #ff5f6d66;border-radius:12px;margin-top:24px;padding:16px 20px}.app-footer{border-top:0;margin-top:0;padding-top:0}@media (max-width:1000px){.workspace{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.app-hero{flex-direction:column;align-items:flex-start}}@media (max-width:640px){.options,.stats{grid-template-columns:1fr}.btn-run{width:100%}.check summary{flex-wrap:wrap;gap:8px 12px}.check-n{order:5;width:100%;margin-left:0}.overall{flex-direction:column;align-items:flex-start}.panel{padding:18px}}
