:root{
  --header-h: 22px;
  --footer-h: 90px;
  --nav-w: 260px;

  --panel: rgba(26,13,7,0.82);
  --border: #c28a4a;
  --text: #f7e3c5;
  --accent: #ffd28a;
}

/* ================= GLOBAL FIX ================= */

/* Prevent padding/borders causing overflow */
*, *::before, *::after{
  box-sizing: border-box;
}

/* ================= BASE ================= */

html,body{
  height:100%;
}

body{
  margin:0;
  background:#120a06;
  font-family: Georgia, serif;
  color: var(--text);
}

/* ================= CONTENT AREA ================= */

.content-area{
  margin-left: var(--nav-w);
  padding-top: calc(var(--header-h) + 18px);
  padding-bottom: calc(var(--footer-h) + 26px);
  min-height:100vh;
  position:relative;
  z-index:1;
}

/* ================= BACKGROUND IMAGE ================= */

.content-area::before{
  content:"";
  position: fixed;
  top: var(--header-h);
  bottom: var(--footer-h);
  left: var(--nav-w);
  right: 0;

  background: url('/img/backgrounds/main-bg.png') no-repeat;
  background-position: 60% center;
  background-size: 100% auto;

  opacity:.75;
  pointer-events:none;
  z-index:0;
}

/* ================= LIGHT OVERLAY ================= */

.content-area::after{
  content:"";
  position: fixed;
  top: var(--header-h);
  bottom: var(--footer-h);
  left: var(--nav-w);
  right: 0;

  background: radial-gradient(circle at 65% 40%,
    rgba(0,0,0,0.05) 0%,
    rgba(0,0,0,0.28) 55%,
    rgba(0,0,0,0.45) 100%);

  pointer-events:none;
  z-index:1;
}

.content-wrapper{
  max-width:1100px;
  margin:0 auto;
  padding:20px;
  position:relative;
  z-index:2;

  /* prevents accidental horizontal overflow */
  overflow-x:hidden;
}

/* ================= STATION DIVIDER ================= */

.smurf-divider{
  width:100%;
  height:34px;
  margin:28px 0;
  position:relative;
  overflow:hidden;
  border-radius:999px;
  background:transparent;
}

.smurf-divider::before{
  content:'';
  position:absolute;
  left:0; right:0; top:50%;
  height:2px;
  transform:translateY(-50%);
  background:linear-gradient(90deg, transparent 0%, rgba(68,126,100,.55) 10%, rgba(241,208,75,.90) 50%, rgba(68,126,100,.55) 90%, transparent 100%);
  box-shadow:0 0 10px rgba(241,208,75,.28);
}

