@font-face{font-family:Rubik Glitch;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/RubikGlitch-Regular.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/SpaceGrotesk-Light.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/SpaceGrotesk-Regular.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/SpaceGrotesk-Medium.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/SpaceGrotesk-SemiBold.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/SpaceGrotesk-Bold.ttf) format("truetype")}:root{--bg: #0a0b0f;--surface: #12141b;--surface-2: #191c25;--border: #232834;--border-strong: #313847;--text: #eceef4;--text-dim: #99a1b3;--text-faint: #5d6575;--accent: #4f8ef7;--accent-soft: rgba(79, 142, 247, .13);--ok: #3ecf8e;--warn: #f7b64f;--bad: #f4645f;--bad-soft: rgba(244, 100, 95, .12);--radius: 10px;--radius-lg: 16px;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sans: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, sans-serif;--display: "Rubik Glitch", var(--sans);--vig: 10, 11, 15;--glass: rgba(18, 20, 27, .55);--ease-enter: cubic-bezier(.22, 1, .36, 1);--ease-move: cubic-bezier(.25, 1, .5, 1);--dur-1: .15s;--dur-2: .26s;--dur-3: .48s}[data-theme=light]{--bg: #f4f5f8;--surface: #ffffff;--surface-2: #eceef3;--border: #dcdfe7;--border-strong: #c3c8d4;--text: #171a22;--text-dim: #4d5567;--text-faint: #8b93a5;--accent: #2f6fe0;--accent-soft: rgba(47, 111, 224, .12);--ok: #0d8f60;--warn: #a56d0a;--bad: #d64540;--bad-soft: rgba(214, 69, 64, .1);--vig: 244, 245, 248;--glass: rgba(255, 255, 255, .6)}[data-theme=light] .hero-chip{color:#5d6575}[data-theme=light] .hero-chip--hit{background:#fdeceb;color:#b3261e;box-shadow:0 0 16px #d6454059}[data-theme=light] ::selection{background:var(--bad);color:#fff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:clip}::selection{background:var(--bad);color:#0a0b0f}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.app{max-width:1080px;margin:0 auto;padding:0 24px 64px;min-height:100vh;display:flex;flex-direction:column}main{flex:1}.stage{animation:stage-in var(--dur-2) var(--ease-enter) both}@keyframes stage-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.app-header{display:flex;align-items:baseline;gap:16px;padding:22px 0;margin-bottom:28px;position:relative;z-index:5}.theme-toggle{margin-left:auto;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);background:none;border:1px solid var(--border);border-radius:99px;padding:5px 12px;cursor:pointer;transition:color var(--dur-1) ease,border-color var(--dur-1) ease}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong)}.brand{font-family:var(--display);font-size:24px;font-weight:400;letter-spacing:.01em;cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity var(--dur-1) ease;background:none;border:none;padding:0;color:var(--text);text-align:left}.combobox-trigger:disabled{opacity:.55;cursor:not-allowed}.placeholder-link{color:var(--bad)!important;font-weight:600}@media (hover: hover) and (pointer: fine){.brand:hover{opacity:.8}}.brand-mark{color:var(--bad)}.brand-tagline{color:var(--text-faint);font-size:13px;letter-spacing:.01em}@media (max-width: 640px){.brand-tagline{display:none}}.app-footer{margin-top:72px;padding-top:20px;border-top:1px solid var(--border);color:var(--text-faint);font-size:12px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;line-height:1.7}.app-footer a{color:var(--text-faint);text-decoration:underline;text-underline-offset:2px;transition:color var(--dur-1) ease}.app-footer a:hover{color:var(--text)}.kicker{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);margin-bottom:14px}.kicker:before{content:"";display:inline-block;width:18px;height:1px;background:var(--bad);vertical-align:middle;margin-right:10px}.upload-screen{position:relative;width:100vw;margin-left:calc(50% - 50vw);margin-top:-96px;padding:180px 0 56px;min-height:680px}.upload-content{position:relative;z-index:2;max-width:1020px;margin:0 auto;padding:0 24px;text-align:center}.upload-screen h1{font-size:clamp(40px,5.4vw,66px);line-height:1.08;letter-spacing:-.028em;font-weight:700;margin:0 0 16px;text-wrap:balance}.lede{color:var(--text-dim);font-size:17px;line-height:1.6;margin:0 auto 36px;max-width:640px;text-wrap:balance}.upload-content .dropzone,.upload-content>.btn--ghost{max-width:680px;margin-left:auto;margin-right:auto}.hero-enter{animation:hero-rise var(--dur-3) var(--ease-enter) both}.hero-enter--1{animation-delay:60ms}.hero-enter--2{animation-delay:.14s}.hero-enter--3{animation-delay:.22s}.hero-enter--4{animation-delay:.3s}@keyframes hero-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.dropzone{border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);padding:44px 28px 20px;display:flex;flex-direction:column;gap:8px;cursor:pointer;transition:border-color var(--dur-2) var(--ease-enter),background var(--dur-2) var(--ease-enter),transform var(--dur-2) var(--ease-enter);background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}@media (hover: hover) and (pointer: fine){.dropzone:hover{border-color:var(--accent);background:#4f8ef714;transform:translateY(-2px)}}.dropzone--active{border-color:var(--accent);background:#4f8ef71f;transform:scale(1.01)}.dropzone strong{font-size:17px;letter-spacing:-.01em}.dropzone>span{color:var(--text-dim);font-size:14px}.dropzone-privacy{margin-top:30px;padding-top:16px;border-top:1px solid var(--border);font-size:12.5px;color:var(--text-dim);text-align:left;line-height:1.6}.dropzone-privacy strong{color:var(--ok);font-size:12.5px}.upload-content .btn--ghost{margin-top:22px}.error-note{margin-top:16px;color:var(--bad)}.error-note--bar{flex-basis:100%;margin:0 0 2px;padding:10px 14px;font-size:13.5px;line-height:1.5;background:var(--bad-soft);border:1px solid rgba(244,100,95,.45);border-radius:8px}.below-hero{margin-top:72px}.how-it-works{max-width:980px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:20px}@media (max-width: 820px){.how-it-works{grid-template-columns:1fr}}.how-step{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;text-align:left;transition:border-color var(--dur-2) var(--ease-enter),transform var(--dur-2) var(--ease-enter)}@media (hover: hover) and (pointer: fine){.how-step:hover{border-color:var(--border-strong);transform:translateY(-3px)}}.reveal{opacity:0;transform:translateY(16px);transition:opacity var(--dur-3) var(--ease-enter),transform var(--dur-3) var(--ease-enter)}.reveal:nth-child(2){transition-delay:70ms}.reveal:nth-child(3){transition-delay:.14s}.reveal.in{opacity:1;transform:none}.how-step--privacy{border-color:#3ecf8e73}@media (hover: hover) and (pointer: fine){.how-step--privacy:hover{border-color:var(--ok)}}.how-step__num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--surface-2);border:1px solid var(--border);font-family:var(--mono);font-size:13px;color:var(--text-dim);margin-bottom:14px}.how-step--privacy .how-step__num{border-color:var(--ok);color:var(--ok)}.how-step h3{margin:0 0 8px;font-size:16px;letter-spacing:-.01em}.how-step p{margin:0;font-size:13.5px;color:var(--text-dim);line-height:1.6}.how-method-link{text-align:center;font-size:13px;color:var(--text-faint);margin:32px auto 0}.linklike{font:inherit;background:none;border:none;padding:0;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px;transition:color var(--dur-1) ease}.linklike:hover{color:var(--text)}.hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:var(--bg);z-index:0;contain:strict}.hero-persp{position:absolute;top:-30%;right:-15%;bottom:-30%;left:-15%;perspective:900px;perspective-origin:60% 30%}.hero-plane{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotateX(52deg) rotate(-14deg) translateZ(-40px) scale(var(--hero-scale, 1.2));transform-style:preserve-3d;display:flex;gap:26px;justify-content:center}.hero-colwrap{position:relative;width:170px;overflow:hidden}.hero-col{display:flex;flex-direction:column;gap:12px;animation:hero-scroll-up linear infinite}.hero-chunk{display:flex;flex-direction:column;gap:12px}@keyframes hero-scroll-up{0%{transform:translateY(0)}to{transform:translateY(calc(-50% - 6px))}}.hero-chip{font-family:var(--mono);font-size:12px;padding:8px 12px;border-radius:6px;border:1px solid var(--border);color:#8e96a8;background:var(--surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:border-color .35s ease,color .35s ease,background .35s ease}.hero-k{color:var(--text-faint)}.hero-chip--hit{border-color:var(--bad);color:#ff9d99;background:#2a1517;position:relative;overflow:visible;box-shadow:0 0 16px #f4645f80}.hero-chip--hit:after{content:attr(data-cost);position:absolute;right:8px;top:-9px;font-size:10px;color:var(--bad);background:var(--bg);padding:0 5px;border-radius:4px;border:1px solid var(--bad)}.hero-d1{filter:none;opacity:1}.hero-d2{filter:blur(1.3px);opacity:.75}.hero-d3{filter:blur(2.6px);opacity:.5}.hero-scan{position:absolute;left:-6px;right:-6px;height:110px;top:0;pointer-events:none;animation:hero-sweep-down linear infinite;background:linear-gradient(180deg,transparent 0%,rgba(79,142,247,.05) 30%,rgba(79,142,247,.16) 48%,rgba(120,170,255,.28) 49.5%,rgba(79,142,247,.16) 51%,rgba(79,142,247,.05) 70%,transparent 100%)}.hero-scan:after{content:"";position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;background:#a0c8fff2;box-shadow:0 0 8px 1px #78aaffe6,0 0 22px 4px #4f8ef780}@keyframes hero-sweep-down{0%{transform:translateY(-140px)}to{transform:translateY(1600px)}}.hero-vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% 42%,rgba(var(--vig),.94) 0%,rgba(var(--vig),.62) 45%,rgba(var(--vig),.15) 75%,transparent 100%);box-shadow:inset 0 0 80px 40px var(--bg);pointer-events:none;z-index:1}h2{margin:0 0 6px;font-size:clamp(24px,3vw,32px);letter-spacing:-.02em;line-height:1.15}h3{margin:0 0 14px;font-size:15px;color:var(--text)}.screen-heading{margin-bottom:24px}.screen-heading p{color:var(--text-dim);margin:0;font-size:14px}.hint{color:var(--text-faint);font-size:12px;font-style:normal}.warn{color:var(--warn)}.notes{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--warn);border-radius:0 var(--radius) var(--radius) 0;padding:14px 16px 14px 32px;margin:0 0 20px;font-size:13px;color:var(--text-dim);line-height:1.6}.notes--quality{border-left-color:var(--accent)}.badge{display:inline-block;padding:1px 8px;border-radius:5px;font-family:var(--mono);font-size:11px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);margin-left:6px;vertical-align:middle}.badge--demo{color:var(--accent);border-color:var(--accent)}.badge--missing{color:var(--bad);border-color:#f4645f80;background:var(--bad-soft);margin:0 4px 2px 0}.badge--key{color:var(--warn);border-color:var(--warn);margin:0 6px 0 0}.badge--value{color:var(--accent);border-color:var(--accent);margin:0 6px 0 0}.btn{font:inherit;font-size:14.5px;border-radius:9px;padding:10px 18px;cursor:pointer;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);transition:background var(--dur-1) ease,border-color var(--dur-1) ease,transform var(--dur-1) var(--ease-enter)}@media (hover: hover) and (pointer: fine){.btn:hover{border-color:var(--text-faint);transform:translateY(-1px)}}.btn:active{transform:scale(.98);transition-duration:80ms}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}@media (hover: hover) and (pointer: fine){.btn--primary:hover{background:#6ba1f8;border-color:#6ba1f8}}.btn--primary:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn--ghost{background:transparent}.actions{display:flex;align-items:center;gap:12px;margin-top:28px;flex-wrap:wrap}.actions--sticky{position:sticky;bottom:0;z-index:4;margin-top:24px;padding:14px 0;background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--border)}.combobox{position:relative;max-width:55%;flex:1}.combobox-trigger{font:inherit;font-size:13px;width:100%;text-align:left;background-color:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:7px 34px 7px 10px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:border-color var(--dur-1) ease;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5l3.5 3.5 3.5-3.5' fill='none' stroke='%2399a1b3' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.combobox-trigger:hover{border-color:var(--border-strong)}.combobox-trigger--placeholder{color:var(--text-faint)}.combobox-panel{position:absolute;top:calc(100% + 6px);left:0;right:0;min-width:240px;z-index:20;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:10px;box-shadow:0 12px 32px #00000059;overflow:hidden;animation:combobox-in var(--dur-1) var(--ease-enter) both}@keyframes combobox-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}.combobox-search{width:100%;font:inherit;font-size:13px;background:transparent;color:var(--text);border:none;border-bottom:1px solid var(--border);padding:9px 12px;outline:none}.combobox-list{max-height:240px;overflow-y:auto;margin:0;padding:4px;list-style:none}.combobox-group{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);padding:8px 8px 4px}.combobox-option{font-size:13px;padding:7px 8px;border-radius:6px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.combobox-option--active{background:var(--accent-soft)}.combobox-option[aria-selected=true]{color:var(--accent)}.combobox-empty{font-size:13px;color:var(--text-faint);padding:12px;text-align:center}.mapping-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}@media (max-width: 760px){.mapping-grid{grid-template-columns:1fr}}.mapping-card,.preview-card,.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.mapping-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;font-size:14px}.mapping-row select,.filter-bar select,.filter-bar input[type=search]{font:inherit;font-size:13px;background-color:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:7px 10px;transition:border-color var(--dur-1) ease}.mapping-row select,.filter-bar select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5l3.5 3.5 3.5-3.5' fill='none' stroke='%2399a1b3' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.mapping-row select:hover,.filter-bar select:hover,.filter-bar input[type=search]:hover{border-color:var(--border-strong)}.mapping-row select{max-width:55%}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--text-faint);font-family:var(--mono);font-weight:500;font-size:11px;letter-spacing:.08em;text-transform:uppercase}tbody tr{transition:background var(--dur-1) ease}@media (hover: hover) and (pointer: fine){tbody tr:hover{background:#ffffff05}}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.mono{font-family:var(--mono);font-size:12px}.mono--truncate{max-width:460px;overflow:hidden;text-overflow:ellipsis}.score-card{display:flex;gap:32px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px 32px;margin-bottom:20px;flex-wrap:wrap}.score-card__grade{display:flex;flex-direction:column;align-items:center;min-width:120px}.grade-letter{font-family:var(--display);font-size:84px;font-weight:400;line-height:1}.score-card[data-grade=A] .grade-letter,.score-card[data-grade=B] .grade-letter{color:var(--ok)}.score-card[data-grade=C] .grade-letter,.score-card[data-grade=D] .grade-letter{color:var(--warn)}.score-card[data-grade=F] .grade-letter{color:var(--bad)}.grade-label{color:var(--text-faint);font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;text-align:center;margin-top:6px}.score-card__metrics{display:flex;gap:40px;flex-wrap:wrap}.metric{display:flex;flex-direction:column}.metric-value{font-size:26px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.metric--big .metric-value{font-size:38px}.metric--alert .metric-value{color:var(--bad)}.metric-label{color:var(--text-faint);font-size:12px;margin-top:2px}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}@media (max-width: 760px){.dashboard-grid{grid-template-columns:1fr}}.dashboard .card{margin-bottom:20px}.dashboard-grid .card{margin-bottom:0}.tagbar{margin-bottom:16px}.tagbar__head{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}.tagbar__track{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden}.tagbar__fill{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--ok));transform-origin:left;animation:tagbar-grow .7s var(--ease-enter) both}@keyframes tagbar-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.tagbar__insight{margin-top:5px;font-size:12px;color:var(--warn)}.tagbar__insight strong{font-variant-numeric:tabular-nums}.spend-card h3{margin-bottom:16px}.spendbar{display:flex;height:14px;border-radius:7px;overflow:hidden;gap:2px}.spendbar__seg{animation:tagbar-grow .7s var(--ease-enter) both;transform-origin:left;min-width:3px}.spendbar__seg--ok,.spendbar-legend__swatch.spendbar__seg--ok{background:var(--ok)}.spendbar__seg--bad,.spendbar-legend__swatch.spendbar__seg--bad{background:var(--bad)}.spendbar__seg--faint,.spendbar-legend__swatch.spendbar__seg--faint{background:var(--border-strong)}.spendbar-legend{display:flex;gap:20px;flex-wrap:wrap;margin-top:12px;font-size:12.5px;color:var(--text-dim)}.spendbar-legend__item strong{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.spendbar-legend__swatch{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}.cellbar{position:relative;min-width:140px}.cellbar__fill{position:absolute;left:6px;top:6px;bottom:6px;background:var(--warn);opacity:.16;border-radius:3px;animation:tagbar-grow .7s var(--ease-enter) both;transform-origin:left;pointer-events:none}.cellbar__val{position:relative}.drift-list{margin:0;padding:0;list-style:none;font-size:13px}.drift-list li{padding:9px 0;border-bottom:1px solid var(--border);color:var(--text-dim);line-height:1.55}.drift-list li:last-child{border-bottom:none}.empty-hint{color:var(--text-dim);font-size:13px}.filter-bar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:8px}.filter-bar input[type=search]{flex:1 1 240px;padding:8px 12px}.btn--small{padding:7px 12px;font-size:13px}.result-count{margin:0 0 12px}.th-sort{font:inherit;color:var(--text-faint);background:none;border:none;padding:0;cursor:pointer;transition:color var(--dur-1) ease}.th-sort:hover{color:var(--text)}.row--noncompliant td:first-child{box-shadow:inset 3px 0 0 var(--bad)}.empty-state{text-align:center;padding:56px 24px}.method{max-width:720px;margin:24px auto 0}.method-body h3{margin:32px 0 8px;font-size:17px;letter-spacing:-.01em}.method-body p{margin:0;color:var(--text-dim);font-size:14.5px;line-height:1.7}.method-body code{font-family:var(--mono);font-size:12px;background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--text)}.method-body em{color:var(--text);font-style:italic}.method a,.screen-heading a{color:var(--accent)}@media (prefers-reduced-motion: reduce){.stage,.hero-enter,.tagbar__fill,.spendbar__seg,.cellbar__fill{animation:none}.reveal{opacity:1;transform:none;transition:none}.btn,.dropzone,.how-step{transition-duration:1ms}.btn:hover,.dropzone:hover,.how-step:hover{transform:none}}
