body{margin:0;background:#f6f7f9}
.navbar-brand{font-weight:700;min-width:0;max-width:calc(100vw - 5.5rem)}
.card{box-shadow:0 .15rem .55rem rgba(0,0,0,.08)}
.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}
.lock-badge{font-size:.75rem}
.content-body img{max-width:100%;height:auto}
.table-actions{white-space:nowrap}
.required:after{content:' *';color:#dc3545}
.status-draft{color:#6c757d}
.status-active{color:#198754}
.status-closed{color:#fd7e14}
.status-archived{color:#6f42c1}

/* Frontend: nur Layout, Abstände und responsive Anordnung. Bootstrap-Farben bleiben unverändert. */
body.public-body{display:flex;flex-direction:column;min-height:100vh;overflow-x:hidden}
.public-nav{flex:0 0 auto}
.public-header{display:block;width:100%;height:auto;margin:0}
.public-main{width:100%;max-width:1140px;min-width:0;flex:1 0 auto}
.public-main>article,.public-main>.card{min-width:0}
.day-status-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1.5rem}
.contest-status-badge{flex:0 0 auto;white-space:nowrap}
.contest-day-link{width:100%;text-align:left}
.winner-wrap{display:flex;flex-wrap:wrap;gap:1rem}
.winner-col{flex:1 1 100%;min-width:0}
.slot-accordion-button{gap:.75rem}
.slot-title-wrap{display:flex;min-width:0;flex:1;align-items:center;gap:.55rem;line-height:1.2}
.slot-name{min-width:0;font-weight:600;overflow-wrap:anywhere}
.slot-time{flex:0 0 auto;white-space:nowrap}
.slot-status{display:inline-block;flex:0 0 5.25rem;width:5.25rem;text-align:center;white-space:nowrap}
.slot-class-filter{max-width:100%}
.table-responsive{max-width:100%}
.bootstrap-table .fixed-table-toolbar .search{width:100%;float:none;margin:.5rem 0}
.bootstrap-table .fixed-table-toolbar .search input{width:100%}
.bootstrap-table .fixed-table-toolbar .columns{float:none;margin:.5rem 0}
.public-testbar .form-control{min-width:0}

/* Backend: mobile zuerst, mit mehr Luft zwischen Inhaltsgruppen. */
body.admin-body{padding:0;background:#f6f7f9}
.admin-navbar{position:sticky;top:0;z-index:1030;width:100%}
.admin-navbar .navbar-collapse,.admin-navbar .navbar-nav{min-width:0}
.admin-navbar .navbar-collapse{gap:.75rem}
.admin-navbar .nav-link{white-space:nowrap}
.admin-main{width:100%;min-width:0}
.admin-main .card{margin-bottom:1rem}
.admin-main .page-header{align-items:flex-start;flex-direction:column}
.admin-main .page-header>*{max-width:100%}
.admin-main input,.admin-main select,.admin-main textarea{max-width:100%}

@media (max-width:575.98px){
  h1,.h1{font-size:1.55rem}
  h2,.h2{font-size:1.3rem}
  .public-nav .navbar-brand,.admin-navbar .navbar-brand{font-size:1rem}
  .public-nav .navbar-collapse,.admin-navbar .navbar-collapse{padding-top:.5rem;padding-bottom:.75rem}
  .public-nav .nav-link,.admin-navbar .nav-link{padding-top:.55rem;padding-bottom:.55rem}
  .public-nav .btn-group{margin-top:.5rem;margin-bottom:.25rem}
  .slot-title-wrap{gap:.4rem}
  .slot-name{font-size:.925rem}
  .slot-time{font-size:.75rem!important}
  .slot-status{flex-basis:4.85rem;width:4.85rem;font-size:.7rem}
  .slot-class-filter{width:100%!important}
  .accordion-button::after{margin-left:.35rem}
  .public-testbar .btn{flex:1 1 0}
  .public-testbar .col-6{min-width:0}
  .admin-navbar form{width:100%;margin:.5rem 0!important}
  .admin-navbar form .form-select,.admin-navbar .btn{width:100%}
  .admin-navbar .navbar-text{display:block;margin:.25rem 0!important;padding:.5rem 0}
  .admin-main .table-responsive{font-size:.875rem}
  .admin-main .btn-group{display:flex;flex-wrap:wrap;gap:.25rem}
}

@media (min-width:576px){
  .contest-day-link{width:auto}
  .winner-col{flex-basis:calc(50% - 1rem)}
  .admin-main .page-header{align-items:center;flex-direction:row}
}
@media (min-width:768px){.winner-col{flex-basis:calc(33.333% - 1rem)}}
@media (min-width:992px){.winner-col{flex-basis:calc(25% - 1rem)}}
@media (max-width:1399.98px){
  .admin-navbar .navbar-collapse{padding-top:.75rem;padding-bottom:.75rem}
  .admin-navbar form{width:100%;margin:.5rem 0!important}
  .admin-navbar form .form-select{width:100%}
  .admin-navbar .navbar-text{display:block;margin:.25rem 0!important}
}
@media (min-width:1400px){
  .admin-navbar{font-size:.875rem}
  .admin-navbar .container-fluid{gap:.5rem}
  .admin-navbar .form-select{max-width:240px}
}


/* Frontend fixed navigation and sticky highscore controls */
.public-nav{z-index:1040}
.public-nav-spacer{height:56px;flex:0 0 56px}
.highscore-sticky{
  position:sticky;
  top:56px;
  z-index:1025;
  width:100vw;
  margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);
  padding-left:0;
  padding-right:0;
  background:#f6f7f9;
}
.highscore-sticky-inner{
  width:100%;
  max-width:1140px;
  margin:0 auto;
  padding-left:.75rem;
  padding-right:.75rem;
}
.highscore-search{width:100%;max-width:420px}
.player-search-hit>td{background-color:var(--bs-warning-bg-subtle)!important}
.player-search-current>td{background-color:var(--bs-warning)!important}
.player-search-current{scroll-margin-top:9rem}

@media (max-width:991.98px){
  .public-nav-spacer{height:56px;flex-basis:56px}
  .highscore-sticky{top:56px}
}
@media (max-width:575.98px){
  .highscore-search{max-width:none}
}

/* Mobile navigation title: " - " in the stored title becomes a controlled line break. */
.nav-title-mobile{display:none}
@media (max-width:991.98px){
  .public-nav .container{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
  }
  .public-nav .navbar-brand{
    flex:1 1 0;
    min-width:0;
    max-width:calc(100% - 4rem);
    margin-right:.75rem;
    white-space:normal;
    line-height:1.15;
  }
  .public-nav .navbar-toggler{
    flex:0 0 auto;
    margin-left:auto;
  }
  .public-nav .navbar-collapse{
    flex-basis:100%;
    width:100%;
  }
  .nav-title-desktop{display:none}
  .nav-title-mobile{display:block}
}