.smurf-divider::after{
  content:'✦';
  position:absolute;
  left:50%; top:50%;
  transform:translate(-50%,-50%);
  width:34px; height:34px;
  border-radius:50%;
  display:grid; place-items:center;
  font-size:14px;
  color:#102018;
  background:linear-gradient(135deg,#f1d04b,#d1a72d);
  box-shadow:0 0 14px rgba(241,208,75,.30);
}

/* ================= CARDS ================= */

.content-card,
.schedule-box,
.clock-box,
.admin-card{
  background:var(--panel);
  border:2px solid var(--border);
  border-radius:14px;
  padding:24px;
  margin-bottom:26px;

  box-shadow:
    0 0 18px rgba(255,200,120,.35),
    inset 0 0 10px rgba(0,0,0,.55);

  backdrop-filter:blur(4px);
  text-align:center;
}

/* Exceptions */

.page-schedule .content-card,
.page-djs .content-card,
.page-friends .content-card{
  text-align:left;
}

/* ================= BUTTONS ================= */

.admin-btn,
.button,
.play-btn{
  display:inline-block;
  padding:10px 14px;
  border-radius:12px;
  border:1px solid rgba(255,220,160,.28);
  background:rgba(255,220,160,.10);
  color:var(--text);
  text-decoration:none;
  cursor:pointer;
  font-weight:700;
  transition:.15s ease;
}

.admin-btn:hover,
.button:hover,
.play-btn:hover{
  transform:translateY(-1px);
  box-shadow:0 0 14px rgba(255,220,160,.25);
  background:rgba(255,220,160,.16);
}

.admin-btn.primary{
  background:linear-gradient(135deg,#ffb347,#ffcc33);
  color:#3b1b0a;
  font-weight:900;
}

/* ================= LISTEN BUTTONS ================= */

.listen-buttons,
.listen-inline{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:center;
  margin-top:12px;
}

.listen-buttons a,
.listen-inline a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:10px 14px;
  border-radius:999px;
  border:1px solid rgba(255,220,160,.35);
  background:rgba(255,220,160,.10);
  color:var(--text);
  text-decoration:none;
  font-weight:700;
  box-shadow:
    0 0 12px rgba(255,200,120,.18),
    inset 0 0 10px rgba(0,0,0,.45);
}

.listen-buttons a:hover,
.listen-inline a:hover{
  background:rgba(255,220,160,.18);
  box-shadow:
    0 0 16px rgba(255,220,160,.25),
    inset 0 0 10px rgba(0,0,0,.55);
}

/* ================= FORMS ================= */

.form{
  max-width:760px;
  margin:0 auto;
}

.input-field{
  width:100%;
  max-width:100%;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid rgba(194,138,74,.55);
  background:rgba(0,0,0,.25);
  color:var(--text);
  margin:10px 0;
}

.input-field:focus{
  border-color:rgba(255,220,160,.65);
  box-shadow:0 0 12px rgba(255,220,160,.25);
}

/* ================= REQUEST FORMS ================= */

.request-wrapper{
  width:100%;
  max-width:760px;
  margin:0 auto;
}

.request-box{
  width:100%;
  background:rgba(255,220,160,.06);
  border:1px solid rgba(194,138,74,.55);
  border-radius:14px;
  padding:16px;
  margin:14px 0;
  box-shadow:inset 0 0 10px rgba(0,0,0,.45);
}

.request-field{
  text-align:left;
  margin-bottom:12px;
}

.request-field label{
  display:block;
  font-weight:700;
  margin-bottom:8px;
  color:var(--accent);
}

.request-input,
.request-textarea{
  width:100%;
  max-width:100%;
  display:block;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid rgba(194,138,74,.55);
  background:rgba(0,0,0,.25);
  color:var(--text);
}

.request-textarea{
  min-height:120px;
  resize:vertical;
}

.request-button{
  padding:12px 18px;
  border-radius:12px;
  border:1px solid rgba(255,220,160,.28);
  background:rgba(255,220,160,.14);
  color:var(--text);
  font-weight:900;
  cursor:pointer;
}

/* ================= CLOCKS ================= */

.clock-flex{
  display:flex;
  justify-content:center;
  gap:18px;
  flex-wrap:wrap;
}

.clock-box{
  min-width:180px;
  background:rgba(255,220,160,.08);
  border:1px solid rgba(194,138,74,.55);
}

/* ================= SCHEDULE ================= */

.schedule-grid{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap:16px;
}

@media (max-width: 900px){
  .schedule-grid{ grid-template-columns: 1fr; }
}

.schedule-grid--vertical{
  display:flex;
  flex-direction:column;
  gap:16px;
}


/* force schedule cards full width */
.schedule-day-card{ width:100%; }

.schedule-day-card{
  text-align:left;
}

.schedule-day-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}

.badge-live{
  display:inline-block;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid rgba(255,220,160,.28);
  background:rgba(255,220,160,.10);
  font-weight:700;
}

.schedule-empty{
  opacity:.85;
  padding:10px;
  background:rgba(0,0,0,.25);
  border-radius:12px;
}

.schedule-list{
  display:flex;
  flex-direction:column;
  gap:10px;
}

.schedule-row{
  display:flex;
  gap:12px;
  align-items:flex-start;
  padding:10px;
  border-radius:12px;
  background: rgba(255,220,160,.06);
  border:1px solid rgba(194,138,74,.55);
  box-shadow: inset 0 0 10px rgba(0,0,0,.45);
}

.schedule-row.current-hour{
  outline:2px solid rgba(255,210,138,.65);
}

.schedule-time{
  min-width:86px;
  font-weight:700;
  color:var(--accent);
}

.schedule-show{
  font-weight:700;
}

/* New schedule layout (Morning/Evening split) */
.schedule-split{
  display:grid;
  grid-template-columns: 1fr;
  gap:14px;
}

@media (min-width: 820px){
  .schedule-split{ grid-template-columns: 1fr 1fr; }
}

.schedule-half{
  padding:12px;
  border-radius:14px;
  background: rgba(0,0,0,0.28);
  border: 1px solid rgba(194,138,74,.55);
}

.schedule-half h3{
  margin:0 0 10px 0;
  font-size:1.1rem;
  display:flex;
  align-items:center;
  gap:8px;
}

.slot-row{
  display:grid;
  grid-template-columns: 86px 1fr;
  gap:12px;
  align-items:center;
  padding:10px;
  border-radius:14px;
  background: rgba(255,220,160,.06);
  border:1px solid rgba(194,138,74,.55);
  box-shadow: inset 0 0 10px rgba(0,0,0,.45);
  margin-bottom:10px;
}

.slot-time{
  font-weight:800;
  color:var(--accent);
  text-align:center;
  line-height:1.1;
}

.slot-pill{
  padding:12px 14px;
  border-radius:12px;
  background: rgba(0,0,0,0.35);
  border: 1px solid rgba(194,138,74,.35);
}

.slot-pill .slot-show{ font-weight:800; }
.slot-pill .slot-dj{ opacity:.9; margin-top:2px; font-size:.95em; }


/* ================= ADMIN ================= */

.admin-wrap{
  display:grid;
  grid-template-columns:280px 1fr;
  gap:20px;
}

.admin-title{
  color:#ffd8a8;
  letter-spacing:.1em;
  text-transform:uppercase;
  margin-bottom:15px;
}

