:root{color-scheme:dark;font-family:Inter,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;background:#11131a;color:#fff}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;overflow:hidden}body{background:#101116}a{color:inherit;text-decoration:none}.tv{height:100dvh;display:flex;flex-direction:column;background:radial-gradient(circle at 85% 0%,#8f0b293f,transparent 50%),#101117;position:relative;isolation:isolate}.tv.theme-red{background:radial-gradient(circle at 85% 8%,#7d1937a1,transparent 60%),#171018}.tv-head{flex:0 0 auto;height:13vh;min-height:82px;display:flex;align-items:center;justify-content:space-between;padding:1.5vh 4.1vw;border-bottom:1px solid #ffffff20;gap:3vw}.brand{display:flex;align-items:center;gap:1.3vw;min-width:0}.brand img{height:9vh;min-height:59px;max-width:100px;width:auto;object-fit:contain}.brand strong{display:block;font-size:clamp(22px,2.5vw,58px);font-weight:930;letter-spacing:.025em;line-height:1.08}.brand small{display:block;color:#e6cbd1;font-size:clamp(10px,.9vw,20px);font-weight:800;letter-spacing:.22em;margin-top:.5vh}.head-right{text-align:right;font-size:clamp(12px,1.2vw,26px);color:#e7d5da;white-space:nowrap}.head-right strong{display:block;color:white;font-size:clamp(20px,2.6vw,55px);font-variant-numeric:tabular-nums}.tv-main{flex:1;min-height:0;display:grid}.slide{min-height:0;position:relative;padding:5vh 5.6vw;display:flex;flex-direction:column;justify-content:center;gap:2.6vh;overflow:hidden;animation:appear .55s ease}@keyframes appear{from{opacity:.2;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}.eyebrow{font-weight:900;letter-spacing:.18em;text-transform:uppercase;color:#ff9bad;font-size:clamp(12px,1.2vw,23px)}.slide h1{font-size:clamp(32px,5.6vw,112px);line-height:1.05;letter-spacing:-.055em;margin:0;max-width:92%}.lead{font-size:clamp(18px,2vw,42px);color:#efe1e4;white-space:pre-wrap;line-height:1.3}.slide.hero{background-image:linear-gradient(90deg,#17020ddd 12%,#1b030dc2 60%,#141017b0),url('./media/tsv-drohne-v7-7.jpg');background-size:cover;background-position:center}.slide.hero h1{max-width:74%}.slide.cards{justify-content:flex-start}.slide.split{display:grid;grid-template-columns:40% 1fr;align-items:center;gap:4vw}.split .intro{align-self:center}.slide .content{width:100%;min-width:0}.card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25vw}.card-grid article,.info-card{min-width:0;background:#ffffff12;border:1px solid #ffffff22;border-radius:1.3vw;padding:1.6vw 1.8vw;min-height:15vh;display:flex;flex-direction:column;justify-content:center}.card-grid strong{font-size:clamp(18px,2.3vw,48px);line-height:1.17;overflow-wrap:anywhere}.card-grid p,.info-card p{font-size:clamp(14px,1.45vw,28px);color:#e6d5dd;line-height:1.3;margin:.9vh 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.card-grid small{color:#ffb3c3;font-size:clamp(12px,1vw,23px);margin-bottom:.8vh}.big-number{font-size:clamp(80px,12vw,250px);letter-spacing:-.08em;line-height:1;font-weight:850}.weather-now{display:flex;gap:2vw;align-items:center}.weather-emoji{font-size:clamp(45px,7vw,160px)}.forecast{display:grid;grid-template-columns:repeat(4,1fr);gap:.75vw;margin-top:2vh}.forecast div{padding:1.5vw .7vw;text-align:center;border-radius:1vw;background:#ffffff17;font-size:clamp(13px,1.4vw,29px)}.forecast span{display:block;color:#d5c4c8;margin-top:.5vw;font-size:clamp(11px,1.15vw,22px)}.source{font-size:clamp(10px,1vw,20px);color:#e2c8d0;margin-top:1vw}.empty{background:#ffffff12;border:1px solid #ffffff20;padding:2.5vw;border-radius:1vw;color:#e9cfd5;font-size:clamp(18px,2.3vw,45px)}.image-view{max-height:60vh;width:100%;object-fit:contain;filter:drop-shadow(0 1vw 2vw #0004)}.tv-foot{display:flex;align-items:center;justify-content:space-between;gap:2vw;min-height:6.5vh;background:#b80e35;padding:1vh 4vw;font-weight:800;font-size:clamp(12px,1.2vw,25px);text-transform:uppercase;letter-spacing:.06em}.foot-right{display:flex;gap:2vw;align-items:center}.progress-track{height:.65vh;min-width:13vw;background:#ffffff55;border-radius:99px;overflow:hidden}.progress-track #progress{height:100%;background:#fff;transition:width .15s linear;width:0}.badge{font-size:clamp(12px,1.2vw,23px);font-weight:800;background:#f4e8ed;color:#860e2d;display:inline-block;padding:.55vw .95vw;border-radius:9px}.menu-lines{white-space:pre-wrap;font-size:clamp(20px,2.8vw,58px);font-weight:700;line-height:1.45}.news-cards .card-grid strong{font-size:clamp(17px,2.05vw,43px)}.footer-link{font-size:clamp(12px,1.1vw,20px);color:#ffe1e7}.load{text-align:center}.load div{font-size:8vw}.load h1{margin:1vw auto}.load p{font-size:2.5vw}.source a{text-decoration:underline;text-underline-offset:4px}
@media (max-aspect-ratio:10/9){.tv-head{height:11vh;min-height:60px}.brand img{height:8vh;min-height:42px}.brand strong{font-size:clamp(15px,3.4vw,32px)}.brand small{font-size:2vw;letter-spacing:.09em}.slide{padding:4vw}.slide h1{font-size:clamp(25px,6vw,58px)}.slide.split{display:flex;flex-direction:column;align-items:stretch;justify-content:center}.tv-foot{font-size:2vw}.card-grid{gap:2vw}.card-grid article{padding:3vw;border-radius:2vw}.card-grid strong{font-size:3vw}.card-grid p{font-size:2vw}.weather-now .big-number{font-size:10vw}.forecast div{font-size:2.4vw}.foot-right span{display:none}}

/* V9.1 – lesbarer 16:9-Player: der Inhalt scrollt langsam selbstständig. */
.tv-main{min-height:0;overflow:hidden}
.slide{height:100%;max-height:100%;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;overscroll-behavior:contain;scroll-behavior:auto;justify-content:flex-start;align-content:start;padding:3.3vh 4.2vw 4.4vh;gap:1.8vh}
.slide::-webkit-scrollbar{display:none}
.slide.hero,.slide.split{min-height:0}
.slide.split{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:1.7vh}
.slide .intro{flex:0 0 auto;max-width:100%;width:100%}
.slide h1{font-size:clamp(30px,4.1vw,88px);max-width:100%;line-height:1.09;overflow-wrap:break-word}
.slide.hero h1{max-width:84%}
.slide .lead{font-size:clamp(20px,1.85vw,38px);line-height:1.42;overflow-wrap:anywhere;white-space:pre-wrap}
.slide .content{flex:0 0 auto;width:100%;min-height:0;max-width:100%}
.slide .card-grid{align-items:stretch;gap:1.15vw}
.slide .card-grid article{min-height:0;padding:1.45vw 1.6vw;justify-content:flex-start}
.slide .card-grid p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.43}
.slide.longform .card-grid{grid-template-columns:1fr;gap:1.3vh}
.slide.longform .card-grid article{padding:1.3vw 1.8vw}
.slide.longform .card-grid strong{font-size:clamp(20px,2.15vw,43px);line-height:1.18}
.slide.longform .card-grid p{font-size:clamp(17px,1.5vw,31px);line-height:1.48;margin:1vh 0 0}
.slide .menu-lines{white-space:pre-wrap;line-height:1.4;font-size:clamp(20px,2.2vw,50px);overflow-wrap:anywhere}
.slide .source{padding-bottom:1.1vh}
.slide .image-view{max-height:63vh;max-width:100%}
.slide.auto-scrolling{scroll-snap-type:none}
@media(max-aspect-ratio:10/9){.slide{padding:3.2vw}.slide h1{font-size:clamp(24px,5.4vw,46px)}.slide.longform .card-grid strong{font-size:clamp(16px,3.3vw,30px)}.slide.longform .card-grid p{font-size:clamp(15px,2.7vw,26px)}}
@media(prefers-reduced-motion:reduce){.slide{scroll-behavior:auto;animation:none}}


