/* KongoPass: custom styles on top of Bootstrap 5.3 (loaded from the CDN in _Layout) */
body{min-height:100vh;display:flex;flex-direction:column}
main{flex:1 0 auto}
.brand{font-weight:800;letter-spacing:.2px}

/* event images */
.event-img{aspect-ratio:16/9;object-fit:cover;width:100%;background:var(--bs-tertiary-bg)}
.event-hero{aspect-ratio:21/9;object-fit:cover;width:100%;border-radius:var(--bs-border-radius-lg);background:var(--bs-tertiary-bg)}
.event-card{transition:transform .15s ease,box-shadow .15s ease;color:inherit}
.event-card:hover{transform:translateY(-3px);box-shadow:var(--bs-box-shadow)}

/* status text */
.muted{color:var(--bs-secondary-color)}.ok{color:var(--bs-success);font-weight:700}
.error{color:var(--bs-danger);font-weight:600}.soldout{color:var(--bs-danger)}
.link{background:none;border:0;padding:0;color:var(--bs-link-color);cursor:pointer;font:inherit}.link.error{color:var(--bs-danger)}
.inline{display:inline;margin:0}

/* panels + plain forms used by the admin, staff and team pages */
.detail,.form,.order{background:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius-lg);padding:1.25rem;margin-bottom:1rem}
.form{max-width:420px;display:grid;gap:.8rem}
.admin-form{display:grid;gap:.9rem;max-width:760px}
.admin-form label,.form label{display:grid;gap:.25rem;font-weight:600}
label.check{display:flex;gap:.5rem;align-items:center;font-weight:500}
.form input:not([type=checkbox]):not([type=radio]):not([type=hidden]),.form select,
.admin-form input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]),.admin-form select,.admin-form textarea{
  display:block;width:100%;padding:.375rem .75rem;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);
  background-color:var(--bs-body-bg);color:var(--bs-body-color);font:inherit}
.two{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
.typerow{display:grid;grid-template-columns:2fr 1fr 1fr 1.2fr;gap:.5rem;align-items:center}
@media(max-width:600px){.two,.typerow{grid-template-columns:1fr}}
.subnav{display:flex;gap:1rem;margin-bottom:1rem;padding-bottom:.6rem;border-bottom:1px solid var(--bs-border-color)}
.scroll{overflow-x:auto}

/* tickets */
/* Phones: picture (a short banner that scales with the screen height), details, then a large centred QR code.
   Wider screens: small picture | details | QR code in one row. */
.ticket{display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem;align-items:center;padding:.75rem;border:1px dashed var(--bs-border-color);border-radius:var(--bs-border-radius);margin:.5rem 0}
.ticket-img{display:block;width:100%;height:clamp(80px,15vh,130px);object-fit:cover;border-radius:8px;background:var(--bs-tertiary-bg)}
.ticket-info{min-width:0}
.code{font-family:var(--bs-font-monospace);font-weight:700;word-break:break-all}
.qr{background:#fff;padding:6px;border-radius:8px;justify-self:center;width:min(66vw,220px)}
.qr svg{display:block;width:100%;height:auto}
@media(min-width:576px){
  .ticket{grid-template-columns:96px minmax(0,1fr) 140px}
  .ticket-img{width:96px;height:96px}
  .qr{width:140px;justify-self:end}
}
/* Ticket check page (what the QR code opens): compact banner instead of a huge picture */
.ticket-banner{display:block;width:100%;height:clamp(90px,20vh,160px);object-fit:cover;background:var(--bs-tertiary-bg)}

/* door scanner */
video{width:100%;max-width:480px;border-radius:12px;background:#000}
.result{padding:1rem;border-radius:12px;margin-top:1rem;color:#fff}.result h2{margin:0 0 .3rem}.result p{margin:.1rem 0}
.res-ok{background:#2e7d32}.res-used{background:#ef6c00}.res-bad{background:#c62828}

@media print{nav.navbar,footer,.btn{display:none!important}body{background:#fff;color:#000}.ticket{break-inside:avoid;border:1px solid #000}}
