:root{--bg:#07111f;--bg2:#0b172a;--card:#101d31;--card2:#0c182a;--line:#233550;--text:#f4f7fb;--muted:#a9b9cf;--blue:#0f62fe;--cyan:#33b1ff;--green:#42be65;--yellow:#f1c21b;--red:#fa4d56;--radius:18px;--shadow:0 22px 60px rgba(0,0,0,.28)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 85% 0,rgba(15,98,254,.15),transparent 28%),linear-gradient(180deg,#07111f,#081421 50%,#06101d);color:var(--text);font:15px/1.5 Inter,IBM Plex Sans,Segoe UI,Arial,sans-serif}.topbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:14px 28px;border-bottom:1px solid rgba(51,177,255,.16);background:rgba(5,13,27,.94);backdrop-filter:blur(16px)}.brand{display:flex;gap:12px;align-items:center;color:var(--text);text-decoration:none}.brand-mark{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:linear-gradient(145deg,#23344f,#09111e);border:1px solid #395173;font-weight:900;letter-spacing:-1px}.brand b{display:block;font-size:15px;letter-spacing:.4px}.brand b span{color:#2f80ff}.brand small{display:block;color:var(--muted);font-size:11px}.top-actions,.hero-pills,.source-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.pill,.hero-pills span{border:1px solid var(--line);background:rgba(255,255,255,.03);border-radius:999px;padding:7px 11px;color:#d8e7fb;font-size:12px}.page{max-width:1380px;margin:auto;padding:30px 28px 50px}.hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);gap:24px;align-items:stretch;margin:18px 0}.eyebrow,.kicker{color:var(--cyan);font-weight:800;text-transform:uppercase;letter-spacing:.14em;font-size:11px}.hero h1{font-size:clamp(34px,5vw,62px);line-height:1.02;margin:8px 0 16px;letter-spacing:-.04em}.lead{font-size:17px;color:#c6d5e8;max-width:880px}.formula-card,.card,.rule-result,.legal-grid article,.kpi{border:1px solid var(--line);background:linear-gradient(180deg,rgba(17,32,54,.98),rgba(10,22,39,.98));border-radius:var(--radius);box-shadow:var(--shadow)}.formula-card{padding:22px;display:flex;flex-direction:column;gap:11px;justify-content:center}.formula-title{font-weight:800;color:#cfe6ff}.formula-card code{display:block;padding:10px 12px;border-radius:10px;background:#07111f;border:1px solid #1d324f;color:#d9f2ff;font-size:14px}.formula-card small,.muted{color:var(--muted)}.notice{padding:12px 15px;border:1px solid rgba(241,194,27,.25);border-radius:14px;background:rgba(241,194,27,.07);color:#e8edf5}.tabs{display:flex;gap:8px;overflow:auto;padding:22px 0 12px;scrollbar-width:thin}.tab{border:1px solid var(--line);background:#0c192c;color:#c6d5e8;padding:10px 14px;border-radius:999px;cursor:pointer;white-space:nowrap}.tab.active{background:rgba(15,98,254,.18);border-color:#286fda;color:white;box-shadow:inset 0 0 0 1px rgba(51,177,255,.15)}.panel{display:none;padding:22px 0}.panel.active{display:block}.section-head{display:flex;justify-content:space-between;align-items:end;gap:18px;margin-bottom:16px}.section-head h2{font-size:26px;margin:4px 0}.section-head p{color:var(--muted);max-width:900px;margin:0}.grid{display:grid;gap:14px}.grid.two{grid-template-columns:1fr 1fr}.card{padding:18px}.card h3{margin-top:0}.card label,.optimize-grid label{display:block;font-weight:700;margin:0 0 13px;color:#dbe7f6}.card input,.card select,.optimize-grid input{width:100%;margin-top:6px;padding:11px 12px;border-radius:10px;border:1px solid #2a3e5c;background:#081421;color:white;outline:none}.card input:focus,.card select:focus,.optimize-grid input:focus{border-color:#2d7dff;box-shadow:0 0 0 3px rgba(15,98,254,.13)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;border:1px solid #31517d;background:#0d1a2d;color:#fff;padding:10px 14px;border-radius:10px;cursor:pointer;font-weight:800}.btn.primary{background:#0f62fe;border-color:#0f62fe}.btn.ghost{background:rgba(255,255,255,.025)}.btn:hover{transform:translateY(-1px);filter:brightness(1.08)}.kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.kpi{padding:18px;min-height:122px}.kpi span{display:block;color:var(--muted);font-size:12px}.kpi strong{display:block;font-size:24px;margin:8px 0}.kpi small{color:#7fa0c8}.explain{margin-top:14px;padding:14px;border-left:3px solid var(--blue);background:rgba(15,98,254,.07);border-radius:0 12px 12px 0;color:#cbd9e9}.criteria{grid-template-columns:repeat(4,1fr);margin-bottom:18px}.criteria label{border:1px solid var(--line);background:var(--card2);border-radius:14px;padding:14px;font-weight:800}.criteria label span{float:right;color:var(--cyan)}.criteria input{width:100%;accent-color:var(--blue)}.criteria output{display:block;text-align:right;color:#d9e8fb}.score-ring{display:grid;place-items:center;min-height:260px}.score-ring>div{width:210px;height:210px;border-radius:50%;display:grid;place-items:center;align-content:center;background:radial-gradient(circle,#0d1c31 54%,transparent 55%),conic-gradient(var(--blue) 0 50%,#1c2e48 50% 100%);border:1px solid #2e507f}.score-ring span,.score-ring small{color:var(--muted)}.score-ring strong{font-size:48px;line-height:1}.weight-bars{display:flex;flex-direction:column;gap:11px}.bar-row{display:grid;grid-template-columns:170px 1fr 45px;gap:10px;align-items:center}.bar{height:9px;border-radius:999px;background:#182b45;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,#0f62fe,#33b1ff)}.file-state{color:var(--muted);font-size:12px;margin:-3px 0 13px}.metric-row{display:flex;justify-content:space-between;gap:15px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.07)}.metric-row.total{font-size:18px}.metric-row b{color:#d9f2ff}.contrib-list{display:grid;gap:9px}.contrib-item{display:grid;grid-template-columns:190px 1fr 120px;align-items:center;gap:10px}.contrib-item .bar{height:12px}.rule-result{padding:22px;display:flex;flex-direction:column;justify-content:center}.rule-result strong{font-size:54px;line-height:1.1;margin:10px 0}.status{width:max-content;border-radius:999px;padding:6px 10px;font-weight:900;font-size:12px}.status.neutral{background:#1d304b}.status.ok{background:rgba(66,190,101,.18);color:#78e69a}.status.bad{background:rgba(250,77,86,.16);color:#ff8990}.progress{height:14px;background:#15283f;border-radius:999px;overflow:hidden;margin:10px 0}.progress i{height:100%;display:block;background:linear-gradient(90deg,#0f62fe,#42be65);transition:.35s}.warning{border-color:rgba(250,77,86,.25);background:linear-gradient(180deg,rgba(77,25,32,.45),rgba(25,16,28,.65))}.optimize-grid{grid-template-columns:repeat(2,1fr);margin-bottom:15px}.optimize-grid label{border:1px solid var(--line);background:var(--card2);border-radius:14px;padding:14px}.table-wrap{overflow:auto;margin-top:14px}table{width:100%;border-collapse:collapse;min-width:800px}th,td{text-align:left;padding:11px;border-bottom:1px solid rgba(255,255,255,.08)}th{color:#a9c8ee;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.legal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.legal-grid article{padding:17px}.legal-grid article p{color:var(--muted);margin-bottom:0}.source-actions{margin-top:16px}footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);margin-top:36px;padding-top:20px;color:#7f94af;font-size:12px}.toast{position:fixed;right:20px;bottom:20px;z-index:99;max-width:420px;padding:12px 15px;border-radius:12px;background:#12233b;border:1px solid #34557f;box-shadow:var(--shadow)}
@media(max-width:980px){.hero,.grid.two{grid-template-columns:1fr}.criteria{grid-template-columns:repeat(2,1fr)}.legal-grid{grid-template-columns:1fr 1fr}.topbar{position:relative}.pill{display:none}}
@media(max-width:620px){.page{padding:18px 14px 36px}.topbar{padding:12px 14px}.brand small{display:none}.top-actions .btn{padding:8px 10px}.hero{margin-top:8px}.hero h1{font-size:36px}.criteria,.optimize-grid,.legal-grid,.kpi-grid{grid-template-columns:1fr}.section-head{align-items:flex-start;flex-direction:column}.bar-row{grid-template-columns:120px 1fr 40px}.contrib-item{grid-template-columns:125px 1fr 85px}footer{flex-direction:column}}
@media print{.topbar,.tabs,.btn,.notice{display:none!important}body{background:white;color:#111}.page{max-width:none;padding:0}.panel{display:block!important;page-break-inside:avoid}.formula-card,.card,.rule-result,.legal-grid article,.kpi{box-shadow:none;background:white;color:#111;border-color:#bbb}.muted,.section-head p,.formula-card small{color:#444!important}}
/* ===== V2 · control fiscal, fuentes y trazabilidad ===== */
.kpi-grid.compact .kpi{min-height:94px;padding:14px}.mini-fields{gap:9px}.trend-card{margin-top:14px}.trend-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.trend-chart{display:flex;gap:12px;overflow:auto;padding:12px 0 3px}.trend-period{min-width:280px;border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:12px;background:#091629}.trend-period h4{margin:0 0 10px;color:#cfe6ff}.trend-bar-row{display:grid;grid-template-columns:78px 1fr 98px;gap:8px;align-items:center;margin:7px 0;font-size:11px}.trend-bar-row>i{height:8px;border-radius:999px;background:linear-gradient(90deg,#0f62fe,#33b1ff);min-width:2px}.trend-bar-row>b{text-align:right;font-size:10px}.empty-state{width:100%;padding:28px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:14px}.source-badge{display:inline-flex;padding:4px 7px;border-radius:999px;background:rgba(51,177,255,.10);border:1px solid rgba(51,177,255,.18);font-size:10px;color:#bfe4ff;white-space:nowrap}.source-matrix{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.source-card{padding:14px;border:1px solid var(--line);background:#0a1729;border-radius:14px}.source-card>div{display:flex;gap:8px;align-items:center}.source-card p{margin:8px 0 4px;color:#d9e8fb}.source-card small{display:block;color:var(--muted);min-height:54px}.source-card a{display:inline-block;margin-top:8px;color:#7fc7ff;text-decoration:none;font-size:12px}.source-priority{font-size:10px;border-radius:999px;padding:3px 6px;font-weight:900}.source-priority.p1{background:rgba(66,190,101,.15);color:#8beaa8}.source-priority.p2{background:rgba(241,194,27,.13);color:#ffe173}.source-priority.p3{background:rgba(162,163,167,.13);color:#c7cad0}.source-output{margin-top:12px;max-height:360px;overflow:auto;border-top:1px solid rgba(255,255,255,.07);padding-top:10px}.source-output article,.discovery-group{padding:9px 0;border-bottom:1px solid rgba(255,255,255,.06)}.source-output article b,.source-output article small,.source-output article span{display:block}.source-output article small,.source-output article span{color:var(--muted);font-size:11px}.discovery-group>a{display:block;color:#8ed0ff;text-decoration:none;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:5px 0}.mini-kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.mini-kpis span{padding:8px;border-radius:9px;background:#07111f;border:1px solid rgba(255,255,255,.06);font-size:11px}.mini-kpis b{display:block;color:#dff4ff;margin-top:3px}.agreement-list .metric-row span small{display:block;color:var(--muted)}.agreement-list .metric-row a{color:#8ed0ff;text-decoration:none}.admin-card{border-color:rgba(51,177,255,.26)}
@media(max-width:1100px){.source-matrix{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.source-matrix{grid-template-columns:1fr}.trend-head{align-items:flex-start;flex-direction:column}.trend-period{min-width:250px}.trend-bar-row{grid-template-columns:68px 1fr 82px}}
/* ===== V2.1 · trazabilidad por partida ===== */
.grid.three{grid-template-columns:repeat(3,1fr)}.compact-head{align-items:flex-start}.compact-head h3{margin:4px 0;font-size:21px}.line-tracker{margin-top:14px}.inner-table{box-shadow:none;background:rgba(4,12,24,.45)}.line-pick{width:100%;display:grid;grid-template-columns:100px minmax(0,1fr) 190px;gap:10px;align-items:center;text-align:left;padding:9px 10px;border:0;border-bottom:1px solid rgba(255,255,255,.06);background:transparent;color:var(--text);cursor:pointer}.line-pick:hover{background:rgba(15,98,254,.09)}.line-pick b{color:#8ed0ff}.line-pick span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.line-pick small{text-align:right;color:var(--muted)}code{word-break:break-all}
@media(max-width:980px){.grid.three{grid-template-columns:1fr 1fr}.line-pick{grid-template-columns:90px minmax(0,1fr)}}
@media(max-width:620px){.grid.three{grid-template-columns:1fr}.line-pick{grid-template-columns:1fr}.line-pick small{text-align:left}}
/* ===== V3.0.1 · estado de conectores + bootstrap DPA ===== */
.connector-panel{margin-bottom:14px}.connector-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.connector-head h3{margin-bottom:4px}.connector-head p{margin:0;max-width:850px}.connector-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:14px 0}.connector-kpis>span{padding:10px 12px;border:1px solid rgba(255,255,255,.07);border-radius:11px;background:#07111f}.connector-kpis small,.connector-kpis b{display:block}.connector-kpis small{color:var(--muted);font-size:10px}.connector-kpis b{margin-top:3px;color:#e6f3ff}.connector-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.connector-card{padding:12px;border:1px solid var(--line);border-radius:12px;background:#091629}.connector-card>div{display:flex;align-items:center;gap:8px}.connector-card small,.connector-card em{display:block;margin-top:7px;color:var(--muted);font-size:10px;font-style:normal}.connector-card em{color:#b9d8f8}.connector-dot{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:#60738d;box-shadow:0 0 0 3px rgba(96,115,141,.12)}.connector-dot.ok{background:var(--green);box-shadow:0 0 0 3px rgba(66,190,101,.13)}.connector-dot.bad{background:var(--red);box-shadow:0 0 0 3px rgba(250,77,86,.13)}.connector-dot.ready{background:var(--cyan);box-shadow:0 0 0 3px rgba(51,177,255,.13)}.connector-dot.ref{background:var(--yellow);box-shadow:0 0 0 3px rgba(241,194,27,.12)}.soft-rule{border:0;border-top:1px solid rgba(255,255,255,.08);margin:18px 0}.source-output a{display:block;color:#8ed0ff;text-decoration:none;font-size:11px;margin-top:7px}
@media(max-width:1100px){.connector-grid{grid-template-columns:1fr 1fr}.connector-kpis{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.connector-head{flex-direction:column}.connector-grid,.connector-kpis{grid-template-columns:1fr}}