/* TSV V9.2 News-Layouts – designed for 16:9 displays, without cropping. */
.slide.tv-news{gap:1.15vh;padding:2.2vh 3.6vw 2.4vh;background:#171018}
.slide.tv-news .intro{margin-bottom:.1vh}
.slide.tv-news h1{font-size:clamp(28px,3.15vw,76px);letter-spacing:-.03em;line-height:1.1}
.slide.tv-news .eyebrow{font-size:clamp(11px,.9vw,20px)}
.slide.tv-news .lead{font-size:clamp(15px,1.45vw,30px)}
.slide.tv-news .content{display:block}
.news-story{background:#ffffff0e;border:1px solid #ffffff20;border-radius:1.2vw;overflow:hidden;min-width:0}
.news-story h2{font-size:clamp(25px,3vw,66px);line-height:1.1;letter-spacing:-.028em;margin:.5vh 0 1vh;overflow-wrap:anywhere}
.news-story p{white-space:pre-wrap;overflow-wrap:anywhere;color:#f0e8ec;font-size:clamp(19px,1.65vw,35px);line-height:1.47;margin:.7vh 0 1.5vh}
.story-meta{font-size:clamp(12px,1.04vw,23px);font-weight:850;text-transform:uppercase;letter-spacing:.13em;color:#ffaac0}
.story-hint{font-size:clamp(12px,1.02vw,22px);color:#d5bdc8;border-top:1px solid #ffffff25;padding-top:1vh;margin-top:1vh}
.story-media{margin:0;min-width:0;overflow:hidden;background:#1c1922}
.story-media img{display:block;width:100%;height:100%;object-fit:contain;object-position:center}
.story-copy{min-width:0;padding:1.7vw 2vw;overflow-wrap:anywhere}
.story-split{display:grid;grid-template-columns:minmax(0,46%) minmax(0,54%);align-items:stretch}
.story-split .story-media{min-height:44vh;max-height:65vh}
.story-split .story-copy{align-self:center}
.story-split.no-image{grid-template-columns:1fr}
.story-hero .story-media{height:41vh;max-height:48vh}
.story-hero .story-copy{padding:1.55vw 2vw}
.story-hero h2{font-size:clamp(25px,2.65vw,58px)}
.news-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1vw;align-items:stretch}
.news-grid:has(.news-story:only-child){grid-template-columns:1fr}
.news-grid:has(.news-story:nth-child(3)){grid-template-columns:repeat(3,minmax(0,1fr))}
.story-card .story-media{height:23vh}
.story-card .story-copy{padding:1.2vw 1.35vw}
.story-card h2{font-size:clamp(21px,1.8vw,42px)}
.story-card p{font-size:clamp(15px,1.23vw,26px);line-height:1.44}
.story-card .story-meta{font-size:clamp(11px,.8vw,17px)}
.slide.tv-news .source{font-size:clamp(11px,.85vw,18px);padding-bottom:1vh}
.slide.tv-news .content{max-width:100%}
.slide.tv-news .story-split .story-copy{align-self:start}
.slide.external-news .card-grid p{white-space:pre-wrap;font-size:clamp(17px,1.45vw,29px)}
@media(max-aspect-ratio:10/9){.story-split{grid-template-columns:1fr}.story-split .story-media{height:28vh;min-height:0}.news-grid,.news-grid:has(.news-story:nth-child(3)){grid-template-columns:1fr}.story-media img{object-fit:contain}}

/* V9.3 – RSS singles: larger, readable text; uses existing automatic TV scroll/timing. */
.slide.rss-single{padding:2.8vh 4.2vw 4vh;gap:1.6vh;background:#171018}
.slide.rss-single .intro h1{font-size:clamp(30px,3.1vw,70px)}
.rss-feature{background:linear-gradient(110deg,#25202b,#181a22);border:1px solid #ffffff30;border-left:.75vw solid #cf2344;border-radius:1.4vw;padding:2.3vw 3vw;display:flex;flex-direction:column;gap:1.5vh;max-width:100%;overflow-wrap:anywhere}
.rss-meta{font-size:clamp(13px,1.15vw,23px);font-weight:850;color:#ffadc0;letter-spacing:.07em}
.rss-feature h2{font-size:clamp(32px,3.2vw,72px);line-height:1.15;letter-spacing:-.025em;margin:0}
.rss-text{font-size:clamp(23px,2.15vw,46px);line-height:1.43;color:#f7eff2;white-space:pre-wrap}
.rss-missing{color:#e7c5cf;font-style:italic}
.rss-foot{font-size:clamp(12px,1.05vw,23px);color:#e6bdcb;margin-top:1.5vh;padding-top:1.3vh;border-top:1px solid #ffffff30}
.slide.rss-single .source{font-size:clamp(12px,.9vw,21px)}
.slide.rss-multi .card-grid{align-items:start}
@media(max-aspect-ratio:10/9){.rss-feature h2{font-size:clamp(20px,4.5vw,37px)}.rss-text{font-size:clamp(16px,3.3vw,29px)}}


/* V9.5 – Lesbarkeit am Fernseher; Schriftgröße, Gewicht, Groß/Klein, Farbe.
   Alle Werte werden vom Worker serverseitig validiert. Es gibt keine HTML-Eingabe. */
.tv{--tv-display-scale:1.15}
.slide{--tv-title-scale:1;--tv-body-scale:1;--tv-title-weight:900;--tv-body-weight:400;--tv-title-transform:none;--tv-body-transform:none;--tv-title-color:#ffffff;--tv-body-color:#f2e7eb}
/* Header des aktuellen Slides und alle Nachrichtenüberschriften */
.slide .intro h1{font-size:clamp(31px,calc(4.15vw * var(--tv-display-scale) * var(--tv-title-scale)),140px);font-weight:var(--tv-title-weight);text-transform:var(--tv-title-transform);color:var(--tv-title-color)}
.slide.tv-news .intro h1,.slide.rss-single .intro h1{font-size:clamp(30px,calc(3.15vw * var(--tv-display-scale) * var(--tv-title-scale)),125px)}
.slide .news-story h2,.slide .rss-feature h2{font-size:clamp(31px,calc(3.05vw * var(--tv-display-scale) * var(--tv-title-scale)),122px);font-weight:var(--tv-title-weight);text-transform:var(--tv-title-transform);color:var(--tv-title-color)}
.slide .card-grid strong,.slide .story-card h2{font-size:clamp(22px,calc(2.25vw * var(--tv-display-scale) * var(--tv-title-scale)),78px);font-weight:var(--tv-title-weight);text-transform:var(--tv-title-transform);color:var(--tv-title-color)}
/* Text in eigenen Folien und in automatischen Beiträgen */
.slide .intro .lead,.slide .news-story p,.slide .rss-text,.slide .card-grid p,.slide .menu-lines,.slide .empty{font-size:clamp(22px,calc(2.0vw * var(--tv-display-scale) * var(--tv-body-scale)),88px);font-weight:var(--tv-body-weight);text-transform:var(--tv-body-transform);color:var(--tv-body-color);line-height:1.42}
.slide .menu-lines{font-size:clamp(28px,calc(2.6vw * var(--tv-display-scale) * var(--tv-body-scale)),104px)}
.slide .news-grid .story-card p{font-size:clamp(20px,calc(1.6vw * var(--tv-display-scale) * var(--tv-body-scale)),64px)}
.slide .rss-feature .rss-text{font-size:clamp(27px,calc(2.25vw * var(--tv-display-scale) * var(--tv-body-scale)),95px)}
/* Meta/Quellen bleiben ordentlich, die Inhaltsüberschrift größer. */
.tv-head .brand img{background:transparent;filter:drop-shadow(0 2px 2px rgba(0,0,0,.2))}
@media(max-aspect-ratio:10/9){.slide .intro h1{font-size:clamp(26px,calc(5.1vw * var(--tv-title-scale)),65px)}.slide .intro .lead,.slide .news-story p,.slide .rss-text,.slide .card-grid p{font-size:clamp(18px,calc(3.4vw * var(--tv-body-scale)),43px)}}

/* V9.6 – weather deliberately uses native SVG instead of platform-dependent Emoji. */
.slide.weather-slide{padding-top:2.8vh;gap:1.5vh}
.slide.weather-slide .content{width:100%}
.slide.weather-slide .weather-now{display:flex;align-items:center;gap:2.2vw;min-height:19vh;margin-top:.5vh}
.slide.weather-slide .weather-now .weather-icon{width:clamp(76px,9vw,195px);height:clamp(76px,9vw,195px);flex:0 0 auto}
.slide.weather-slide .weather-now .big-number{font-size:clamp(86px,calc(10vw * var(--tv-display-scale)),230px);line-height:1.03;font-weight:900;color:#fff}
.slide.weather-slide .weather-location{font-size:clamp(23px,calc(2.45vw * var(--tv-display-scale) * var(--tv-body-scale)),74px);font-weight:750;color:#f2e7eb;line-height:1.3}
.slide.weather-slide .forecast{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.1vw;margin-top:1.9vh}
.slide.weather-slide .forecast-day{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.5vh;padding:1.3vh .85vw;border-radius:1.25vw;background:#ffffff19;border:1px solid #ffffff32;min-width:0;min-height:17vh}
.slide.weather-slide .forecast-day .weather-icon{width:clamp(48px,4.8vw,104px);height:clamp(48px,4.8vw,104px);flex:0 0 auto}
.slide.weather-slide .forecast-weekday{font-size:clamp(19px,calc(2vw * var(--tv-display-scale)),50px);font-weight:900;line-height:1.15}
.slide.weather-slide .forecast-high{font-size:clamp(26px,calc(2.4vw * var(--tv-display-scale)),61px);font-weight:900;line-height:1.1}
.slide.weather-slide .forecast-low{display:block;font-size:clamp(16px,calc(1.45vw * var(--tv-display-scale)),40px);font-weight:650;color:#eee0e6;line-height:1.22;margin:0;text-align:center}
@media(max-aspect-ratio:10/9){
 .slide.weather-slide .weather-now .weather-icon{width:17vw;height:17vw}
 .slide.weather-slide .forecast{grid-template-columns:repeat(2,minmax(0,1fr));gap:1vw}
 .slide.weather-slide .forecast-day{min-height:12vh}
 .slide.weather-slide .forecast-weekday{font-size:4vw}
 .slide.weather-slide .forecast-high{font-size:5.5vw}
 .slide.weather-slide .forecast-low{font-size:3vw}
}

/* V9.7 – TV: no repeated micro heading by default; per-slide toggles and social media. */
.tv-head .head-right strong{font-size:clamp(42px,4.6vw,110px);font-weight:900;line-height:1.04;letter-spacing:-.045em}
.tv-head .head-right #today{display:block;font-size:clamp(17px,1.6vw,38px);font-weight:650;line-height:1.2;text-transform:capitalize}
.tv.clock-normal .head-right strong{font-size:clamp(32px,3.2vw,80px)}
.tv.clock-extra .head-right strong{font-size:clamp(52px,6vw,130px)}
.tv.clock-extra .tv-head{min-height:100px;height:15vh}
.tv.hide-head .tv-head,.tv.hide-footer .tv-foot{display:none}
.tv-head .brand [hidden],.tv-head .head-right [hidden],.tv-foot [hidden]{display:none!important}
.slide.embedded-media,.slide.social-follow{padding:2.2vh 3.3vw;gap:1vh}
.slide.embedded-media .intro,.slide.social-follow .intro{margin-bottom:1vh}
.slide.embedded-media .intro h1,.slide.social-follow .intro h1{font-size:clamp(31px,3.2vw,80px)}
.slide.embedded-media .content,.slide.social-follow .content{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}
.video-shell{background:#08090c;border:1px solid #ffffff26;border-radius:1.1vw;overflow:hidden;position:relative;width:100%;height:100%;min-height:20vh;flex:1}
.youtube-player{display:block;width:100%;height:100%;border:0;position:absolute;inset:0}
.media-hint{font-size:clamp(13px,1vw,22px);color:#d9c4cb;padding-top:.7vh}
.instagram-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(310px,.9fr);gap:2vw;align-items:stretch;min-height:0;flex:1}
.insta-shell{position:relative;min-height:0;border-radius:1.2vw;background:#f5f5f5;overflow:hidden}
.insta-shell iframe{border:0;position:absolute;inset:0;width:100%;height:100%;background:#fff}
.instagram-side{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.2vh;text-align:center;background:linear-gradient(125deg,#35202b,#211923);padding:2vw;border:1px solid #ffffff29;border-radius:1.2vw}
.instagram-side h2,.follow-text h2{font-size:clamp(36px,3.6vw,82px);line-height:1.1;margin:0}
.instagram-side p,.follow-text p{font-size:clamp(22px,1.9vw,40px);line-height:1.3;margin:.3vh 0}
.instagram-symbol{font-size:clamp(46px,5vw,108px);color:#ff7898;font-weight:700;line-height:1}
.social-qr{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:.8vh;color:#fff;font-size:clamp(18px,1.4vw,34px);font-weight:650;max-width:100%}
.social-code{width:clamp(150px,15vw,330px);height:clamp(150px,15vw,330px);background:#fff;padding:10px;border-radius:1vw;flex:0 0 auto}
.social-code svg{display:block;width:100%;height:100%}
.follow-layout{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4vw;background:linear-gradient(125deg,#3a182d,#1e1b28);border:1px solid #ffffff28;border-radius:1.4vw;padding:3vw 5vw;flex:1;min-height:0}
.follow-text{display:flex;flex-direction:column;gap:1.3vh}
.follow-text strong{color:#ffb0c2;font-size:clamp(28px,2.6vw,58px);overflow-wrap:anywhere}
.follow-layout .social-code{width:clamp(235px,22vw,475px);height:clamp(235px,22vw,475px)}
@media (max-aspect-ratio:10/9){.instagram-layout,.follow-layout{grid-template-columns:1fr}.insta-shell{min-height:30vh}.follow-layout{padding:3vw}.follow-layout .social-code{width:42vw;height:42vw}.tv-head .head-right strong{font-size:6vw}}

/* V9.11: reliable weather fallback must be clearly labelled. */
.weather-stale{margin-top:clamp(8px,1vh,18px);background:#754120;color:#fff3da;padding:clamp(9px,1.1vw,20px);border-radius:12px;font-weight:700;font-size:clamp(15px,1.7vw,32px);}

/* V9.17: TV-Spieltermine mit lesbarer Anstoßzeit aus mehreren Metern. */
.slide.fixtures-slide{padding:2.4vh 3.4vw 2.8vh;gap:1.2vh;background:linear-gradient(130deg,#171017,#2c1021)}
.slide.fixtures-slide .intro h1{font-size:clamp(38px,3.65vw,85px);letter-spacing:-.04em}
.slide.fixtures-slide .content{flex:1;min-height:0;display:flex;flex-direction:column}
.fixture-feature-grid{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4vw;min-height:0;align-items:stretch}
.fixture-feature-grid:has(.fixture-feature:only-child){grid-template-columns:minmax(0,1fr)}
.fixture-feature{background:linear-gradient(150deg,#ffffff16,#ffffff0b);border:2px solid #ffffff45;border-radius:1.3vw;min-width:0;min-height:0;padding:1.4vw;display:flex;flex-direction:column;justify-content:space-between;gap:.6vh;overflow:hidden}
.fixture-heading{display:flex;align-items:center;justify-content:space-between;gap:1vw;flex-wrap:wrap}
.fixture-side{background:#bb1839;border-radius:99px;padding:.4vw .9vw;color:white;font-weight:900;font-size:clamp(17px,1.35vw,31px);letter-spacing:.08em}
.fixture-team{font-size:clamp(16px,1.2vw,28px);font-weight:800;color:#e8d0d9}
.fixture-schedule{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.1vh}
.fixture-date{font-size:clamp(23px,2.05vw,52px);font-weight:850;line-height:1.15;color:#f8f2f3}
.fixture-kickoff{font-size:clamp(45px,4.5vw,105px);font-weight:950;letter-spacing:-.05em;line-height:1.12;white-space:nowrap;font-variant-numeric:tabular-nums}
.fixture-kickoff span{font-size:clamp(16px,1.2vw,30px);font-weight:800;letter-spacing:.03em;color:#ffd2dd;vertical-align:middle}
.fixture-versus{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:start;gap:.8vw;min-height:0}
.fixture-club{text-align:center;min-width:0;display:flex;flex-direction:column;align-items:center;gap:.5vh}
.fixture-logo{width:clamp(55px,6.4vw,130px);height:clamp(55px,6.4vw,130px);background:#ffffff12;border:1px solid #ffffff3d;border-radius:1.1vw;display:flex;align-items:center;justify-content:center;padding:.5vw}
.fixture-logo img{height:100%;width:100%;object-fit:contain}
.fixture-logo-letters{font-size:clamp(23px,2.2vw,52px);font-weight:900;color:#fff}
.fixture-club-name{font-size:clamp(16px,1.65vw,39px);font-weight:900;line-height:1.13;overflow-wrap:break-word;hyphens:auto;max-height:2.4em;overflow:hidden}
.fixture-vs{font-size:clamp(19px,1.6vw,37px);font-weight:950;color:#ffced9;align-self:center}
.fixture-location{border-top:1px solid #ffffff30;padding-top:.6vh;font-size:clamp(14px,1.15vw,28px);line-height:1.17;color:#eee0e5;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slide.fixtures-slide .source{font-size:clamp(11px,.85vw,20px);margin-top:.6vh;padding-bottom:0}
@media(max-aspect-ratio:10/9){.fixture-feature-grid{grid-template-columns:1fr}.fixture-feature{padding:3vw}.fixture-date{font-size:4.2vw}.fixture-kickoff{font-size:8.5vw}.fixture-kickoff span{font-size:2.6vw}.fixture-club-name{font-size:3vw}.fixture-logo{width:14vw;height:14vw}}


/* V9.18 – Spielfolie ohne Überlagerungen, auch in iPhone Safari.
   FIX: Eine nicht umbrechende Kickoff-Zeile hatte die Grid-Mindestbreite
   vergrößert und damit den kompletten Player horizontal verschoben. */
html{ -webkit-text-size-adjust:100%;text-size-adjust:100%; }
.tv,.tv-main,.slide.fixtures-slide,.slide.fixtures-slide .intro,
.slide.fixtures-slide .content,.fixture-feature-grid,.fixture-feature,
.fixture-heading,.fixture-schedule,.fixture-versus,.fixture-club{
  min-width:0;max-width:100%;
}
.tv-main{grid-template-columns:minmax(0,1fr)}
.slide.fixtures-slide{width:100%;overflow-x:hidden;}
.fixture-feature-grid{width:100%;grid-auto-rows:minmax(0,1fr);}
.fixture-feature{gap:clamp(5px,.7vh,14px);}
.fixture-heading{min-height:0;}
.fixture-date{overflow-wrap:anywhere;text-wrap:balance;}
.fixture-kickoff{
 display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap;
 white-space:normal;gap:clamp(5px,.6vw,14px);max-width:100%;
 letter-spacing:0;
}
.fixture-kickoff-time{font-size:clamp(43px,4.5vw,96px);font-weight:950;line-height:1.04;letter-spacing:-.035em;white-space:nowrap;font-variant-numeric:tabular-nums;}
.fixture-kickoff-label,.fixture-kickoff-unit{font-size:clamp(15px,1.1vw,29px);font-weight:850;color:#ffd2dd;letter-spacing:.03em;line-height:1.2;}
.fixture-versus{width:100%;min-width:0;}
.fixture-club{width:100%;min-width:0;}
.fixture-club-name{max-width:100%;max-height:none;overflow:visible;overflow-wrap:anywhere;hyphens:auto;text-wrap:balance;}
.fixture-location{white-space:normal;overflow-wrap:anywhere;overflow:visible;text-overflow:clip;line-height:1.24;text-wrap:balance;}
.fixture-side,.fixture-team{max-width:100%;overflow-wrap:anywhere;}

/* 16:9-TVs: Datum/Anstoß bleiben groß, Namen und Spielort passen in die Karten. */
@media(min-aspect-ratio:11/10){
 .slide.fixtures-slide .content{flex:1 1 auto;}
 .fixture-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
 .fixture-feature-grid:has(.fixture-feature:only-child){grid-template-columns:minmax(0,1fr)}
 .fixture-feature{padding:clamp(12px,1.25vw,30px);}
 .fixture-heading{flex-wrap:nowrap;}
 .fixture-side{font-size:clamp(15px,1.25vw,27px);white-space:nowrap;}
 .fixture-team{font-size:clamp(15px,1.16vw,26px);text-align:right;}
 .fixture-date{font-size:clamp(23px,2.05vw,44px);}
 .fixture-club-name{font-size:clamp(18px,1.5vw,33px);line-height:1.13;}
 .fixture-location{font-size:clamp(15px,1.05vw,24px);}
}

/* Handy-Hochformat: flexible Zeilen, zwei Karten nacheinander statt
   einer überbreiten 16:9-Komposition. Inhalte scrollen bei Bedarf vertikal. */
@media(max-aspect-ratio:10/9){
 .slide.fixtures-slide{padding:clamp(12px,3.4vw,22px);gap:clamp(10px,1.8vh,18px);}
 .slide.fixtures-slide .intro h1{font-size:clamp(25px,6vw,42px);line-height:1.07;}
 .slide.fixtures-slide .content{flex:0 0 auto;max-width:100%;}
 .fixture-feature-grid{display:flex;flex-direction:column;gap:clamp(12px,2vw,20px);height:auto;}
 .fixture-feature{width:100%;flex:0 0 auto;padding:clamp(12px,3vw,20px);border-radius:16px;gap:10px;}
 .fixture-heading{flex-direction:row;align-items:center;justify-content:space-between;gap:8px;}
 .fixture-side{font-size:clamp(12px,3.1vw,17px);padding:6px 10px;letter-spacing:.04em;}
 .fixture-team{font-size:clamp(12px,3vw,16px);text-align:right;}
 .fixture-schedule{gap:5px;}
 .fixture-date{font-size:clamp(18px,4.8vw,25px);line-height:1.18;}
 .fixture-kickoff{gap:6px;}
 .fixture-kickoff-time{font-size:clamp(32px,9vw,52px);line-height:1;}
 .fixture-kickoff-label,.fixture-kickoff-unit{font-size:clamp(12px,2.9vw,16px);}
 .fixture-versus{grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);gap:6px;align-items:center;}
 .fixture-club{gap:5px;}
 .fixture-logo{width:clamp(46px,12vw,68px);height:clamp(46px,12vw,68px);padding:5px;border-radius:10px;}
 .fixture-logo-letters{font-size:clamp(19px,5vw,30px);}
 .fixture-vs{font-size:clamp(14px,3.9vw,21px);}
 .fixture-club-name{font-size:clamp(12px,3.25vw,18px);line-height:1.18;}
 .fixture-location{font-size:clamp(12px,3.15vw,16px);padding-top:8px;}
 .slide.fixtures-slide .source{font-size:clamp(11px,2.8vw,14px);}
}

/* V9.18: auch die Kopfzeile im iPhone-Hochformat ohne Textkollisionen. */
@media(max-width:650px) and (max-aspect-ratio:10/9){
 .tv-head{height:74px;min-height:74px;padding:8px 12px;gap:8px;}
 .tv-head .brand{flex:1 1 auto;gap:8px;min-width:0;}
 .tv-head .brand img{height:49px;min-height:0;max-width:49px;flex-shrink:0;}
 .tv-head .brand strong{font-size:clamp(12px,3.4vw,16px);line-height:1.1;letter-spacing:0;overflow-wrap:anywhere;}
 .tv-head .brand small{display:none;}
 .tv-head .head-right{flex:0 1 47%;max-width:47%;min-width:0;text-align:right;white-space:normal;}
 .tv-head .head-right #today{font-size:clamp(10px,2.7vw,13px);line-height:1.14;}
 .tv-head .head-right strong{font-size:clamp(21px,6vw,28px);line-height:1.1;}
}
.fixture-kickoff .fixture-kickoff-label,.fixture-kickoff .fixture-kickoff-unit{font-size:clamp(15px,1.1vw,29px);}
@media(max-aspect-ratio:10/9){
 .fixture-kickoff .fixture-kickoff-label,.fixture-kickoff .fixture-kickoff-unit{font-size:clamp(12px,2.9vw,16px);}
}

/* V9.19: gut lesbare Speisekarten für große 16:9-Fernseher. */
.slide.tv-food{padding:2.3vh 3vw;gap:1.3vh}
.tv-food-grid{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.6vw;align-items:stretch}
.tv-food-grid:has(.tv-food-day:only-child){grid-template-columns:1fr}
.tv-food-day{border:2px solid #ffffff40;border-radius:1vw;background:#ffffff12;min-width:0;padding:1.4vw 1.6vw;}
.tv-food-day header{display:flex;justify-content:space-between;align-items:center;gap:1vw;border-bottom:1px solid #ffffff40;padding-bottom:1vh;margin-bottom:1.5vh}
.tv-food-day h2{font-size:clamp(30px,3vw,65px);line-height:1.12;margin:0;overflow-wrap:anywhere}
.tv-food-day header span{font-size:clamp(19px,1.8vw,39px);font-weight:800;color:#ffd5df;white-space:nowrap}
.tv-food-dishes{display:grid;gap:1vh}
.tv-food-dish{display:flex;align-items:center;gap:1.1vw;min-width:0;padding:.5vh 0;border-bottom:1px solid #ffffff1e}
.tv-food-dish img{width:clamp(75px,8vw,175px);height:clamp(60px,7vh,128px);object-fit:cover;border-radius:.65vw;flex:none}
.tv-food-dish strong{min-width:0;flex:1;line-height:1.2;font-size:clamp(25px,2.2vw,48px);overflow-wrap:anywhere}
.tv-food-dish b{font-size:clamp(28px,2.3vw,52px);color:#ffcbd7;white-space:nowrap}
@media(max-width:850px),(max-aspect-ratio:10/9){.tv-food-grid{grid-template-columns:1fr}.tv-food-day{padding:3vw;border-radius:14px}.tv-food-day h2{font-size:clamp(24px,4vw,45px)}.tv-food-dish strong{font-size:clamp(21px,3.3vw,38px)}.tv-food-dish b{font-size:clamp(22px,3.5vw,42px)}}
