:root{--green-900: #17391f;--green-800: #1f4d2b;--green-700: #2a6a3b;--green-600: #35834a;--green-100: #e4f1e7;--green-50: #f2f8f3;--ink: #1d2a21;--muted: #5d6b61;--line: #d9e2db;--bg: #f6f8f6;--card: #ffffff;--ok: #1f7a3a;--ok-bg: #e0f3e5;--bad: #a52a2a;--bad-bg: #fbe7e5;--warn: #8a5a00;--warn-bg: #fdf1d6;--info-bg: #e6f0f7;--info: #1f4f73;--radius: 8px;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1{font-size:1.5rem;margin:.25rem 0;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}h2{font-size:1.05rem;margin:0 0 .5rem}h3{font-size:1rem;margin:1.2rem 0 .4rem}a{color:var(--green-700)}code{font-family:var(--mono);font-size:.86em}.muted{color:var(--muted);margin:.25rem 0}.center-note{text-align:center;color:var(--muted);margin-top:4rem}.topbar{background:var(--green-800);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 16px}.brand{color:#fff;text-decoration:none;font-size:1.1rem;display:inline-flex;align-items:center;gap:.5rem}.brand-mark{width:14px;height:14px;border-radius:50% 0;background:#9bd3a8;display:inline-block}.topbar-user{display:flex;align-items:center;gap:.75rem}.topbar-user{min-width:0}.who{display:flex;flex-direction:column;align-items:flex-end;font-size:.85rem;line-height:1.2;min-width:0;max-width:48vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.who small{opacity:.75}.topbar .btn-ghost{color:#fff;border-color:#fff6}.topbar .btn-ghost:hover{background:#ffffff1f}.container{max-width:1200px;margin:0 auto;padding:20px 16px 48px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.back{font-size:.85rem;text-decoration:none}.actions{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.btn{font:inherit;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem .9rem;border-radius:var(--radius);border:1px solid transparent;cursor:pointer;text-decoration:none;min-height:38px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--green-700);color:#fff}.btn-primary:hover:not(:disabled){background:var(--green-800)}.btn-ghost{background:transparent;color:var(--green-800);border-color:var(--line)}.btn-ghost:hover:not(:disabled){background:var(--green-50)}.btn-small{padding:.2rem .6rem;min-height:30px;font-size:.85rem;background:var(--green-100);color:var(--green-900)}.btn-small.btn-ghost{background:transparent}.link-btn{font:inherit;background:none;border:0;padding:0;color:var(--green-700);text-decoration:underline;cursor:pointer;text-align:left}:focus-visible{outline:2px solid var(--green-600);outline-offset:2px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.table-card{padding:0;overflow:hidden}input,select{font:inherit;padding:.5rem .65rem;border:1px solid #b9c7bd;border-radius:var(--radius);background:#fff;color:var(--ink);min-height:38px}label{display:block;font-weight:600;font-size:.88rem;margin:.9rem 0 .25rem}.form-card,.login-card{display:flex;flex-direction:column;max-width:560px}.form-card input,.form-card select,.login-card input{width:100%}.form-card .btn,.login-card .btn{margin-top:1rem;align-self:flex-start}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:16px}.login-card{width:100%;max-width:380px}.login-brand{color:var(--green-800);font-size:1.4rem}.login-brand .brand-mark{background:var(--green-600)}.alert{border-radius:var(--radius);padding:.6rem .8rem;margin:.8rem 0}.alert-bad{background:var(--bad-bg);color:var(--bad)}.alert-info{background:var(--info-bg);color:var(--info)}.pre-wrap{white-space:pre-wrap;word-break:break-word;font-family:var(--mono);font-size:.82rem;margin:.4rem 0 0}.badge{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.01em;white-space:nowrap}.badge.ok,.badge.st-done{background:var(--ok-bg);color:var(--ok)}.badge.bad,.badge.st-failed{background:var(--bad-bg);color:var(--bad)}.badge.warn,.badge.st-queued{background:var(--warn-bg);color:var(--warn)}.badge.st-running{background:var(--info-bg);color:var(--info)}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.55rem .8rem;border-bottom:1px solid var(--line);vertical-align:top}th{background:var(--green-50);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--green-900);white-space:nowrap}.num{text-align:right;white-space:nowrap}.sub{display:block;color:var(--muted);font-size:.78rem}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--green-50)}td.obs{max-width:460px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}td.file{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-size:.8rem}td.actions{display:table-cell;white-space:nowrap}td.actions>*{margin-right:.25rem}.empty{text-align:center;color:var(--muted);padding:1.5rem}.filters{display:flex;gap:.5rem;flex-wrap:wrap;padding:12px;border-bottom:1px solid var(--line)}.filters input[type=search]{min-width:180px}.pagination{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap;padding:10px 12px;font-size:.88rem;color:var(--muted)}.page-num{margin:0 .5rem}.gate{margin:0 0 .8rem}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:1rem 0}.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.kpi span{display:block;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.kpi strong{font-size:1.7rem;line-height:1.2}.kpi-ok strong{color:var(--ok)}.kpi-bad strong{color:var(--bad)}.bar{height:6px;background:var(--bad-bg);border-radius:3px;margin-top:6px;overflow:hidden}.bar>div{height:100%;background:var(--ok)}.top-errors{margin-bottom:1rem}.top-errors ol{margin:0;padding-left:1.2rem}.top-errors li{padding:.15rem 0}.top-errors .count{color:var(--muted);margin-left:.6rem;font-size:.85rem}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:12px}.tab{font:inherit;background:none;border:0;padding:.6rem 1rem;cursor:pointer;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px}.tab.active{color:var(--green-800);font-weight:600;border-bottom-color:var(--green-600)}.resumen{margin:0;font-family:var(--mono);font-size:.82rem;white-space:pre-wrap;overflow-x:auto}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1e1473;display:flex;justify-content:flex-end;z-index:50}.drawer{width:min(560px,100%);height:100%;background:var(--card);display:flex;flex-direction:column;box-shadow:-8px 0 24px #0000002e}.drawer-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:12px 16px;border-bottom:1px solid var(--line)}.drawer-head h2{margin:0;font-size:1.05rem}.drawer-body{padding:16px;overflow-y:auto}.facts{display:grid;grid-template-columns:9rem 1fr;gap:.35rem .8rem;margin:.8rem 0}.facts dt{color:var(--muted);font-size:.85rem}.facts dd{margin:0;word-break:break-word}.path{font-family:var(--mono);font-size:.78rem;color:var(--muted);word-break:break-all}.finding-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}.finding{border:1px solid var(--line);border-left-width:4px;border-radius:var(--radius);padding:8px 10px}.finding.f-bad{border-left-color:var(--bad)}.finding.f-warn{border-left-color:#d9a21c}.finding p{margin:.3rem 0}.topnav{display:flex;gap:.25rem;margin-left:1.25rem;margin-right:auto}.topnav a{color:#ffffffd1;text-decoration:none;padding:.3rem .7rem;border-radius:var(--radius);font-size:.92rem}.topnav a:hover{background:#ffffff1f}.topnav a[aria-current=page]{color:#fff;background:#ffffff2e;font-weight:600}.alert-ok{background:var(--ok-bg);color:var(--ok)}.btn-danger{background:var(--bad);color:#fff}.btn-danger:hover:not(:disabled){background:#861f1f}.btn-danger-ghost{background:transparent;color:var(--bad);border-color:#e3bdb9}.btn-danger-ghost:hover:not(:disabled){background:var(--bad-bg)}.inline-form{margin-bottom:1rem;max-width:640px}.inline-form label{margin-top:0}.inline-row{display:flex;gap:.5rem;flex-wrap:wrap}.inline-row input{flex:1 1 240px}.tag{margin-left:.5rem}.upload-card{display:flex;flex-direction:column;margin-bottom:1rem;max-width:760px}.upload-card input[type=file]{width:100%}.upload-card .actions{margin-top:1rem}label.check{display:block;font-weight:500;margin:.8rem 0 0}label.check input{min-height:0;margin-right:.5rem}label.check small{display:block;color:var(--muted);font-weight:400;margin-left:1.55rem}.progress{margin-top:1rem}.progress .bar{height:10px;background:var(--green-100);border-radius:5px;margin:0 0 .35rem}.progress .bar>div{background:var(--green-600);transition:width .2s}.progress span{font-size:.88rem;color:var(--muted)}.summary{margin:.4rem 0 0;padding-left:1.2rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1e1480;display:grid;place-items:center;padding:16px;z-index:60}.modal{background:var(--card);border-radius:var(--radius);padding:20px;width:min(480px,100%);box-shadow:0 12px 40px #00000047}.modal h2{font-size:1.1rem;word-break:break-word}.modal input{width:100%}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.2rem}@media (max-width: 640px){.topnav{margin-left:.5rem}.topnav a{padding:.3rem .45rem;font-size:.85rem}.grid-2{grid-template-columns:1fr}.who{display:block;text-align:left}.who small{display:none}.facts{grid-template-columns:1fr}}.run-progress{margin-bottom:1rem}.run-progress-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.run-progress-pct{font-size:1.7rem;font-weight:700;color:var(--green-700);font-variant-numeric:tabular-nums}.run-progress .progress{margin-top:.4rem}.run-progress-note{font-size:.82rem;margin:.8rem 0 0}.progress .bar>div.indeterminate{width:35%;animation:bar-slide 1.4s ease-in-out infinite}@keyframes bar-slide{0%{margin-left:-35%}to{margin-left:100%}}@media (prefers-reduced-motion: reduce){.progress .bar>div.indeterminate{width:100%;animation:none;opacity:.45}}.mini-bar{height:5px;min-width:96px;background:var(--green-100);border-radius:3px;margin:.4rem 0 .15rem;overflow:hidden}.mini-bar>div{height:100%;background:var(--green-600);transition:width .3s}.selection-bar{display:flex;justify-content:space-between;align-items:center;gap:.5rem .8rem;flex-wrap:wrap;padding:8px 12px;background:var(--green-50);border-bottom:1px solid var(--line);font-size:.9rem}.selection-bar.inline{border:1px solid var(--line);border-radius:var(--radius);margin:.5rem 0}.sel-actions{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}th.check,td.check{width:2.2rem;padding-right:0}input[type=checkbox]{min-height:0;width:1rem;height:1rem;accent-color:var(--green-700);cursor:pointer}tr.selected td{background:var(--green-50)}.badge.info{background:var(--info-bg);color:var(--info)}textarea{font:inherit;padding:.5rem .65rem;border:1px solid #b9c7bd;border-radius:var(--radius);background:#fff;color:var(--ink);resize:vertical}.obs-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.obs-form{display:flex;flex-direction:column;gap:.2rem}.obs-form label{margin-top:.4rem}.obs-form select,.obs-form textarea{width:100%}.finding.f-new{border-left-color:var(--green-600);margin-bottom:8px}.finding-head{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.finding-actions{display:flex;gap:.4rem;margin-top:.5rem}.finding .edited{display:block;color:var(--muted);font-size:.75rem;margin-top:.15rem}.modal-wide{width:min(560px,100%)}.explorer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1e148c;display:grid;place-items:center;padding:16px;z-index:70}.explorer{background:var(--card);border-radius:var(--radius);width:min(1100px,100%);height:min(86vh,760px);display:flex;flex-direction:column;box-shadow:0 12px 40px #0000004d;overflow:hidden}.explorer-head{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:10px 14px;border-bottom:1px solid var(--line)}.explorer-head h2{margin:0;font-size:1rem;word-break:break-all}.explorer-crumbs{padding:8px 14px;border-bottom:1px solid var(--line);font-size:.88rem;word-break:break-all}.explorer>.alert{margin:8px 14px 0}.explorer-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(320px,46%) 1fr}.explorer-list{overflow:auto;border-right:1px solid var(--line)}.explorer-list table{font-size:.88rem}.explorer-list td.fname{overflow-wrap:anywhere}.explorer-list td.nowrap,.explorer-list .btn-small{white-space:nowrap}.explorer-preview{display:flex;flex-direction:column;min-height:0;background:#fafbfa}.preview-title{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:8px 12px;border-bottom:1px solid var(--line);word-break:break-all}.preview-frame{flex:1;width:100%;border:0;background:#fff;min-height:240px}.preview-img-wrap{flex:1;min-height:0;overflow:auto;display:grid;place-items:center;padding:8px}.preview-img{max-width:100%;max-height:100%;object-fit:contain}.pad{padding:12px 14px}@media (max-width: 800px){.explorer{height:92vh}.explorer-body{grid-template-columns:1fr;grid-template-rows:45% 55%}.explorer-list{border-right:0;border-bottom:1px solid var(--line)}}