/* ================= MOBILE ================= */

@media (max-width:1100px){

  .content-area{
    margin-left:0;
  }

  .content-area::before,
  .content-area::after{
    left:0;
  }

  .schedule-grid{grid-template-columns:1fr;}


  .clock-flex{flex-direction:column;gap:14px;}

  .admin-wrap{
    grid-template-columns:1fr;
  }
}

/* ================= ADMIN GRID (added for merged admin panel) ================= */

.admin-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:14px;
}

.admin-card-link{
  display:block;
  padding:16px 14px;
  border-radius:14px;
  border:2px solid var(--border);
  background:rgba(255,220,160,.08);
  color:var(--text);
  text-decoration:none;
  font-weight:800;
  text-align:center;

  box-shadow:
    0 0 14px rgba(255,200,120,.20),
    inset 0 0 10px rgba(0,0,0,.45);
  transition:.15s ease;
}

.admin-card-link:hover{
  transform:translateY(-1px);
  background:rgba(255,220,160,.14);
  box-shadow:
    0 0 18px rgba(255,220,160,.28),
    inset 0 0 10px rgba(0,0,0,.55);
}


/* ================= MSG BANNERS ================= */
.msg{
  padding:10px 12px;
  border-radius:12px;
  margin:10px 0;
  border:1px solid rgba(255,220,160,.35);
  background:rgba(255,220,160,.10);
}
.msg.success{
  border-color:rgba(120,255,170,.45);
  background:rgba(120,255,170,.10);
}
.msg.error{
  border-color:rgba(255,80,120,.55);
  background:rgba(255,80,120,.10);
}


/* Force schedule cards vertical on the Schedule page */
.page-schedule .schedule-grid{
  grid-template-columns: 1fr;
}


/* Admin pages: stacked layout (one card per row) */
.admin-wrap.stack{
  grid-template-columns: 1fr;
}


/* Admin convenience */
.admin-topbar{
  display:flex;
  justify-content:flex-start;
  margin: 8px 0 14px;
}
.admin-return{
  display:inline-block;
  padding: 10px 14px;
  border-radius: 12px;
  border: 1px solid rgba(255, 204, 102, 0.45);
  background: rgba(0,0,0,0.45);
  text-decoration:none;
  color: #ffcc66;
  font-weight: 700;
  box-shadow: 0 0 12px rgba(255, 204, 102, 0.12);
}
.admin-return:hover{
  filter: brightness(1.12);
  box-shadow: 0 0 16px rgba(255, 204, 102, 0.18);
}



/* ================= FRIENDS PAGE ================= */

.friends-grid{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap:16px;
  margin-top: 18px;
}

.friend-card{
  padding:18px;
}

.friend-top{
  display:flex;
  gap:14px;
  align-items:flex-start;
}

.friend-image{
  width:90px;
  min-width:90px;
  height:120px;
  border-radius:12px;
  border:1px solid rgba(255,220,160,.28);
  background: rgba(0,0,0,.25);
  box-shadow: 0 0 14px rgba(255,200,120,.12);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}

.friend-image img{
  width:100%;
  height:100%;
  object-fit:contain; /* works for logos + pics */
  display:block;
  padding:8px;
}

.friend-image-fallback{
  font-size:34px;
  opacity:.9;
}

.friend-name{
  margin:0 0 6px 0;
}

.friend-desc{
  margin:0;
  opacity:.92;
  line-height:1.35;
}

.friend-actions{
  margin-top: 14px;
  display:flex;
  justify-content:flex-end;
}

.friend-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:10px 16px;
  border-radius:999px;
  border:1px solid rgba(255,220,160,.35);
  background:rgba(255,220,160,.10);
  color:var(--text);
  text-decoration:none;
  font-weight:800;
  transition:.15s ease;
}

.friend-btn:hover{
  transform:translateY(-1px);
  box-shadow:0 0 14px rgba(255,220,160,.25);
  background:rgba(255,220,160,.16);
}

@media (max-width: 420px){
  .friend-top{ gap:12px; }
  .friend-image{ width:82px; min-width:82px; height:110px; }
}


/* ================= DJs PAGE ================= */

.dj-grid{
  display:grid;
  grid-template-columns: repeat(2, 1fr);
  gap:18px;
  margin-top: 18px;
}

@media (max-width: 980px){
  .dj-grid{ grid-template-columns: 1fr; }
}

.dj-card{
  padding:18px;
}

.dj-image{
  width:160px;
  min-width:160px;
  height:200px;
  border-radius:14px;
  border:1px solid rgba(255,220,160,.28);
  background: rgba(0,0,0,.25);
  box-shadow: 0 0 14px rgba(255,200,120,.12);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  margin: 0 auto 12px auto;
}

.dj-image img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

.dj-name{
  margin: 6px 0 6px 0;
  text-align:center;
}

.dj-show{
  margin: 0 0 10px 0;
  text-align:center;
  opacity:.95;
  font-weight:700;
}

.dj-bio{
  margin:0;
  opacity:.92;
  line-height:1.4;
}

