:root { --bs-body-font-size: .95rem; }
body { background: #f4f5f7; }
.card { box-shadow: 0 1px 2px rgba(0,0,0,.06); }
.table-sm td, .table-sm th { vertical-align: middle; }
.sortlink { color: inherit; text-decoration: none; white-space: nowrap; }
.sortlink:hover { text-decoration: underline; }
tr.klickbar { cursor: pointer; }
tr.anwesend > td { background: #e3f6e8; }
.suchfeld:focus, .scanfeld:focus { background: #fff8c5; }
.scanfeld { font-size: 1.6rem; letter-spacing: .1em; }
.zahl-gross { font-size: 2.6rem; font-weight: 700; line-height: 1; }
/* Rückmeldung nach dem Scan: Symbol + Text in einer farbigen Fläche, bleibt bis zum nächsten Scan stehen */
.rueckmeldung { display: flex; align-items: center; gap: .9rem; padding: .8rem 1rem; border-radius: .5rem;
    color: #fff; font-size: 1.25rem; font-weight: 600; line-height: 1.3; animation: rueckmeldung-ein .35s ease-out; }
.rueckmeldung .bi { font-size: 3rem; line-height: 1; flex-shrink: 0; }
.rueckmeldung.ok { background: #198754; }
.rueckmeldung.nein { background: #dc3545; }
.rueckmeldung.hinweis { background: #fd7e14; }
@keyframes rueckmeldung-ein { from { transform: scale(.94); opacity: .4; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .rueckmeldung { animation: none; } }
/* Stimmrecht beim Einlass: groß und eindeutig (Access: StimmrechtWahr / StimmrechtFalsch) */
.stimmrecht { display: inline-flex; align-items: center; gap: .5rem; padding: .45rem .9rem; border-radius: .5rem; font-size: 1.25rem; font-weight: 700; }
.stimmrecht.ja { background: #d1f2d9; color: #0f5132; }
.stimmrecht.nein { background: #dc3545; color: #fff; }
.mono { font-family: ui-monospace, Consolas, monospace; }
@media print {
    nav, .no-print { display: none !important; }
    body { background: #fff; }
    .card { box-shadow: none; border: 0; }
    main.container-fluid { padding: 0 !important; }
    .table-responsive { overflow: visible !important; max-height: none !important; }
    tr.anwesend > td { background: transparent; }
}
/* Kamera-Scanner (assets/kamera.js) */
.kamera-bild { position: relative; background: #000; border-radius: .5rem; overflow: hidden; aspect-ratio: 4 / 3; max-height: 60vh; }
.kamera-bild video { width: 100%; height: 100%; object-fit: cover; display: block; }
.kamera-rahmen { position: absolute; inset: 15% 20%; border: 3px solid rgba(255,255,255,.85); border-radius: .75rem; box-shadow: 0 0 0 100vmax rgba(0,0,0,.35); pointer-events: none; }
.kamera-box.erkannt .kamera-rahmen { border-color: #20c997; }
.kamera-status { position: absolute; left: 0; right: 0; bottom: 0; padding: .35rem .6rem; color: #fff; background: rgba(0,0,0,.55); text-align: center; }
.kamera-status.fehler { background: rgba(220,53,69,.85); }

/* Regenbogenflagge (wie Backstage) */
:root { --regenbogen: #e40303 0 16.67%, #ff8c00 0 33.33%, #ffed00 0 50%, #008026 0 66.67%, #004dff 0 83.33%, #750787 0; }
.regenbogen-flagge { display: inline-block; width: 1.5em; height: 1em; vertical-align: -.1em; border-radius: 2px;
    background: linear-gradient(to bottom, var(--regenbogen)); box-shadow: 0 0 0 1px rgba(255,255,255,.25); }
.navbar-regenbogen { border-bottom: 4px solid; border-image: linear-gradient(to right, var(--regenbogen)) 1; }
.regenbogen-streifen { height: 6px; background: linear-gradient(to right, var(--regenbogen)); }

/* Menüleiste: dunkles Blau statt Schwarz (Farbe hier ändern) */
.navbar-mv { background: #1f3f77; }
.navbar-mv .navbar-nav .nav-link { color: rgba(255,255,255,.85); }
.navbar-mv .navbar-nav .nav-link:hover, .navbar-mv .navbar-nav .nav-link.active, .navbar-mv .navbar-nav .nav-link.show { color: #fff; }
.navbar-mv .navbar-text { color: rgba(255,255,255,.85); }
