:root{--bg:#f8fafc;--panel:#fff;--ink:#0f172a;--muted:#64748b;--line:#e2e8f0;--brand:#0f766e;--brand-dark:#115e59;--brand-soft:#ccfbf1;--warn:#f97316;--warn-soft:#ffedd5;--bad:#dc2626;--bad-soft:#fee2e2;--good:#16a34a;--good-soft:#dcfce7;--shadow:0 12px 30px rgba(15,23,42,.08);--radius:20px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}body{padding:env(safe-area-inset-top) 18px 32px}button,input,select,textarea{font:inherit}button,.link-button{border:0;border-radius:999px;padding:12px 16px;font-weight:700;cursor:pointer;transition:.18s ease;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none}button:active,.link-button:active{transform:scale(.98)}.primary{background:var(--brand);color:#fff}.primary:hover{background:var(--brand-dark)}.secondary,.ghost{background:#e2e8f0;color:var(--ink)}.secondary:hover,.ghost:hover{background:#cbd5e1}.ghost{background:rgba(255,255,255,.15);color:#fff;border:1px solid rgba(255,255,255,.25)}.hidden{display:none!important}.app-header{margin:16px auto 14px;max-width:1240px;background:linear-gradient(135deg,#0f172a,#134e4a);color:white;border-radius:28px;padding:26px;display:flex;align-items:center;justify-content:space-between;gap:24px;box-shadow:var(--shadow)}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:12px;color:#99f6e4;margin:0 0 8px;font-weight:800}h1{margin:0;font-size:clamp(26px,4vw,42px);line-height:1.05}.subhead{color:#d1fae5;max-width:820px;margin:12px 0 0;font-size:16px}.header-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.user-pill{display:inline-flex;align-items:center;border-radius:999px;padding:10px 14px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);color:#fff;font-weight:800}.tabs{max-width:1240px;margin:0 auto 18px;display:flex;gap:10px;overflow-x:auto;padding:4px 2px 10px}.tabs button{background:#e2e8f0;color:#0f172a;white-space:nowrap}.tabs button.active{background:var(--brand);color:white}main{max-width:1240px;margin:0 auto}.view{display:none}.view.active{display:block}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:18px;box-shadow:var(--shadow)}.hero-panel{padding:18px}.panel-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:16px}h2{margin:0;font-size:22px}p{color:var(--muted)}.panel p,.hint{margin:6px 0 0}.grid{display:grid;gap:16px}.grid.two{grid-template-columns:1fr 1.2fr}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.form-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.wide{grid-column:1/-1}label{display:block;font-weight:800;font-size:13px;color:#334155;margin-bottom:6px}input,select,textarea{width:100%;border:1px solid #cbd5e1;background:white;border-radius:14px;padding:12px;min-height:44px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(15,118,110,.12)}textarea{resize:vertical}.check{display:flex;align-items:center;gap:8px;margin:0;font-weight:700}.check input{width:auto;min-height:auto}.gate-card{grid-column:span 2;border:1px dashed #cbd5e1;border-radius:16px;padding:12px;display:grid;gap:8px;background:#f8fafc}.callout{border-radius:18px;padding:16px;background:var(--brand-soft);border:1px solid #99f6e4;display:grid;gap:6px}.callout span{color:#134e4a}.button-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:18px}.kpi{background:white;border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:var(--shadow)}.kpi small{display:block;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:11px}.kpi strong{display:block;margin-top:10px;font-size:clamp(22px,3vw,34px);line-height:1}.kpi span{display:block;color:var(--muted);margin-top:8px;font-size:13px}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:16px}table{width:100%;border-collapse:collapse;min-width:900px}th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:#f1f5f9;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:#475569}tfoot td{background:#ecfdf5;font-weight:900}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-weight:800;font-size:12px}.badge.good{background:var(--good-soft);color:#166534}.badge.bad{background:var(--bad-soft);color:#991b1b}.badge.warn{background:var(--warn-soft);color:#9a3412}.badge.neutral{background:#e2e8f0;color:#334155}.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#0f172a;color:white;padding:12px 18px;border-radius:999px;box-shadow:var(--shadow);z-index:20}.empty{color:var(--muted);padding:18px;text-align:center}.row-actions{display:flex;gap:8px}.row-actions button{padding:7px 10px;min-height:34px;font-size:12px}@media(max-width:960px){body{padding-left:12px;padding-right:12px}.app-header{flex-direction:column;align-items:stretch;padding:22px}.header-actions{justify-content:flex-start}.grid.two,.form-grid,.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gate-card{grid-column:1/-1}}@media(max-width:640px){h1{font-size:26px}.grid.two,.form-grid,.form-grid.compact,.kpi-grid{grid-template-columns:1fr}.panel-head{flex-direction:column}.button-row{flex-direction:column;align-items:stretch}.button-row button{width:100%}}

/* Custom database-backed login screen */
.login-screen{min-height:100vh;display:grid;place-items:center;padding:28px 14px;background:radial-gradient(circle at top left,#ccfbf1,#f8fafc 42%,#e2e8f0)}
.login-card{width:min(540px,100%);background:white;border:1px solid var(--line);border-radius:28px;padding:30px;box-shadow:var(--shadow)}
.login-card h1{color:var(--ink);margin-bottom:10px}.eyebrow.dark{color:var(--brand)}.subhead.dark{color:var(--muted);margin-bottom:22px}.login-form{display:grid;gap:16px;margin-top:14px}.wide-button{width:100%}.login-message{min-height:22px;color:var(--bad);font-weight:800}.permission-card{border:1px dashed #cbd5e1;border-radius:16px;padding:14px;background:#f8fafc;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media(max-width:760px){.permission-card{grid-template-columns:1fr}.login-card{padding:22px}}

/* v3.5 PWA install button, password-eye UI, restored settings page, and DFH logo */
.header-button-stack{display:grid;gap:8px;justify-items:stretch;min-width:150px}.install-button{width:100%}.brand-heading{display:flex;align-items:center;gap:18px;min-width:0}.brand-logo{width:72px;height:72px;object-fit:contain;flex:0 0 auto;filter:drop-shadow(0 10px 18px rgba(0,0,0,.18))}.header-actions{align-items:flex-start}.user-pill{min-height:44px;padding:0 16px}.password-wrap{position:relative;display:flex;align-items:center}.password-wrap input{padding-right:48px}.password-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);min-height:34px;width:34px;padding:0;border-radius:999px;background:transparent;color:#475569;border:0}.password-toggle:hover{background:#f1f5f9;color:var(--ink)}.password-toggle:active{transform:translateY(-50%) scale(.96)}.password-toggle svg{width:21px;height:21px;stroke-width:1.8}.settings-form{display:grid;gap:18px}.settings-form h3{margin:0;padding-top:16px;border-top:1px solid var(--line);font-size:18px;text-transform:uppercase;letter-spacing:.08em;color:#334155}.settings-form h3:first-child{padding-top:0;border-top:0}.note-field{background:#dbeafe!important;border-color:#bfdbfe!important;color:#1e3a8a!important}.settings-readonly input:not(.note-field),.settings-readonly select{background:#f8fafc;color:#64748b}.settings-readonly .primary,.settings-readonly #resetSettingsBtn{opacity:.55;cursor:not-allowed}.ghost.install-button{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.34)}.ghost.install-button:hover{background:rgba(255,255,255,.26)}
@media(max-width:960px){.header-button-stack{justify-items:start}.brand-logo{width:60px;height:60px}}@media(max-width:640px){.brand-heading{align-items:flex-start}.brand-logo{width:52px;height:52px}}

/* v3.8 password reset email flow */
.forgot-password-link{background:transparent!important;color:var(--brand)!important;border:0;padding:4px 8px;min-height:auto;justify-self:center;box-shadow:none}.forgot-password-link:hover{background:transparent!important;text-decoration:underline;color:var(--brand-dark)!important}.forgot-password-link:active{transform:none}.login-card h2{margin:0;color:var(--ink);font-size:22px}.login-card .hint{font-size:13px;line-height:1.45}