.btn-accent{
 display:inline-block;
 padding:10px 18px;
 background:#d9a44c;
 color:#000;
 border-radius:8px;
 text-decoration:none;
 font-weight:bold;
}
.btn-accent:hover{background:#f2c46f;}


/* ================= CHAT ================= */
.chat-card{
  display:flex;
  flex-direction:column;
}

.chat-box{
  width:100%;
  /* Fit within viewport so controls + footer remain visible */
  height:auto;
  min-height:300px;
  max-height:55vh;
  flex:1;
  overflow-y:auto;
  padding:14px;
  border-radius:14px;
  border:1px solid rgba(194,138,74,.55);
  background:rgba(0,0,0,.22);
  box-shadow:inset 0 0 10px rgba(0,0,0,.45);
}

.chat-msg{
  padding:10px 12px;
  border-radius:12px;
  margin:10px 0;
  border:1px solid rgba(194,138,74,.25);
  background:rgba(255,220,160,.05);
}

.chat-msg.admin{
  border-color: rgba(0, 204, 136, .55);
  background: rgba(0, 204, 136, .08);
}

.chat-msg .meta{
  display:flex;
  justify-content:space-between;
  gap:10px;
  font-weight:800;
  opacity:.95;
  margin-bottom:6px;
}

.chat-msg .who{
  color: var(--accent);
}

.chat-msg.admin .who{
  color: #00cc88;
}

.chat-msg .time{
  font-weight:700;
  opacity:.75;
}

.chat-controls{
  margin-top:14px;
}

.chat-input-row{
  display:flex;
  gap:10px;
  margin-top:10px;
}

.chat-input-row .request-input{
  flex:1;
}

.chat-emoji{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:10px;
}

.emoji-btn{
  padding:8px 10px;
  border-radius:10px;
  border:1px solid rgba(194,138,74,.55);
  background:rgba(0,0,0,.18);
  cursor:pointer;
  font-size:18px;
}

.emoji-btn:hover{
  background:rgba(255,220,160,.12);
}

.chat-hint{
  opacity:.75;
  margin-top:10px;
  font-size:.95em;
}

@media (max-width: 700px){
  .chat-input-row{ flex-direction:column; }
  .chat-box{ max-height:50vh; min-height:240px; }
}


/* Live Chat page - fit and emoji picker */
.chat-card{ width:100%; }
.chat-input-row{ flex-wrap:wrap; }
.chat-input-row .btn{ flex:0 0 auto; min-width:90px; }
.chat-input-row input{ flex:1 1 420px; }

.btn-emoji{ padding:10px 14px; border-radius:10px; }
.emoji-panel{
  margin-top:12px;
  display:none;
  padding:14px;
  border-radius:14px;
  border:1px solid rgba(194,138,74,.55);
  background:rgba(0,0,0,.25);
}
.emoji-panel.open{ display:block; }
.emoji-search-row{
  display:flex;
  gap:10px;
  align-items:center;
  margin-bottom:10px;
}
.emoji-search{ flex:1 1 auto; }
.btn-emoji-close{ padding:10px 14px; }
.emoji-grid{
  display:grid;
  grid-template-columns: repeat(auto-fill, minmax(40px, 1fr));
  gap:8px;
  max-height:220px;
  overflow:auto;
  padding-right:6px;
}
.emoji-pick{
  border:1px solid rgba(194,138,74,.45);
  background:rgba(0,0,0,.18);
  border-radius:10px;
  cursor:pointer;
  font-size:22px;
  line-height:1;
  padding:8px 0;
}
.emoji-pick:hover{
  box-shadow:0 0 10px rgba(255,200,120,.25);
}
.emoji-empty{
  grid-column:1/-1;
  opacity:.85;
  padding:10px;
}



/* Admin permissions checkbox grid */
.perm-grid{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap:10px;
}
.perm-item{
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 12px;
  border-radius:12px;
  background: rgba(0,0,0,0.25);
  border: 1px solid rgba(217,164,76,0.35);
}
.perm-item input[type="checkbox"]{
  transform: scale(1.15);
  accent-color: #d9a44c;
}


/* Live DJ badges */
.live-ribbon{display:inline-block;margin-left:10px;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,215,120,.9);background:rgba(255,215,120,.18);color:#ffd78a;font-size:.75em;letter-spacing:.12em;box-shadow:0 0 10px rgba(255,215,120,.25);}
.dj-card.live{box-shadow:0 0 18px rgba(120,255,220,.25);border-color:rgba(120,255,220,.75) !important;}
.dj-live-tag{display:inline-block;margin:8px auto 0 auto;padding:4px 10px;border-radius:999px;border:1px solid rgba(120,255,220,.85);background:rgba(120,255,220,.12);color:#9fffe2;font-weight:800;font-size:.8em;}
.dj-nextup{opacity:.9;margin-top:8px;font-size:.95em;}

/* Admin layout helpers */
.admin-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;}
@media(max-width: 980px){.admin-grid-2{grid-template-columns:1fr;}}
.admin-form .admin-label{display:block;margin:10px 0 6px;opacity:.9;}
.admin-input{width:100%;padding:12px 14px;border-radius:12px;border:1px solid rgba(255,215,120,.35);background:rgba(0,0,0,.35);color:var(--text-color,#f2e7d2);outline:none;}
.admin-input:focus{border-color:rgba(255,215,120,.75);box-shadow:0 0 0 3px rgba(255,215,120,.12);} 


.fan-card.top-fan{border-color:rgba(255,215,0,.45); box-shadow:0 0 18px rgba(255,215,0,.18);} 
.top-fan-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:rgba(255,215,0,.12);border:1px solid rgba(255,215,0,.35);font-weight:700;font-size:.9rem;margin-bottom:8px;}


/* Visible admin upload field */
.upload-box{
  margin-top:8px;
  margin-bottom:14px;
  padding:14px;
  border:1px solid rgba(217,164,76,.6);
  border-radius:12px;
  background:rgba(0,0,0,.25);
}
.upload-box input[type="file"]{
  display:block;
  width:100%;
  color:#f5d7a1;
  background:transparent;
  border:none;
  padding:0;
}
.upload-box input[type="file"]::file-selector-button{
  background:#d9a44c;
  color:#2b1206;
  border:none;
  border-radius:10px;
  padding:10px 16px;
  margin-right:12px;
  font-weight:700;
  cursor:pointer;
}
.upload-box input[type="file"]::file-selector-button:hover{
  filter:brightness(1.08);
}
.upload-help{
  display:block;
  margin-top:10px;
  opacity:.8;
}


/* Clear admin upload area styled like Join the Team */
.admin-upload-wrap{max-width:100%; margin-top:8px;}
.admin-upload-box{padding:18px;}
.admin-file-input{
  width:100%;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid rgba(194,138,74,.55);
  background:rgba(0,0,0,.25);
  color:var(--text);
  margin:10px 0 0;
}
.admin-file-input::file-selector-button{
  display:inline-block;
  padding:10px 14px;
  margin-right:12px;
  border-radius:12px;
  border:1px solid rgba(255,220,160,.28);
  background:linear-gradient(135deg,#ffb347,#ffcc33);
  color:#3b1b0a;
  font-weight:900;
  cursor:pointer;
}
.admin-file-input::file-selector-button:hover{
  box-shadow:0 0 14px rgba(255,220,160,.25);
}
.admin-upload-box .upload-help{display:block; margin-top:8px; line-height:1.45;}

/* User manager clearer edit area */
.users-list{display:flex; flex-direction:column; gap:14px;}
.user-row-card{
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:flex-start;
  flex-wrap:wrap;
  padding:16px;
  border-radius:14px;
  background:rgba(255,220,160,.06);
  border:1px solid rgba(194,138,74,.55);
  box-shadow:inset 0 0 10px rgba(0,0,0,.45);
}
.user-row-main{flex:1 1 420px;}
.user-row-name{font-size:1.08rem; margin-bottom:8px;}
.user-row-meta{margin-top:4px; opacity:.92; word-break:break-word;}
.user-row-actions{display:flex; gap:10px; flex-wrap:wrap;}


/* Admin upload boxes */
.upload-box{
  margin-top:8px;
  margin-bottom:14px;
  padding:14px;
  border:1px solid rgba(217,164,76,.55);
  border-radius:14px;
  background:rgba(0,0,0,.22);
}
.upload-box input[type="file"]{
  display:block;
  width:100%;
  color:var(--text-color);
  background:transparent;
  border:none;
  padding:0;
}
.upload-box input[type="file"]::file-selector-button{
  background:var(--accent-color);
  color:#221008;
  border:none;
  border-radius:10px;
  padding:10px 16px;
  margin-right:12px;
  font-weight:700;
  cursor:pointer;
  box-shadow:0 0 12px rgba(217,164,76,.25);
}
.upload-box input[type="file"]::file-selector-button:hover{ filter:brightness(1.08); }
.upload-help{ display:block; margin-top:10px; opacity:.8; }

.page-builder-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;align-items:start;}
.page-builder-help{display:grid;gap:12px;}
.page-preview-card img{max-width:100%;height:auto;border-radius:14px;border:1px solid rgba(255,215,120,.35);}
.page-flags{display:flex;gap:16px;flex-wrap:wrap;margin-top:6px;}
.page-block-note{opacity:.82;font-size:.92rem;margin-top:6px;}
.page-action-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px;}
@media (max-width: 900px){.page-builder-grid{grid-template-columns:1fr;}}

.hero-image{margin:0 auto 18px;max-width:860px;overflow:hidden;border-radius:18px;border:1px solid rgba(255,215,120,.28);box-shadow:0 0 18px rgba(0,0,0,.35);}
.hero-image img{display:block;width:100%;height:auto;max-height:420px;object-fit:cover;}
.page-summary{max-width:860px;margin:0 auto 18px;opacity:.95;}
.page-cta{margin-top:18px;}


/* Admin chat moderation */
.chat-mod-list{display:flex;flex-direction:column;gap:10px;max-height:420px;overflow:auto;padding-right:6px;}
.chat-mod-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;padding:12px;border-radius:12px;border:1px solid rgba(255,215,120,.25);background:rgba(255,220,160,.05);}
.chat-mod-copy{flex:1 1 420px;}

