body { font-family: "Segoe UI", Arial, sans-serif; background: #f7f8fa; margin: 0; color: #1d2939; }
.bar { background: var(--brand, #00911F); color: #fff; padding: 14px 16px; font-size: 18px; }
.bar .brandname { font-weight: 800; }
.bar .sub { opacity: .75; font-weight: 400; }
.bar .logo { height: 26px; vertical-align: middle; }
.nav { background: #fff; border-bottom: 1px solid #e5e7eb; padding: 0 12px; display: flex; flex-wrap: wrap; gap: 2px; }
.nav a { color: #344054; text-decoration: none; padding: 11px 12px; font-size: 14px; font-weight: 600; }
.nav a:hover { color: var(--brand, #00911F); }
.nav a.right { margin-left: auto; }
.wrap { max-width: 640px; margin: 0 auto; padding: 8px 16px 40px; }
.card { background: #fff; border: 1px solid #eaecf0; border-radius: 10px; margin-top: 16px; padding: 18px 18px 14px; }
.card h1 { font-size: 20px; margin: 0 0 6px; }
.card h2 { font-size: 16px; margin: 0 0 8px; }
.lead { color: #475467; font-size: 14px; margin: 0 0 14px; }
label { display: block; font-size: 13px; font-weight: 600; margin: 12px 0 4px; }
input[type=text], input[type=password], input[type=email] { width: 100%; box-sizing: border-box; padding: 9px 11px; border: 1px solid #d0d5dd; border-radius: 8px; font-size: 15px; }
input.code { font-size: 20px; letter-spacing: 3px; max-width: 220px; }
.btn { display: inline-block; padding: 9px 16px; border-radius: 8px; border: 0; background: var(--brand, #00911F); color: #fff; font-size: 14px; font-weight: 600; cursor: pointer; text-decoration: none; margin-top: 14px; }
.btn.ghost { background: #fff; color: #344054; border: 1px solid #d0d5dd; }
.btn.danger { background: #b42318; }
.btn + .btn { margin-left: 6px; }
.links { margin-top: 14px; font-size: 13px; }
.links a { color: var(--accent, #008A91); margin-right: 14px; }
.flash { padding: 10px 14px; border-radius: 8px; margin: 14px 0 0; font-size: 14px; }
.f-ok { background: #ecfdf3; color: #067647; }
.f-info { background: #eff8ff; color: #175cd3; }
.f-warn { background: #fffaeb; color: #b54708; }
.f-err { background: #fef3f2; color: #b42318; }
.muted { color: #667085; font-size: 12px; }
table.list { width: 100%; border-collapse: collapse; font-size: 14px; }
table.list td { padding: 9px 4px; border-bottom: 1px solid #f0f0f0; vertical-align: middle; }
table.list td.act { text-align: right; white-space: nowrap; }
.status { display: inline-block; font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
.s-good { background: #ecfdf3; color: #067647; }
.s-warn { background: #fffaeb; color: #b54708; }
.s-bad { background: #fef3f2; color: #b42318; }
.codes { font-family: Consolas, monospace; font-size: 17px; columns: 2; background: #f9fafb; border: 1px dashed #d0d5dd; border-radius: 8px; padding: 12px 16px; }
.qr { display: block; margin: 8px 0; width: 180px; height: 180px; image-rendering: pixelated; }
.key { font-family: Consolas, monospace; font-size: 15px; background: #f9fafb; padding: 6px 10px; border-radius: 6px; display: inline-block; }
.foot { text-align: center; color: #98a2b3; font-size: 12px; padding: 0 16px 24px; }
/* Password fields - same look and behaviour as the CyberLogix Auth add-on (Sonoran, LifeCrafting...). */
.pw-wrap { position: relative; }
.pw-wrap input { padding-right: 42px; }
.pw-toggle { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); cursor: pointer; user-select: none; padding: 4px 8px; color: #666; font-size: 18px; }
.strength { height: 6px; background: #eee; border-radius: 3px; margin-top: 6px; overflow: hidden; }
.strength > div { height: 100%; width: 0; background: #dc3545; transition: width .2s, background .2s; }
.strength.weak > div { width: 25%; background: #dc3545; }
.strength.fair > div { width: 50%; background: #ffc107; }
.strength.strong > div { width: 75%; background: #0dcaf0; }
.strength.excellent > div { width: 100%; background: #198754; }
.strength-label { font-size: 12px; color: #667085; margin-top: 4px; min-height: 15px; }
.pw-rules { font-size: 12px; color: #666; margin-top: 8px; }
.pw-rules ul { margin: 6px 0 0; padding-left: 20px; list-style: none; }
.pw-rules li { padding: 2px 0; transition: color .2s; }
.pw-rules li::before { content: "\25CB"; margin-right: 6px; color: #aaa; }
.pw-rules li.met { color: #198754; }
.pw-rules li.met::before { content: "\2713"; color: #198754; }
.pw-rules li.note::before { content: "\2139"; color: #98a2b3; }
.pw-match { font-size: 12px; margin-top: 4px; min-height: 15px; }
.pw-match.ok { color: #198754; }
.pw-match.bad { color: #b42318; }
/* passkeys */
.btn.wide { width: 100%; text-align: center; }
.or { display: flex; align-items: center; gap: 10px; color: #98a2b3; font-size: 13px; margin: 16px 0 10px; }
.or::before, .or::after { content: ""; flex: 1; border-top: 1px solid #e4e7ec; }
#pkMsg:empty { display: none; }
/* recent activity */
.act-list td.when { width: 150px; color: #475467; font-size: 13px; white-space: nowrap; vertical-align: top; }
.dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; vertical-align: middle; background: #98a2b3; }
.dot.t-good { background: #12b76a; } .dot.t-warn { background: #f79009; } .dot.t-bad { background: #f04438; } .dot.t-info { background: #2e90fa; }
@media (max-width: 560px) { .act-list td.when { width: auto; display: block; border-bottom: 0; padding-bottom: 0; } .act-list td { display: block; } }
