:root{--display:"Instrument Serif", Georgia, "Times New Roman", serif;--body:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace;--paper:#faf9f6;--card:#fff;--ink:#1a1a17;--ink-soft:#57564f;--line:#e4e2db;--line-soft:#eeece6;--excel:#217346;--excel-deep:#1a5c38;--excel-tint:#eaf3ee;--crit:#b3261e;--crit-tint:#fbeae8;--high:#b45309;--high-tint:#fbf0e4;--med:#8a6d1a;--med-tint:#f7f1df;--low:#5c5c57;--low-tint:#f1f0ec;--struct:#2a5db0;--struct-tint:#e9f0fb;--radius:14px;--shadow-sm:0 1px 2px #1a1a170a;--shadow-md:0 10px 30px -12px #1a1a172e;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.5}:focus-visible{outline:2px solid var(--excel);outline-offset:2px;border-radius:4px}:focus:not(:focus-visible){outline:none}button{font:inherit;color:inherit;cursor:pointer}.mono{font-family:var(--mono);font-feature-settings:"tnum" 1}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app{max-width:860px;margin:0 auto;padding:0 20px 96px}.masthead{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:8px;padding:30px 0 22px;display:flex}.masthead h1{font-family:var(--display);letter-spacing:-.01em;margin:0;font-size:34px;font-weight:400;line-height:1}.masthead .tagline{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:11px}.pair{font-family:var(--mono);color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:10px;padding:14px 0 2px;font-size:12.5px;display:flex}.pair .arrow{color:var(--excel)}.pair b{color:var(--ink);font-weight:600}.pair .redo{border:1px solid var(--line);font-family:var(--body);color:var(--ink-soft);background:0 0;border-radius:999px;margin-left:auto;padding:6px 14px;font-size:13px}.pair .redo:hover{border-color:var(--ink-soft);color:var(--ink)}.drop-intro{text-align:center;padding:46px 0 30px}.drop-intro h2{font-family:var(--display);letter-spacing:-.01em;margin:0 0 12px;font-size:40px;font-weight:400;line-height:1.08}.drop-intro p{color:var(--ink-soft);max-width:46ch;margin:0 auto}.drops{align-items:stretch;gap:18px;margin-top:30px;display:flex}.drop-arrow{color:var(--excel);font-family:var(--mono);flex:none;align-self:center;font-size:22px}.drop{text-align:center;background:var(--card);border:1.5px dashed var(--line);border-radius:var(--radius);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;min-height:180px;padding:24px;transition:border-color .15s,background .15s;display:flex}.drop:hover{border-color:var(--ink-soft)}.drop.over{border-color:var(--excel);background:var(--excel-tint);border-style:solid}.drop.filled{border-style:solid;border-color:var(--excel)}.drop .role{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:11px}.drop .fname{font-family:var(--mono);color:var(--ink);word-break:break-all;font-size:13px}.drop .hint{color:var(--ink-soft);font-size:13.5px}.drop .check{color:var(--excel)}.drop-error{background:var(--crit-tint);color:#7a1a15;border:1px solid #eccbc8;border-radius:10px;align-items:flex-start;gap:10px;margin-top:20px;padding:14px 16px;font-size:14px;display:flex}.drop-error svg{flex:none;margin-top:1px}.error-view{text-align:center;margin-top:40px}.error-view .drop-error{text-align:left;margin:0 auto 18px;display:inline-flex}.error-view .redo{border:1px solid var(--line);color:var(--ink-soft);background:0 0;border-radius:999px;padding:8px 18px;font-size:14px}.error-view .redo:hover{border-color:var(--ink-soft);color:var(--ink)}.analyze{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);justify-content:center;align-items:center;min-height:340px;margin-top:30px;display:flex;position:relative;overflow:hidden}.analyze .grid{background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);opacity:.55;background-size:34px 30px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(120% 90% at 50% 45%,#000 55%,#0000 100%);mask-image:radial-gradient(120% 90% at 50% 45%,#000 55%,#0000 100%)}.analyze .scan{background:radial-gradient(45% 40% at 50% 45%,#21734638,#21734600 70%) 0 0/130% 130%;animation:3.6s ease-in-out infinite breathe;position:absolute;inset:-10%}@keyframes breathe{0%,to{opacity:.4;background-position:47% 44%}50%{opacity:.85;background-position:53% 56%}}.analyze .cell{background:#21734629;border-radius:2px;width:34px;height:30px;animation:3.6s ease-in-out infinite cellPulse;position:absolute}@keyframes cellPulse{0%,to{opacity:0}50%{opacity:1}}.analyze .caption{z-index:1;text-align:center;position:relative}.analyze .caption .title{font-family:var(--display);margin:0 0 6px;font-size:26px}.analyze .caption .sub{font-family:var(--mono);letter-spacing:.06em;color:var(--ink-soft);margin:0;font-size:12px}.analyze .caption .sub:after{content:"…";animation:1.4s steps(4,end) infinite dots}@keyframes dots{0%{content:""}25%{content:"·"}50%{content:"··"}75%{content:"···"}}.section{margin-top:34px}.section-head{border-bottom:1px solid var(--line);align-items:baseline;gap:12px;margin-bottom:18px;padding-bottom:12px;display:flex}.section-head h2{font-family:var(--display);letter-spacing:-.01em;margin:0;font-size:30px;font-weight:400}.section-head .count{font-family:var(--mono);color:var(--ink-soft);font-size:13px}.stack{flex-direction:column;gap:12px;display:flex}.verdict{font-family:var(--display);letter-spacing:-.015em;color:var(--ink);text-wrap:balance;margin:6px 0 28px;font-size:clamp(1.9rem,4.5vw,2.5rem);font-weight:400;line-height:1.1}.verdict .num{color:var(--crit);font-weight:400}.verdict .sep{color:#c4c2b9;padding:0 .1em}.section.other{opacity:.72;margin-top:48px}.other .section-head h2{color:var(--ink-soft);font-size:22px}.other .stack{gap:6px}.other .card{box-shadow:none;border-color:var(--line-soft);background:0 0;padding:11px 14px 11px 16px}button.other .card:hover,.other button.card:hover{box-shadow:none;border-color:var(--line)}.other .card .rail{opacity:.5;width:3px}.other .card .badge{gap:5px;padding:3px 7px;font-size:9.5px}.other .card .headline{color:var(--ink-soft);margin-top:7px;font-size:13.5px;font-weight:500}.other .card .meta{margin-top:5px}.other .card .loc{color:var(--ink-soft);font-size:11px;font-weight:500}.other .card .detail{font-size:11px}.card{text-align:left;background:var(--card);border:1px solid var(--line);width:100%;box-shadow:var(--shadow-sm);border-radius:12px;padding:16px 18px 16px 22px;transition:border-color .15s,box-shadow .15s,transform .15s;display:block;position:relative;overflow:hidden}button.card:hover{border-color:var(--ink-soft);box-shadow:var(--shadow-md)}button.card:active{transform:translateY(1px)}.card .rail{width:5px;position:absolute;top:0;bottom:0;left:0}.card.t-critical .rail{background:var(--crit)}.card.t-high .rail{background:var(--high)}.card.t-medium .rail{background:var(--med)}.card.t-low .rail,.card.t-info .rail{background:var(--low)}.card.t-structural .rail{background:var(--struct)}.card .headline{margin:10px 0 0;font-size:16px;font-weight:600;line-height:1.32}.card .meta{flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-top:9px;display:flex}.card .loc{font-family:var(--mono);color:var(--ink);font-size:12.5px;font-weight:600}.card .detail{font-family:var(--mono);color:var(--ink-soft);font-size:12.5px}.card .blast{flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin:12px 0 2px;display:flex}.card .blast .n{font-family:var(--mono);letter-spacing:-.04em;color:var(--ink);font-feature-settings:"tnum" 1;font-size:2.4rem;font-weight:700;line-height:.95}.card .blast .unit{color:var(--ink);font-size:14px;font-weight:600}.card .blast .reached{color:var(--ink-soft);flex-basis:100%;font-size:12.5px}.card.t-critical .blast .n{color:var(--crit)}.card.t-high .blast .n{color:var(--high)}.card.t-critical{background:#fff;border-color:#efd6d3;padding:22px 24px 22px 28px;box-shadow:0 22px 44px -20px #b3261e61,0 3px 10px -6px #1a1a171f}.card.t-critical .rail{width:6px}button.card.t-critical:hover{box-shadow:0 26px 52px -18px #b3261e7a,0 3px 10px -6px #1a1a1724}.card.t-high{box-shadow:0 14px 30px -20px #b4530966, var(--shadow-sm)}.badge{font-family:var(--mono);letter-spacing:.1em;border-radius:999px;align-items:center;gap:7px;padding:4px 10px;font-size:11px;font-weight:600;display:inline-flex}.badge svg{flex:none}.badge.t-critical{background:var(--crit);color:#fff}.badge.t-high{background:var(--high-tint);color:var(--high)}.badge.t-medium{background:var(--med-tint);color:var(--med)}.badge.t-low,.badge.t-info{background:var(--low-tint);color:var(--low)}.badge.t-structural{background:var(--struct-tint);color:var(--struct)}.all-clear{background:var(--excel-tint);border:1px solid #cde5d8;border-radius:12px;align-items:center;gap:14px;padding:20px 22px;display:flex}.all-clear .ic{color:var(--excel);flex:none}.all-clear .txt h3{font-family:var(--body);color:var(--excel-deep);margin:0 0 2px;font-size:16px;font-weight:600}.all-clear .txt p{color:var(--ink-soft);margin:0;font-size:13.5px}.reveal{animation:.5s cubic-bezier(.22,1,.36,1) both rise;animation-delay:calc(var(--i,0) * 70ms)}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.scrim{z-index:50;background:#1a1a1747;justify-content:flex-end;animation:.2s both fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}to{opacity:1}}.drill{background:var(--paper);border-left:1px solid var(--line);width:min(560px,100%);height:100%;padding:24px 26px 60px;animation:.28s cubic-bezier(.22,1,.36,1) both slideIn;overflow-y:auto}@keyframes slideIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.drill .close{float:right;background:var(--card);border:1px solid var(--line);width:34px;height:34px;color:var(--ink-soft);border-radius:8px;place-items:center;margin:-6px -6px 0 0;display:grid;position:sticky;top:0}.drill .close:hover{color:var(--ink);border-color:var(--ink-soft)}.drill h2{font-family:var(--display);margin:4px 40px 6px 0;font-size:27px;font-weight:400;line-height:1.15}.drill .where{font-family:var(--mono);color:var(--ink-soft);margin:0 0 20px;font-size:12.5px}.drill h3{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-soft);margin:24px 0 10px;font-size:11px}.ba{border:1px solid var(--line);background:var(--card);border-radius:10px;overflow:hidden}.ba-row{border-top:1px solid var(--line-soft);grid-template-columns:84px 1fr 1fr;display:grid}.ba-row:first-child{border-top:none}.ba-head{background:var(--paper)}.ba-cell{font-family:var(--mono);word-break:break-all;padding:9px 12px;font-size:12.5px}.ba-cell.ref{color:var(--ink-soft);border-right:1px solid var(--line-soft);font-weight:600}.ba-cell.before{color:var(--ink-soft);border-right:1px solid var(--line-soft)}.ba-cell.after{color:var(--ink)}.ba-head .ba-cell{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-size:10px}.blast-sheets{flex-direction:column;gap:14px;display:flex}.blast-sheet .sname{font-family:var(--mono);margin-bottom:6px;font-size:12px;font-weight:600}.blast-sheet .sname .n{color:var(--ink-soft);font-weight:400}.refs{flex-wrap:wrap;gap:5px;display:flex}.refs .r{font-family:var(--mono);background:var(--excel-tint);color:var(--excel-deep);border-radius:5px;padding:2px 7px;font-size:11.5px}.refs .more{color:var(--ink-soft);align-self:center;font-size:11.5px}.drill .none{color:var(--ink-soft);font-size:14px}@media (width<=620px){.drops{flex-direction:column}.drop-arrow{transform:rotate(90deg)}.masthead h1{font-size:28px}.drop-intro h2{font-size:31px}.section-head h2{font-size:25px}.verdict{font-size:24px}.card .blast .n{font-size:27px}.ba-row{grid-template-columns:64px 1fr 1fr}}@media (prefers-reduced-motion:reduce){.analyze .scan,.analyze .cell{opacity:.5;animation:none}.analyze .caption .sub:after{content:"…";animation:none}.reveal,.scrim,.drill{animation:none}}