/* Page builder upgrades */
.page-snippet-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0 6px;}
.page-snippet-title{font-weight:700;color:var(--accent);}
.page-snippet-btn{font-size:.92rem;}
.page-wireframe{display:grid;gap:12px;}
.page-wireframe-label{font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;opacity:.72;}
.page-wireframe-hero{min-height:120px;border:1px dashed rgba(255,215,120,.35);border-radius:14px;background:rgba(0,0,0,.2);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.page-wireframe-hero img{display:block;width:100%;height:160px;object-fit:cover;}
.page-wireframe-empty{opacity:.75;padding:10px;text-align:center;}
.page-wireframe-body{padding:14px;border-radius:14px;background:rgba(255,220,160,.05);border:1px solid rgba(255,215,120,.18);}
.page-wireframe-chip{display:inline-block;padding:4px 10px;border-radius:999px;background:rgba(255,215,120,.12);border:1px solid rgba(255,215,120,.25);font-size:.82rem;margin-bottom:10px;}
.page-wireframe-content{margin-top:12px;padding:12px;border-radius:12px;background:rgba(0,0,0,.2);min-height:76px;white-space:pre-wrap;opacity:.9;}
.page-placement-guide{margin:0;padding-left:18px;line-height:1.7;}
.page-layout-map{display:grid;grid-template-columns:1fr;gap:8px;margin-top:12px;}
.page-layout-map > div{padding:10px 12px;border-radius:12px;background:rgba(0,0,0,.18);border:1px solid rgba(255,215,120,.18);}
.split-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;}
.button-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;}
.quote-block blockquote{margin:0;font-size:1.12rem;line-height:1.6;}
.image-card-block img{display:block;max-width:100%;height:auto;margin:0 auto 12px;border-radius:14px;}
.page-layout-cards .content-card{margin-bottom:18px;}
.page-layout-promo .page-cta{margin-top:26px;}
@media (max-width:760px){.split-two{grid-template-columns:1fr;}}


