:root { --orange:#EF7B00; --bg:#161616; --panel:#202020; --line:#333; --text:#EDEDED; --muted:#9A9A9A;
  --crit:#E53935; --high:#FB8C00; --med:#FDD835; --low:#43A047; --info:#78909C; }
* { box-sizing: border-box; }
html, body { margin:0; min-height:100%; }
body { font-family:'Frutiger','Frutiger LT 45 Light','Segoe UI',Arial,sans-serif; color:var(--text);
  background: linear-gradient(180deg,#232323 0%,#161616 45%,#0e0e0e 100%) fixed; min-height:100vh; position:relative; }
body::before { content:""; position:fixed; inset:0 0 auto 0; height:5px; background:linear-gradient(90deg,#EF7B00,#8a4a00); z-index:5; }
.shield { position:fixed; right:-60px; bottom:-40px; width:min(60vw,720px); opacity:1; pointer-events:none; z-index:0; }
a { color:var(--orange); text-decoration:none; } a:hover { text-decoration:underline; }
.wrap { position:relative; z-index:1; max-width:1180px; margin:0 auto; padding:28px 24px 60px; }
header.top { display:flex; align-items:center; justify-content:space-between; padding:18px 24px 0; position:relative; z-index:2; max-width:1180px; margin:0 auto; }
header.top img { height:46px; }
header.top nav { display:flex; gap:22px; align-items:center; font-size:14px; }
header.top .appname { color:var(--muted); font-size:13px; letter-spacing:.18em; text-transform:uppercase; margin-left:14px; padding-left:14px; border-left:1px solid var(--line); }
h1 { font-size:26px; margin:10px 0 18px; font-weight:700; } h2 { font-size:18px; margin:26px 0 10px; color:var(--orange); }
.panel { background:rgba(32,32,32,.92); border:1px solid var(--line); border-radius:8px; padding:20px 22px; margin-bottom:18px; }
table { width:100%; border-collapse:collapse; font-size:14px; }
th { text-align:left; color:var(--muted); font-weight:400; font-size:12px; letter-spacing:.08em; text-transform:uppercase; padding:8px 10px; border-bottom:1px solid var(--line); }
td { padding:10px; border-bottom:1px solid #2a2a2a; vertical-align:top; }
tr:hover td { background:rgba(255,255,255,.02); }
.btn { display:inline-block; background:var(--orange); color:#111; font-weight:700; border:0; border-radius:5px; padding:10px 18px; font-size:14px; cursor:pointer; font-family:inherit; }
.btn:hover { background:#ff8f1a; text-decoration:none; }
.btn.ghost { background:transparent; color:var(--text); border:1px solid #555; } .btn.ghost:hover { border-color:var(--orange); color:var(--orange); }
.btn.danger { background:transparent; color:#ef6b6b; border:1px solid #6b2a2a; } .btn.small { padding:5px 10px; font-size:12px; }
label { display:block; font-size:13px; color:var(--muted); margin:14px 0 5px; }
input[type=text], input[type=email], input[type=password], input[type=time], input[type=number], select, textarea {
  width:100%; background:#141414; border:1px solid #3a3a3a; color:var(--text); border-radius:5px; padding:10px 12px; font-size:14px; font-family:inherit; }
input:focus, select:focus, textarea:focus { outline:none; border-color:var(--orange); box-shadow:0 0 0 2px rgba(239,123,0,.2); }
textarea { min-height:90px; resize:vertical; font-family:'DejaVu Sans Mono',monospace; font-size:13px; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:0 22px; } .grid3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:0 22px; }
@media (max-width:760px){ .grid2,.grid3{grid-template-columns:1fr;} }
.hint { font-size:12px; color:#777; margin-top:4px; }
.pill { display:inline-block; padding:1px 9px; border-radius:10px; font-size:11px; font-weight:700; text-transform:uppercase; color:#111; letter-spacing:.04em; }
.pill.critical{background:var(--crit);color:#fff;} .pill.high{background:var(--high);} .pill.medium{background:var(--med);} .pill.low{background:var(--low);color:#fff;} .pill.info{background:var(--info);color:#fff;}
.pill.done{background:#2e7d32;color:#fff;} .pill.running{background:var(--orange);} .pill.queued{background:#555;color:#fff;} .pill.failed{background:var(--crit);color:#fff;} .pill.cancelled{background:#555;color:#fff;}
.cards { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin:8px 0 6px; }
.card { background:#1b1b1b; border:1px solid var(--line); border-top:3px solid #555; border-radius:6px; padding:12px; text-align:center; }
.card b { display:block; font-size:28px; } .card span { font-size:12px; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; }
.grade { font-size:64px; font-weight:700; color:var(--orange); line-height:1; }
.choice { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:6px; }
.choice label.opt { margin:0; color:var(--text); background:#171717; border:1px solid #3a3a3a; border-radius:8px; padding:14px 16px; cursor:pointer; }
.choice label.opt:has(input:checked) { border-color:var(--orange); background:#221a10; }
.choice input { margin-right:8px; accent-color:var(--orange); }
.choice small { display:block; color:var(--muted); margin-top:5px; font-size:12px; line-height:1.4; }
.err { background:#3a1717; border:1px solid #7a2b2b; color:#ffb4b4; padding:10px 14px; border-radius:6px; margin-bottom:14px; font-size:14px; }
.finding { border-left:4px solid #555; background:#1b1b1b; padding:12px 16px; border-radius:0 6px 6px 0; margin:8px 0; }
.finding.critical{border-color:var(--crit);} .finding.high{border-color:var(--high);} .finding.medium{border-color:var(--med);} .finding.low{border-color:var(--low);} .finding.info{border-color:var(--info);}
.finding h3 { margin:0 0 4px; font-size:15px; } .meta { font-size:12px; color:var(--muted); }
.ev { font-family:'DejaVu Sans Mono',monospace; font-size:12px; background:#111; padding:6px 8px; border-radius:4px; margin:8px 0; word-break:break-all; color:#cfcfcf; }
.muted { color:var(--muted); } .row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
/* login */
.login-wrap { min-height:100vh; display:flex; flex-direction:column; position:relative; z-index:1; }
.login-logo { padding:34px 48px 0; } .login-logo img { height:78px; }
.login-main { flex:1; display:flex; align-items:center; justify-content:center; padding:20px; }
.login-card { width:100%; max-width:430px; background:rgba(20,20,20,.88); border:1px solid #333; border-top:3px solid var(--orange); border-radius:10px; padding:38px 36px 32px; backdrop-filter:blur(3px); }
.login-card h1 { font-size:46px; margin:0; letter-spacing:.02em; } .login-card h1 span { color:var(--orange); }
.login-card p.sub { color:var(--muted); margin:6px 0 26px; font-size:14px; line-height:1.5; }
.login-card .btn { width:100%; padding:13px; font-size:15px; text-align:center; }
.login-foot { text-align:center; color:#666; font-size:12px; padding:0 0 24px; letter-spacing:.2em; text-transform:uppercase; }
.login-foot b { color:var(--orange); font-weight:400; }
.sched-only { display:none; }
.progress { color:var(--orange); font-size:14px; }

.pbar{height:10px;border-radius:6px;background:rgba(255,255,255,.10);overflow:hidden;margin:12px 0 6px}
.pfill{height:100%;border-radius:6px;background:linear-gradient(90deg,#EF7B00,#ffb15c,#EF7B00);background-size:200% 100%;animation:pslide 1.6s linear infinite;transition:width .8s ease}
@keyframes pslide{from{background-position:200% 0}to{background-position:-200% 0}}
.pmeta{display:flex;justify-content:space-between;font-size:12px;color:var(--muted,#9aa3ad)}
.pmeta .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#EF7B00;margin-right:6px;animation:ppulse 1.2s ease-in-out infinite}
@keyframes ppulse{0%,100%{opacity:.25}50%{opacity:1}}
.ok { background:#12301c; border:1px solid #2b6b3e; color:#a8e6bb; padding:10px 14px; border-radius:6px; margin-bottom:14px; font-size:14px; }
