/* ============================================================
   FIRMAFUNTEAM KLEUREN
   Pas alleen de kleurcodes hieronder aan om de hele site te wijzigen.
   Paars/zwart thema | rood voor statusmeldingen
   ============================================================ */
:root{
  --achtergrond: #020502;
  --kaart: #071007;
  --kaart-donker: #040904;
  --rand: #245f20;
  --rand-invoer: #368f30;
  --hoofdkleur: #39ff14;
  --hoofdkleur-tekst: #020700;
  --tekst: #f5f7fb;
  --tekst-zacht: #b8d8b2;
  --live: #d82b3a;
  --succes: #173f12;
  --gevaar: #7a2630;
  --gedraaid: #7dff68;
}

*{box-sizing:border-box}
body{margin:0;background:var(--achtergrond);color:var(--tekst);font:16px system-ui,-apple-system,Segoe UI,sans-serif}
a{color:var(--hoofdkleur)}
.wrap{max-width:680px;margin:auto;padding:24px}.narrow{max-width:440px}
.hero{text-align:center;padding:24px 0}.brand{font-size:28px;font-weight:900;color:var(--hoofdkleur)}
.live{display:inline-block;margin:14px;background:var(--live);padding:7px 13px;border-radius:99px;font-weight:800}
.djphoto{width:180px;height:180px;display:block;margin:5px auto 14px;object-fit:cover;border-radius:50%;border:5px solid var(--rand)}
.placeholder{display:grid;place-items:center;background:var(--kaart);font-size:70px}.hero h1{margin:4px;font-size:34px}.hero p{color:var(--tekst-zacht)}
.card{background:var(--kaart);border:1px solid var(--rand);border-radius:20px;padding:22px;box-shadow:0 15px 40px #0005}
label{display:block;font-weight:700;margin:14px 0}
input,textarea{width:100%;margin-top:7px;padding:14px;border-radius:12px;border:1px solid var(--rand-invoer);background:var(--kaart-donker);color:var(--tekst);font:inherit}
input:focus,textarea:focus{outline:2px solid var(--hoofdkleur);outline-offset:1px}
textarea{min-height:90px;resize:vertical}
button{width:100%;padding:15px;border:0;border-radius:12px;background:var(--hoofdkleur);color:var(--hoofdkleur-tekst);font-size:17px;font-weight:900;cursor:pointer}
.success,.flash,.closed{padding:15px;margin:12px 0;border-radius:12px;background:var(--succes)}.closed{background:#203b20}.flash{max-width:680px;margin:12px auto}
.adminlink{display:block;text-align:center;margin:22px}.admin{max-width:1100px;margin:auto;padding:22px}
header{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}header b{font-size:24px;color:var(--hoofdkleur)}header span{display:block;color:var(--tekst-zacht)}
nav{display:flex;gap:15px;flex-wrap:wrap}.grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.toggle input{width:auto;margin-right:8px}.title{margin-top:30px}
.requests{display:grid;gap:12px}.request{background:var(--kaart);border:1px solid var(--rand);border-left:5px solid var(--hoofdkleur);border-radius:15px;padding:17px;display:flex;justify-content:space-between;align-items:center;gap:20px}
.request.gedraaid{opacity:.55;border-left-color:var(--gedraaid)}.request h3{margin:7px 0}.request p{margin:0;color:#c2d8bf}.badge{text-transform:uppercase;font-size:11px;font-weight:900;color:var(--hoofdkleur)}
.actions{display:flex;gap:8px}.actions form{margin:0}.small{width:auto;padding:10px 12px;font-size:13px}.danger{background:var(--gevaar);color:white}.empty{text-align:center;color:var(--tekst-zacht);padding:40px}
.obs{background:transparent;overflow:hidden}.obsbar{position:absolute;left:25px;bottom:25px;min-width:500px;background:#111d;border:1px solid #ffffff26;border-left:5px solid var(--hoofdkleur);border-radius:18px;padding:14px 22px;display:flex;gap:16px;align-items:center}.obsbar img{width:80px;height:80px;border-radius:50%;object-fit:cover}.obsbar b,.obsbar strong,.obsbar span{display:block}.obsbar b{color:var(--hoofdkleur);font-size:13px}.obsbar strong{font-size:25px}.obsbar span{color:#d2d7e0;margin-top:3px}
.account-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.account-actions form{display:flex;gap:8px;align-items:center;margin:0}.inline-input{width:190px;margin:0;padding:10px}.account-actions .small{white-space:nowrap}
@media(max-width:650px){.grid{grid-template-columns:1fr}header,.request{align-items:stretch;flex-direction:column}.actions{flex-wrap:wrap}.actions form{flex:1}.small{width:100%}.brand{font-size:24px}.account-actions,.account-actions form{width:100%;flex-direction:column}.inline-input,.account-actions .small{width:100%}}


.offline{display:inline-block;background:#3a1115;color:#ff7b86;border:1px solid #8b2730;padding:7px 12px;border-radius:999px;font-weight:800}.obs-offline{font-size:clamp(28px,5vw,72px);font-weight:900;text-align:center;padding:24px;color:#ff7b86;background:#120507;border:2px solid #8b2730;border-radius:18px;margin:20px}

/* DJ-foto upload voorbeeld */
.photo-preview-wrap{display:flex;align-items:center;gap:14px;margin:10px 0 18px;min-height:72px}
.photo-preview{width:72px;height:72px;object-fit:cover;border-radius:50%;border:3px solid var(--hoofdkleur);background:var(--kaart-donker)}
.photo-name{color:var(--tekst-zacht);font-size:14px;word-break:break-all}


/* Duidelijke persoonlijke DJ live-status */
.status-card{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:18px;border-color:var(--hoofdkleur)}
.status-label{color:var(--tekst-zacht);font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.status-title{margin:6px 0}.status-help{margin:0;color:var(--tekst-zacht)}
.status-form{min-width:210px}.status-button{font-size:18px}.offline-button{background:var(--gevaar);color:#fff}
@media(max-width:650px){.status-card{align-items:stretch;flex-direction:column}.status-form{min-width:0;width:100%}}

/* DJ-account foto's */
.dj-account-info{display:flex;align-items:center;gap:14px;min-width:240px}
.account-photo{width:64px;height:64px;flex:0 0 64px;border-radius:50%;object-fit:cover;border:3px solid var(--hoofdkleur);background:var(--kaart-donker)}
.account-photo-placeholder{display:grid;place-items:center;font-size:28px}
.inline-file{width:210px;margin:0;padding:9px;font-size:12px}
@media(max-width:650px){.dj-account-info{width:100%}.inline-file{width:100%}}

/* Publieke verzoekpagina: transparante pagina-achtergrond */
html:has(body.public-index), body.public-index{background:transparent !important;}

/* DJ verzoek verwijderen */
.request{gap:14px}
.dj-delete-form{margin-left:auto;align-self:center;flex:0 0 auto}
.delete-request-button{background:#111;color:#39ff14;border:1px solid #39ff14;border-radius:8px;padding:9px 12px;font-weight:700;cursor:pointer}
.delete-request-button:hover{background:#39ff14;color:#000}
.delete-request-button:disabled{opacity:.55;cursor:wait}


/* Nu live / Hierna websiteblok */
.next-dj-card{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:14px}.next-dj-form{display:flex;gap:10px;align-items:center;min-width:330px}.next-dj-form select{flex:1;margin:0;padding:12px;border-radius:12px;border:1px solid var(--rand-invoer);background:var(--kaart-donker);color:var(--tekst);font:inherit}.next-dj-form .small{width:auto}.status-help code{color:var(--hoofdkleur)}
.dj-status-page{margin:0;background:transparent!important;overflow:hidden}.dj-status-widget{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:8px}.dj-status-person{min-width:0;text-align:center;background:rgba(16,8,23,.94);border:1px solid var(--rand);border-radius:18px;padding:16px;color:var(--tekst)}.dj-status-person img,.dj-status-placeholder{width:110px;height:110px;margin:8px auto 10px;border-radius:50%;border:4px solid var(--hoofdkleur);object-fit:cover}.dj-status-placeholder{display:grid;place-items:center;background:var(--kaart-donker);font-size:42px}.dj-status-kicker{display:block;color:var(--hoofdkleur);font-size:12px;font-weight:900;letter-spacing:.1em}.dj-status-person strong{display:block;font-size:20px;overflow-wrap:anywhere}@media(max-width:520px){.next-dj-card{align-items:stretch;flex-direction:column}.next-dj-form{min-width:0;width:100%;flex-direction:column}.next-dj-form select,.next-dj-form .small{width:100%}.dj-status-widget{gap:8px}.dj-status-person{padding:11px}.dj-status-person img,.dj-status-placeholder{width:82px;height:82px}.dj-status-person strong{font-size:16px}}

/* DJ-status: Now Playing + luisteraars via EverestCast/Centova */
.dj-status-widget-full{grid-template-columns:minmax(150px,1fr) minmax(260px,1.25fr) minmax(150px,1fr);align-items:stretch}
.dj-status-radio{min-width:0;text-align:center;background:rgba(16,8,23,.94);border:1px solid var(--rand);border-radius:18px;padding:16px;color:var(--tekst);overflow:hidden}
.centova-status{margin:10px auto 0;max-width:100%;min-height:105px;color:var(--tekst)}
.centova-status *{max-width:100%}
@media(max-width:760px){.dj-status-widget-full{grid-template-columns:1fr}.dj-status-radio{order:2}.dj-status-person:last-child{order:3}}

/* Compacte 250px DJ-statuswidget */
.dj-status-page{width:250px;max-width:100%;margin:0 auto;background:transparent!important;overflow:hidden}
.dj-status-compact{box-sizing:border-box;width:250px;max-width:100%;padding:3px}
.dj-status-switcher{position:relative;height:135px;background:rgba(8,12,8,.95);border:1px solid var(--rand);border-radius:10px;overflow:hidden}
.dj-status-slide{box-sizing:border-box;position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px;text-align:center;color:var(--tekst);opacity:0;visibility:hidden;transform:translateX(12px);transition:opacity .45s ease,transform .45s ease,visibility .45s}
.dj-status-slide.is-active{opacity:1;visibility:visible;transform:translateX(0)}
.dj-status-slide img,.dj-status-slide .dj-status-placeholder{width:62px;height:62px;margin:4px auto;border-radius:50%;border:2px solid var(--hoofdkleur);object-fit:cover}
.dj-status-slide .dj-status-placeholder{display:grid;place-items:center;background:var(--kaart-donker);font-size:24px}
.dj-status-slide strong{display:block;max-width:220px;font-size:13px;line-height:1.1;overflow-wrap:anywhere}
.dj-status-radio-compact{box-sizing:border-box;margin-top:4px;padding:5px 5px;border-radius:10px;min-height:76px}
.dj-status-radio-compact .centova-status{margin:2px auto 0;min-height:54px;font-size:10px;line-height:1.15;overflow:hidden}
.dj-status-radio-compact .dj-status-kicker{font-size:8px}
.dj-status-slide .dj-status-kicker{font-size:9px;margin-bottom:1px}

/* DJ-status exact 185x253px */
.dj-status-page{width:185px;height:253px;max-width:185px;margin:0 auto;overflow:hidden}
.dj-status-compact{box-sizing:border-box;width:185px;height:253px;max-width:185px;padding:2px;overflow:hidden}
.dj-status-switcher{height:126px;border-radius:8px}
.dj-status-slide{padding:4px}
.dj-status-slide img,.dj-status-slide .dj-status-placeholder{width:56px;height:56px;margin:3px auto;border-width:2px}
.dj-status-slide .dj-status-placeholder{font-size:21px}
.dj-status-slide strong{max-width:165px;font-size:12px;line-height:1.05}
.dj-status-slide .dj-status-kicker{font-size:8px;margin-bottom:0}
.dj-status-radio-compact{height:121px;min-height:121px;margin-top:2px;padding:4px 3px;border-radius:8px;overflow:hidden}
.dj-status-radio-compact .centova-status{width:175px;max-width:175px;margin:2px auto 0;min-height:96px;font-size:9px;line-height:1.05;overflow:hidden}
.dj-status-radio-compact .dj-status-kicker{font-size:7px;letter-spacing:.06em}

/* 185x253: grotere DJ-naam, Now Playing en luisteraars */
.dj-status-slide strong{font-size:15px;line-height:1.08;font-weight:900}
.dj-status-radio-compact .dj-status-kicker{font-size:9px;font-weight:900}
.dj-status-radio-compact .centova-status{font-size:11px;line-height:1.12;font-weight:700}
.dj-status-radio-compact .centova-status *{font-size:inherit!important;line-height:inherit!important}

/* Compact 185x253 widget: grotere DJ-foto + scrollende Now Playing */
.dj-status-switcher{height:136px}
.dj-status-slide img,.dj-status-slide .dj-status-placeholder{width:72px;height:72px;margin:2px auto;border-width:2px}
.dj-status-slide .dj-status-placeholder{font-size:25px}
.dj-status-slide strong{max-width:170px;font-size:15px;line-height:1.05}
.dj-status-radio-compact{height:111px;min-height:111px;padding:3px 3px}
.dj-status-radio-compact .centova-status{height:88px;min-height:88px;white-space:nowrap;overflow:hidden;position:relative}
.dj-status-radio-compact .centova-status *{white-space:nowrap!important}
.dj-status-radio-compact .centova-status a,.dj-status-radio-compact .centova-status span,.dj-status-radio-compact .centova-status div{max-width:none!important}
.nowplaying-ticker{display:block!important;width:100%!important;overflow:hidden!important;white-space:nowrap!important}
.nowplaying-ticker-text{display:inline-block!important;min-width:max-content!important;padding-left:100%;animation:bullDogNowPlaying 12s linear infinite!important}
@keyframes bullDogNowPlaying{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* 185x253 verfijning: extra grote DJ-foto, continue Now Playing en meer ruimte voor luisteraars */
.dj-status-switcher{height:145px}
.dj-status-slide{padding:2px 3px}
.dj-status-slide img,.dj-status-slide .dj-status-placeholder{width:84px;height:84px;margin:1px auto 2px;border-width:2px}
.dj-status-slide .dj-status-placeholder{font-size:28px}
.dj-status-slide strong{max-width:174px;font-size:15px;line-height:1.02}
.dj-status-radio-compact{height:102px;min-height:102px;margin-top:2px;padding:2px 3px}
.dj-status-radio-compact .centova-status{height:79px;min-height:79px;margin-top:1px;overflow:hidden}
.nowplaying-ticker{margin-bottom:8px!important}
.nowplaying-ticker-text{padding-left:100%;animation:bullDogNowPlayingContinuous 10s linear infinite!important;will-change:transform}
@keyframes bullDogNowPlayingContinuous{from{transform:translateX(0)}to{transform:translateX(-100%)}}


/* DJ-status: luisteraars los van Now Playing + rustigere ticker */
.nowplaying-ticker{margin-bottom:12px!important;border-bottom:1px solid rgba(57,255,20,.22)!important;padding-bottom:5px!important}
.nowplaying-ticker-text{animation-duration:22s!important;animation-timing-function:linear!important}
.listeners-separate{display:block!important;width:100%!important;max-width:175px!important;margin:6px auto 0!important;padding-top:5px!important;border-top:1px solid rgba(57,255,20,.35)!important;overflow:hidden!important;text-align:center!important;white-space:nowrap!important;color:var(--tekst)!important}


/* Luisteraars echt onder Now Playing, buiten de Centova-statuscontainer */
.dj-status-radio-compact .centova-status{height:49px!important;min-height:49px!important;margin-bottom:2px!important}
.nowplaying-ticker{margin-bottom:0!important;border-bottom:0!important;padding-bottom:0!important}
.listeners-own-block{box-sizing:border-box;width:100%;margin:4px auto 0;padding-top:4px;border-top:1px solid rgba(57,255,20,.35);text-align:center;line-height:1.05;color:var(--tekst);white-space:nowrap;overflow:hidden}
.listeners-own-label{display:block;color:var(--hoofdkleur);font-size:8px;font-weight:900;letter-spacing:.08em}
.listeners-own-value{display:block;margin-top:2px;font-size:12px;font-weight:900;color:var(--tekst)}

/* Verborgen aparte Centova-bron voor het actuele luisteraarsaantal */
.centova-listeners-source{position:absolute!important;left:-9999px!important;top:-9999px!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}
.nowplaying-ticker-text{animation-duration:22s!important;animation-timing-function:linear!important;animation-iteration-count:infinite!important}

/* Herstelde Now Playing: eigen zichtbare ticker, volledige Centova-widget alleen als databron */
.nowplaying-own{height:49px!important;min-height:49px!important;display:flex!important;align-items:center!important;overflow:hidden!important}
.nowplaying-own .nowplaying-ticker{width:100%!important;overflow:hidden!important;white-space:nowrap!important}
.nowplaying-own .nowplaying-ticker-text{display:inline-block!important;min-width:max-content!important;padding-left:100%!important;animation:bullDogNowPlayingContinuous 22s linear infinite!important;will-change:transform}

/* DJ-status 2026: alternatieve radio-player look */
.dj-status-page{width:185px;height:253px;background:transparent!important}
.dj-status-compact{width:185px;height:253px;padding:2px;display:block;overflow:hidden}
.dj-status-switcher{height:143px;border:1px solid rgba(57,255,20,.65);border-radius:16px 5px 16px 5px;background:linear-gradient(145deg,rgba(4,10,5,.98),rgba(12,20,12,.96));box-shadow:inset 0 0 18px rgba(57,255,20,.06);overflow:hidden}
.dj-status-slide{display:grid;grid-template-columns:98px 1fr;grid-template-rows:28px 1fr;align-items:center;justify-items:center;gap:0 5px;padding:7px 7px 7px 8px;text-align:left;transform:translateY(8px)}
.dj-status-slide.is-active{transform:translateY(0)}
.dj-status-slide .dj-status-kicker{grid-column:1 / -1;justify-self:start;align-self:start;margin:0;padding:4px 8px;border-radius:999px;background:var(--hoofdkleur);color:#050805;font-size:9px;font-weight:1000;letter-spacing:.11em;line-height:1}
.dj-status-slide img,.dj-status-slide .dj-status-placeholder{grid-column:1;grid-row:2;width:92px;height:92px;margin:0;border:2px solid var(--hoofdkleur);border-radius:16px 4px 16px 4px;box-shadow:0 0 12px rgba(57,255,20,.18);object-fit:cover}
.dj-status-slide .dj-status-placeholder{display:grid;place-items:center;font-size:30px;background:#071007}
.dj-status-slide strong{grid-column:2;grid-row:2;justify-self:stretch;align-self:center;max-width:66px;margin:0;color:#fff;font-size:16px;line-height:1.04;font-weight:1000;text-align:left;overflow-wrap:anywhere;text-shadow:0 1px 8px rgba(57,255,20,.18)}
.dj-status-radio-compact{position:relative;height:104px;min-height:104px;margin-top:2px;padding:7px 7px 5px;border:1px solid rgba(57,255,20,.45);border-radius:5px 16px 5px 16px;background:linear-gradient(145deg,rgba(10,18,10,.98),rgba(3,7,4,.98));overflow:hidden}
.dj-status-radio-compact>.dj-status-kicker{display:inline-block;margin:0 0 3px;padding:0;color:var(--hoofdkleur);font-size:9px;font-weight:1000;letter-spacing:.11em}
.nowplaying-own{width:169px!important;height:40px!important;min-height:40px!important;margin:0 auto!important;border-top:1px solid rgba(57,255,20,.15);border-bottom:1px solid rgba(57,255,20,.15);font-size:11px!important;font-weight:800!important}
.nowplaying-own .nowplaying-ticker-text{animation-duration:22s!important}
.listeners-own-block{display:flex;align-items:center;justify-content:space-between;width:100%;height:31px;margin:3px 0 0;padding:3px 4px 0;border-top:0;text-align:left}
.listeners-own-label{display:inline-block;font-size:8px;letter-spacing:.09em}
.listeners-own-value{display:inline-block;margin:0;padding:3px 8px;border:1px solid rgba(57,255,20,.45);border-radius:999px;background:rgba(57,255,20,.08);font-size:13px;line-height:1;color:#fff}

/* 185x253 fit refinement: balanced spacing without changing functionality */
.dj-status-compact{box-sizing:border-box;padding:3px;}
.dj-status-switcher{box-sizing:border-box;height:140px;border-radius:13px 5px 13px 5px;}
.dj-status-slide{box-sizing:border-box;grid-template-columns:88px minmax(0,1fr);grid-template-rows:25px 1fr;gap:0 6px;padding:6px;}
.dj-status-slide .dj-status-kicker{padding:3px 7px;font-size:8px;}
.dj-status-slide img,.dj-status-slide .dj-status-placeholder{width:86px;height:86px;border-radius:13px 4px 13px 4px;}
.dj-status-slide .dj-status-placeholder{font-size:27px;}
.dj-status-slide strong{max-width:72px;font-size:14px;line-height:1.08;overflow-wrap:anywhere;word-break:normal;}
.dj-status-radio-compact{box-sizing:border-box;height:105px;min-height:105px;margin-top:2px;padding:5px 6px 4px;border-radius:5px 13px 5px 13px;}
.dj-status-radio-compact>.dj-status-kicker{font-size:8px;margin-bottom:2px;}
.nowplaying-own{box-sizing:border-box;width:167px!important;height:39px!important;min-height:39px!important;font-size:10.5px!important;}
.listeners-own-block{box-sizing:border-box;height:30px;margin-top:3px;padding:3px 3px 0;}
.listeners-own-label{font-size:8px;}
.listeners-own-value{font-size:12px;padding:3px 7px;}

/* Grotere Now Playing-tekst, zonder andere widgetonderdelen te wijzigen */
.dj-status-radio-compact .nowplaying-own{font-size:13px!important;line-height:1.2!important;font-weight:900!important}
.dj-status-radio-compact .nowplaying-own .nowplaying-ticker-text{font-size:13px!important;line-height:1.2!important}
