/*
Theme Name: RTV Purmerend
Theme URI: https://rtvpurmerend.nl
Author: RTV Purmerend
Description: Thema voor RTV Purmerend — lokaal nieuws, live tv, radio en reportages. "Altijd dichtbij. Altijd live."
Version: 1.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: rtvpurmerend
*/

:root{
  --purple:#4A318E;
  --blue:#3F63B5;
  --skyblue:#1D87B4;
  --teal:#159A99;
  --bg-light:#F6F8FB;
  --white:#FFFFFF;
  --ink:#22252C;
  --grad: linear-gradient(120deg, var(--purple), var(--blue) 45%, var(--skyblue) 75%, var(--teal));
}
*{box-sizing:border-box; margin:0; padding:0;}
body{font-family:'Inter',sans-serif; color:var(--text); background:var(--page-bg); line-height:1.5;}
h1,h2,h3,h4,.logo,.btn,.eyebrow{font-family:'Poppins',sans-serif; font-weight:700;}
a{color:inherit; text-decoration:none;}
img,.ph{display:block; width:100%; height:100%; object-fit:cover;}
.ph{background:linear-gradient(135deg,#2b2f6b,#1D87B4); position:relative;}
.wrap{max-width:1240px; margin:0 auto; padding:0 24px;}
.eyebrow{font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--teal);}
main{display:block;}

/* HEADER */
header.site-header{background:var(--ink); color:var(--white); position:sticky; top:0; z-index:50;}
.header-inner{display:flex; align-items:center; justify-content:space-between; padding:14px 24px; max-width:1240px; margin:0 auto;}
.logo{display:flex; align-items:center; gap:8px; font-size:20px;}
.logo .mark{width:34px; height:34px; border-radius:8px; background:var(--grad); display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.logo .mark svg{width:18px; height:18px;}
.logo .mark img{width:100%;height:100%;object-fit:contain;border-radius:8px;}
.logo .word{display:flex; flex-direction:column; line-height:1;}
.logo .word b{background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; font-size:20px;}
.logo .word span{font-size:9px; letter-spacing:.15em; color:#9aa0ad; font-family:'Inter',sans-serif; font-weight:600;}
nav.primary-nav ul{display:flex; gap:28px; font-size:14px; font-family:'Inter',sans-serif; font-weight:500; list-style:none;}
nav.primary-nav a{opacity:.85; transition:opacity .15s;}
nav.primary-nav a:hover{opacity:1; color:var(--teal);}
.header-actions{display:flex; align-items:center; gap:18px;}
.icon-btn{width:34px; height:34px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:rgba(255,255,255,.08); cursor:pointer; border:none; color:#fff;}
.live-pill{display:flex; align-items:center; gap:6px; background:var(--grad); padding:8px 16px; border-radius:20px; font-size:13px; font-weight:600;}
.live-pill .dot{width:6px; height:6px; border-radius:50%; background:#fff;}
.menu-toggle{display:none; background:none; border:none; color:#fff; font-size:22px; cursor:pointer;}

/* PAGE HERO (interne pagina's) */
.page-hero{background:var(--ink); color:#fff; padding:60px 0 40px;}
.page-hero h1{font-size:36px;}
.page-hero p{color:#9aa0ad; margin-top:8px; font-family:'Inter',sans-serif; font-weight:400;}

/* HOME HERO */
.hero{position:relative; color:var(--white); overflow:hidden;}
.hero-bg{position:absolute; inset:0; background:linear-gradient(180deg, rgba(20,20,40,.55), rgba(20,20,40,.85)), linear-gradient(135deg,#3a3f7a,#1D87B4);}
.hero-bg img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-1;}
.hero-inner{position:relative; display:grid; grid-template-columns:1.1fr .9fr; gap:40px; align-items:center; padding:80px 24px 60px; max-width:1240px; margin:0 auto;}
.hero h1{font-size:56px; line-height:1.02; letter-spacing:-.01em;}
.hero p{margin-top:16px; font-size:17px; color:#dfe3ee; max-width:420px; font-family:'Inter',sans-serif; font-weight:400;}
.hero-cta{margin-top:28px; display:flex; gap:14px; flex-wrap:wrap;}
.btn{padding:13px 24px; border-radius:24px; font-size:14px; display:inline-flex; align-items:center; gap:8px; cursor:pointer; border:none;}
.btn-primary{background:var(--teal); color:#fff;}
/* Secondary button adapts to the surface it sits on: dark text/border on light
   surfaces (the default — matches the style guide's outlined "SECUNDAIR" look),
   white text/border only inside dark surfaces like the hero and dark cards. */
.btn-secondary{background:transparent; border:1.5px solid var(--text); color:var(--text); opacity:.82;}
.hero .btn-secondary,.page-hero .btn-secondary,.card-dark .btn-secondary,.radio-card .btn-secondary{border-color:#fff; color:#fff; opacity:1;}
.hero-player{background:#0e1030; border-radius:14px; overflow:hidden; box-shadow:0 20px 50px rgba(0,0,0,.4);}
.hero-player .frame{aspect-ratio:16/10; position:relative;}
.hero-player .badge{position:absolute; top:12px; left:12px; background:#e0293e; font-size:11px; font-weight:700; padding:4px 10px; border-radius:4px; display:flex; align-items:center; gap:5px; color:#fff;}
.hero-player .badge .dot{width:6px;height:6px;border-radius:50%;background:#fff;}
.play-btn{position:absolute; inset:0; margin:auto; width:60px; height:60px; border-radius:50%; background:rgba(255,255,255,.15); border:1.5px solid rgba(255,255,255,.6); display:flex; align-items:center; justify-content:center; cursor:pointer; color:#fff;}
.hero-player .meta{padding:12px 14px; font-size:13px; font-weight:600;}

/* BREAKING BAR */
.breaking{background:linear-gradient(90deg,#c22035,#e0293e); color:#fff;}
.breaking .wrap{display:flex; align-items:center; gap:14px; padding:12px 24px; font-size:14px;}
.breaking .tag{background:#fff; color:#c22035; font-weight:700; font-size:11px; padding:4px 10px; border-radius:4px; letter-spacing:.05em;}
.breaking .msg{flex:1; font-weight:500;}
.breaking .more{font-weight:600; white-space:nowrap;}

section{padding:48px 0;}
.section-head{display:flex; align-items:baseline; justify-content:space-between; margin-bottom:20px;}
.section-head h2{font-size:22px;}
.section-head .more-link{font-size:13px; font-weight:600; color:var(--skyblue);}

/* LIVE TV + RADIO */
.live-grid{display:grid; grid-template-columns:2.1fr 1fr; gap:20px;}
.card-dark{background:var(--ink); color:#fff; border-radius:14px; overflow:hidden; padding:22px;}
.livetv{display:grid; grid-template-columns:1.3fr 1fr; gap:22px;}
.livetv-thumb{border-radius:10px; overflow:hidden; aspect-ratio:16/10; position:relative;}
.livetv-thumb .live-tag{position:absolute; top:10px; left:10px; background:#e0293e; font-size:10px; font-weight:700; padding:3px 8px; border-radius:4px;}
.livetv h4{font-size:17px; margin:12px 0 6px;}
.livetv .time{font-size:12px; color:#9aa0ad; margin-bottom:10px;}
.schedule{display:flex; flex-direction:column; gap:14px; font-size:13px;}
.schedule .row{display:flex; gap:12px; border-bottom:1px solid rgba(255,255,255,.08); padding-bottom:12px;}
.schedule .row.active b{color:var(--teal);}
.schedule .time{color:#9aa0ad; min-width:44px;}
.radio-card{background:linear-gradient(160deg,var(--purple),var(--blue)); border-radius:14px; padding:22px; color:#fff; display:flex; flex-direction:column;}
.radio-visual{margin:16px 0; display:flex; align-items:center; gap:12px;}
.radio-visual .play-mini{width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.15); display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.waveform{display:flex; align-items:flex-end; gap:3px; height:30px; flex:1;}
.waveform span{width:3px; background:rgba(255,255,255,.6); border-radius:2px;}

/* GRIDS */
.grid-4{display:grid; grid-template-columns:repeat(4,1fr); gap:18px;}
.news-card{background:#fff; border-radius:12px; overflow:hidden; box-shadow:0 1px 3px rgba(20,20,40,.06);}
.news-card .thumb{aspect-ratio:4/3; position:relative;}
.news-card .thumb .dur{position:absolute; bottom:8px; right:8px; background:rgba(0,0,0,.6); color:#fff; font-size:10px; padding:2px 6px; border-radius:4px;}
.news-card .body{padding:14px 16px 18px;}
.news-card .cat{font-size:10px; font-weight:700; letter-spacing:.06em; color:var(--teal); text-transform:uppercase;}
.news-card h4{font-size:15px; margin:6px 0 6px; font-family:'Poppins',sans-serif; font-weight:600;}
.news-card h4 a{color:var(--text);}
.news-card p{font-size:12.5px; color:var(--muted); font-family:'Inter',sans-serif;}

/* BOTTOM 3 CARDS */
.grid-3{display:grid; grid-template-columns:1fr 1fr 1.1fr; gap:18px;}
.util-card{background:#fff; border-radius:14px; padding:20px; box-shadow:0 1px 3px rgba(20,20,40,.06);}
.util-card.dark{background:var(--ink); color:#fff;}
.util-card .head{display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; font-size:14px; font-weight:700; font-family:'Poppins',sans-serif;}
.util-card .head a{font-size:11px; color:var(--skyblue); font-weight:600;}
.agenda-item{display:flex; gap:12px; padding:10px 0; border-bottom:1px solid var(--border); font-size:13px;}
.agenda-item .date{background:var(--surface-2); border-radius:8px; padding:6px 10px; text-align:center; min-width:48px; font-weight:700; color:var(--purple-tint); height:fit-content;}
.agenda-item .date span{display:block; font-size:9px; font-weight:600; color:var(--muted);}
.weather-temp{font-size:44px; font-weight:800; font-family:'Poppins',sans-serif;}
.weather-days{display:flex; justify-content:space-between; margin-top:16px; font-size:12px; color:#dfe3ee;}
.traffic-item{display:flex; gap:10px; align-items:flex-start; padding:10px 0; border-bottom:1px solid var(--border); font-size:13px;}
.traffic-item .ic{width:26px;height:26px;border-radius:6px; background:var(--surface-2); display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:13px;}
.traffic-item p{color:var(--muted); font-size:12px;}

.muted{color:var(--muted);}

/* GENERIC CONTENT PAGES */
.page-content{padding:48px 0; max-width:820px;}
.page-content h2{font-size:24px; margin:28px 0 12px;}
.page-content p{margin-bottom:14px; font-family:'Inter',sans-serif;}
.page-content img{border-radius:12px; margin:16px 0;}

/* TRUST BAR */
.trust-bar{background:linear-gradient(90deg,var(--purple),var(--skyblue)); color:#fff;}
.trust-bar .wrap{display:grid; grid-template-columns:repeat(4,1fr); gap:20px; padding:26px 24px; text-align:center;}
.trust-bar .item{font-size:13px; font-weight:600; font-family:'Poppins',sans-serif;}
.trust-bar .item small{display:block; font-size:11px; font-weight:400; color:#dbe0f0; margin-top:4px; font-family:'Inter',sans-serif;}

/* FOOTER */
footer.site-footer{background:var(--ink); color:#9aa0ad; padding:30px 0; text-align:center; font-size:13px;}
footer.site-footer a{color:#fff;}

@media(max-width:960px){
  nav.primary-nav{display:none;}
  .menu-toggle{display:block;}
  .hero-inner{grid-template-columns:1fr;}
  .hero h1{font-size:38px;}
  .livetv{grid-template-columns:1fr;}
  .live-grid{grid-template-columns:1fr;}
  .grid-4{grid-template-columns:repeat(2,1fr);}
  .grid-3{grid-template-columns:1fr;}
  .trust-bar .wrap{grid-template-columns:repeat(2,1fr);}
}

/* MEDIA PLAYERS */
.tv-player{
  background:#0e1030;
  border-radius:14px;
  overflow:hidden;
  box-shadow:0 14px 40px rgba(20,20,40,.18);
  aspect-ratio:16/9;
  width:100%;
}
.tv-player iframe{
  display:block;
  width:100%;
  height:100%;
  border:0;
}
.stream-note{font-size:12px;color:var(--muted);margin-top:10px;}

.radio-player-card{max-width:760px;}
.rtvp-audio{display:block;width:100%;margin:22px 0 12px;}
.radio-current-sub{font-size:12px;opacity:.8;margin-top:5px;}

.schedule-full{
  background:var(--surface);
  border:1px solid var(--border);
  color:var(--text);
  border-radius:14px;
  padding:22px;
  margin-top:20px;
  box-shadow:0 1px 3px rgba(20,20,40,.06);
}
.schedule-full h2{font-size:20px;margin-bottom:14px;}
.schedule-full-row{
  display:grid;
  grid-template-columns:130px 1fr auto;
  gap:14px;
  align-items:center;
  padding:13px 0;
  border-bottom:1px solid var(--border);
  font-size:14px;
}
.schedule-full-row:last-child{border-bottom:0;}
.schedule-full-row.active strong{color:var(--teal);}
.schedule-full-row span{color:var(--muted);font-size:12px;}
.schedule-time{font-variant-numeric:tabular-nums;font-weight:600!important;color:var(--text)!important;}

@media(max-width:640px){
  .schedule-full-row{grid-template-columns:95px 1fr;gap:8px;}
  .schedule-full-row > span:last-child{grid-column:2;}
}


/* RTV Purmerend media/player refinements */
.tv-frame { position:relative; overflow:hidden; background:#10131a; aspect-ratio:16/9; }
.tv-frame iframe { width:100%; height:100%; border:0; display:block; }
.media-actions { display:flex; gap:10px; flex-wrap:wrap; margin-top:18px; }
.homepage-radio-audio { width:100%; margin-top:12px; }
.radio-dock { position:fixed; left:0; right:0; bottom:0; z-index:9999; background:#171922; color:#fff; border-top:1px solid rgba(255,255,255,.12); box-shadow:0 -8px 30px rgba(0,0,0,.18); }
.radio-dock-inner { max-width:1180px; margin:auto; min-height:64px; padding:8px 18px; display:flex; align-items:center; gap:12px; }
.radio-dock-play { width:44px; height:44px; border:0; border-radius:50%; background:var(--teal); color:#fff; font-size:16px; cursor:pointer; }
.radio-dock-info { min-width:0; flex:1; display:flex; flex-direction:column; }
.radio-dock-info strong { font-size:14px; }
.radio-dock-info span { font-size:12px; opacity:.7; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.radio-dock audio { display:none; }
.radio-dock a { color:#fff; text-decoration:none; font-size:13px; font-weight:700; }
body { padding-bottom:72px; }
@media (max-width:600px){
  .radio-dock-inner { padding:8px 12px; }
  .radio-dock-info strong { font-size:13px; }
  .radio-dock a { display:none; }
  body { padding-bottom:68px; }
}

/* Schedule selector & contact */
.day-picker{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px;}
.day-pill{display:inline-flex;padding:9px 13px;border-radius:999px;background:var(--surface);color:var(--text);text-decoration:none;font-size:12px;font-weight:700;box-shadow:0 1px 3px rgba(20,20,40,.06);}
.day-pill.active{background:var(--teal);color:#fff;}
.contact-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:22px;}
.contact-card{background:var(--surface);color:var(--text);border-radius:14px;padding:26px;box-shadow:0 1px 3px rgba(20,20,40,.06);}
.contact-card h2{margin-top:0;}
.contact-card form{display:grid;gap:14px;}
.contact-card label{font-size:12px;font-weight:700;display:grid;gap:6px;}
.contact-card input,.contact-card textarea{font:inherit;border:1px solid var(--border);border-radius:8px;padding:11px;background:var(--surface-2);color:var(--text);}
.contact-card textarea{resize:vertical;}
.contact-success,.contact-error{padding:12px;border-radius:8px;margin-bottom:14px;font-size:13px;}
.contact-success{background:#e7f8f2;color:#17634e;}
.contact-error{background:#fff0f0;color:#8c2222;}
@media(max-width:700px){.contact-grid{grid-template-columns:1fr;}.day-picker{gap:6px;}.day-pill{padding:8px 10px;}}

/* v4 media layout */
.media-schedule-block{margin-top:42px;}
.media-schedule-block .section-head{margin-bottom:14px;}
.media-schedule-block h3{font-size:18px;margin:0 0 8px;}
.schedule-full-row strong em{font-style:normal;font-size:10px;background:var(--teal);color:#fff;border-radius:4px;padding:2px 5px;margin-left:6px;}
.replay-list{display:grid;gap:14px;}
.replay-item{padding:18px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);}
.replay-item>div:first-child{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:10px;}
.replay-item>div:first-child span{font-size:12px;color:var(--muted);}
.replay-item .rtvp-audio{width:100%;}
.replay-description{font-size:13px;color:#626775;margin-top:10px;}
.replay-service{margin-bottom:32px;}
@media(max-width:700px){
 .replay-item>div:first-child{display:block;}
 .replay-item>div:first-child span{display:block;margin-top:5px;}
 .media-schedule-block{margin-top:30px;}
}

/* v5 live blocks / schedule */
.home-live-section{padding-top:20px}
.home-live-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}
.home-live-heading .more-link{font-size:13px}
.home-tv-player{position:relative;aspect-ratio:16/9;background:#000;border-radius:12px;overflow:hidden}
.home-tv-player iframe{width:100%;height:100%;border:0;display:block}
.home-live-info{display:flex;align-items:baseline;gap:10px;padding-top:12px}
.home-live-info strong{font-size:16px}
.home-live-info span,.home-radio-live span{font-size:13px;opacity:.7}
.home-radio-live{display:flex;align-items:center;gap:14px;margin:30px 0 20px}
.radio-live-icon{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:#fff;font-size:20px}
.home-radio-live strong{display:block;font-size:18px;margin-bottom:4px}
.rtvp-schedule-table input[type=text],.rtvp-schedule-table input[type=time]{max-width:100%}
.schedule-presenter{font-size:13px;opacity:.75}
@media(max-width:700px){.home-live-info{display:block}.home-live-info span{display:block;margin-top:3px}}

/* v8 mobile navigation */
.mobile-menu-toggle{display:none;border:0;background:transparent;color:var(--text);font-size:24px;line-height:1;padding:8px;border-radius:8px;cursor:pointer}
.mobile-nav-panel{background:#fff;border-top:1px solid #edf0f4;box-shadow:0 12px 24px rgba(20,25,40,.08);position:relative;z-index:1000}
.mobile-nav-inner{max-width:1180px;margin:auto;padding:8px 20px 18px}
.mobile-nav-inner ul{list-style:none;margin:0;padding:0}
.mobile-nav-inner li{border-bottom:1px solid var(--border)}
.mobile-nav-inner a{display:block;padding:13px 2px;color:var(--text);font-weight:700;text-decoration:none}
.mobile-nav-panel[hidden]{display:none}
@media(max-width:960px){
  .site-header .header-inner{position:relative}
  .mobile-menu-toggle{display:block;order:2}
  .site-header .primary-nav{display:none}
  .site-header .header-actions{order:3;margin-left:auto}
}
@media(max-width:600px){
  .header-inner{padding-left:14px!important;padding-right:14px!important}
  .header-actions .icon-btn{display:none}
  .header-actions .live-pill{padding:8px 10px;font-size:10px}
  .logo .word span{display:none}
  .logo .word b{font-size:18px}
}

/* v12: clean logo + robust mobile navigation */
.logo{min-width:0;display:flex;align-items:center;}
.site-logo-image{display:block;width:auto!important;height:auto!important;max-width:180px;max-height:52px;object-fit:contain;}
.logo .custom-logo-link{display:flex;align-items:center;}
.logo .custom-logo-link img{width:auto!important;height:auto!important;max-width:180px;max-height:52px;object-fit:contain;}
.logo-fallback{display:flex;align-items:baseline;gap:6px;line-height:1;}
.logo-fallback b{font-size:22px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;}
.logo-fallback span{font-size:9px;letter-spacing:.15em;color:#9aa0ad;}
.mobile-menu-toggle{color:#fff!important;z-index:60;}
.mobile-nav-panel{display:block;}
@media(max-width:960px){
  .site-header .header-inner{display:flex;gap:10px;}
  .site-header .logo{flex:1;min-width:0;}
  .site-header .logo .site-logo-image,.site-header .logo .custom-logo-link img{max-width:min(170px,55vw);max-height:46px;}
  .mobile-menu-toggle{order:2;display:flex!important;align-items:center;justify-content:center;width:42px;height:42px;flex:0 0 42px;}
  .site-header .header-actions{order:3;margin-left:0!important;}
  .mobile-nav-panel{position:absolute;left:0;right:0;top:100%;max-height:calc(100vh - 70px);overflow:auto;}
  .mobile-nav-inner{padding:10px 18px 24px;}
  .mobile-nav-inner a{font-size:16px;padding:15px 4px;}
}
@media(max-width:600px){
  .site-header .header-inner{padding:10px 12px!important;}
  .site-header .logo .site-logo-image,.site-header .logo .custom-logo-link img{max-width:145px;max-height:40px;}
  .header-actions .live-pill{padding:8px 9px;font-size:10px;}
}

/* v12: schedule editor */
.rtvp-schedule-help{background:#eef9f7;border:1px solid #cceee8;border-radius:10px;padding:12px 14px;margin:0 0 14px;color:#245b55;}
.rtvp-schedule-table th{white-space:nowrap;}
.rtvp-schedule-table td{vertical-align:top;padding:10px;}
.rtvp-schedule-table input,.rtvp-schedule-table select{width:100%;min-width:100px;}
.rtvp-schedule-table .rtvp-day-checks{display:grid;grid-template-columns:repeat(2,minmax(45px,1fr));gap:5px;min-width:95px;}
.rtvp-schedule-table .rtvp-day-checks label{font-size:11px;white-space:nowrap;}
.rtvp-schedule-title{margin-top:6px;}
@media(max-width:900px){.rtvp-schedule-table{display:block;overflow-x:auto;white-space:nowrap;}}

/* v13: final header, logo and mobile navigation */
.site-logo-image,
.logo .custom-logo-link img{
  width:auto!important;
  height:auto!important;
  max-width:132px!important;
  max-height:38px!important;
  object-fit:contain!important;
}
.logo .custom-logo-link{display:flex!important;align-items:center!important;line-height:0!important;}
.logo{height:40px!important;}
.header-actions{gap:8px!important;}
.header-media-btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:34px;padding:7px 12px;border-radius:18px;
  font-family:'Poppins',sans-serif;font-size:11px;font-weight:800;
  letter-spacing:.04em;color:#fff!important;
}
.radio-btn{background:var(--teal);}
.tv-btn{background:var(--purple);}
.mobile-menu-toggle{color:#fff!important;background:rgba(255,255,255,.08)!important;border-radius:9px!important;}
@media(max-width:600px){
 .site-logo-image,.logo .custom-logo-link img{max-width:120px!important;max-height:34px!important;}
 .logo{height:36px!important;}
 .header-media-btn{padding:7px 9px;font-size:10px;}
}
.program-card-v13{background:#fff;border:1px solid #e7e9ef;border-radius:16px;overflow:hidden;transition:transform .15s,box-shadow .15s;}
.program-card-v13:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(20,25,40,.08);}
.program-card-v13 .program-photo{aspect-ratio:16/9;background:linear-gradient(135deg,#4a318e,#159a99);overflow:hidden;}
.program-card-v13 .program-photo img{width:100%;height:100%;object-fit:cover;}
.program-card-v13 .program-body{padding:16px;}
.program-card-v13 h3{margin:0 0 5px;font-size:18px;}
.program-card-v13 .presenter{font-size:12px;font-weight:700;color:var(--teal);margin-bottom:7px;}
.program-card-v13 p{font-size:13px;color:var(--muted);margin:0;}
.schedule-full-row.nonstop{opacity:.75;}
.radio-page-actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0 30px;}
@media(max-width:700px){.header-actions{gap:5px!important}.header-media-btn{min-height:32px}.mobile-menu-toggle{margin-left:0}}

/* v13 programming cards */
.schedule-overview-v13{display:grid;gap:14px;}
.schedule-overview-v13 .section-head{margin-bottom:4px;}
.schedule-card-v13{display:grid;grid-template-columns:110px 150px 1fr;gap:18px;align-items:center;background:#fff;border:1px solid #e6e9ef;border-radius:16px;padding:12px 16px;box-shadow:0 3px 12px rgba(20,25,40,.035);}
.schedule-card-time{font-weight:800;font-family:Poppins,sans-serif;font-size:14px;}
.schedule-card-media{width:150px;height:84px;border-radius:10px;overflow:hidden;background:#e9edf3;}
.schedule-show-img{width:100%;height:100%;object-fit:cover;}
.schedule-show-placeholder{width:100%;height:100%;display:grid;place-items:center;background:linear-gradient(135deg,var(--purple),var(--teal));color:#fff;font-family:Poppins,sans-serif;font-weight:800;}
.schedule-card-content h3{font-size:18px;margin:2px 0 5px;}
.schedule-card-content p{font-size:13px;color:var(--muted);margin:5px 0 0;max-width:720px;}
.schedule-card-v13.nonstop{opacity:.8;}
@media(max-width:700px){
 .schedule-card-v13{grid-template-columns:80px 1fr;gap:12px;padding:12px;}
 .schedule-card-time{grid-row:1;grid-column:1/-1;}
 .schedule-card-media{width:100%;height:auto;aspect-ratio:16/9;grid-column:1;}
 .schedule-card-content{grid-column:2;}
 .schedule-card-content h3{font-size:16px;}
}

/* v13 mobile hidden state must win over panel display */
.mobile-nav-panel[hidden]{display:none!important;}

/* v14: newsroom-style programme pages, mobile navigation and category artwork */
.hamburger-lines{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;width:20px;height:20px}.hamburger-lines i{display:block;width:18px;height:2px;border-radius:2px;background:#fff;transition:.18s}.mobile-menu-toggle.is-open .hamburger-lines i:nth-child(1){transform:translateY(6px) rotate(45deg)}.mobile-menu-toggle.is-open .hamburger-lines i:nth-child(2){opacity:0}.mobile-menu-toggle.is-open .hamburger-lines i:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.mobile-nav-panel{display:none;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 18px 40px rgba(20,25,40,.35);z-index:9999}.mobile-nav-panel.is-open{display:block!important;position:fixed;left:0;right:0;max-height:calc(100dvh - 64px);overflow:auto}.mobile-nav-inner{background:var(--surface)}.mobile-nav-inner a{color:var(--text)!important}.mobile-nav-panel[aria-hidden="true"]{display:none!important}
@media(min-width:961px){.mobile-nav-panel{display:none!important}}
.news-category-placeholder{height:100%;min-height:160px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:linear-gradient(135deg,var(--purple),var(--teal));color:#fff;padding:20px}.news-category-placeholder span{font:800 32px/1 Poppins,sans-serif;letter-spacing:.06em}.news-category-placeholder strong{margin-top:8px;font:700 12px/1.2 Inter,sans-serif;text-transform:uppercase;letter-spacing:.12em;opacity:.85}
.show-hero-premium{background:linear-gradient(135deg,#20232b 0%,#4a318e 55%,#159a99 100%);color:#fff;padding:22px 0 64px;overflow:hidden}.show-breadcrumb{font-size:12px;color:rgba(255,255,255,.65);margin-bottom:34px}.show-breadcrumb a{color:#fff}.show-hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:50px;align-items:center}.show-kicker{display:inline-block;font:800 11px/1 Poppins,sans-serif;letter-spacing:.12em;color:#8ce0d9;margin-bottom:14px}.show-hero-copy h1{font-size:clamp(42px,6vw,72px);line-height:.98;letter-spacing:-.04em;margin:0}.show-presenter-premium{font-size:18px;margin:18px 0 0;color:#dce2ea}.show-tagline{font-size:17px;color:#cbd2dc;max-width:620px;margin:12px 0 0}.show-meta-pills{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}.show-meta-pills span{padding:7px 11px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);border-radius:99px;font-size:11px;font-weight:700}.show-artwork-premium{aspect-ratio:1/1;max-width:440px;width:100%;justify-self:end;border-radius:24px;overflow:hidden;background:rgba(255,255,255,.08);box-shadow:0 28px 70px rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.14)}.show-artwork-premium img{width:100%;height:100%;object-fit:cover}.show-art-placeholder{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.22),transparent 32%),linear-gradient(145deg,var(--show-accent,#4a318e),#159a99);padding:30px;text-align:center}.show-art-placeholder span{font:800 clamp(48px,8vw,92px)/.9 Poppins,sans-serif;letter-spacing:.03em}.show-art-placeholder small{margin-top:14px;font:700 13px/1.2 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;opacity:.8}.show-page-premium{display:grid;grid-template-columns:1fr 340px;gap:42px;padding-top:42px}.show-main-column{min-width:0}.show-content{background:#fff;border:1px solid #e6e9ef;border-radius:18px;padding:28px;font-size:16px;line-height:1.75}.show-sidebar{display:grid;gap:14px;align-content:start}.show-schedule-box,.show-short-id{background:#fff;border:1px solid #e6e9ef;border-radius:18px;padding:22px;box-shadow:0 5px 20px rgba(20,25,40,.04)}.show-side-kicker{font:800 10px/1 Inter,sans-serif;letter-spacing:.12em;color:var(--teal)}.show-schedule-box h2{margin:5px 0 16px}.show-schedule-line{display:grid;grid-template-columns:64px 1fr;gap:3px 10px;padding:12px 0;border-top:1px solid #edf0f3;font-size:12px}.show-schedule-line time{grid-column:2;font-weight:800}.show-schedule-line.muted{opacity:.55}.show-short-id{background:var(--ink);color:#fff}.show-short-id small{display:block;color:#8e97a5;font:800 9px/1 Inter,sans-serif;letter-spacing:.12em}.show-short-id strong{display:block;font:800 38px/1 Poppins,sans-serif;margin:8px 0}.show-short-id span{display:block;color:#aeb5bf;font-size:11px;line-height:1.5}
.rtvp-show-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:4px}.rtvp-show-editor-grid input{min-height:38px}.rtvp-show-editor-grid .description{color:#646e78;font-size:12px}
@media(max-width:800px){.show-hero-grid,.show-page-premium{grid-template-columns:1fr}.show-artwork-premium{justify-self:stretch;max-width:none}.show-hero-premium{padding-bottom:40px}.show-hero-copy h1{font-size:48px}.show-page-premium{gap:20px}.rtvp-show-editor-grid{grid-template-columns:1fr}}


/* v18: dark is the default look (per brand style guide), light is opt-in */
:root{
  --page-bg:#0a0e1c;
  --surface:#141834;
  --surface-2:#1d2244;
  --border:#2c3157;
  --text:#f2f4f9;
  --muted:#9aa2bd;
  --header-bg:#080b16;
  --header-text:#ffffff;
  --button-text:#ffffff;
  --purple-tint:#b9a8f0;
}
html[data-theme="light"]{
  --page-bg:#f6f8fb;
  --surface:#ffffff;
  --surface-2:#eef1f5;
  --border:#e2e6ec;
  --text:#22252c;
  --muted:#6c7480;
  --header-bg:#20232b;
  --header-text:#ffffff;
  --button-text:#ffffff;
  --purple-tint:#4a318e;
}
body{background:var(--page-bg);color:var(--text);transition:background .18s,color .18s}
.site-header{background:var(--header-bg)!important}
.header-inner{min-height:64px;padding-top:9px;padding-bottom:9px}
.logo{min-width:0!important;height:42px!important}
.logo-fallback{font-family:Poppins,sans-serif;font-weight:800;font-size:18px;letter-spacing:-.03em;color:#fff;white-space:nowrap}
.site-logo-image,.logo .custom-logo-link img{max-width:116px!important;max-height:34px!important}
.header-actions{gap:7px!important}
.header-media-btn{min-height:36px;padding:8px 13px!important;border:1px solid rgba(255,255,255,.16);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);transition:transform .15s,background .15s,box-shadow .15s;opacity:1!important}
.header-media-btn:hover,.header-media-btn:focus-visible{transform:translateY(-1px);box-shadow:0 5px 16px rgba(0,0,0,.18);color:#fff!important}
.header-media-btn .media-icon{font-size:9px;opacity:.9}
.radio-btn{background:var(--teal)!important}.tv-btn{background:var(--purple)!important}
.theme-toggle{width:36px;height:36px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;display:inline-grid;place-items:center;cursor:pointer;font-size:16px;transition:.15s}
.theme-toggle:hover{background:rgba(255,255,255,.16);transform:translateY(-1px)}
.mobile-menu-toggle{display:none!important}
.mobile-nav-panel{display:none!important}
@media(max-width:960px){
  .primary-nav{display:none!important}
  .mobile-menu-toggle{display:flex!important;order:2;align-items:center;justify-content:center;width:40px;height:40px;flex:0 0 40px;border:0;background:rgba(255,255,255,.08)!important;color:#fff!important;border-radius:9px!important;cursor:pointer}
  .header-actions{order:3}
  .mobile-nav-panel.is-open{display:block!important;position:fixed;left:0;right:0;max-height:calc(100dvh - 64px);overflow:auto;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 18px 50px rgba(0,0,0,.35);z-index:99999}
  .mobile-nav-panel.is-open .mobile-nav-inner{background:var(--surface);padding:8px 18px 22px}
  .mobile-nav-panel.is-open a{color:var(--text)!important;padding:16px 4px;font-size:16px;border-bottom:1px solid var(--border)}
}
@media(max-width:600px){
  .header-inner{padding-left:12px!important;padding-right:12px!important;gap:7px}
  .site-logo-image,.logo .custom-logo-link img{max-width:104px!important;max-height:30px!important}
  .logo-fallback{font-size:15px}
  .header-actions{gap:4px!important}
  .header-media-btn{min-height:32px;padding:6px 8px!important;font-size:9px!important;border-radius:16px!important}
  .theme-toggle{width:32px;height:32px;font-size:14px}
}
/* v17: live-uitzending pulse-animatie en radio-waveform, zoals in de merkstijl (● LIVE-indicators, geluidsgolf) */
@keyframes rtvp-pulse{
  0%{box-shadow:0 0 0 0 rgba(224,41,62,.55)}
  70%{box-shadow:0 0 0 8px rgba(224,41,62,0)}
  100%{box-shadow:0 0 0 0 rgba(224,41,62,0)}
}
.hero-player .badge .dot,.live-pill .dot,.livetv-thumb .live-tag .dot{animation:rtvp-pulse 1.8s ease-out infinite;background:#fff;}
.breaking .tag{display:inline-flex;align-items:center;gap:6px;}
.breaking .tag .dot{width:6px;height:6px;border-radius:50%;background:#c22035;animation:rtvp-pulse 1.8s ease-out infinite;flex-shrink:0;}
.eyebrow-live{display:inline-flex;align-items:center;gap:6px;}
.eyebrow-live .dot{width:7px;height:7px;border-radius:50%;background:#e0293e;animation:rtvp-pulse 1.8s ease-out infinite;flex-shrink:0;}
.rtvp-waveform{display:flex;align-items:flex-end;gap:3px;height:22px;}
.rtvp-waveform span{width:3px;border-radius:2px;background:rgba(255,255,255,.75);animation:rtvp-wave 1.1s ease-in-out infinite;}
.rtvp-waveform span:nth-child(1){height:35%;animation-delay:-1.0s}
.rtvp-waveform span:nth-child(2){height:70%;animation-delay:-0.8s}
.rtvp-waveform span:nth-child(3){height:100%;animation-delay:-0.6s}
.rtvp-waveform span:nth-child(4){height:55%;animation-delay:-0.4s}
.rtvp-waveform span:nth-child(5){height:80%;animation-delay:-0.2s}
@keyframes rtvp-wave{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1)}}
@media (prefers-reduced-motion: reduce){
  .hero-player .badge .dot,.live-pill .dot,.breaking .tag .dot,.livetv-thumb .live-tag .dot,.eyebrow-live .dot,.radio-live-icon .dot,.rtvp-waveform span{animation:none;}
}
.news-card,.program-card-v13,.schedule-card-v13,.show-content,.show-schedule-box,.contact-card,.util-card:not(.dark),.replay-item{background:var(--surface);border-color:var(--border)}
.news-card .body,.program-card-v13 .program-body,.schedule-card-content,.contact-card,.util-card:not(.dark),.replay-item{color:var(--text)}
.news-card p,.program-card-v13 p,.schedule-card-content p{color:var(--muted)}
.day-pill{background:var(--surface);color:var(--text)}
.contact-card input,.contact-card textarea{background:var(--surface-2);color:var(--text);border-color:var(--border)}
/* Category-only artwork: one clean gradient, category is the visual */
.news-category-placeholder{position:relative;min-height:160px;height:100%;display:flex;align-items:flex-end;justify-content:flex-start;padding:20px;background:linear-gradient(135deg,#4a318e 0%,#2f579f 48%,#159a99 100%);color:#fff;overflow:hidden}
.news-category-placeholder:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 35%,rgba(0,0,0,.28) 100%)}
.news-category-placeholder strong{position:relative;z-index:1;font:800 18px/1.05 Poppins,sans-serif;text-transform:uppercase;letter-spacing:.05em;color:#fff;margin:0}
.news-single-placeholder{min-height:360px;border-radius:16px;margin-bottom:30px;align-items:flex-end}
.news-single-placeholder strong{font-size:30px}
/* Short ID is artwork metadata, not a noisy public info box */
.show-short-id{display:none!important}
.show-hero-premium{background:linear-gradient(135deg,#20232b 0%,#4a318e 55%,#159a99 100%)}
.show-content,.show-schedule-box{box-shadow:none}
.show-content{background:var(--surface);color:var(--text)}
.show-schedule-box{background:var(--surface);color:var(--text)}
.show-schedule-line{border-color:var(--border)}
html[data-theme="light"] .show-content,html[data-theme="light"] .show-schedule-box{box-shadow:0 5px 20px rgba(20,25,40,.04)}

/* v16: overal soepelere overgangen, duidelijkere hover/focus-states, betere toetsenbord-zichtbaarheid */
a,button,.btn,.day-pill,.header-media-btn,.theme-toggle,.news-card,.util-card,.replay-item,.contact-card,.radio-dock-play{
  transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease,opacity .15s ease,color .15s ease,border-color .15s ease;
}
a:focus-visible,button:focus-visible,.btn:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,.day-pill:focus-visible{
  outline:2px solid var(--teal);outline-offset:2px;border-radius:4px;
}
.btn{cursor:pointer;}
.btn-primary:hover{background:#0f8483;box-shadow:0 8px 20px rgba(21,154,153,.3);transform:translateY(-1px);}
.btn-secondary:hover{transform:translateY(-1px);opacity:1;background:rgba(255,255,255,.08);}
html[data-theme="light"] .btn-secondary:hover{background:rgba(34,37,44,.06);}
.hero .btn-secondary:hover,.page-hero .btn-secondary:hover,.card-dark .btn-secondary:hover,.radio-card .btn-secondary:hover{background:rgba(255,255,255,.12);}
.section-head .more-link{transition:color .15s ease;}
.section-head .more-link:hover{color:var(--purple);text-decoration:underline;}
.news-card{cursor:default;}
.news-card:hover{box-shadow:0 10px 26px rgba(20,20,40,.12);transform:translateY(-2px);}
.news-card h4 a{transition:color .15s ease;}
.news-card h4 a:hover{color:var(--teal);}
.util-card:hover{box-shadow:0 8px 22px rgba(20,20,40,.1);}
.util-card .head a{transition:color .15s ease;}
.util-card .head a:hover{color:var(--purple);text-decoration:underline;}
.day-pill:hover{box-shadow:0 4px 12px rgba(20,20,40,.12);transform:translateY(-1px);}
.contact-card input:focus,.contact-card textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(21,154,153,.14);outline:none;}
.radio-dock-play:hover{transform:scale(1.06);box-shadow:0 4px 14px rgba(21,154,153,.35);}
.radio-dock a:hover{opacity:.8;}
.replay-item{transition:box-shadow .15s ease,transform .15s ease;}
.replay-item:hover{box-shadow:0 8px 22px rgba(20,20,40,.1);transform:translateY(-1px);}
footer.site-footer a:hover{opacity:.8;text-decoration:underline;}
