/* STW Sentry — brand-tokened UI. Zero external fonts (system fallback stack). */

:root{
	--p-deep:#2e1065; --p-mid:#7c3aed; --p-soft:#ede9fe; --accent:#9acd32;
	--ink:#1d1a2b; --muted:#6b6880; --line:#e7e3f0; --paper:#ffffff; --wash:#faf9fd; --bg:#f3f1f8;
	--c-crit:#b42318; --c-high:#c4500b; --c-med:#a16207; --c-low:#475569; --c-info:#64748b;
	--good:#3f8f3f; --fair:#a16207; --poor:#c4500b; --bad:#b42318;
	--display:"Space Grotesk",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
	--body:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
	--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
	--radius:12px; --shadow:0 1px 3px rgba(46,16,101,.08),0 8px 24px rgba(46,16,101,.05);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{font-family:var(--body);color:var(--ink);background:var(--bg);line-height:1.5;-webkit-font-smoothing:antialiased;}
h1,h2,h3,legend,.brand{font-family:var(--display);letter-spacing:-.01em;}
h1{font-size:22px;margin:0 0 2px;}
h2{font-size:16px;margin:0 0 10px;}
a{color:var(--p-mid);text-decoration:none;}
a:hover{text-decoration:underline;}
code{font-family:var(--mono);font-size:.86em;background:var(--p-soft);padding:1px 5px;border-radius:4px;color:var(--p-deep);}
.muted{color:var(--muted);}
.link{font-weight:600;}

/* ---- buttons ---- */
.btn{display:inline-block;font-family:var(--display);font-weight:600;font-size:14px;padding:9px 16px;border-radius:9px;border:1px solid transparent;cursor:pointer;line-height:1;text-align:center;}
.btn:hover{text-decoration:none;}
.btn-primary{background:var(--p-mid);color:#fff;}
.btn-primary:hover{background:var(--p-deep);}
.btn-primary:disabled{background:#c4b8e6;cursor:not-allowed;}
.btn-ghost{background:transparent;border-color:var(--line);color:var(--p-deep);}
.btn-ghost:hover{background:var(--wash);}

/* ---- top bar ---- */
.topbar{background:var(--p-deep);color:#fff;}
.topbar-inner{max-width:1080px;margin:0 auto;display:flex;align-items:center;gap:24px;padding:0 24px;height:58px;}
.topbar .brand{color:#fff;font-size:18px;font-weight:700;}
.topbar .brand b{color:var(--accent);font-weight:700;}
.nav{display:flex;gap:6px;margin-right:auto;}
.nav a{color:#cdbff2;font-weight:600;font-size:14px;padding:7px 12px;border-radius:8px;}
.nav a:hover{color:#fff;background:rgba(255,255,255,.08);text-decoration:none;}
.nav a.active{color:#fff;background:rgba(154,205,50,.16);}
.topbar-right{display:flex;align-items:center;gap:12px;}
.who{color:#a99ad6;font-size:13px;}
.topbar-right .btn-ghost{border-color:rgba(255,255,255,.22);color:#fff;}
.topbar-right .btn-ghost:hover{background:rgba(255,255,255,.08);}

.wrap{max-width:1080px;margin:0 auto;padding:28px 24px 64px;}

/* ---- page head ---- */
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:22px;}

/* ---- flash / inline messages ---- */
.flash{border-radius:10px;padding:11px 15px;font-size:14px;margin-bottom:18px;border-left:4px solid var(--muted);background:var(--wash);}
.flash-success{border-left-color:var(--good);background:#f1f8f1;}
.flash-error{border-left-color:var(--c-crit);background:#fbeeec;}
.inline-error{color:var(--c-crit);background:#fbeeec;border:1px solid #f1cfca;border-radius:8px;padding:9px 13px;font-size:14px;margin:8px 0;}

/* ---- cards ---- */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;}
.empty{background:var(--paper);border:1px dashed var(--line);border-radius:var(--radius);padding:36px;text-align:center;}

/* ---- dashboard ---- */
.grid-dash{display:grid;grid-template-columns:minmax(220px,260px) 1fr;gap:18px;margin-bottom:26px;}
.score-card{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;text-align:center;}
.ring-track{stroke:var(--p-soft);}
.ring-val{stroke:var(--p-mid);transition:stroke-dashoffset .6s ease;}
.score-good .ring-val{stroke:var(--good);} .score-fair .ring-val{stroke:var(--fair);}
.score-poor .ring-val{stroke:var(--poor);} .score-bad .ring-val{stroke:var(--bad);}
.score-card .score-num{position:absolute;top:54px;font-family:var(--display);font-weight:700;font-size:34px;line-height:1;}
.score-card .score-num span{font-size:13px;color:var(--muted);font-weight:500;}
.score-label{margin-top:14px;font-family:var(--display);font-weight:600;font-size:14px;}
.score-good .score-label{color:var(--good);} .score-fair .score-label{color:var(--fair);}
.score-poor .score-label{color:var(--poor);} .score-bad .score-label{color:var(--bad);}

.counts-card{display:flex;flex-direction:column;justify-content:center;}
.counts-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;}
.count{display:flex;flex-direction:column;align-items:center;gap:3px;padding:14px 6px;border-radius:10px;border:1px solid var(--line);background:var(--wash);}
.count:hover{text-decoration:none;border-color:var(--p-mid);}
.count-n{font-family:var(--display);font-weight:700;font-size:26px;line-height:1;}
.count-l{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.count-critical .count-n{color:var(--c-crit);} .count-high .count-n{color:var(--c-high);}
.count-medium .count-n{color:var(--c-med);} .count-low .count-n{color:var(--c-low);} .count-info .count-n{color:var(--c-info);}
.counts-meta{margin:16px 0 0;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;}

.ledger-head{display:flex;align-items:baseline;justify-content:space-between;margin:4px 0 12px;}

/* ---- the ledger (signature element) ---- */
.ledger{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--paper);}
.ledger-item{display:grid;grid-template-columns:96px 1fr;gap:14px;padding:14px 18px;border-top:1px solid var(--line);border-left:4px solid var(--c-info);}
.ledger-item:first-child{border-top:0;}
.ledger-item.sev-critical{border-left-color:var(--c-crit);}
.ledger-item.sev-high{border-left-color:var(--c-high);}
.ledger-item.sev-medium{border-left-color:var(--c-med);}
.ledger-item.sev-low{border-left-color:var(--c-low);}
.sev-badge{font-family:var(--display);font-weight:700;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#fff;padding:4px 0;height:fit-content;border-radius:5px;text-align:center;background:var(--c-info);}
.sev-critical .sev-badge{background:var(--c-crit);} .sev-high .sev-badge{background:var(--c-high);}
.sev-medium .sev-badge{background:var(--c-med);} .sev-low .sev-badge{background:var(--c-low);}
.ledger-title{font-weight:600;font-size:14.5px;}
.ledger-detail{font-size:13px;color:#4a4760;margin-top:4px;}
.ledger-path{font-family:var(--mono);font-size:12px;color:var(--p-deep);background:var(--p-soft);display:inline-block;padding:2px 7px;border-radius:5px;margin-top:6px;word-break:break-all;}
.ledger-cat{font-size:11.5px;color:var(--muted);margin-top:6px;text-transform:uppercase;letter-spacing:.04em;}
.ledger-cat code{text-transform:none;letter-spacing:0;background:transparent;color:var(--muted);padding:0;}

/* ---- filters ---- */
.filters{display:flex;flex-direction:column;gap:10px;margin-bottom:18px;}
.filter-group{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.filter-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);min-width:64px;}
.chip{font-size:13px;font-weight:600;padding:5px 11px;border-radius:999px;border:1px solid var(--line);background:var(--paper);color:var(--ink);}
.chip:hover{text-decoration:none;border-color:var(--p-mid);}
.chip.on{background:var(--p-deep);color:#fff;border-color:var(--p-deep);}
.chip-n{opacity:.7;font-variant-numeric:tabular-nums;}
.chip-critical.on{background:var(--c-crit);border-color:var(--c-crit);} .chip-high.on{background:var(--c-high);border-color:var(--c-high);}
.chip-medium.on{background:var(--c-med);border-color:var(--c-med);} .chip-low.on{background:var(--c-low);border-color:var(--c-low);}

/* ---- forms ---- */
.stack{display:flex;flex-direction:column;gap:14px;max-width:520px;}
label{font-size:13px;font-weight:600;color:#3a374d;display:flex;flex-direction:column;gap:6px;}
.hint{font-weight:400;color:var(--muted);}
input[type=text],input[type=password]{font-family:var(--body);font-size:14px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);width:100%;}
input[type=text]:focus,input[type=password]:focus{outline:none;border-color:var(--p-mid);box-shadow:0 0 0 3px rgba(124,58,237,.14);}
fieldset{border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin:0;}
legend{font-size:13px;font-weight:600;padding:0 6px;color:var(--p-deep);}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.radio{flex-direction:row;align-items:flex-start;gap:9px;font-weight:500;}
.radio input{margin-top:3px;}

/* ---- settings ---- */
.settings-card{margin-bottom:18px;max-width:760px;}
.check-group{margin-bottom:14px;}
.check-row{flex-direction:row;align-items:flex-start;gap:10px;font-weight:400;padding:7px 0;border-top:1px solid var(--line);}
.check-row:first-of-type{border-top:0;}
.check-row input{margin-top:3px;}
.check-meta{display:flex;flex-direction:column;gap:2px;}
.check-title{font-weight:600;font-size:13.5px;display:flex;align-items:center;gap:8px;}
.check-desc{font-size:12.5px;color:var(--muted);}
.sev-tag{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;padding:2px 6px;border-radius:4px;color:#fff;background:var(--c-info);}
.sev-tag.sev-critical{background:var(--c-crit);} .sev-tag.sev-high{background:var(--c-high);}
.sev-tag.sev-medium{background:var(--c-med);} .sev-tag.sev-low{background:var(--c-low);}

/* ---- auth + install ---- */
.sentry-auth{background:var(--p-deep);min-height:100vh;}
.sentry-auth .wrap{display:flex;justify-content:center;align-items:flex-start;padding-top:8vh;}
.auth-card,.install-card{background:var(--paper);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);padding:32px;width:100%;max-width:460px;}
.install-card{max-width:560px;margin:6vh auto;}
.brand-row{display:flex;align-items:baseline;gap:10px;margin-bottom:18px;}
.brand-row .brand{font-size:20px;font-weight:700;color:var(--p-deep);}
.brand-row .brand b{color:var(--p-mid);}
.brand-tag{font-size:12px;color:var(--muted);}
.req{margin:18px 0;padding:16px;background:var(--wash);border-radius:10px;}
.req h2{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.req-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;}
.req-list li{display:flex;align-items:center;gap:9px;font-size:13.5px;}
.req-list .dot{width:9px;height:9px;border-radius:50%;background:var(--muted);}
.req-list .ok .dot{background:var(--good);} .req-list .bad .dot{background:var(--c-crit);}
.req-list .bad{color:var(--c-crit);}
.mysql-fields{margin-top:10px;padding-left:26px;display:flex;flex-direction:column;gap:12px;}

/* ---- report (print) ---- */
.report{background:var(--paper);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow);max-width:900px;margin:0 auto;}
.report-actions{display:flex;justify-content:space-between;margin-bottom:20px;}
.report-head{border-bottom:2px solid var(--p-deep);padding-bottom:16px;margin-bottom:18px;}
.report-meta{border-collapse:collapse;margin:12px 0;font-size:13px;}
.report-meta th{text-align:left;color:var(--muted);font-weight:600;padding:2px 18px 2px 0;font-variant-numeric:tabular-nums;}
.report-note{font-size:12.5px;color:var(--muted);margin:10px 0 0;}
.report-table{width:100%;border-collapse:collapse;font-size:13px;}
.report-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px;}
.report-table td{border-bottom:1px solid var(--line);padding:10px;vertical-align:top;}
.report-table td:first-child{width:84px;}
.report-detail{font-size:12.5px;color:#4a4760;margin-top:4px;}
.report-path{font-family:var(--mono);font-size:11.5px;color:var(--p-deep);margin-top:5px;word-break:break-all;}
.report-foot{margin-top:22px;font-size:11.5px;color:var(--muted);text-align:center;}

@media print{
	body{background:#fff;} .topbar,.no-print,.report-actions{display:none!important;}
	.wrap{padding:0;max-width:100%;} .report{box-shadow:none;border-radius:0;padding:0;}
	.sev-badge{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
}

@media(max-width:760px){
	.grid-dash{grid-template-columns:1fr;} .counts-grid{grid-template-columns:repeat(3,1fr);}
	.page-head{flex-direction:column;} .topbar-inner{gap:12px;padding:0 14px;}
	.who{display:none;} .ledger-item{grid-template-columns:1fr;gap:7px;}
	.sev-badge{width:fit-content;padding:4px 10px;}
}

/* ---- assessment card (local + remote) ---- */
.scan-card{margin-bottom:26px;}
.scan-modes{display:grid;grid-template-columns:1fr auto 1fr;gap:24px;align-items:stretch;}
.scan-mode h2{font-size:15px;}
.scan-mode p{font-size:13px;margin:0 0 12px;}
.scan-mode form{display:flex;flex-direction:column;gap:10px;align-items:flex-start;}
.scan-divider{width:1px;background:var(--line);}
.sr-inline{width:100%;max-width:360px;}
.authz{align-items:center;background:var(--wash);border:1px solid var(--line);border-radius:8px;padding:8px 11px;}
.authz .check-title{font-weight:600;font-size:12.5px;}

/* ---- small buttons / action rows ---- */
.btn-sm{font-size:12.5px;padding:6px 11px;border-radius:7px;}
.action-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.inline-form{display:inline;}

/* ---- charts ---- */
.chart-card{margin-bottom:18px;}
.chart-card h2{margin-bottom:2px;}
.chart-card p{margin:0 0 12px;font-size:13px;}
.chart{width:100%;height:auto;display:block;}
.trend-mini{margin-bottom:26px;}
.trend-mini .chart{max-height:220px;}
.counts-actions{display:flex;gap:8px;margin-top:14px;}

/* ---- reports table ---- */
.search-bar{display:flex;gap:8px;margin-bottom:18px;max-width:560px;}
.search-bar input[type=search]{flex:1;font-family:var(--body);font-size:14px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;}
.search-bar input[type=search]:focus{outline:none;border-color:var(--p-mid);box-shadow:0 0 0 3px rgba(124,58,237,.14);}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);}
.data-table{width:100%;border-collapse:collapse;font-size:13.5px;}
.data-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:11px 14px;border-bottom:1px solid var(--line);background:var(--wash);}
.data-table td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top;}
.data-table tr:last-child td{border-bottom:0;}
.ta-right{text-align:right;}
.nowrap{white-space:nowrap;color:var(--muted);font-variant-numeric:tabular-nums;}
.rep-label{font-weight:600;}
.rep-target{font-size:12px;color:var(--muted);font-family:var(--mono);margin-top:2px;word-break:break-all;}
.score-pill{display:inline-block;min-width:34px;text-align:center;font-family:var(--display);font-weight:700;font-size:14px;padding:4px 8px;border-radius:7px;color:#fff;background:var(--c-info);}
.score-pill.score-good{background:var(--good);} .score-pill.score-fair{background:var(--fair);}
.score-pill.score-poor{background:var(--poor);} .score-pill.score-bad{background:var(--bad);}

/* ---- email popover (native <details>) ---- */
.email-pop{display:inline-block;position:relative;}
.email-pop>summary{list-style:none;cursor:pointer;display:inline-block;}
.email-pop>summary::-webkit-details-marker{display:none;}
.email-form{position:absolute;right:0;top:calc(100% + 6px);z-index:20;background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:12px;display:flex;gap:8px;align-items:center;width:max-content;max-width:min(92vw,420px);}
.email-form input[type=text]{width:240px;font-size:13px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;}
.email-form input[type=text]:focus{outline:none;border-color:var(--p-mid);box-shadow:0 0 0 3px rgba(124,58,237,.14);}

/* ---- select (settings) ---- */
select{font-family:var(--body);font-size:14px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);width:100%;}
select:focus{outline:none;border-color:var(--p-mid);box-shadow:0 0 0 3px rgba(124,58,237,.14);}
.smtp-fields{margin-top:10px;padding-left:26px;display:flex;flex-direction:column;gap:12px;}

@media(max-width:760px){
	.scan-modes{grid-template-columns:1fr;} .scan-divider{height:1px;width:100%;}
	.email-form{position:static;width:100%;flex-direction:column;align-items:stretch;}
	.email-form input[type=text]{width:100%;}
}
