:root{--navy:#1e2761;--ice:#cadcfc;--tint:#eef2fb;--text:#22284a;--muted:#5b6584;--ok:#1d7a46;--warn:#b26b00;--bad:#b3261e;--line:#d5dbea}
*{box-sizing:border-box}body{margin:0;font:15px/1.45 -apple-system,Segoe UI,Calibri,sans-serif;color:var(--text);background:#fff}
header{background:#fff;color:var(--navy);display:flex;align-items:center;gap:32px;padding:0 24px;height:64px;border-bottom:3px solid var(--navy)}
.brand{color:var(--navy);font-weight:700;font-size:19px;white-space:nowrap;text-decoration:none;display:flex;align-items:center;gap:12px}.brand img{height:46px;width:auto;display:block}nav{flex:1}nav a{color:var(--muted);text-decoration:none;margin-right:18px;padding:6px 0}nav a.on{color:var(--navy);font-weight:600;border-bottom:2px solid var(--navy)}#me{font-size:14px;color:var(--muted);white-space:nowrap}#me a{margin-left:8px}.welcome{max-width:520px;margin:40px auto;text-align:center}.welcome img{height:90px}.welcome form{text-align:left}
main{max-width:1180px;margin:0 auto;padding:24px}h1{font-size:24px;margin:0 0 4px}h2{font-size:17px;margin:26px 0 8px}.muted{color:var(--muted)}
#banner .b{padding:10px 24px;font-size:14px}.b.warn{background:#fff3cd;color:#664d03}.b.info{background:var(--tint)}
table{width:100%;border-collapse:collapse}th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px;border-bottom:1px solid var(--line)}
td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}tr.link{cursor:pointer}tr.link:hover{background:var(--tint)}
.btn{background:var(--navy);color:#fff;border:0;border-radius:6px;padding:8px 14px;font:inherit;cursor:pointer;text-decoration:none;display:inline-block}.btn:hover{opacity:.9}.btn.ghost{background:#fff;color:var(--navy);border:1px solid var(--navy)}.btn.sm{padding:4px 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:default}
.chip{display:inline-block;border-radius:10px;padding:1px 9px;font-size:12px;font-weight:600;background:var(--tint);color:var(--muted)}
.chip.done,.chip.ready{background:#dff3e7;color:var(--ok)}.chip.running{background:#dbe7ff;color:var(--navy)}.chip.error,.chip.expired,.chip.missing,.chip.high{background:#fde4e2;color:var(--bad)}
.chip.expires_soon,.chip.soon,.chip.medium,.chip.needs_input{background:#fff0d4;color:var(--warn)}.chip.to_complete,.chip.skipped,.chip.low{background:var(--tint);color:var(--muted)}
.dots{display:flex;gap:4px}.dot{width:12px;height:12px;border-radius:50%;background:#e3e7f2}.dot.done{background:var(--ok)}.dot.running{background:var(--navy)}.dot.error{background:var(--bad)}.dot.skipped{background:#b9c0d6}
.card{border:1px solid var(--line);border-radius:10px;padding:16px;margin:12px 0}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.steps{display:grid;gap:8px}.step{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:10px 14px}
.step .n{width:30px;height:30px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}
.step.done .n{background:var(--ok)}.step.error .n{background:var(--bad)}.step.skipped .n{background:#b9c0d6}.step small{display:block;color:var(--muted)}.step .err{color:var(--bad)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:22px 0 12px}.tabs a{padding:8px 14px;text-decoration:none;color:var(--muted);cursor:pointer}.tabs a.on{color:var(--navy);border-bottom:3px solid var(--navy);font-weight:600}
input,select,textarea{font:inherit;padding:7px 9px;border:1px solid var(--line);border-radius:6px;width:100%}label{display:block;font-size:13px;color:var(--muted);margin:12px 0 4px}
.drop{border:2px dashed var(--ice);border-radius:12px;padding:30px;text-align:center;background:var(--tint)}.drop.over{border-color:var(--navy)}
ul.files{list-style:none;padding-left:18px;margin:2px 0}ul.files li{padding:1px 0}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.right{margin-left:auto}
pre{white-space:pre-wrap;background:var(--tint);padding:12px;border-radius:8px;font:13px/1.5 ui-monospace,Menlo,monospace}.risk{border-left:4px solid var(--line);padding:6px 12px;margin:8px 0}.risk.high{border-color:var(--bad)}.risk.medium{border-color:#e0a030}
.days{font-weight:700}.days.neg{color:var(--muted)}.days.hot{color:var(--bad)}.days.soon{color:var(--warn)}a{color:var(--navy)}
header{flex-wrap:wrap;height:auto;min-height:64px;row-gap:4px;padding-top:6px;padding-bottom:6px}nav{display:flex;flex-wrap:wrap;column-gap:18px}nav a{white-space:nowrap;margin-right:0}
@media (max-width:900px){header{gap:12px}.brand span{display:none}.brand img{height:38px}nav{order:3;flex-basis:100%}#me{margin-left:auto}main{padding:16px}table{display:block;overflow-x:auto}}

.chip.strong{background:#dff3e7;color:var(--ok)}.chip.possible{background:#fff0d4;color:var(--warn)}.chip.unlikely{background:var(--tint);color:var(--muted)}.chip.blocked{background:#fde4e2;color:var(--bad)}
#oppbadge:not(:empty){background:var(--ok);color:#fff;border-radius:10px;font-size:11px;padding:1px 7px;margin-left:6px;font-weight:700}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.filters select,.filters input{width:auto;min-width:130px}
.opp td{vertical-align:top}.opp .desc{font-weight:600}.opp .sub{color:var(--muted);font-size:13px}.opp-detail td{background:var(--tint)}
.reasons li{margin:3px 0}.reasons .p::marker{content:"+ ";color:var(--ok);font-weight:700}.reasons .m::marker{content:"- ";color:var(--warn);font-weight:700}
.blocker{border-left:4px solid var(--bad);padding:4px 10px;margin:6px 0;background:#fdf0ef}.warning{border-left:4px solid #e0a030;padding:4px 10px;margin:6px 0;background:#fff8e8}
.stars button{font-size:18px;line-height:1;padding:2px 8px}

#conbadge:not(:empty){background:var(--bad);color:#fff;border-radius:10px;font-size:11px;padding:1px 7px;margin-left:6px;font-weight:700}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.kpi{border:1px solid var(--line);border-radius:10px;padding:12px 14px}.kpi b{display:block;font-size:22px}.kpi span{color:var(--muted);font-size:13px}.kpi.bad b{color:var(--bad)}
@media (max-width:700px){.kpis{grid-template-columns:1fr 1fr}}
