*,*::before,*::after{box-sizing:border-box}
/* Ball Anmeldung Frontend */
.ball-portal{overflow:hidden;font-size:16px;max-width:860px;margin:24px auto;padding:20px;border:1px solid #e5e7eb;border-radius:14px;background:#fff;box-shadow:0 8px 28px rgba(0,0,0,.05);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}
.ball-portal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.ball-portal-header h2{margin:0;font-size:26px;line-height:1.2}
.ball-portal-sub{color:#6b7280;margin-top:6px;font-size:14px}
.ball-status-pill{padding:8px 12px;border-radius:999px;font-size:13px;font-weight:700;border:1px solid #e5e7eb;color:#111827;background:#f9fafb}
.ball-status-1{background:#ecfeff;border-color:#a5f3fc}
.ball-status-2{background:#eff6ff;border-color:#bfdbfe}
.ball-status-0{background:#fef2f2;border-color:#fecaca}

.ball-info-box{margin:12px 0 16px;padding:12px 14px;border:1px solid #e5e7eb;border-left:4px solid #60a5fa;border-radius:10px;background:#f8fafc}
.ball-info-box p{margin:0 0 8px}
.ball-info-box p:last-child{margin-bottom:0}

.ball-cards{display:grid;grid-template-columns:1fr;gap:16px;margin:16px 0 18px}
@media (min-width:820px){.ball-cards{grid-template-columns:1fr 1fr}}
.ball-card{border:1px solid #e5e7eb;border-radius:12px;padding:12px 14px;background:#fff}
.ball-card-title{font-weight:900;margin-bottom:12px;font-size:16px}
.ball-kv{display:grid;grid-template-columns:92px 1fr;gap:8px 12px;font-size:15px}
.ball-k{color:#6b7280}
.ball-v{color:#111827;min-width:0}

.ball-kpi-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media (min-width:820px){.ball-kpi-row{grid-template-columns:repeat(3,minmax(0,1fr));}}
.ball-kpi{border:1px solid #eef2f7;border-radius:12px;padding:10px 12px;background:#f9fafb}
.ball-kpi-num{font-size:20px;font-weight:900;line-height:1}
.ball-kpi-label{color:#6b7280;font-size:13px;margin-top:8px;font-weight:700}
.ball-note{margin-top:12px;color:#1f2937;font-size:14px;background:#fffbeb;border:1px solid #fde68a;border-radius:10px;padding:8px 10px}

.ball-form{border-top:1px solid #e5e7eb;padding-top:14px}
.ball-form-row{margin-bottom:12px}
.ball-checkbox{display:flex;align-items:center;gap:10px;font-weight:700}
.ball-checkbox input{width:18px;height:18px}
.ball-form-help{color:#6b7280;font-size:14px;margin-top:8px;font-weight:600}

.ball-form-grid{display:grid;grid-template-columns:1fr;gap:16px}
@media (min-width:640px){.ball-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}}
.ball-field label{display:block;font-weight:800;margin-bottom:6px}
.ball-field input{width:100%;max-width:240px;padding:10px 12px;border:1px solid #d1d5db;border-radius:10px;font-size:16px}
.ball-field input:disabled{background:#f3f4f6;color:#9ca3af}
.ball-field-hint{margin-top:8px;color:#6b7280;font-size:14px;font-weight:600}

.ball-actions{display:flex;align-items:center;gap:12px;margin-top:12px}
.ball-btn{appearance:none;border:0;border-radius:10px;padding:10px 14px;font-weight:800;cursor:pointer;background:#111827;color:#fff}
.ball-btn:disabled{background:#9ca3af;cursor:not-allowed}
.ball-closed{color:#b91c1c;font-weight:800;font-size:14px}

.ball-alert{margin:12px 0 14px;padding:10px 12px;border-radius:10px;border:1px solid #e5e7eb;font-weight:800}
.ball-alert-success{background:#ecfdf5;border-color:#a7f3d0}
.ball-alert-error{background:#fef2f2;border-color:#fecaca}

.ball-window{padding:6px 8px;border-radius:10px;border:1px solid #e5e7eb}
.ball-window-active{background:#ecfdf5;border-color:#a7f3d0;color:#065f46;font-weight:800}
.ball-window-inactive{background:#fef2f2;border-color:#fecaca;color:#991b1b;font-weight:800}


/* Login box */
.ball-login-box{max-width:860px;margin:16px auto 0;padding:16px 18px;border:1px solid #e5e7eb;border-radius:14px;background:#fff;box-shadow:0 8px 28px rgba(0,0,0,.05)}
.ball-login-title{font-size:18px;font-weight:900;margin-bottom:12px}
.ball-login-form form{margin:0}
.ball-login-form label{font-weight:800;display:block;margin:10px 0 6px}
.ball-login-form input[type="text"],
.ball-login-form input[type="password"]{width:100%;max-width:420px;padding:10px 12px;border:1px solid #d1d5db;border-radius:10px;font-size:16px}
.ball-login-form input[type="submit"]{margin-top:12px;appearance:none;border:0;border-radius:10px;padding:10px 14px;font-weight:900;cursor:pointer;background:#111827;color:#fff}
.ball-login-form .login-remember{margin-top:10px}
.ball-login-form .login-remember label{display:flex;align-items:center;gap:10px;font-weight:700}
.ball-login-form .login-remember input{width:18px;height:18px}
.ball-login-box-logged .ball-login-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ball-login-who{font-weight:900;font-size:16px}
.ball-logout-btn{display:inline-block;text-decoration:none;border-radius:10px;padding:10px 14px;font-weight:900;background:#ef4444;color:#fff}


/* QR Scanner */
.ball-scanner{max-width:860px;margin:24px auto;padding:18px;border:1px solid #e5e7eb;border-radius:14px;background:#fff;box-shadow:0 8px 28px rgba(0,0,0,.05);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}
.ball-scanner h2{margin:0 0 10px;font-size:24px}.ball-scan-video-wrap{background:#111;border-radius:14px;overflow:hidden;margin:12px 0}.ball-scan-video{width:100%;max-height:55vh;display:block}.ball-scan-result{border-radius:14px;padding:16px;margin:12px 0;font-weight:800;border:1px solid #e5e7eb}.ball-scan-ok{background:#dcfce7;border-color:#86efac;color:#14532d}.ball-scan-bad{background:#fee2e2;border-color:#fecaca;color:#7f1d1d}.ball-scan-wait{background:#eff6ff;border-color:#bfdbfe;color:#1e3a8a}.ball-scan-big{font-size:34px;line-height:1;font-weight:1000;margin-bottom:8px}.ball-scan-info{margin-top:8px;padding:10px;border-radius:10px;background:rgba(255,255,255,.65)}.ball-scan-manual{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.ball-scan-manual-input{flex:1;min-width:220px;padding:10px 12px;border:1px solid #d1d5db;border-radius:10px;font-size:16px}.ball-scan-manual-btn{border:0;border-radius:10px;padding:10px 14px;font-weight:900;background:#111827;color:#fff;cursor:pointer}.ball-ticket-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-top:16px}.ball-ticket-card{background:#fff;border:1px solid #ccd0d4;border-radius:12px;padding:14px}.ball-ticket-card h3{margin:0 0 8px}.ball-ticket-qr{width:180px;height:180px;border:1px solid #ddd;margin:10px 0;display:flex;align-items:center;justify-content:center;background:#fafafa}.ball-ticket-info{width:100%;min-height:70px}

.ball-download-qr-pdf{margin-right:6px;margin-bottom:6px;}


/* Einlass-Scanner: Vollbild/Dark-Mode */
body:has(.ball-scanner-fullscreen){
    background:#05070b!important;
}
.ball-scanner-fullscreen{
    position:fixed!important;
    inset:0!important;
    z-index:999999!important;
    max-width:none!important;
    width:100vw!important;
    height:100dvh!important;
    margin:0!important;
    padding:calc(env(safe-area-inset-top,0px) + 8px) 10px calc(env(safe-area-inset-bottom,0px) + 8px) 10px!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:#05070b!important;
    color:#e5e7eb!important;
    display:flex!important;
    flex-direction:column!important;
    gap:8px!important;
    overflow:hidden!important;
    box-sizing:border-box!important;
}
.ball-scanner-fullscreen .ball-scan-result{
    margin:0!important;
    padding:10px 12px!important;
    border-radius:12px!important;
    font-size:clamp(18px,4.8vw,28px)!important;
    line-height:1.15!important;
}
.ball-scanner-fullscreen .ball-scan-video-wrap{
    flex:1 1 auto!important;
    min-height:0!important;
    margin:0!important;
    border-radius:14px!important;
    background:#000!important;
    overflow:hidden!important;
}
.ball-scanner-fullscreen .ball-scan-video,
.ball-scanner-fullscreen #ball-html5-reader,
.ball-scanner-fullscreen #ball-html5-reader video{
    width:100%!important;
    height:100%!important;
    max-height:none!important;
    object-fit:cover!important;
    display:block!important;
}
.ball-scanner-fullscreen #ball-html5-reader{background:#000!important;}
.ball-scanner-fullscreen #ball-html5-reader__dashboard,
.ball-scanner-fullscreen #ball-html5-reader__scan_region img,
.ball-scanner-fullscreen #ball-html5-reader__header_message{
    display:none!important;
}
.ball-scanner-fullscreen .ball-scan-manual{
    display:grid!important;
    grid-template-columns:1fr auto!important;
    gap:8px!important;
    margin:0!important;
}
.ball-scanner-fullscreen .ball-scan-manual-input{
    min-width:0!important;
    width:100%!important;
    padding:12px 14px!important;
    border-radius:12px!important;
    background:#111827!important;
    border:1px solid #374151!important;
    color:#f9fafb!important;
    font-size:16px!important;
}
.ball-scanner-fullscreen .ball-scan-manual-input::placeholder{color:#9ca3af!important;}
.ball-scanner-fullscreen .ball-scan-manual-btn{
    padding:12px 14px!important;
    border-radius:12px!important;
    background:#2563eb!important;
    color:#fff!important;
    font-size:16px!important;
    white-space:nowrap!important;
}
.ball-scanner-fullscreen .ball-scan-ok{
    background:#052e16!important;
    border-color:#16a34a!important;
    color:#bbf7d0!important;
}
.ball-scanner-fullscreen .ball-scan-bad{
    background:#450a0a!important;
    border-color:#dc2626!important;
    color:#fecaca!important;
}
.ball-scanner-fullscreen .ball-scan-wait{
    background:#111827!important;
    border-color:#374151!important;
    color:#dbeafe!important;
}
.ball-scanner-fullscreen .ball-scan-big{
    font-size:clamp(28px,8vw,52px)!important;
}


/* Scanner vollständig vom WordPress-Theme trennen */
html.ball-scanner-active,
body.ball-scanner-active{
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    background:#05070b!important;
}

body.ball-scanner-active > *:not(.ball-scanner-fullscreen){
    display:none!important;
}

body.ball-scanner-active > .ball-scanner-fullscreen{
    display:flex!important;
}

@media (prefers-color-scheme: light){
    html.ball-scanner-active,
    body.ball-scanner-active,
    .ball-scanner-fullscreen{
        background:#05070b!important;
        color:#e5e7eb!important;
    }
}


/* Buchungsbestätigung */
.ball-booking-number{
    display:inline-block;
    margin-top:6px;
    padding:6px 10px;
    border-radius:6px;
    background:rgba(255,255,255,.22);
    font-size:1.08em;
    letter-spacing:.04em;
    user-select:all;
}
.ball-save-hint{
    margin-top:8px;
    font-size:.92em;
    opacity:.92;
}

/* Gruppen-Einlass */
.ball-group-box{margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.22)}
.ball-group-title{font-size:clamp(17px,4.2vw,23px);font-weight:900;margin-bottom:10px}
.ball-group-counter{display:grid;grid-template-columns:64px minmax(90px,140px) 64px;justify-content:center;gap:8px;align-items:center;margin:8px 0}
.ball-group-counter button,.ball-group-quick button,.ball-group-confirm,.ball-group-cancel{border:0;border-radius:12px;font-weight:900;cursor:pointer}
.ball-group-step{height:58px;font-size:34px;background:#334155;color:#fff}
.ball-group-qty{height:58px;min-width:0;width:100%;box-sizing:border-box;border:2px solid #60a5fa;border-radius:12px;background:#fff;color:#111827;text-align:center;font-size:32px;font-weight:1000}
.ball-group-quick{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin:10px 0}
.ball-group-quick button{min-height:46px;padding:8px 4px;background:#1e3a8a;color:#fff;font-size:17px}
.ball-group-confirm{width:100%;min-height:58px;padding:10px 14px;background:#16a34a;color:#fff;font-size:21px;margin-top:2px}
.ball-group-confirm:disabled{opacity:.55;cursor:wait}
.ball-group-cancel{width:100%;min-height:42px;padding:8px 12px;background:#374151;color:#fff;font-size:15px;margin-top:8px}
.ball-group-cancel-alone{margin-top:14px}
.ball-scan-stats{margin-top:6px}
@media (max-width:430px){
  .ball-group-quick{grid-template-columns:repeat(5,1fr)}
  .ball-group-quick button{font-size:15px;padding:7px 2px}
  .ball-group-counter{grid-template-columns:58px minmax(80px,120px) 58px}
}
