/* Admin-only additions on top of the copied bot styles (style.css). No inline styles anywhere: the CSP forbids them. */
.login-card>button{width:100%;margin-top:18px}.login-error{color:var(--danger);min-height:1.5em}
.viewer [data-write]{display:none!important}
.stack{display:grid;gap:16px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.card h2{margin:0 0 14px;font-size:16px}.card h3{margin:18px 0 10px;font-size:14px}
.stat-number.small-num{font-size:24px}
.chart{width:100%;height:auto;display:block}.chart text{font-size:10px;fill:var(--muted);font-family:Arial,sans-serif}.chart .grid-line{stroke:var(--line)}
.chart .s-users{stroke:var(--green);fill:none;stroke-width:2}.chart .s-signins{stroke:var(--gold);fill:none;stroke-width:2}.chart .s-recipes{stroke:#4f7fb0;fill:none;stroke-width:2}.chart .s-errors{stroke:var(--danger);fill:none;stroke-width:2;stroke-dasharray:4 3}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--muted)}.legend i{display:inline-block;width:14px;height:3px;vertical-align:middle;margin-left:5px;border-radius:2px}
.legend .s-users{background:var(--green)}.legend .s-signins{background:var(--gold)}.legend .s-recipes{background:#4f7fb0}.legend .s-errors{background:var(--danger)}
.funnel-svg rect.bar{fill:var(--green)}.funnel-svg rect.track{fill:var(--mint)}.funnel-svg text{font-size:11px;fill:var(--ink);font-family:Tahoma,Arial,sans-serif}
.journey{list-style:none;margin:0;padding:0;border-right:2px solid var(--mint)}.journey li{padding:9px 14px 9px 0;position:relative;border-bottom:1px solid #edf0ea;font-size:12px}
.journey li::before{content:'';position:absolute;right:-6px;top:15px;width:10px;height:10px;border-radius:50%;background:var(--green)}.journey li.err::before{background:var(--danger)}
.journey .when{color:var(--muted);font-size:11px;margin-left:8px}.journey code{display:block;margin-top:5px;white-space:pre-wrap;word-break:break-word;font-size:11px;color:var(--muted);direction:ltr;text-align:left}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.photos figure{margin:0}.photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:9px;border:1px solid var(--line);background:var(--bg)}.photos figcaption{font-size:10px;color:var(--muted);padding-top:4px}
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0 12px;align-items:end}.filters label{margin-bottom:10px}
textarea.code{direction:ltr;text-align:left;font-family:monospace;font-size:12px;min-height:220px}textarea.policy{min-height:260px;line-height:1.9}
.setting{display:grid;grid-template-columns:1fr minmax(0,260px) auto;gap:12px;align-items:end;padding:12px 0;border-bottom:1px solid #edf0ea}.setting label{margin:0}.setting.text{grid-template-columns:1fr}
.featured-list{list-style:decimal;padding-right:20px;margin:0}.featured-list li{padding:6px 0}
@media(max-width:700px){.setting{grid-template-columns:1fr}}
.funnel-svg text.in{fill:#fff}
#content>.card+.card,#content>.grid+.card,#content>.card+.grid,#content>.table-wrap+.card,#content>.card+.table-wrap,#content>.banner+.table-wrap{margin-top:20px}
details>summary{cursor:pointer;color:var(--green);margin-top:12px}

/* Shown until the session check finishes (the Firebase SDK loads first), so the page is never blank. */
.boot{min-height:100vh;display:grid;place-items:center;color:var(--muted);font-size:15px;animation:boot 1.4s ease-in-out infinite}
@keyframes boot{50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){.boot{animation:none}}

/* البريد: preview mimics the sent e-mail. */
.mail-preview{background:#f5f4ef;border-radius:12px;padding:14px;font-family:Tahoma,Arial,sans-serif}.mail-brand{font-weight:700;margin-bottom:10px}.mail-card{background:#fff;border:1px solid #dfe5de;border-radius:12px;padding:16px}.mail-card h3{margin:0 0 10px}.mail-card p{line-height:1.9;margin:0 0 10px}.mail-btn{display:inline-block;background:#285948;color:#fff;border-radius:9px;padding:10px 16px;font-weight:700}.mail-foot{color:#737e77;font-size:11px;margin:10px 2px 0}