/* ===== Top 50 / Popout ===== */
.top50-list{display:flex;flex-direction:column;gap:12px;}
.top50-row{display:grid;grid-template-columns:88px 1fr;gap:16px;align-items:center;padding:14px;border:1px solid rgba(255,220,160,.22);border-radius:16px;background:rgba(255,220,160,.05);box-shadow:inset 0 0 16px rgba(0,0,0,.25);}
.top50-row.is-top{background:linear-gradient(135deg, rgba(255,188,80,.18), rgba(255,220,160,.06));}
.top50-rank{font-size:1.4rem;font-weight:900;color:var(--accent);text-align:center;}
.top50-copy h3{margin:0 0 6px;}
.top50-copy p{margin:4px 0;opacity:.9;}
.top50-now{font-size:1.02rem;margin-top:8px;}
.top50-admin-list{display:flex;flex-direction:column;gap:8px;}
.top50-admin-row{padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,220,160,.14);}
.popout-player-card{max-width:760px;margin:0 auto;}


/* ================= POP OUT PLAYER ================= */
body.page-player-popout{
  min-height:100vh;
  background:
    radial-gradient(circle at top, rgba(255,211,138,.16), transparent 32%),
    radial-gradient(circle at 80% 18%, rgba(255,170,70,.14), transparent 22%),
    linear-gradient(180deg, #120905 0%, #1b0d07 35%, #0d0603 100%);
  overflow-x:hidden;
}
body.page-player-popout .site-header,
body.page-player-popout .site-footer,
body.page-player-popout #sideNav,
body.page-player-popout #navOverlay{display:none!important;}
body.page-player-popout .content-area{
  margin-left:0;
  padding:28px;
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
}
body.page-player-popout .content-area::before,
body.page-player-popout .content-area::after{display:none;}
body.page-player-popout .content-wrapper{
  width:min(100%, 980px);
  max-width:980px;
  padding:0;
  overflow:visible;
}
.popout-player-card{
  position:relative;
  overflow:hidden;
  max-width:920px;
  margin:0 auto;
  padding:30px;
  border-radius:28px;
  background:
    radial-gradient(circle at top right, rgba(255,221,138,.12), transparent 30%),
    linear-gradient(180deg, rgba(34,17,10,.94), rgba(18,9,5,.96));
  box-shadow:0 25px 60px rgba(0,0,0,.45), 0 0 35px rgba(255,196,104,.18), inset 0 0 22px rgba(255,215,140,.06);
}
.popout-player-card::before{
  content:"";
  position:absolute;
  inset:-2px;
  border-radius:30px;
  pointer-events:none;
  border:1px solid rgba(255,214,135,.28);
}
.popout-player-card::after{
  content:"";
  position:absolute;
  width:340px;
  height:340px;
  right:-120px;
  top:-130px;
  border-radius:50%;
  background:radial-gradient(circle, rgba(255,213,124,.18) 0%, rgba(255,213,124,.05) 45%, transparent 70%);
  filter:blur(8px);
  pointer-events:none;
}
.player-pop-layout{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:minmax(0, 1.15fr) minmax(280px, .85fr);
  gap:24px;
  align-items:center;
}
.player-pop-copy{text-align:left;}
.player-pop-kicker{
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:8px 14px;
  border-radius:999px;
  border:1px solid rgba(255,214,135,.26);
  background:rgba(255,255,255,.04);
  font-size:.88rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.player-pop-title{
  font-size:clamp(2rem, 4vw, 3.2rem);
  line-height:1.05;
  margin:16px 0 10px;
}
.player-pop-subtitle{
  margin:0 0 20px;
  max-width:40rem;
  font-size:1.02rem;
  line-height:1.7;
  color:rgba(247,227,197,.86);
}
.player-orb{
  position:relative;
  width:min(100%, 330px);
  aspect-ratio:1;
  margin:0 auto;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at 30% 30%, rgba(255,227,164,.9), rgba(234,160,76,.32) 28%, rgba(33,16,10,.95) 62%, rgba(9,5,3,.98) 100%);
  box-shadow:inset 0 0 50px rgba(255,223,150,.08), 0 0 55px rgba(255,188,78,.22), 0 0 110px rgba(0,0,0,.45);
}
.player-orb::before,
.player-orb::after{
  content:"";
  position:absolute;
  inset:18px;
  border-radius:50%;
  border:1px solid rgba(255,215,140,.16);
}
.player-orb::after{inset:-14px;border-color:rgba(255,215,140,.08);}
.player-orb-center{
  width:90px;
  height:90px;
  border-radius:50%;
  display:grid;
  place-items:center;
  font-size:2rem;
  border:1px solid rgba(255,216,140,.28);
  background:linear-gradient(180deg, rgba(44,24,14,.96), rgba(18,9,5,.96));
  box-shadow:0 0 25px rgba(255,196,104,.15);
}
.eq-wrap{
  display:flex;
  align-items:flex-end;
  gap:8px;
  height:88px;
  margin:18px 0 20px;
}
.eq-bar{
  flex:1;
  min-width:10px;
  border-radius:999px 999px 4px 4px;
  background:linear-gradient(180deg, rgba(255,224,148,.95), rgba(217,144,56,.92));
  box-shadow:0 0 16px rgba(255,199,88,.25);
  transform-origin:bottom;
  animation:smurfEq 1.15s ease-in-out infinite;
}
.eq-bar:nth-child(2){animation-delay:.12s}
.eq-bar:nth-child(3){animation-delay:.34s}
.eq-bar:nth-child(4){animation-delay:.21s}
.eq-bar:nth-child(5){animation-delay:.48s}
.eq-bar:nth-child(6){animation-delay:.17s}
.eq-bar:nth-child(7){animation-delay:.4s}
.eq-bar:nth-child(8){animation-delay:.27s}
@keyframes smurfEq{
  0%,100%{transform:scaleY(.28);opacity:.7}
  50%{transform:scaleY(1);opacity:1}
}
.player-nowplaying{
  padding:18px 20px;
  border-radius:18px;
  border:1px solid rgba(255,214,135,.22);
  background:rgba(255,255,255,.03);
  box-shadow:inset 0 0 18px rgba(255,215,140,.04);
  margin-top:14px;
}
.player-nowplaying-label{
  font-size:.8rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  opacity:.72;
  margin-bottom:8px;
}
.player-nowplaying strong{
  display:block;
  font-size:1.08rem;
  line-height:1.5;
}
.player-meta-row{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin-top:18px;
}
.player-meta-chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:9px 12px;
  border-radius:999px;
  border:1px solid rgba(255,214,135,.18);
  background:rgba(255,255,255,.03);
  font-size:.92rem;
}
.player-audio-shell{
  padding:20px;
  border-radius:22px;
  border:1px solid rgba(255,214,135,.24);
  background:linear-gradient(180deg, rgba(18,10,6,.92), rgba(10,6,4,.94));
  box-shadow:inset 0 0 18px rgba(255,215,140,.05);
}
.player-audio-shell audio{width:100%;display:block;}
.player-action-row{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin-top:18px;
}
.player-action-row .button,
.player-action-row .play-btn{
  min-width:190px;
  justify-content:center;
}
.player-glow-line{
  height:2px;
  margin:20px 0;
  background:linear-gradient(90deg, transparent 0%, rgba(255,216,136,.2) 15%, rgba(255,216,136,.75) 50%, rgba(255,216,136,.2) 85%, transparent 100%);
  box-shadow:0 0 14px rgba(255,196,104,.22);
}
@media (max-width: 780px){
  body.page-player-popout .content-area{padding:16px;}
  .popout-player-card{padding:22px;}
  .player-pop-layout{grid-template-columns:1fr;}
  .player-pop-copy{text-align:center;}
  .player-pop-subtitle{margin-left:auto;margin-right:auto;}
  .player-meta-row,.player-action-row{justify-content:center;}
}


