:root{--ra-bg: #0a0e13;--ra-bg-elev: #10151c;--ra-bg-elev-2: #10151c;--ra-surface: #10151c;--ra-surface-hover: rgba(245, 248, 250, .04);--ra-border: rgba(245, 248, 250, .1);--ra-border-strong: rgba(245, 248, 250, .18);--ra-text: #f5f8fa;--ra-text-muted: rgba(245, 248, 250, .62);--ra-text-faint: #7a8599;--ra-crimson: #d92b4b;--ra-crimson-hover: #ef4062;--ra-crimson-dim: rgba(217, 43, 75, .12);--ra-crimson-border: rgba(217, 43, 75, .4);--ra-green: #4fbf7e;--ra-amber: #f0a500;--ra-blue: #7a8599;--ra-status-progress: #d92b4b;--ra-status-success: #4fbf7e;--ra-status-warning: #f0a500;--ra-status-error: #ff7a93;--ra-status-info: #7a8599;--ra-font-display: "Space Grotesk", sans-serif;--ra-font-body: "Archivo", "Helvetica", sans-serif;--ra-font-label: "Barlow", sans-serif;--ra-font-mono: "IBM Plex Mono", ui-monospace, monospace;--ra-radius: 8px;--ra-radius-sm: 6px;--ra-radius-pill: 999px;--ra-shadow: 0 8px 24px rgba(0, 0, 0, .4);--ra-shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--ra-sidebar-w: 248px;--ra-maxw: 1240px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--ra-font-body);background:var(--ra-bg);color:var(--ra-text);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}.mono{font-family:var(--ra-font-mono)}.label{font-family:var(--ra-font-label);font-size:9.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--ra-text-faint);font-weight:600}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--ra-sidebar-w);flex-shrink:0;background:var(--ra-bg-elev);border-right:1px solid var(--ra-border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar-header{padding:22px 20px 18px;border-bottom:1px solid var(--ra-border)}.sidebar-nav{padding:14px 12px;display:flex;flex-direction:column;gap:2px;flex:1}.nav-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--ra-radius-sm);color:var(--ra-text-muted);font-weight:500;font-size:14px;cursor:pointer;transition:background .12s,color .12s}.nav-item:hover{background:var(--ra-surface);color:var(--ra-text)}.nav-item.active{background:var(--ra-crimson-dim);color:var(--ra-text);box-shadow:inset 2px 0 0 var(--ra-crimson)}.nav-item svg{width:18px;height:18px;flex-shrink:0}.sidebar-footer{padding:14px 18px;border-top:1px solid var(--ra-border);font-size:12px;color:var(--ra-text-faint)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:60px;border-bottom:1px solid var(--ra-border);display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:#0a0e13d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:20}.content{padding:28px;max-width:var(--ra-maxw);width:100%;margin:0 auto}.logo{display:flex;align-items:center;gap:10px}.logo-mark{width:34px;height:34px;border-radius:8px;background:linear-gradient(145deg,var(--ra-crimson),#a51e39);display:grid;place-items:center;font-family:var(--ra-font-mono);font-weight:700;font-size:14px;color:#fff;flex-shrink:0}.logo-text{line-height:1.15}.logo-text strong{display:block;font-size:15px;font-weight:700}.logo-text span{font-family:var(--ra-font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ra-text-faint)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-family:var(--ra-font-body);font-size:14px;font-weight:600;padding:9px 16px;border-radius:var(--ra-radius-sm);border:1px solid transparent;cursor:pointer;transition:background .13s,border-color .13s,color .13s,opacity .13s;white-space:nowrap;background:var(--ra-surface);color:var(--ra-text);border-color:var(--ra-border-strong)}.btn:hover{background:var(--ra-surface-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:16px;height:16px}.btn-primary{background:var(--ra-crimson);border-color:var(--ra-crimson);color:#fff}.btn-primary:hover{background:var(--ra-crimson-hover);border-color:var(--ra-crimson-hover)}.btn-ghost{background:transparent;border-color:transparent;color:var(--ra-text-muted)}.btn-ghost:hover{background:var(--ra-surface);color:var(--ra-text)}.btn-danger{background:transparent;border-color:var(--ra-crimson-border);color:var(--ra-crimson-hover)}.btn-danger:hover{background:var(--ra-crimson-dim)}.btn-sm{padding:6px 11px;font-size:13px}.btn-icon{padding:7px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field>label{font-family:var(--ra-font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ra-text-muted);font-weight:500}input,select,textarea{font-family:var(--ra-font-body);font-size:14px;color:var(--ra-text);background:var(--ra-bg-elev-2);border:1px solid var(--ra-border);border-radius:var(--ra-radius-sm);padding:9px 12px;width:100%;transition:border-color .13s,box-shadow .13s}input::placeholder,textarea::placeholder{color:var(--ra-text-faint)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ra-crimson);box-shadow:0 0 0 3px var(--ra-crimson-dim)}textarea{resize:vertical;min-height:84px;line-height:1.5}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' stroke='%23a4a8b3' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:30px}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:0 20px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 20px}.card{background:var(--ra-bg-elev);border:1px solid var(--ra-border);border-radius:var(--ra-radius);padding:20px}.card-hover{transition:border-color .14s,transform .14s,box-shadow .14s;cursor:pointer}.card-hover:hover{border-color:var(--ra-border-strong);transform:translateY(-2px);box-shadow:var(--ra-shadow-sm)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:26px}.stat{background:var(--ra-bg-elev);border:1px solid var(--ra-border);border-radius:var(--ra-radius);padding:16px 18px}.stat .stat-value{font-size:28px;font-weight:700;font-family:var(--ra-font-display);letter-spacing:-.02em;line-height:1}.stat .stat-label{margin-top:8px;font-size:12px;color:var(--ra-text-muted)}.stat.accent .stat-value{color:var(--ra-crimson)}.p90-hero{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 20px;padding:22px 24px;border-radius:var(--ra-radius);background:var(--ra-crimson-dim);border:1px solid var(--ra-crimson-border)}.p90-hero .p90-value{font-family:var(--ra-font-display);font-size:46px;font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--ra-crimson-hover)}.p90-hero .p90-caption{flex:1 1 260px;min-width:240px;font-size:13.5px;color:var(--ra-text-muted);line-height:1.5}.p90-hero .p90-tag{font-family:var(--ra-font-label);font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ra-crimson-hover)}.badge{display:inline-flex;align-items:center;gap:5px;font-family:var(--ra-font-label);font-size:9.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;padding:3px 8px;border-radius:999px;border:1px solid var(--ra-border-strong);color:var(--ra-text-muted)}.badge.draft{color:var(--ra-text-muted)}.badge.active{color:var(--ra-green);border-color:#33b98566;background:#33b9851a}.badge.archived{color:var(--ra-text-faint)}.badge.open{color:var(--ra-amber);border-color:#f0a50066;background:#f0a5001a}.badge.closed{color:var(--ra-green);border-color:#33b98566;background:#33b9851a}.badge.type{color:var(--ra-crimson-hover);border-color:var(--ra-crimson-border);background:var(--ra-crimson-dim)}.badge.dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table th{text-align:left;font-family:var(--ra-font-label);font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--ra-text-faint);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--ra-border)}.data-table td{padding:8px 12px;border-bottom:1px solid var(--ra-border);vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table input,.data-table select{padding:6px 8px;font-size:13px;background:var(--ra-bg-elev-2)}.data-table input.bare{background:transparent;border-color:transparent}.data-table input.bare:hover{border-color:var(--ra-border)}.data-table input.bare:focus{background:var(--ra-bg-elev-2)}.row-num{color:var(--ra-text-faint);font-family:var(--ra-font-mono);font-size:12px;width:30px;text-align:center}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--ra-border);margin-bottom:24px;overflow-x:auto}.tab{padding:11px 16px;font-size:14px;font-weight:500;color:var(--ra-text-muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;display:flex;align-items:center;gap:7px;transition:color .12s}.tab:hover{color:var(--ra-text)}.tab.active{color:var(--ra-text);border-bottom-color:var(--ra-crimson)}.tab .count{font-family:var(--ra-font-mono);font-size:11px;background:var(--ra-surface);border-radius:999px;padding:1px 7px;color:var(--ra-text-muted)}.matrix-wrap{overflow-x:auto;border:1px solid var(--ra-border);border-radius:var(--ra-radius);background:var(--ra-bg-elev)}table.disc-matrix{border-collapse:collapse;font-size:11px}table.disc-matrix th,table.disc-matrix td{border:1px solid var(--ra-border);text-align:center;min-width:30px;height:30px;padding:0}table.disc-matrix th.col-head{height:96px;vertical-align:bottom;padding-bottom:6px}table.disc-matrix th.col-head span{writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--ra-font-mono);font-size:10px;color:var(--ra-text-muted);white-space:nowrap}table.disc-matrix th.row-head{text-align:left;padding:0 10px;font-family:var(--ra-font-body);font-weight:500;font-size:12px;white-space:nowrap;color:var(--ra-text)}table.disc-matrix th.corner{font-family:var(--ra-font-mono);font-size:9px;color:var(--ra-text-faint);text-align:right;padding:0 8px}table.disc-matrix td.cell{cursor:pointer;transition:background .1s}table.disc-matrix td.cell:hover{background:var(--ra-surface-hover)}table.disc-matrix td.cell.on{background:var(--ra-crimson);color:#fff;font-weight:700}table.disc-matrix td.diag{background:var(--ra-bg-elev-2);background-image:linear-gradient(135deg,transparent 46%,var(--ra-border-strong) 46%,var(--ra-border-strong) 54%,transparent 54%);cursor:default}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#050608a8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:100;padding:24px}.modal{background:var(--ra-bg-elev);border:1px solid var(--ra-border-strong);border-radius:var(--ra-radius);box-shadow:var(--ra-shadow);width:100%;max-width:640px;max-height:86vh;display:flex;flex-direction:column}.modal-lg{max-width:820px}.modal-header{padding:18px 22px;border-bottom:1px solid var(--ra-border);display:flex;align-items:center;justify-content:space-between}.modal-body{padding:20px 22px;overflow-y:auto}.modal-footer{padding:16px 22px;border-top:1px solid var(--ra-border);display:flex;justify-content:flex-end;gap:10px}.autofill{position:relative}.autofill-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--ra-bg-elev-2);border:1px solid var(--ra-border-strong);border-radius:var(--ra-radius-sm);box-shadow:var(--ra-shadow);z-index:50;max-height:220px;overflow-y:auto}.autofill-item{padding:8px 12px;cursor:pointer;font-size:13px;display:flex;justify-content:space-between;gap:12px}.autofill-item:hover,.autofill-item.hi{background:var(--ra-surface-hover)}.autofill-item .sub{color:var(--ra-text-faint);font-size:12px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.page-head h1{font-size:24px}.page-head .sub{color:var(--ra-text-muted);font-size:14px;margin-top:4px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.toolbar .search{position:relative;flex:1;min-width:200px;max-width:380px}.toolbar .search input{padding-left:34px}.toolbar .search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--ra-text-faint)}.spacer{flex:1}.row{display:flex;align-items:center;gap:10px}.muted{color:var(--ra-text-muted)}.faint{color:var(--ra-text-faint)}.section-note{font-size:13px;color:var(--ra-text-muted);margin-bottom:14px}.empty-state{text-align:center;padding:60px 20px;color:var(--ra-text-muted)}.empty-state svg{width:44px;height:44px;color:var(--ra-text-faint);margin-bottom:14px}.divider{height:1px;background:var(--ra-border);margin:24px 0}.checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;-webkit-user-select:none;user-select:none}.checkbox input{width:16px;height:16px;accent-color:var(--ra-crimson)}.upgrade-callout{border:1px solid var(--ra-crimson-border);background:var(--ra-crimson-dim);border-radius:var(--ra-radius);padding:14px 16px;display:flex;gap:12px;align-items:center;font-size:13.5px}.upgrade-callout .btn{margin-left:auto}.toast-wrap{position:fixed;bottom:22px;right:22px;display:flex;flex-direction:column;gap:10px;z-index:200}.toast{background:var(--ra-bg-elev-2);border:1px solid var(--ra-border-strong);border-left:3px solid var(--ra-crimson);border-radius:var(--ra-radius-sm);padding:12px 16px;font-size:13.5px;box-shadow:var(--ra-shadow);min-width:240px;max-width:360px;animation:slide-in .18s ease}.toast.ok{border-left-color:var(--ra-green)}.toast.err{border-left-color:var(--ra-crimson)}@keyframes slide-in{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.save-indicator{font-size:12px;font-family:var(--ra-font-mono);color:var(--ra-text-faint);display:flex;align-items:center;gap:6px}.save-indicator.saved{color:var(--ra-green)}.mobile-header,.mobile-nav-drawer,.mobile-nav-backdrop{display:none}@media(max-width:860px){.sidebar{display:none}.mobile-header{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--ra-border);background:var(--ra-bg-elev);position:sticky;top:0;z-index:30}.mobile-nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#05060880;z-index:90}.mobile-nav-drawer{display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;width:min(300px,85vw);background:var(--ra-bg-elev);border-right:1px solid var(--ra-border);z-index:100;transform:translate(-100%);transition:transform .22s ease;overflow-y:auto}.mobile-nav-drawer.open{transform:translate(0)}.grid-2,.grid-3{grid-template-columns:1fr}.content{padding:18px}.topbar{padding:8px 14px;gap:8px;flex-wrap:wrap;height:auto;min-height:50px}}.nav-section{font-family:var(--ra-font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ra-text-faint);margin:18px 0 6px;padding:0 12px}.filedrop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:38px 20px;border:1.5px dashed var(--ra-border-strong);border-radius:var(--ra-radius);background:var(--ra-bg-elev);cursor:pointer;transition:border-color .15s,background .15s;text-align:center}.filedrop:hover,.filedrop:focus-visible{border-color:var(--ra-crimson-border);background:var(--ra-bg-elev-2)}.filedrop.dragging{border-color:var(--ra-crimson);background:var(--ra-crimson-dim)}.filedrop.busy{cursor:progress;opacity:.7}.filedrop svg{width:26px;height:26px;color:var(--ra-text-muted)}.filedrop-label{font-weight:600;font-size:15px}.filedrop-hint{font-size:13px}.notice{display:flex;gap:10px;align-items:flex-start;border-left:3px solid var(--ra-blue)}.notice.error{border-left-color:var(--ra-crimson);color:var(--ra-crimson-hover);font-size:14px;padding:10px 14px;background:var(--ra-crimson-dim);border-radius:var(--ra-radius-sm)}.upgrade-banner{display:flex;gap:14px;align-items:center;border:1px solid var(--ra-crimson-border);background:var(--ra-crimson-dim);border-radius:var(--ra-radius);padding:16px 18px}.upgrade-banner svg{width:22px;height:22px;color:var(--ra-crimson);flex-shrink:0}.progress-bar{height:6px;background:var(--ra-surface);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--ra-crimson);transition:width .15s linear}.field-error{font-size:12px;color:var(--ra-crimson-hover);margin-top:2px}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--ra-crimson)}.field>span{font-family:var(--ra-font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ra-text-muted);font-weight:500}.field small{font-size:11px}.link-button{background:none;border:none;padding:0;color:var(--ra-crimson-hover);font:inherit;cursor:pointer;text-align:left}.link-button:hover{text-decoration:underline}.cell-input{width:74px;text-align:right;padding:4px 6px;font-family:var(--ra-font-mono);font-size:13px}.data-table .num,td.num,th.num{text-align:right;font-family:var(--ra-font-mono)}.data-table.compact td,.data-table.compact th{padding:6px 8px;font-size:13px}.table-scroll{max-height:480px;overflow:auto;border:1px solid var(--ra-border);border-radius:var(--ra-radius)}.check-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}.check-card{border-left:3px solid var(--ra-border-strong)}.check-card.pass{border-left-color:var(--ra-green)}.check-card.warn{border-left-color:var(--ra-amber)}.check-card.fail{border-left-color:var(--ra-crimson)}.check-card.locked{opacity:.72;border-left-color:var(--ra-border)}.check-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.check-number{font-family:var(--ra-font-mono);font-size:11px;color:var(--ra-text-faint);background:var(--ra-surface);border-radius:4px;padding:2px 6px}.check-head .badge{margin-left:auto}.badge.status-pass{color:var(--ra-green);border-color:#33b98566;background:#33b9851a}.badge.status-warn{color:var(--ra-amber);border-color:#e0a63c66;background:#e0a63c1a}.badge.status-fail{color:var(--ra-crimson-hover);border-color:var(--ra-crimson-border);background:var(--ra-crimson-dim)}.badge.locked-badge{color:var(--ra-blue);border-color:#4d8bd666;background:#4d8bd61a}.check-metrics{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.check-count{font-family:var(--ra-font-mono);font-size:24px;font-weight:700}.check-detail{font-size:13px;margin:0 0 10px;line-height:1.5}.check-threshold{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ra-text-faint)}.check-threshold svg{width:13px;height:13px}.check-upgrade{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ra-blue);font-weight:600}.check-upgrade svg{width:15px;height:15px}.check-affected{margin-top:10px}.check-affected summary{cursor:pointer;font-size:12px;color:var(--ra-text-muted)}.chip-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;max-height:150px;overflow-y:auto}.chip{font-family:var(--ra-font-mono);font-size:11px;padding:2px 7px;border-radius:4px;background:var(--ra-surface);color:var(--ra-text-muted)}.score-dial{display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:var(--ra-radius);border:1px solid var(--ra-border-strong);background:var(--ra-bg-elev)}.score-dial svg{width:24px;height:24px}.score-dial .score-value{font-family:var(--ra-font-mono);font-size:26px;font-weight:700;line-height:1}.score-dial.status-pass{border-color:#33b98566;color:var(--ra-green)}.score-dial.status-warn{border-color:#e0a63c66;color:var(--ra-amber)}.score-dial.status-fail{border-color:var(--ra-crimson-border);color:var(--ra-crimson-hover)}.chart{width:100%;height:auto;overflow:visible}.chart-grid{stroke:var(--ra-border);stroke-width:1}.chart-bar{fill:var(--ra-crimson);opacity:.75}.chart-bar-pos{fill:var(--ra-crimson)}.chart-bar-neg{fill:var(--ra-blue)}.chart-line{stroke:var(--ra-green);stroke-width:2}.chart-axis-label,.chart-row-label,.chart-marker-label{font-family:var(--ra-font-mono);font-size:10px;fill:var(--ra-text-muted)}.chart-row-label{font-family:var(--ra-font-body);font-size:12px;fill:var(--ra-text)}.chart-marker-label{font-size:10px;font-weight:600}.admin-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-top:22px}.stat.big .stat-value{font-size:34px}.config-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