/* ================= CUSTOM PAGE TEMPLATES ================= */
.content-wrapper-wide{max-width:min(1600px, calc(100% - 40px));}
.custom-page-shell{overflow:hidden;}
.custom-page .page-title{letter-spacing:.02em;}
.custom-page.template-fullwidth .custom-page-shell,
.custom-page.template-gallery .custom-page-shell,
.custom-page.template-schedule-grid .custom-page-shell,
.custom-page.template-top50 .custom-page-shell{padding:26px 30px;}
.custom-page.template-fullwidth .rich-content,
.custom-page.template-gallery .rich-content,
.custom-page.template-schedule-grid .rich-content,
.custom-page.template-top50 .rich-content{max-width:none;}
.custom-page.template-dj-profile .hero-image img,
.custom-page.template-team .hero-image img{max-height:440px;object-fit:cover;}
.custom-page.template-dj-profile .page-title,
.custom-page.template-listen-live .page-title,
.custom-page.template-top50 .page-title{font-size:clamp(2rem,4vw,3.2rem);}
.custom-page.template-dj-profile .rich-content .builder-split,
.custom-page.template-team .rich-content .builder-split{grid-template-columns:minmax(220px,320px) minmax(0,1fr);align-items:start;}
.custom-page.template-dj-roster .rich-content,
.custom-page.template-team .rich-content,
.custom-page.template-sponsors .rich-content,
.custom-page.template-gallery .rich-content{display:grid;gap:18px;}
.custom-page.template-dj-roster .rich-content .split-two,
.custom-page.template-team .rich-content .split-two,
.custom-page.template-sponsors .rich-content .split-two,
.custom-page.template-gallery .rich-content .split-two{grid-template-columns:repeat(2,minmax(0,1fr));}
.custom-page.template-event .custom-page-shell,
.custom-page.template-promo .custom-page-shell{border-color:rgba(255,190,92,.42);box-shadow:0 0 24px rgba(255,170,70,.18);}
.custom-page.template-event .page-summary,
.custom-page.template-promo .page-summary{font-size:1.08rem;max-width:880px;}
.custom-page.template-event .page-cta .btn,
.custom-page.template-listen-live .page-cta .btn,
.custom-page.template-podcast .page-cta .btn{min-width:210px;text-align:center;}
.custom-page.template-contact .rich-content .split-two{grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);}
.custom-page.template-contact .rich-content .content-card,
.custom-page.template-listen-live .rich-content .content-card{background:rgba(0,0,0,.24);}
.custom-page.template-listen-live .custom-page-shell{position:relative;isolation:isolate;}
.custom-page.template-listen-live .custom-page-shell::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at top center, rgba(0,204,136,.14), transparent 45%);}
.custom-page.template-listen-live .page-summary{font-size:1.05rem;}
.custom-page.template-listen-live .rich-content .button-row{justify-content:center;}
.custom-page.template-schedule-grid .rich-content .content-card,
.custom-page.template-top50 .rich-content .content-card{border-color:rgba(0,204,136,.2);}
.custom-page.template-schedule-grid .rich-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;}
.custom-page.template-top50 .rich-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;}
.custom-page.template-top50 .rich-content .content-card h2,
.custom-page.template-top50 .rich-content .content-card h3{display:flex;align-items:center;gap:10px;}
.custom-page.template-top50 .rich-content .content-card h2::before,
.custom-page.template-top50 .rich-content .content-card h3::before{content:"♪";display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;background:rgba(0,204,136,.16);color:#9ef2c5;font-size:15px;}
.custom-page.template-gallery .hero-image img{max-height:520px;object-fit:cover;}
.custom-page.template-gallery .rich-content img,
.custom-page.template-sponsors .rich-content img{border-radius:16px;display:block;}
.custom-page.template-sponsors .rich-content .content-card,
.custom-page.template-podcast .rich-content .content-card{position:relative;}
.custom-page.template-sponsors .rich-content .content-card::after{content:"SPOTLIGHT";position:absolute;top:14px;right:14px;font-size:.7rem;letter-spacing:.18em;color:rgba(255,255,255,.55);}
.custom-page.template-podcast .rich-content .content-card{border-color:rgba(120,180,255,.25);}
@media (max-width: 980px){
  .custom-page.template-dj-profile .rich-content .builder-split,
  .custom-page.template-team .rich-content .builder-split,
  .custom-page.template-contact .rich-content .split-two,
  .custom-page.template-schedule-grid .rich-content,
  .custom-page.template-top50 .rich-content,
  .custom-page.template-dj-roster .rich-content .split-two,
  .custom-page.template-team .rich-content .split-two,
  .custom-page.template-sponsors .rich-content .split-two,
  .custom-page.template-gallery .rich-content .split-two{grid-template-columns:1fr;}
}
