:root{--red:#c91d33;--red2:#a9152a;--deep:#24191c;--soft:#fff5f5;--grey:#786e73;--border:#eddde0;--bg:#faf8f7;--shadow:0 16px 52px #4913220d}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--deep);font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}img{max-width:100%}.wrap{width:min(1160px,calc(100% - 36px));margin-inline:auto}.small{font-size:.84rem;color:var(--grey)}.eyebrow{color:var(--red);font-size:.78rem;text-transform:uppercase;letter-spacing:.13em;font-weight:850}.sitehead{height:80px;background:#fffdfd;box-shadow:0 1px 0 var(--border);position:sticky;top:0;z-index:30}.headrow{display:flex;align-items:center;justify-content:space-between;height:100%;gap:20px}.identity{display:flex;align-items:center;gap:11px;font-weight:900;letter-spacing:-.035em;line-height:1.03}.identity img{width:55px;height:55px;object-fit:contain}.identity small{display:block;color:var(--red);letter-spacing:.11em;font-size:.65rem;margin-top:6px}.headnav{display:flex;align-items:center;gap:4px}.navlink{border:0;border-radius:13px;background:transparent;padding:11px 12px;font-size:.91rem;font-weight:750;color:#57494d}.navlink:hover,.navlink.active{color:var(--red);background:#fff1f3}.pill-btn,.primary{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:13px;background:var(--red);color:#fff;padding:13px 18px;font-weight:850;transition:background .15s}.pill-btn:hover,.primary:hover{background:var(--red2)}.secondary{border:1px solid #edcfd4;background:white;color:#771c2b;padding:12px 17px;border-radius:13px;font-weight:800}.secondary:hover{background:var(--soft)}.display{font-size:clamp(2.15rem,5.2vw,4.4rem);line-height:1.04;letter-spacing:-.06em;margin:15px 0}.h2{font-size:clamp(1.52rem,3vw,2.15rem);line-height:1.13;letter-spacing:-.045em;margin:6px 0 22px}.lead{line-height:1.7;color:#554b50}.section{padding:45px 0}.sectiontop{display:flex;justify-content:space-between;align-items:end;gap:15px;margin-bottom:22px;flex-wrap:wrap}.panel{background:#fff;border:1px solid var(--border);border-radius:23px;padding:23px;box-shadow:var(--shadow)}.hero{position:relative;min-height:430px;display:flex;align-items:center;background:url('./media/tsv-banner.jpg') center 50%/cover no-repeat;color:white;isolation:isolate}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#130a0cdf 0%,#210a12ab 52%,#00000052 100%);z-index:-1}.hero-inner{padding-block:56px;max-width:710px}.hero .eyebrow{color:#ffc6ce}.hero p{max-width:570px;color:#fff6f6;line-height:1.65;font-size:1.06rem}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.hero .secondary{background:#ffffffeb}.matchbar{background:#fff;border:1px solid var(--border);box-shadow:var(--shadow);border-radius:20px;padding:22px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}.team-title{font-size:clamp(1rem,3vw,1.35rem);font-weight:850;text-align:center}.score-num{font-size:clamp(2rem,5vw,3.35rem);font-weight:950;letter-spacing:-.07em;white-space:nowrap;color:var(--deep)}.score-meta{text-align:center}.live-dot{display:inline-block;background:#e32c45;width:8px;height:8px;border-radius:50%;box-shadow:0 0 0 4px #ffe5e9;margin-right:8px}.muted{color:var(--grey)}.cols-2{display:grid;grid-template-columns:1.4fr 1fr;gap:24px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.post{overflow:hidden;padding:0;display:flex;flex-direction:column}.post img{display:block;width:100%;height:195px;object-fit:cover}.post-content{padding:20px;flex:1;display:flex;flex-direction:column;gap:10px}.post-title{font-size:1.18rem;letter-spacing:-.02em;margin:0;line-height:1.25}.post-body{white-space:pre-wrap;line-height:1.65;font-size:.95rem;color:#54484d;overflow-wrap:anywhere}.tag{display:inline-flex;align-items:center;gap:6px;border-radius:999px;background:#fff0f2;color:#ad2439;padding:6px 10px;font-size:.72rem;font-weight:850;width:max-content}.minirow{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.lineup{display:flex;flex-direction:column;gap:12px}.event{border-left:3px solid #e52f46;padding:8px 13px;background:#fff;border-radius:0 12px 12px 0;line-height:1.6}.event b{color:var(--red);margin-right:8px}.flex{display:flex;align-items:center;gap:12px}.space{display:flex;align-items:center;justify-content:space-between;gap:12px}.menu-lines{white-space:pre-wrap;font-size:1rem;line-height:1.85;color:#50464a}.hidden{display:none!important}.foot{background:#25191e;color:#f7eff1;margin-top:48px;padding:28px 0}.foot .small{color:#d6c3c9}.role{position:fixed;inset:0;background:#18090bc9;z-index:80;display:grid;place-items:center;padding:18px}.rolebox{width:min(600px,100%);background:white;border-radius:28px;padding:30px;box-shadow:0 30px 100px #0006;text-align:center}.rolebox img{width:92px;height:92px;object-fit:contain}.choices{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:25px}.choice{border:1px solid var(--border);border-radius:16px;background:#fffcfc;padding:24px 12px;font-weight:850;display:flex;flex-direction:column;align-items:center;gap:12px}.choice strong{font-size:1.15rem}.choice span{font-size:2rem}.choice:hover{border-color:var(--red);background:var(--soft)}.notice{padding:12px 16px;border-radius:13px;background:#fff2f3;color:#98364a;line-height:1.55}.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);padding:12px 19px;border-radius:12px;color:#fff;background:#302226;box-shadow:var(--shadow);z-index:100;max-width:90vw}.field{display:flex;flex-direction:column;gap:7px}.field label{font-size:.87rem;font-weight:850}.input{border:1px solid #dacbd0;border-radius:12px;padding:12px 13px;background:#fff;width:100%;font-size:1rem;outline:none}.input:focus{border-color:#bd2b43;box-shadow:0 0 0 3px #e72b4220}textarea.input{resize:vertical;min-height:90px;line-height:1.5}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:13px}.stack{display:flex;flex-direction:column;gap:15px}.adminlayout{display:grid;grid-template-columns:220px 1fr;gap:24px;align-items:start}.side{position:sticky;top:103px;display:flex;flex-direction:column;gap:6px}.side button{border:0;border-radius:11px;background:white;padding:13px;text-align:left;font-weight:780;color:#57484d}.side button.active{background:#ffecee;color:var(--red)}.post-edit{padding:16px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:12px}.post-edit:last-child{border:0}.editor-foot{display:flex;gap:10px;flex-wrap:wrap;margin-top:17px}.adminhero{padding:36px 0 28px}.preview-img{max-height:200px;object-fit:contain;border-radius:12px;border:1px solid var(--border)}.hamburger{display:none}
@media(max-width:850px){.headnav{gap:0}.headnav .navlink{padding:8px;font-size:.8rem}.cols-2{grid-template-columns:1fr}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.adminlayout{grid-template-columns:1fr}.side{position:static;flex-direction:row;overflow-x:auto}.side button{white-space:nowrap}.hero{min-height:380px}}
@media(max-width:560px){.wrap{width:min(100% - 26px,1160px)}.sitehead{height:72px}.identity img{width:45px;height:45px}.identity{font-size:.86rem}.identity small{font-size:.56rem}.headnav{gap:0}.headnav .navlink:not(.admin-short){display:none}.headnav .navlink{font-size:.79rem}.hero{min-height:365px;background-position:center}.hero:before{background:linear-gradient(90deg,#210a0ad6,#210a1288)}.hero-inner{padding-block:35px}.display{font-size:2.6rem}.section{padding:34px 0}.panel{padding:18px}.cards{grid-template-columns:1fr}.matchbar{padding:14px 8px;gap:4px}.team-title{font-size:.9rem}.score-num{font-size:2.2rem}.grid2{grid-template-columns:1fr}.choices{gap:9px}.choice{padding:20px 7px}.rolebox{padding:23px 18px}.foot{margin-top:25px}}

.mobile-nav{display:none}@media(max-width:560px){body{padding-bottom:75px}.mobile-nav{position:fixed;bottom:0;left:0;right:0;background:#fffcfc;box-shadow:0 -3px 18px #36172516;border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(4,1fr);z-index:45;padding:9px 8px calc(8px + env(safe-area-inset-bottom,0px))}.mobile-nav a{text-align:center;font-size:22px;line-height:1.1}.mobile-nav small{display:block;font-size:11px;font-weight:850;color:#8f2030;margin-top:4px}}
/* TSV 2.1 — participatory club areas */
.pollrow{margin:10px 0}.pollchoice{display:block;width:100%;text-align:left;padding:12px 14px;border-radius:11px}.pollbarlabel{font-weight:740;font-size:.92rem;margin-bottom:6px}.polltrack{height:12px;background:#f7e0e5;border-radius:50px;overflow:hidden}.polltrack span{display:block;height:100%;background:linear-gradient(90deg,#c61936,#fa5d75);border-radius:50px;transition:width .3s}.ttscore{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:12px 0}.ttscore b{font-size:1.05rem}.ttscore strong{font-size:1.65rem;white-space:nowrap;color:var(--red)}.pushpanel{background:linear-gradient(115deg,#fff,#fff0f2);border:1px solid #f5d8e0}.pushpanel .minirow{margin:12px 0}.pushpanel .small{line-height:1.55}#pollList .panel,#ttResults .panel{min-width:0}.mobile-nav{grid-template-columns:repeat(5,1fr)!important}@media(max-width:560px){.mobile-nav a{font-size:20px}.mobile-nav small{font-size:10px}.ttscore{flex-direction:column;align-items:flex-start;gap:5px}}

/* V2.4: Drei Einträge statt endloser Homepage – vollständige Listen in einem eigenen Dialog. */
.section[id]{scroll-margin-top:95px}
.preview-excess{display:none!important}
.archive-open{display:block;margin-top:17px;max-width:100%;color:#a51f34;border-color:#e8bdc6;background:#fff9fa}
.archive-open:hover{background:#fff0f3}
.archive-dialog{border:0;border-radius:24px;padding:0;width:min(840px,calc(100% - 26px));height:min(86dvh,920px);max-height:86dvh;max-width:840px;overflow:hidden;box-shadow:0 28px 90px #19090cb0;background:#fbf9f9;color:var(--deep)}
.archive-dialog::backdrop{background:#1b0d12be;backdrop-filter:blur(4px)}
.archive-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:20px 22px 15px;background:#fff;position:relative;z-index:2;border-bottom:1px solid var(--border)}
.archive-head h2{font-size:clamp(1.28rem,4vw,1.85rem);line-height:1.14;letter-spacing:-.035em;margin:9px 0 6px}
.archive-head p{margin:0}
.archive-close{flex-shrink:0;font-size:.85rem;padding:10px 13px}
.archive-body{height:calc(100% - 105px);overflow:auto;overscroll-behavior:contain;padding:20px;scrollbar-color:#d3a2ab #faf3f4}
.archive-body .dialog-list{width:100%}
.archive-body .dialog-list.cards{grid-template-columns:repeat(2,minmax(0,1fr))}
.archive-body .dialog-list.lineup{gap:11px}
.post-body{overflow-wrap:anywhere}
#newsList:not(.dialog-list) .post-content:not(.expanded-copy) .post-body,
#ttResults:not(.dialog-list) .ttcard:not(.expanded-copy) .post-body{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4;overflow:hidden}
.inline-more{display:inline-flex;align-self:flex-start;color:#a71531;background:transparent;border:0;font-size:.9rem;font-weight:800;text-decoration:underline;padding:4px 0}
.archive-opened{overflow:hidden}
@media(max-width:600px){.archive-dialog{width:100%;max-width:none;height:94dvh;max-height:94dvh;position:fixed;margin:auto 0 0;border-radius:22px 22px 0 0;inset:auto 0 0 0}.archive-head{padding:16px 17px 13px}.archive-body{height:calc(100% - 102px);padding:14px}.archive-body .dialog-list.cards{grid-template-columns:1fr}.archive-close{padding:10px}.archive-open{width:100%}}

/* V2.5: unaufdringlicher Live-Datenabgleich */
.syncbar{display:flex;justify-content:flex-end;padding-top:12px;padding-bottom:0}.syncbar .tag{font-size:12px;opacity:.9}

/* BFV Liga: kompakter Einstieg, eigene Unterseite ohne lange Startseite */
.bfv-link{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:18px;padding:17px 19px;background:#fff6f7;border:1px solid #efd9de;border-radius:16px}
.bfv-link strong{display:block;margin:6px 0;color:#32191f}
.bfv-link .primary{white-space:nowrap}
.bfv-page-head{padding:44px 0 20px}
.bfv-page-head .h2{margin:8px 0 12px}
.bfv-page-head .lead{max-width:720px}
.bfv-widget-panel{padding:24px 18px 30px}
.bfv-widget-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}
.bfv-widget-scroller{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;padding-bottom:8px}
.bfv-widget-mount{min-width:300px;min-height:569px;margin-inline:auto;text-align:left;max-width:760px}
.bfv-widget-foot{margin-top:17px;border-top:1px solid var(--border);padding-top:14px;line-height:1.6}
@media(max-width:560px){.bfv-link{align-items:stretch}.bfv-link .primary{width:100%;text-align:center}.bfv-page-head{padding:24px 0 12px}.bfv-widget-panel{padding:16px 12px 20px}}

/* v2.5.2 – destructive poll control in admin management */
.poll-delete{color:#ac1831;border-color:#e3a8b2;background:#fff7f8}.poll-delete:hover{background:#ffebee;border-color:#cb4960}.poll-delete:disabled{opacity:.55;cursor:wait}#pollAdminList .post-edit{align-items:center}#pollAdminList .post-edit>div:first-child{min-width:0;overflow-wrap:anywhere}
@media(max-width:560px){#pollAdminList .post-edit{flex-direction:column;align-items:stretch}#pollAdminList .minirow{justify-content:flex-start}#pollAdminList .minirow button{flex:1}}

/* V2.5.3 – Bilder lassen sich auch auf iPhone und in der News-Archivansicht komplett ansehen. */
.post .post-image-open{display:block;width:100%;padding:0;margin:0;border:0;border-radius:0;background:transparent;text-align:inherit;cursor:zoom-in;overflow:hidden}
.post .post-image-open img{display:block;width:100%;height:195px;object-fit:cover;transition:filter .2s ease}
.post .post-image-open:hover img{filter:brightness(.94)}
.post .post-image-open:focus-visible{outline:3px solid var(--red);outline-offset:-3px}
.photo-dialog{inset:0;margin:0;padding:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:0;border-radius:0;background:#181214;color:white;overflow:hidden}
.photo-dialog[open]{display:flex;flex-direction:column}
.photo-dialog::backdrop{background:#100c0deF}
.photo-toolbar{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:16px;padding:calc(10px + env(safe-area-inset-top,0px)) max(18px,env(safe-area-inset-right,0px)) 12px max(18px,env(safe-area-inset-left,0px));background:#181214;color:white;z-index:2}
.photo-toolbar-title{font-weight:750;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.photo-close{border:1px solid #ffffff65;background:#ffffff1c;color:#fff;border-radius:999px;padding:11px 17px;font-size:.95rem;font-weight:800;white-space:nowrap;cursor:pointer}
.photo-close:hover,.photo-close:focus-visible{background:#ffffff38}
.photo-stage{display:flex;min-height:0;min-width:0;flex:1 1 auto;align-items:center;justify-content:center;overflow:hidden;padding:4px 12px}
.photo-stage img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain}
.photo-hint{margin:0;padding:10px max(18px,env(safe-area-inset-right,0px)) calc(14px + env(safe-area-inset-bottom,0px)) max(18px,env(safe-area-inset-left,0px));text-align:center;color:#e4d6da;font-size:.78rem}
body.photo-opened{overflow:hidden}
@media(max-width:500px){.photo-toolbar-title{font-size:.87rem}.photo-close{font-size:.85rem;padding:10px 13px}}


/* V2.6 – Fan-UI: kompakter, ruhiger und schneller erfassbar. Bestehende App-Funktionen unverändert. */
.fan-home .hero{min-height:315px}
.fan-home .hero-inner{padding-block:42px}
.fan-home .hero .display{max-width:760px;font-size:clamp(2rem,4.7vw,3.7rem);line-height:1.08}
.fan-home .hero-actions{margin-top:19px}
.fan-home .hero-actions .primary,.fan-home .hero-actions .secondary{min-height:46px}
.fan-home .section{padding:29px 0}
.fan-home .sectiontop{margin-bottom:14px;align-items:center}
.fan-home .sectiontop .h2{margin:7px 0 0}
.fan-home .sectiontop .eyebrow{font-size:.72rem}
.fan-home .section .lead{margin:0 0 16px;line-height:1.55}
.fan-home .panel{border-radius:19px;box-shadow:0 9px 32px #49132209}
.fan-home .cards{gap:14px}
.fan-home .post .post-content{gap:7px}
.fan-home .post .post-content .post-title{font-size:1.14rem}
.fan-home .syncbar{padding-top:12px;justify-content:flex-start}
.fan-home .syncbar .tag{background:#edf8ee;color:#2c6744;letter-spacing:0;text-transform:none;font-weight:750}
.fan-home .foot-links{display:flex;gap:20px;flex-wrap:wrap}
.fan-home .install-minihelp{font-size:.9rem;color:#6f5058;margin:12px 0 5px}
.fan-home .install-minihelp a{color:var(--red2);font-weight:850;text-decoration:underline;text-underline-offset:3px}
.fan-shortcuts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:15px;margin-bottom:6px}
.fan-shortcut{display:flex;align-items:center;gap:12px;min-width:0;background:#fff;border:1px solid var(--border);border-radius:16px;padding:15px 14px;box-shadow:0 8px 24px #49132208;transition:transform .15s,border-color .15s}
.fan-shortcut:hover{transform:translateY(-2px);border-color:#dc8d9a}
.fan-shortcut:focus-visible{outline:3px solid var(--red);outline-offset:2px}
.shortcut-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#fff3f5;font-size:1.35rem;flex-shrink:0}
.fan-shortcut>span:nth-child(2){min-width:0;font-weight:850;color:#3c2027;line-height:1.3;font-size:.93rem}
.fan-shortcut small{display:block;color:var(--grey);font-size:.72rem;font-weight:650;margin-top:3px}
.shortcut-arrow{margin-left:auto;color:#ae6573;font-size:1rem}
@media(max-width:1000px){.fan-shortcuts{grid-template-columns:repeat(2,minmax(0,1fr))}.fan-home .install-header-link{display:none}}
@media(max-width:560px){
 .fan-home .hero{min-height:285px;background-position:60% center}
 .fan-home .hero-inner{padding-block:29px}
 .fan-home .hero .display{font-size:2.04rem;letter-spacing:-.045em}
 .fan-home .hero p{font-size:.96rem;line-height:1.48;margin:10px 0}
 .fan-home .hero-actions{gap:8px;margin-top:18px}
 .fan-home .hero-actions .primary,.fan-home .hero-actions .secondary{padding:10px 13px;font-size:.83rem;min-height:42px}
 .fan-home .section{padding:22px 0}
 .fan-home .sectiontop{gap:8px}
 .fan-home .sectiontop .h2{font-size:1.46rem}
 .fan-home .sectiontop button.secondary{padding:9px 10px;font-size:.78rem}
 .fan-home .panel{padding:16px}
 .fan-home .post{padding:0}
 .fan-home .syncbar .tag{font-size:.68rem}
 .fan-shortcuts{gap:9px;margin-top:13px}
 .fan-shortcut{padding:11px 10px;gap:8px;border-radius:13px}
 .shortcut-icon{height:34px;width:34px;font-size:1.13rem;border-radius:10px}
 .fan-shortcut>span:nth-child(2){font-size:.79rem}
 .fan-shortcut small{font-size:.63rem}
 .shortcut-arrow{display:none}
}

/* V2.6 – eigenständige, barrierearme Installationsanleitung für iPhone und Android */
.install-page .foot{margin-top:30px}
.install-hero{padding:48px 0 38px;background:linear-gradient(120deg,#fff2f4,#fff 68%);border-bottom:1px solid var(--border)}
.install-headgrid{display:grid;grid-template-columns:1fr 190px;align-items:center;gap:40px}
.install-hero h1{font-size:clamp(2rem,5vw,3.35rem);line-height:1.07;letter-spacing:-.055em;margin:13px 0 15px;max-width:670px}
.install-hero .lead{max-width:670px;margin:0 0 18px;line-height:1.6}
.install-chips{display:flex;flex-wrap:wrap;gap:8px}
.install-chips span{border:1px solid #edd8de;background:#fff;color:#94384b;padding:7px 11px;border-radius:100px;font-size:.81rem;font-weight:800}
.install-app-icon{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:11px;background:#fff;border:1px solid #f1dde2;box-shadow:var(--shadow);border-radius:27px;padding:22px;aspect-ratio:1;max-width:190px}
.install-app-icon img{width:90px;height:90px;object-fit:contain;border-radius:20px}
.install-app-icon span{font-size:.7rem;font-weight:900;color:var(--red);letter-spacing:.1em}
.install-guide-section{max-width:840px;padding-top:33px;padding-bottom:24px}
.install-steps-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:19px}
.install-steps-heading h2{font-size:clamp(1.5rem,3vw,2.2rem);letter-spacing:-.04em;margin:9px 0}
.install-steps-heading p{margin:0}
.device-tabs{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:5px;background:#f4e9eb;border:1px solid #ecd6db;border-radius:17px;margin-bottom:18px}
.device-tab{border:0;border-radius:13px;background:transparent;padding:15px 12px;color:#663943;font-weight:850;font-size:1.05rem}
.device-tab.active{background:white;box-shadow:0 4px 15px #42101d15;color:#ac1e34}
.device-tab:focus-visible{outline:3px solid #b91b31;outline-offset:-2px}
.device-panel[hidden]{display:none}
.device-panel{background:white;border:1px solid var(--border);border-radius:20px;padding:22px;box-shadow:0 10px 28px #4913220a}
.install-callout{border-radius:13px;padding:13px 15px;color:#702b39;background:#fff1f3;border:1px solid #efd9dd;line-height:1.55}
.install-steps{margin:20px 0 0;padding:0;list-style:none;display:flex;flex-direction:column}
.install-steps li{display:grid;grid-template-columns:42px 1fr;gap:15px;padding:16px 0;border-bottom:1px solid #f1e5e8}
.install-steps li:last-child{border-bottom:0;padding-bottom:5px}
.step-number{display:grid;place-items:center;align-self:start;background:#c91d33;color:#fff;width:40px;height:40px;border-radius:12px;font-weight:900;font-size:1.05rem}
.install-steps li strong{font-size:1.04rem;color:#352127}
.install-steps li p{margin:5px 0 0;color:#64565b;line-height:1.58}
.install-steps .step-link{display:inline-flex;margin-top:10px;color:var(--red2);text-decoration:underline;text-underline-offset:3px;font-weight:800}
.install-next{display:grid;grid-template-columns:66px 1fr;gap:18px;margin-top:22px;background:#fff;border:1px solid #e9d7dd;border-radius:20px;padding:23px;box-shadow:0 8px 23px #49132208}
.install-next-icon{display:grid;place-items:center;align-self:start;background:#fff0f3;border-radius:18px;width:62px;height:62px;font-size:2rem}
.install-next h3{margin:3px 0 5px;font-size:1.22rem}
.install-next p{color:#64565b;line-height:1.6;margin:0 0 15px}
.install-share{display:flex;gap:15px;justify-content:space-between;align-items:center;flex-wrap:wrap;padding:23px 4px 5px}
.install-share p{margin:7px 0}
.install-share code{font-size:.9rem;overflow-wrap:anywhere;color:#a51d33}
.install-feedback{min-height:20px;color:#365940;font-size:.87rem;margin:3px 0}
@media(max-width:560px){
 .install-hero{padding:28px 0 24px}
 .install-headgrid{grid-template-columns:1fr 86px;gap:9px}
 .install-hero h1{font-size:2.05rem;margin:7px 0 8px}
 .install-hero .lead{font-size:.91rem;line-height:1.47;margin-bottom:14px}
 .install-chips{gap:5px}
 .install-chips span{font-size:.69rem;padding:6px 9px}
 .install-app-icon{padding:8px;border-radius:17px;gap:5px;max-width:86px}
 .install-app-icon img{width:54px;height:54px}
 .install-app-icon span{font-size:.43rem;letter-spacing:0}
 .install-guide-section{padding-top:25px}
 .install-steps-heading{align-items:flex-start}
 .install-steps-heading .secondary{padding:8px;font-size:.8rem}
 .device-tab{font-size:.96rem;padding:13px 7px}
 .device-panel{padding:15px}
 .install-steps li{grid-template-columns:34px 1fr;gap:11px}
 .step-number{width:33px;height:33px;border-radius:10px}
 .install-steps li strong{font-size:.98rem}
 .install-steps li p{font-size:.94rem}
 .install-next{grid-template-columns:44px 1fr;gap:12px;padding:17px}
 .install-next-icon{width:43px;height:43px;border-radius:13px;font-size:1.55rem}
 .install-next .primary{width:100%;text-align:center;padding:11px 9px}
 .install-share{align-items:stretch}
 .install-share button{width:100%}
}

/* V2.7 · Geplante TT-Spiele ohne Ergebnis */
.ttscore strong.tt-pending{font-size:.95rem;color:#825666;background:#fff2f5;border:1px solid #f1dbe0;border-radius:999px;padding:7px 11px;white-space:nowrap}

/* V2.8: Freiwillige Veranstaltungsinfos, bewusst getrennt vom Veröffentlichungsdatum. */
.event-editor{min-width:0;margin:2px 0;padding:16px;border:1px solid #efd6dc;background:#fffafa;border-radius:15px;display:flex;flex-direction:column;gap:12px}
.event-editor legend{font-size:.95rem;font-weight:850;color:#92253a;padding:0 7px}
.event-editor legend span{font-size:.75rem;font-weight:600;color:#7c6570}
.event-editor .small{margin:0;line-height:1.5}
.post-event-meta{display:flex;flex-wrap:wrap;gap:7px;margin:3px 0 5px;align-items:flex-start}
.post-event-detail{display:inline-flex;max-width:100%;align-items:center;padding:7px 10px;border:1px solid #f1dce2;border-radius:11px;background:#fff6f7;color:#802238;font-size:.81rem;font-weight:750;line-height:1.4;overflow-wrap:anywhere;white-space:normal}
.post-event-location{background:#fffaf8;color:#62474c;border-color:#eee1da}
@media(max-width:560px){.event-editor{padding:13px}.post-event-detail{font-size:.78rem;padding:6px 9px}}


/* V2.9 · Unser Verein: neue, eigenständige Vereinswelt (Bestehendes unberührt). */
.club-page{background:#fbf8f7}.club-page .sitehead{border-bottom:1px solid #f1e4e7}.club-page h2{font-size:clamp(1.75rem,3.7vw,2.65rem);line-height:1.12;letter-spacing:-.055em;margin:9px 0 14px}.club-page h3{letter-spacing:-.026em}.club-page section{scroll-margin-top:138px}.club-page a:focus-visible{outline:3px solid #d6203b;outline-offset:4px}.club-hero{background:#261116 url('./media/tsv-banner.jpg') center/cover no-repeat;position:relative;color:white;isolation:isolate;min-height:490px}.club-hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#190b0df2 0%,#300e18dd 48%,#190b0d65 100%);z-index:-1}.club-hero-content{padding-top:21px;padding-bottom:34px}.club-breadcrumb{font-size:.82rem;display:flex;gap:12px;align-items:center;color:#f9d5db;margin-bottom:43px}.club-breadcrumb a{text-decoration:underline;text-underline-offset:4px}.club-kicker{font-size:.79rem;font-weight:900;letter-spacing:.16em;color:#ffd8df}.club-hero h1{font-size:clamp(2.85rem,6vw,5.5rem);line-height:1.025;letter-spacing:-.07em;margin:15px 0 18px;max-width:850px}.club-hero h1 em{font-style:normal;color:#ffb8c3}.club-hero p{font-size:1.08rem;line-height:1.62;color:#f4e8eb;max-width:620px}.club-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:23px}.club-btn-soft{display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;border-radius:13px;border:1px solid #ffffff7d;background:#ffffff23;color:white;font-weight:850}.club-btn-soft:hover{background:#ffffff38}.club-hero-stats{display:flex;gap:0;flex-wrap:wrap;margin-top:39px}.club-hero-stats span{padding:0 27px;border-right:1px solid #ffffff52;display:flex;flex-direction:column;gap:3px}.club-hero-stats span:first-child{padding-left:0}.club-hero-stats span:last-child{border:0}.club-hero-stats b{font-size:1.35rem;letter-spacing:-.04em}.club-hero-stats small{font-size:.76rem;color:#f1cad0;font-weight:650}.club-section-nav{position:sticky;top:80px;z-index:25;background:#fffefef5;backdrop-filter:blur(12px);box-shadow:0 1px 0 #ecdce0}.club-nav-inner{display:flex;align-items:center;gap:7px;overflow-x:auto;scrollbar-width:none;padding-block:9px}.club-nav-inner::-webkit-scrollbar{display:none}.club-nav-inner a{white-space:nowrap;color:#743345;font-size:.85rem;font-weight:800;padding:10px 14px;border-radius:11px}.club-nav-inner a:hover{background:#fcebef;color:#a3152c}.club-section{padding-top:70px;padding-bottom:66px}.club-intro-grid{display:grid;grid-template-columns:1.14fr 1fr;gap:44px;align-items:center}.club-lead{font-size:1.11rem;line-height:1.78;color:#64525b;max-width:650px}.club-inline-actions{display:flex;gap:18px;flex-wrap:wrap;margin-top:19px}.club-inline-actions a{font-weight:850;color:#b5223b;text-decoration:underline;text-underline-offset:5px}.club-intro-image{position:relative}.club-intro-image img{width:100%;height:315px;object-fit:cover;display:block;border-radius:24px;box-shadow:0 16px 38px #32111b1e}.club-intro-image span{position:absolute;bottom:15px;left:16px;padding:11px 15px;border-radius:13px;background:#fff;color:#a32039;font-weight:900;box-shadow:0 10px 25px #210b151a}.club-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:22px}.club-heading>div{max-width:720px}.club-heading p{color:#736269;line-height:1.65;margin:0}.club-history-block{padding:63px 0;background:#fff;border-top:1px solid #f4e6e9;border-bottom:1px solid #f4e6e9}.club-timeline{position:relative;margin:24px 0 0 6px;padding-left:20px}.club-timeline:before{content:"";position:absolute;left:82px;top:28px;bottom:43px;border-left:2px solid #f0cbd2}.club-time-item{display:grid;grid-template-columns:92px minmax(0,1fr);gap:16px;position:relative;padding:8px 0 18px}.club-year{padding-top:19px;font-size:1.6rem;font-weight:950;color:#ba2440;letter-spacing:-.045em;position:relative}.club-year:after{content:"";position:absolute;right:-1px;top:27px;width:12px;height:12px;background:#cc1e38;border-radius:50%;border:4px solid #fae8eb;box-sizing:content-box;transform:translateX(50%);z-index:1}.club-time-content{border:1px solid #f1dce1;background:linear-gradient(120deg,#fffafa,#fff);border-radius:18px;padding:19px 23px;box-shadow:0 7px 26px #4b11210b}.club-time-content h3{margin:4px 0 8px;font-size:1.17rem}.club-time-content p{margin:0;color:#66575e;line-height:1.62}.club-chip{display:inline-block;background:#ffedf0;color:#a91a31;padding:6px 10px;border-radius:999px;font-size:.7rem;font-weight:900;margin-bottom:8px}.club-source-hint,.club-note{font-size:.83rem;color:#816e76;line-height:1.55;margin-top:15px}.club-source-hint a{color:#b21d36;text-decoration:underline}.club-dept-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.club-dept{display:flex;flex-direction:column;padding:23px 21px;background:#fff;border:1px solid #f0e0e3;border-radius:20px;box-shadow:0 12px 32px #4612210a}.club-dept-red{background:linear-gradient(150deg,#fff4f6,#fff);border-color:#edcbd3}.club-dept-icon{width:49px;height:49px;border-radius:15px;display:grid;place-items:center;font-size:1.6rem;background:#fff0f2}.club-dept h3{font-size:1.23rem;margin:19px 0 7px}.club-dept p{line-height:1.65;color:#6c5c62;margin:0 0 18px}.club-hours{font-weight:800;color:#7b2e41;background:#fff4f5;border-radius:12px;padding:11px 12px;font-size:.83rem;line-height:1.6;margin-top:auto}.club-dept a{display:inline-block;margin-top:16px;font-weight:850;font-size:.86rem;color:#af1832}.club-board-block{background:#f6eeee}.club-board-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.club-person{background:#fff;border:1px solid #ecd8dd;border-radius:17px;padding:21px 17px;min-height:117px;display:flex;flex-direction:column;justify-content:center;gap:11px}.club-person span{font-size:.76rem;color:#866b73;font-weight:800}.club-person strong{font-size:1.05rem;line-height:1.35}.club-person.club-featured{background:#c91d33;color:white}.club-person.club-featured span{color:#ffe2e7}.club-place-grid{display:grid;grid-template-columns:.92fr 1.08fr;border:1px solid #eadce0;border-radius:24px;background:#fff;overflow:hidden;box-shadow:0 14px 40px #3713200d}.club-place-photo img{width:100%;height:100%;min-height:395px;object-fit:cover;display:block}.club-place-details{padding:31px}.club-place-details h3{font-size:1.6rem;line-height:1.3;margin:13px 0}.club-place-details p{line-height:1.7;color:#6a5b62}.club-hours-row{display:flex;gap:12px;margin-top:22px}.club-hours-row>div{flex:1;background:#fff2f4;border-radius:13px;padding:13px}.club-hours-row b,.club-hours-row span{display:block;font-size:.86rem;line-height:1.5}.club-hours-row span{color:#7e4e5c}.club-join{background:linear-gradient(120deg,#99102a,#cb1b37 56%,#821127);color:#fff}.club-join-inner{display:grid;grid-template-columns:minmax(0,1fr) 180px;align-items:center;gap:28px;padding-top:54px;padding-bottom:58px}.club-join h2{font-size:clamp(2.1rem,5vw,3.5rem);letter-spacing:-.055em;margin:13px 0}.club-join p{max-width:710px;line-height:1.7;color:#ffe9ec}.club-join-crest{background:#fff;border-radius:28px;padding:17px;box-shadow:0 14px 45px #27040c44}.club-join-crest img{display:block;width:100%}.club-link-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.club-link-card{display:grid;grid-template-columns:40px minmax(0,1fr) 20px;gap:2px 11px;align-items:center;background:#fff;border:1px solid #f0dde2;padding:15px;border-radius:16px;box-shadow:0 5px 20px #36101c08}.club-link-card:hover{border-color:#ca6e80;background:#fffafb}.club-link-card>span{grid-row:span 2;font-size:1.55rem}.club-link-card strong{font-size:.93rem}.club-link-card small{grid-column:2;color:#76676e;font-size:.75rem}.club-link-card b{grid-column:3;grid-row:1/3;color:#b82c45}.club-sources{padding-top:0;padding-bottom:15px}.club-sources details{border:1px solid #ede1e3;background:#fff;border-radius:15px;padding:17px 20px}.club-sources summary{cursor:pointer;color:#7e4f5b;font-weight:800}.club-source-content{line-height:1.7;color:#67565f;font-size:.85rem}.club-source-content a{text-decoration:underline;color:#ac1d34}.club-source-content li{margin-bottom:7px}.club-page .foot{margin-top:22px}.club-page .foot-links a{text-decoration:none}.club-feature-banner{margin-top:7px;margin-bottom:10px;display:flex;gap:17px;align-items:center;justify-content:space-between;background:linear-gradient(105deg,#fff5f6,#fff);border:1px solid #f0d9df;border-radius:16px;padding:16px 20px}.club-feature-banner strong{font-size:.98rem;color:#7b1d34}.club-feature-banner p{margin:5px 0 0;font-size:.82rem;color:#775f67}.club-feature-banner .secondary{white-space:nowrap}.fan-home #verein .club-home-cta{margin-top:19px}.fan-home #verein .club-home-cta .primary{margin-right:9px}
@media(max-width:900px){.club-dept-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.club-board-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.club-link-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.club-section-nav{top:72px}}
@media(max-width:600px){.club-hero{min-height:0}.club-hero-content{padding-top:17px;padding-bottom:28px}.club-breadcrumb{margin-bottom:24px}.club-hero h1{font-size:2.92rem;line-height:1.04}.club-hero p{font-size:.95rem;line-height:1.55}.club-hero-stats{gap:0;margin-top:28px}.club-hero-stats span{padding:0 14px}.club-hero-stats b{font-size:.99rem}.club-hero-stats small{font-size:.65rem}.club-section{padding-top:42px;padding-bottom:38px}.club-intro-grid{grid-template-columns:1fr;gap:21px}.club-intro-image img{height:210px}.club-history-block{padding:42px 0}.club-heading{gap:13px}.club-heading .secondary{width:100%;text-align:center}.club-timeline{margin-left:0;padding-left:0}.club-timeline:before{left:50px}.club-time-item{grid-template-columns:54px minmax(0,1fr);gap:12px}.club-year{font-size:1.03rem;padding-top:18px}.club-year:after{right:-1px;top:19px;width:9px;height:9px;border-width:3px}.club-time-content{padding:16px 14px}.club-time-content h3{font-size:1.01rem}.club-time-content p{font-size:.88rem}.club-dept-grid{grid-template-columns:1fr;gap:10px}.club-dept{padding:19px}.club-board-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.club-person{padding:16px 12px;min-height:105px}.club-person strong{font-size:.93rem}.club-person span{font-size:.7rem}.club-place-grid{grid-template-columns:1fr}.club-place-photo img{height:190px;min-height:0}.club-place-details{padding:21px 18px}.club-join-inner{grid-template-columns:1fr;gap:20px;padding-top:41px;padding-bottom:44px}.club-join-crest{display:none}.club-link-grid{grid-template-columns:1fr}.club-nav-inner{margin-right:auto}.club-nav-inner a{font-size:.8rem;padding:10px}.club-feature-banner{gap:11px;align-items:stretch;flex-direction:column;padding:14px 16px}.club-feature-banner .secondary{width:100%;text-align:center}.club-page .foot{padding-bottom:95px}}
@media(prefers-reduced-motion:reduce){.club-page *{scroll-behavior:auto}}


/* === TSV V3.0 · themenbasierte Fan-Navigation === */
:root{--portal-ink:#2b1a20}
[data-topic]{scroll-margin-top:105px}
body[data-active-topic="home"] [data-topic]:not([data-topic="home"]),
body[data-active-topic="football"] [data-topic]:not([data-topic="football"]),
body[data-active-topic="tt"] [data-topic]:not([data-topic="tt"]),
body[data-active-topic="aktuell"] [data-topic]:not([data-topic="aktuell"]),
body[data-active-topic="sportheim"] [data-topic]:not([data-topic="sportheim"]){display:none!important}
.portal-hero{min-height:340px}.portal-hero .hero-inner{padding-block:43px}.portal-hero .display{max-width:650px}
.topic-topnav{gap:2px}.topic-topnav .navlink{padding:10px 11px;font-size:.84rem;white-space:nowrap}
.portal-start{padding:28px 0 18px}.portal-section-label{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:16px}.portal-section-label h2{margin:7px 0 0;font-size:clamp(1.4rem,3vw,2rem);letter-spacing:-.04em}.portal-mini-note{font-size:.82rem;color:var(--grey)}
.portal-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px}.portal-tile{position:relative;background:white;border:1px solid #ebdce0;border-radius:19px;padding:20px 15px 22px;min-height:153px;display:flex;flex-direction:column;align-items:flex-start;gap:9px;box-shadow:0 6px 22px #63162909;transition:transform .16s,border-color .16s,box-shadow .16s}.portal-tile:hover,.portal-tile:focus-visible{transform:translateY(-2px);border-color:#d87989;box-shadow:0 12px 24px #6316291c}.portal-tile-icon{font-size:1.75rem}.portal-tile strong{font-size:1.11rem;letter-spacing:-.025em}.portal-tile small{font-size:.75rem;color:#776970;line-height:1.45;padding-right:5px}.portal-tile-arrow{position:absolute;right:13px;top:15px;color:#a72e43;font-weight:bold}.tile-football{background:linear-gradient(145deg,#fff5f5,#fff);border-color:#e7bdc4}
.portal-highlights{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:10px 0 26px}.portal-live-peek,.portal-news-peek{background:white;border:1px solid var(--border);border-radius:21px;padding:21px;box-shadow:0 7px 27px #6c20300a;min-height:205px}.portal-live-peek{background:linear-gradient(135deg,#30171f,#501c2a);color:white;border-color:#54212f}.portal-peek-overline{font-size:.81rem;font-weight:850;display:flex;flex-wrap:wrap;gap:9px;align-items:center;justify-content:space-between;opacity:.9}.portal-online-dot{height:8px;width:8px;border-radius:50%;background:#fb6179;box-shadow:0 0 0 4px #ff617922}.portal-peek-game{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px;margin:27px 0}.portal-peek-game strong{font-size:clamp(.8rem,1.8vw,1rem);overflow-wrap:anywhere}.portal-peek-game strong:last-child{text-align:right}.portal-peek-game b{font-size:clamp(1.35rem,3vw,2.1rem);white-space:nowrap}.portal-peek-link{color:#bb2740;font-size:.87rem;font-weight:850;display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:13px;border-top:1px solid #f1e3e6}.portal-live-peek .portal-peek-link{color:#ffe4e9;border-color:#ffffff30}.portal-news-row{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid #f4eaec}.portal-news-row:first-child{border-top:0}.portal-news-row img{width:65px;height:52px;border-radius:9px;object-fit:cover;flex:none}.portal-news-row span{display:flex;flex-direction:column;gap:4px;min-width:0}.portal-news-row strong{font-size:.87rem;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.portal-news-row small{font-size:.76rem;color:var(--grey)}.portal-home-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--border);background:white;border-radius:14px;padding:13px 20px;margin-bottom:25px;font-size:.83rem}.portal-home-footer a{color:#b12640;font-weight:800}
.topic-intro{margin-top:30px;margin-bottom:12px;padding:25px 28px 22px;border-radius:24px;background:linear-gradient(115deg,#fff,#fff0f2);border:1px solid #eddbe0}.topic-intro h1{font-size:clamp(1.8rem,4vw,2.8rem);line-height:1.1;letter-spacing:-.045em;margin:9px 0}.topic-intro p{margin:0 0 17px;max-width:730px;color:#5e5356;line-height:1.6}.topic-back{display:inline-flex;color:#9d2035;font-size:.82rem;font-weight:850;margin-bottom:17px}.topic-jump{display:flex;flex-wrap:wrap;gap:8px}.topic-jump a{display:inline-flex;border:1px solid #e8c9d0;background:white;color:#83273b;border-radius:999px;padding:10px 14px;font-weight:820;font-size:.86rem}.topic-jump a:hover{background:#fff1f4}
.portal-topic-content{padding:22px 0 28px}.portal-team-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.portal-team-card h3{font-size:1.18rem;margin:12px 0 8px}.portal-team-card p{color:#514449;line-height:1.5}.portal-team-card .secondary{display:inline-flex;margin-top:17px}.portal-training-card{display:flex;justify-content:space-between;align-items:center;gap:26px}.portal-training-card p{color:#66575b;max-width:570px}.portal-training-days{display:flex;flex-wrap:wrap;gap:10px}.portal-training-days span{background:#fff2f4;padding:11px 13px;border-radius:12px;color:#7f2a3b}.portal-training-days b{display:block;font-size:.82rem}
body.fan-home .foot{margin-top:30px}
.mobile-nav a.active{color:#c91d33}.mobile-nav a.active small{color:#b11932}.mobile-nav a.active:before{content:'';display:block;position:absolute;top:0;left:25%;right:25%;height:3px;background:var(--red);border-radius:0 0 4px 4px}.mobile-nav a{position:relative}
@media(max-width:1100px){.topic-topnav .navlink{padding:9px 7px;font-size:.76rem}.portal-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.portal-grid{grid-template-columns:repeat(2,1fr)}.portal-highlights{grid-template-columns:1fr}.portal-training-card{flex-direction:column;align-items:flex-start}.portal-team-grid{grid-template-columns:1fr}.topic-topnav .navlink:not(.admin-short){display:none}.topic-topnav .navlink.admin-short{display:inline-flex}}
@media(max-width:560px){.portal-hero{min-height:285px}.portal-hero .hero-inner{padding-block:31px}.portal-hero .display{font-size:2.35rem}.portal-start{padding:23px 0 12px}.portal-section-label{align-items:start}.portal-mini-note{display:none}.portal-grid{gap:9px}.portal-tile{min-height:139px;padding:14px 12px 15px;border-radius:16px;gap:6px}.portal-tile-icon{font-size:1.48rem}.portal-tile strong{font-size:1rem}.portal-tile small{font-size:.71rem}.portal-highlights{gap:12px;padding-top:8px;padding-bottom:17px}.portal-live-peek,.portal-news-peek{padding:17px;border-radius:17px;min-height:0}.portal-peek-game{margin:21px 0}.topic-intro{margin:15px auto 8px;padding:18px 17px;border-radius:19px}.topic-intro h1{font-size:1.95rem}.topic-jump a{font-size:.8rem;padding:9px 11px}.portal-topic-content{padding:18px 0}.portal-home-footer{margin-bottom:14px}.mobile-nav{grid-template-columns:repeat(5,minmax(0,1fr));padding:7px 4px calc(7px + env(safe-area-inset-bottom,0px))}.mobile-nav a{font-size:20px;min-width:0}.mobile-nav a small{font-size:10px;letter-spacing:-.02em}.mobile-nav a.active{background:#fff1f3;border-radius:10px}}

/* ========= V4.0 · TSV Vereinsportal — konsistente, ruhige Nutzeroberfläche ========= */
:root{--v4-ink:#251b20;--v4-muted:#70646a;--v4-edge:#eadfe2;--v4-surface:#ffffff;--v4-red:#b91432;--v4-pale:#fff3f5}
html{scroll-behavior:smooth;scroll-padding-top:85px}
body{color:var(--v4-ink)}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:3px solid #d72442!important;outline-offset:3px!important}
.sitehead{box-shadow:0 3px 16px #4f13200a}
.sitehead .identity{gap:10px}
.sitehead .identity img{filter:none}
.fan-home .portal-hero{min-height:235px;position:relative;background-position:center 42%}
.fan-home .portal-hero::before{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(62,10,25,.35),transparent 80%)}
.fan-home .hero-inner{position:relative;padding-top:38px;padding-bottom:39px}
.fan-home .hero .display{font-size:clamp(2rem,4vw,3.3rem);max-width:640px;line-height:1.07}
.fan-home .hero p{max-width:580px;font-size:1rem}
.fan-home .hero-actions .primary,.fan-home .hero-actions .secondary{border-radius:12px;box-shadow:none}
.fan-home .portal-start{padding-top:22px;padding-bottom:9px}
.fan-home .portal-section-label h2{font-size:clamp(1.35rem,2.5vw,1.85rem);letter-spacing:-.025em}
.fan-home .portal-mini-note{font-size:.83rem;color:var(--v4-muted)}
.fan-home .portal-grid{gap:12px}
.fan-home .portal-tile{border:1px solid var(--v4-edge);box-shadow:0 5px 17px #4f12200a;background:#fff;border-radius:19px;min-height:145px;transition:transform .15s ease,box-shadow .15s ease}
.fan-home .portal-tile.tile-football{background:linear-gradient(145deg,#fff4f6,#fff);border-color:#e6c8d0}
.fan-home .portal-tile:hover{transform:translateY(-2px);box-shadow:0 10px 20px #4f122015}
.fan-home .portal-tile strong{color:#321d24}
.fan-home .portal-tile small{color:#685c61}
.fan-home .portal-highlights{gap:14px;padding-top:12px}
.fan-home .portal-live-peek,.fan-home .portal-news-peek{box-shadow:0 6px 22px #4f12200d;border:1px solid #eadadd;border-radius:20px}
.fan-home .portal-peek-game strong{min-width:0;overflow-wrap:anywhere}
.fan-home .section{padding:20px 0 24px}
.fan-home .panel{border-radius:19px}
.fan-home .topic-intro{background:linear-gradient(112deg,#ffffff,#fff3f5);border:1px solid #ebd8df;box-shadow:0 5px 20px #4f122009}
.fan-home .topic-intro h1{letter-spacing:-.04em}
.fan-home .topic-jump a{min-height:43px;display:inline-flex;align-items:center}
.fan-home .portal-team-grid{gap:13px}
.fan-home .portal-team-card{display:flex;flex-direction:column;min-height:225px;border:1px solid #ead9df;background:#fff}
.fan-home .portal-team-card .secondary{margin-top:auto;justify-content:center;font-size:.87rem}
.fan-home .portal-team-card .tag{align-self:flex-start}
.fan-home .portal-team-card h3{letter-spacing:-.02em}
.fan-home #live .bfv-link{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:18px;margin-top:22px;border-radius:15px;background:#fff8f9;border:1px solid #ecd9df}
.fan-home #live .bfv-link>div:first-child{flex:1 1 220px}
.fan-home #live .bfv-link .minirow{flex:0 1 auto;display:flex;align-items:center;gap:8px}
.fan-home #live .bfv-link .primary,.fan-home #live .bfv-link .secondary{white-space:nowrap;padding:12px 14px;font-size:.85rem}
.fan-home .matchbar{gap:8px}
.fan-home .matchbar .team-title{overflow-wrap:anywhere}
.fan-home #tischtennis .lead,.fan-home #abstimmungen .lead{font-size:.93rem;color:#695a60}
.v4-bfv-page .bfv-page-head{padding-top:24px;padding-bottom:24px;background:linear-gradient(135deg,#fff6f7,#fff)}
.v4-bfv-page .bfv-page-head .h2{margin-top:6px;margin-bottom:8px}
.v4-bfv-page .bfv-page-head .lead{max-width:800px;font-size:1rem}
.v4-league-tabs{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:24px}
.v4-league-link{display:flex;flex-direction:column;gap:6px;min-width:0;padding:19px 20px;border:1px solid #ead5dc;border-radius:16px;background:#fff;box-shadow:0 6px 20px #5812260b;transition:transform .15s ease}
.v4-league-link:hover{transform:translateY(-2px)}
.v4-league-link.active{border:2px solid var(--red);background:#fff1f3;padding:18px 19px}
.v4-league-link>span{font-size:.8rem;font-weight:850;color:#a32640}
.v4-league-link strong{font-size:1.16rem;color:#302029;overflow-wrap:anywhere;line-height:1.3}
.v4-league-link small{font-size:.81rem;color:#62545b;line-height:1.4}
.v4-bfv-page .bfv-widget-panel{max-width:920px;margin:0 auto}
.v4-bfv-page .bfv-widget-top{align-items:flex-start;gap:10px}
.v4-bfv-page .bfv-widget-top h2{font-size:1.22rem;margin:10px 0 0;line-height:1.35}
.v4-bfv-page .bfv-widget-scroller{margin-top:16px;max-width:100%;min-height:640px;overflow:auto;-webkit-overflow-scrolling:touch}
.v4-bfv-page .bfv-widget-foot{line-height:1.6}
.v4-bfv-page .bfv-widget-foot a{color:var(--red);font-weight:850;text-decoration:underline}
.v4-admin-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:17px}
.v4-admin-steps>div{display:flex;flex-direction:column;gap:6px;background:#fff7f8;border:1px solid #f0e0e5;border-radius:13px;padding:13px;min-width:0}
.v4-admin-steps strong{color:#8f1b32;font-size:.92rem}
.v4-admin-steps span{color:#66565c;font-size:.82rem;line-height:1.45}
#dashboard .side button{min-height:43px;text-align:left}
#dashboard .side button.active{font-weight:850}
#dashboard .panel .h2{letter-spacing:-.025em}
#dashboard .post-edit{gap:12px;overflow-wrap:anywhere}
@media(max-width:900px){.v4-league-tabs{grid-template-columns:1fr 1fr}}
@media(max-width:640px){
 .fan-home .hero-inner{padding-top:27px;padding-bottom:25px}
 .fan-home .portal-hero{min-height:235px;background-position:56% center}
 .fan-home .portal-hero .display{font-size:2rem}
 .fan-home .portal-tile{min-height:132px;padding:14px}
 .fan-home .portal-tile small{font-size:.72rem;line-height:1.38}
 .fan-home .portal-live-peek,.fan-home .portal-news-peek{padding:16px}
 .fan-home .portal-team-card{min-height:unset}
 .v4-league-tabs{grid-template-columns:1fr;margin-top:14px}
 .v4-league-link{padding:14px 16px;gap:3px;border-radius:13px}
 .v4-league-link.active{padding:13px 15px}
 .v4-bfv-page .bfv-page-head{padding-top:14px}
 .v4-bfv-page .bfv-page-head .lead{font-size:.9rem;line-height:1.5}
 .v4-bfv-page .bfv-widget-top{flex-direction:column}
 .v4-bfv-page .bfv-widget-scroller{min-height:580px}
 .v4-admin-steps{grid-template-columns:1fr}
 .v4-admin-steps>div{padding:10px 12px}
 #dashboard .side button{min-height:45px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.fan-home .portal-tile,.v4-league-link{transition:none}}


/* TSV V5 – Spielplan direkt an Termine und schlanke Vereinschronik. */
.tt-official-card{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:18px 19px;margin:0 0 17px;background:#fff4f6;border:1px solid #eabcc6;border-left:5px solid #c91d33;border-radius:18px;box-shadow:0 8px 22px #65192a0b}
.tt-official-copy{min-width:0;max-width:620px}
.tt-official-kicker{display:block;font-size:.74rem;font-weight:900;letter-spacing:.085em;color:#a81630;margin-bottom:7px}
.tt-official-copy strong{font-size:1.15rem;color:#2e1e22;line-height:1.3}
.tt-official-copy p{font-size:.91rem;line-height:1.45;color:#675960;margin:7px 0 0}
.tt-official-button{display:inline-flex;align-items:center;justify-content:center;text-align:center;min-height:48px;white-space:nowrap}
.club-compact{background:#faf8f7}
.club-compact-hero{background:linear-gradient(115deg,#fff3f5 0%,#fff 76%);border-bottom:1px solid #f0dce0;padding:37px 0 42px}
.club-compact-hero-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(220px,.8fr);align-items:center;gap:45px}
.club-compact-back{display:inline-block;font-weight:800;color:#8a2033;margin-bottom:26px}
.club-compact-hero h1{font-size:clamp(2rem,5vw,3.9rem);line-height:1.08;letter-spacing:-.05em;margin:16px 0 19px;color:#26191d}
.club-compact-hero h1 em{font-style:normal;color:#be1932}
.club-compact-hero-copy>p{font-size:1.12rem;color:#63555a;line-height:1.65;max-width:610px;margin:0 0 24px}
.club-compact-mainlink{display:inline-flex;align-items:center;justify-content:center;min-height:49px}
.club-compact-hero-image{border-radius:22px;overflow:hidden;box-shadow:0 15px 45px #58272f26;aspect-ratio:4/3;background:#f1dce0}
.club-compact-hero-image img{width:100%;height:100%;object-fit:cover;display:block}
.club-compact-history{padding:47px 0 24px;max-width:1000px}
.club-compact-history h2{font-size:clamp(1.8rem,3.8vw,2.7rem);letter-spacing:-.04em;margin:6px 0 12px}
.club-compact-subtext{color:#65565d;font-size:1.03rem;line-height:1.65;margin:0 0 26px;max-width:760px}
.club-compact-timeline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.club-compact-timeline article{display:flex;align-items:flex-start;gap:15px;padding:21px;background:#fff;border:1px solid #efdcdf;border-radius:18px;box-shadow:0 6px 22px #43111e0a}
.club-compact-year{flex:none;font-weight:900;color:#a91b31;border-radius:10px;background:#fff0f2;padding:9px 10px;font-size:1.1rem;min-width:64px;text-align:center}
.club-compact-timeline h3{margin:2px 0 7px;font-size:1.07rem}
.club-compact-timeline p{margin:0;color:#62565b;line-height:1.55;font-size:.92rem}
.club-compact-web{padding:23px 0 68px;max-width:1000px}
.club-compact-web-content{display:flex;align-items:center;gap:19px;background:#fff;border:1px solid #ebced4;padding:22px;border-radius:20px}
.club-compact-web-icon{font-size:2rem;flex:none}
.club-compact-web-content>div{flex:1;min-width:0}
.club-compact-web h2{font-size:1.28rem;margin:0 0 6px;letter-spacing:-.02em}
.club-compact-web p{margin:0;color:#67585e;line-height:1.5;font-size:.94rem}
.club-compact-web .primary{flex:none;white-space:nowrap}
@media(max-width:750px){.tt-official-card{flex-direction:column;align-items:stretch;gap:15px}.tt-official-button{width:100%;white-space:normal}.club-compact-hero-grid{grid-template-columns:1fr;gap:23px}.club-compact-hero-image{max-height:290px}.club-compact-timeline{grid-template-columns:1fr}.club-compact-web-content{flex-wrap:wrap}.club-compact-web-content .primary{width:100%;text-align:center;white-space:normal}}
@media(max-width:560px){.club-compact-hero{padding:24px 0 28px}.club-compact-back{margin-bottom:18px}.club-compact-hero h1{font-size:2.2rem}.club-compact-hero-copy>p{font-size:.97rem;line-height:1.54}.club-compact-history{padding:28px 0 15px}.club-compact-subtext{font-size:.95rem}.club-compact-timeline article{padding:15px;gap:11px}.club-compact-year{min-width:59px;font-size:1rem}.club-compact-web{padding-bottom:36px}.club-compact-web-content{padding:18px;gap:12px}.club-compact-web h2{font-size:1.15rem}}

/* V5.1: Der offizielle TT-Spielplan ist direkt beim Einstieg in die Abteilung sichtbar. */
.topic-jump .tt-official-quick{background:#fff1f3;color:#9f1830;border:1px solid #efb9c4;font-weight:800}
.topic-jump .tt-official-quick:hover,.topic-jump .tt-official-quick:focus-visible{background:#ffe6eb;border-color:#ce5369}
.tt-official-card{border:2px solid #e9b3bf;background:linear-gradient(115deg,#fff7f8,#fff);box-shadow:0 7px 26px #8221380b}
.tt-official-button{min-height:52px}
@media(max-width:540px){.tt-official-card{padding:17px}.tt-official-button{font-size:.97rem}}

/* V6: unaufdringliches Sponsor-Laufband – pausiert bei Interaktion und reduzierter Bewegung. */
.sponsor-section{padding:6px 0 28px;overflow:hidden}
.sponsor-heading{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:15px}
.sponsor-heading h2{margin:5px 0 0;font-size:clamp(1.3rem,3vw,1.8rem);letter-spacing:-.04em}
.sponsor-heading>span{color:var(--grey);font-size:.83rem}
.sponsor-marquee{border:1px solid var(--border);background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 8px 26px #4913220a;position:relative;padding:13px 0}
.sponsor-marquee::before,.sponsor-marquee::after{content:'';width:32px;position:absolute;z-index:2;top:0;bottom:0;pointer-events:none}
.sponsor-marquee::before{left:0;background:linear-gradient(90deg,#fff,transparent)}
.sponsor-marquee::after{right:0;background:linear-gradient(270deg,#fff,transparent)}
.sponsor-track{display:flex;align-items:center;width:max-content;animation:tsvSponsorSlide 48s linear infinite}
.sponsor-group{display:flex;align-items:center;gap:14px;flex:none;padding-right:14px}
.sponsor-logo{height:105px;width:188px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1px solid #f4e8eb;border-radius:15px;background:#fff;transition:background .18s,transform .18s;text-align:center;padding:10px 13px;overflow:hidden}
.sponsor-logo img{height:64px;max-width:158px;width:100%;object-fit:contain}
.sponsor-logo span{font-size:.72rem;color:#7f6870;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.sponsor-logo[href]:hover,.sponsor-logo[href]:focus-visible{background:#fff5f7;transform:translateY(-2px);outline-color:var(--red)}
.sponsor-marquee:hover .sponsor-track,.sponsor-marquee:focus-within .sponsor-track{animation-play-state:paused}
.sponsor-track.sponsor-single{width:100%;justify-content:center;animation:none}
@keyframes tsvSponsorSlide{to{transform:translateX(-50%)}}
@media(max-width:560px){.sponsor-section{padding:5px 0 16px}.sponsor-heading>span{font-size:.76rem}.sponsor-marquee{border-radius:15px;padding:10px 0}.sponsor-logo{width:152px;height:94px}.sponsor-logo img{height:55px}.sponsor-group{gap:10px;padding-right:10px}}
@media(prefers-reduced-motion:reduce){.sponsor-track{animation:none;transform:none}.sponsor-marquee{overflow-x:auto;scrollbar-width:thin}.sponsor-track .sponsor-group:nth-child(2){display:none}}
/* Sponsoren in der Redaktion */
.sponsor-form-hint{background:#fff4f5;border-radius:13px;padding:13px 16px;color:#6c3a46;line-height:1.55}
.sponsor-admin-item{display:flex;gap:14px;align-items:center;padding:14px;border:1px solid var(--border);border-radius:14px;background:#fff;margin-bottom:11px}
.sponsor-admin-item img{width:98px;height:74px;object-fit:contain;background:#fff9fa;border-radius:11px;padding:7px;flex:none}
.sponsor-admin-info{display:flex;flex:1;flex-direction:column;gap:7px;min-width:0}
.sponsor-admin-info input{max-width:510px}
.sponsor-admin-actions{display:flex;flex-wrap:wrap;gap:7px}
.sponsor-admin-actions button{padding:9px 12px;font-size:.86rem}
.sponsor-admin-item .small{overflow-wrap:anywhere}
@media(max-width:640px){.sponsor-admin-item{align-items:flex-start;flex-wrap:wrap}.sponsor-admin-info{flex:1 1 calc(100% - 115px)}.sponsor-admin-actions{width:100%}.sponsor-admin-actions button{flex:1}}


/* V7 – Pull-to-Refresh: dezenter Hinweis, nur bei Wischgeste sichtbar. */
html, body { overscroll-behavior-y: contain; }
.tsv-pull-refresh { --pull-amount: 0px; position:fixed; z-index:1200; top:calc(env(safe-area-inset-top, 0px) + 10px); left:50%; max-width:calc(100vw - 32px); transform:translate(-50%, calc(-100% - 34px + var(--pull-amount))); display:flex; align-items:center; gap:10px; padding:11px 17px; border:1px solid #ecd0d6; border-radius:999px; background:#fff; box-shadow:0 10px 30px #48182730; color:#a51d36; font:800 13px/1.3 system-ui,sans-serif; opacity:0; pointer-events:none; transition:opacity .13s ease, transform .18s ease; white-space:nowrap; }
.tsv-pull-refresh.tsv-pull-visible { opacity:1; }
.tsv-pull-refresh .tsv-pull-icon { display:inline-block; font-size:23px; line-height:1; transform:rotate(0deg); transition:transform .18s ease; }
.tsv-pull-refresh.tsv-pull-ready .tsv-pull-icon {transform:rotate(150deg);}
.tsv-pull-refresh.tsv-pull-loading .tsv-pull-icon { animation:tsv-refresh-spin .8s linear infinite; }
@keyframes tsv-refresh-spin {to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.tsv-pull-refresh,.tsv-pull-refresh .tsv-pull-icon{transition:none!important;animation:none!important}}


/* V7.1 Fußball: Die nächsten Begegnungen zuerst, danach Liveticker & direkt die BFV-Ligen. */
.football-fixtures .sectiontop{align-items:center;gap:12px}
.football-fixture-intro{color:#66585f;font-size:.95rem;line-height:1.55;margin:2px 0 20px}
.football-fixture-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.football-fixture-team{background:#fff;border:1px solid #edd5dc;border-radius:19px;padding:18px;box-shadow:0 6px 20px #4f122009;min-width:0}
.football-fixture-top{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:12px}
.football-fixture-team h3{font-size:1.12rem;margin:0;color:#2b2026;line-height:1.35}
.football-fixture-team .football-fixture-league{font-size:.75rem;color:#a1213a;font-weight:850;background:#fff0f3;border-radius:7px;padding:5px 8px}
.football-fixture-item{padding:15px 0;border-top:1px solid #f0e4e8}
.football-fixture-datetime{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:#971d36;font-weight:850;font-size:.91rem;margin-bottom:11px}
.football-fixture-pairing{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:7px;align-items:center;line-height:1.32}
.football-fixture-club{font-weight:800;font-size:.91rem;overflow-wrap:anywhere;min-width:0}
.football-fixture-club:last-child{text-align:right}
.football-fixture-vs{color:#8b7c82;font-weight:800;font-size:.78rem}
.football-fixture-place{margin-top:9px;font-size:.79rem;line-height:1.45;color:#695c62}
.football-fixture-where{color:#1e774d;font-size:.78rem;font-weight:850;margin-top:10px}
.football-fixture-more{display:inline-block;padding:9px 0;color:#9b1b34;text-decoration:underline;font-size:.82rem;font-weight:750}
.football-fixture-foot{font-size:.78rem;line-height:1.5;color:#75676c;margin:16px 2px 0}
.football-fixture-empty{padding:12px 0;color:#665860;font-size:.9rem}
.football-leagues .football-league-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;align-items:start}
.football-league-card{min-width:0;background:white;border:1px solid #eed7de;border-radius:20px;overflow:hidden;box-shadow:0 5px 18px #4f122008}
.football-league-heading{padding:20px 20px 15px;background:#fff5f7;border-bottom:1px solid #f2dee4}
.football-league-heading span{font-size:.77rem;color:#a4213b;font-weight:800}
.football-league-heading h3{font-size:1.18rem;margin:7px 0;color:#261c21;line-height:1.4}
.football-league-heading p{font-size:.8rem;color:#695963;margin:0}
.football-league-card iframe{width:100%;height:835px;display:block;border:0;background:#fff}
.football-league-bottom{padding:12px 18px;border-top:1px solid #f0e4e8}
.football-league-bottom a{font-size:.82rem;font-weight:750;color:#9a1a34}
/* Eingebettete BFV-Seite zeigt nur das offizielle Widget und keine zweite Vereinsnavigation. */
.v4-bfv-page.bfv-embed{background:#fff!important;padding:0!important;margin:0!important;min-width:0!important}
.bfv-embed .sitehead,.bfv-embed .bfv-page-head,.bfv-embed .foot,.bfv-embed .mobile-nav,.bfv-embed .bfv-widget-top,.bfv-embed .bfv-widget-foot,.bfv-embed .tsv-pull-refresh{display:none!important}
.bfv-embed main,.bfv-embed .section,.bfv-embed .wrap,.bfv-embed .panel{padding:0!important;margin:0!important;max-width:none!important;width:100%!important;border:0!important;box-shadow:none!important;border-radius:0!important;background:#fff!important}
.bfv-embed .bfv-widget-scroller{margin:0!important;padding:0!important;overflow:visible!important;min-height:0!important;width:100%!important}
.bfv-embed .bfv-widget-mount{min-width:300px}
@media(max-width:960px){.football-leagues .football-league-grid{grid-template-columns:1fr}.football-league-card iframe{height:810px}}
@media(max-width:680px){.football-fixture-grid{grid-template-columns:1fr}.football-fixture-team{padding:16px}.football-fixture-datetime{font-size:.88rem}.football-league-heading{padding:16px}.football-league-card iframe{height:790px}.football-leagues .football-fixture-intro{font-size:.88rem}}

/* Schneller zu den Partien: kompakter Einstieg gerade auf dem Handy */
.fan-home .topic-intro[data-topic="football"]{padding-top:19px;padding-bottom:17px;margin-bottom:5px}
.fan-home .topic-intro[data-topic="football"] h1{font-size:clamp(1.7rem,3vw,2.1rem);margin-top:5px;margin-bottom:8px}
.fan-home .topic-intro[data-topic="football"] p{max-width:760px;font-size:.93rem;line-height:1.48;margin-bottom:0}
.fan-home #naechste-spiele{padding-top:11px}
.fan-home #naechste-spiele .sectiontop{margin-bottom:7px}
.fan-home #naechste-spiele .h2{font-size:clamp(1.4rem,3vw,1.85rem)}
.fan-home #naechste-spiele .football-fixture-intro{margin-bottom:15px}

/* Spiele beider Mannschaften zeitlich gemischt: kompakt und sofort lesbar. */
.football-fixture-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.football-fixture-single{padding:16px 17px;display:flex;flex-direction:column;gap:8px}
.football-fixture-single .football-fixture-top{margin:0}
.football-fixture-single .football-fixture-datetime{margin:0;color:#981c35;font-size:.95rem}
.football-fixture-single .football-fixture-pairing{padding:7px 0;min-height:42px}
.football-fixture-single .fixture-ours{color:#982139}
.football-fixture-single .football-fixture-where{margin:0}
.football-fixture-single .football-fixture-place{margin:0}
.football-fixture-sources{font-size:.83rem;line-height:1.6;color:#716368;margin:13px 2px}
.football-fixture-sources a{color:#9b2138;text-decoration:underline;font-weight:800;margin:0 7px 0 3px}
@media(max-width:680px){.football-fixture-grid{grid-template-columns:1fr}.football-fixture-single{padding:14px 16px;gap:6px}.football-fixture-single .football-fixture-pairing{gap:7px}.football-fixture-single .football-fixture-datetime{font-size:.92rem}}

/* V7.2 – besonders platzsparende Fußball-Spielplanliste, gut lesbar auch für ältere Fans. */
.football-fixture-grid.fixture-list{display:flex;flex-direction:column;gap:0;background:#fff;border:1px solid #ecd7dd;border-radius:16px;overflow:hidden;box-shadow:0 3px 12px #61102308}
.fixture-line{display:grid;grid-template-columns:118px minmax(0,1fr);gap:14px;align-items:center;padding:12px 16px;border-bottom:1px solid #f2e6e9;min-width:0}
.fixture-line:last-child{border-bottom:0}
.fixture-when{display:flex;flex-direction:column;gap:3px;font-size:.84rem;color:#8c1a34;border-right:1px solid #f0e2e6;padding-right:12px}
.fixture-when strong{font-size:.94rem;color:#5e1529;white-space:nowrap}
.fixture-when span{font-weight:800}
.fixture-main{min-width:0;display:flex;flex-direction:column;gap:3px}
.fixture-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:.75rem;color:#695c62}
.fixture-chip{display:inline-block;font-weight:850;color:#9c1c35;background:#fff0f3;border-radius:5px;padding:2px 7px}
.fixture-match{display:flex;gap:7px;align-items:baseline;flex-wrap:wrap;font-size:.93rem;line-height:1.35;color:#251b20;overflow-wrap:anywhere}
.fixture-match strong{font-weight:750}.fixture-vs{color:#9b8b92}
.fixture-venue{font-size:.77rem;color:#71676c;overflow-wrap:anywhere}
.fixture-list .football-fixture-empty{padding:18px;font-size:.9rem}
.fixture-admin-row{gap:12px}.fixture-admin-row .minirow{flex-wrap:wrap}
@media(max-width:650px){
 .fixture-line{grid-template-columns:88px minmax(0,1fr);gap:9px;padding:10px 11px}
 .fixture-when{font-size:.76rem;padding-right:8px}.fixture-when strong{font-size:.78rem}
 .fixture-meta{font-size:.71rem;gap:5px}.fixture-match{font-size:.84rem;gap:5px}
 .fixture-venue{font-size:.73rem}
}
@media(max-width:350px){.fixture-line{grid-template-columns:74px minmax(0,1fr)}.fixture-when strong{white-space:normal}}


/* ============================================================
   V7.4 Designsystem – TSV Rot-Weiß auf ruhigem Hellgrau
   Nur Präsentation: keine Backend- oder Funktionsänderungen.
   ============================================================ */
:root{
 --red:#c71932;--red2:#a51129;--deep:#232329;--soft:#fff3f4;
 --grey:#656773;--border:#e2e4e8;--bg:#f3f4f6;
 --shadow:0 5px 22px rgba(33,37,46,.045);
}
html{scroll-padding-top:92px}
body{background:linear-gradient(180deg,#fafbfc 0,#f3f4f6 380px,#f3f4f6 100%);color:var(--deep)}
.sitehead{background:#fff;box-shadow:0 1px 0 #e5e7eb,0 3px 17px rgba(40,40,55,.035)}
.sitehead .identity small{color:#b61a31}
.navlink{color:#474954}
.navlink:hover,.navlink.active{background:#fff1f2;color:#af122a}
.panel,.portal-news-peek,.portal-tile,.portal-live-peek,.portal-home-footer,
.football-league-card,.football-fixture-single,.install-next,.device-panel{
 border-color:#e3e5e9;box-shadow:0 5px 20px rgba(42,42,60,.045);
}
.panel{border-radius:18px}
.secondary{border-color:#dfdfe5;background:#fff;color:#9c172c}
.secondary:hover,.topic-jump a:hover{background:#fff4f5;border-color:#e9b6bf}
.primary,.pill-btn{background:#c71932}
.primary:hover,.pill-btn:hover{background:#a9152a}
.tag{background:#fff0f2;color:#a91a30}
.portal-start,.portal-highlights{position:relative}
.portal-tile{background:#fff;border-radius:17px;transition:transform .17s ease,box-shadow .17s ease,border-color .17s ease}
.portal-tile:hover{transform:translateY(-2px);border-color:#eabcc4;box-shadow:0 11px 29px rgba(80,27,42,.08)}
.topic-intro{border:1px solid #e6e2e6;border-top:3px solid #d01b36;background:linear-gradient(115deg,#fff,#fcf6f7);box-shadow:0 7px 28px rgba(30,40,60,.045)}
.topic-intro h1{color:#27242b}
.topic-intro p,.lead{color:#5c5e69}
.topic-jump a{background:#fff;border-color:#e3d6db;color:#9f172d}
.portal-topic-content .h2{color:#25242a}
.portal-topic-content .eyebrow{color:#b71730}
.football-league-heading{background:#faf9fa;border-color:#e5e2e6}
.football-fixture-intro,.football-fixture-foot{color:#666975}
.football-league-card{border-radius:18px}
.mobile-nav{background:rgba(255,255,255,.98);border-top:1px solid #e1e3e8;box-shadow:0 -5px 23px #2222220b}
.mobile-nav a.active{background:#fff0f2;color:#af1830}
.portal-training-card,.pushpanel{background:#fff}
.club-compact-hero,.club-compact-history,.club-compact-web,
.install-hero{background-color:transparent}

/* Tischtennis: Erst die Spiele, dann ein kompakter externer Verbandslink. */
.tt-intro-copy{margin-top:-2px;margin-bottom:17px;max-width:740px}
#tischtennis .cards{display:grid;gap:11px}
#tischtennis .ttcard{padding:17px 19px;border-left:3px solid #d92b45;border-radius:16px}
#tischtennis .ttcard .tag{font-size:.74rem;font-weight:800}
#tischtennis .ttcard .small{margin:9px 0;color:#626773}
#tischtennis .ttscore{gap:12px;align-items:center}
#tischtennis .ttscore b{font-size:1.02rem;line-height:1.35}
#tischtennis .ttscore strong{white-space:nowrap;font-variant-numeric:tabular-nums}
.tt-league-link{
 display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:15px;
 padding:18px;margin:17px 0 0;border:1px solid #e2e3e7;border-radius:18px;
 background:#fff;box-shadow:0 4px 16px rgba(35,40,55,.045);scroll-margin-top:105px;
}
.tt-league-icon{display:grid;place-items:center;font-size:1.35rem;width:48px;height:48px;border-radius:14px;background:#fff0f2}
.tt-league-kicker{font-size:.68rem;letter-spacing:.11em;color:#b5162e;font-weight:900}
.tt-league-copy h3{margin:4px 0;font-size:1.08rem;color:#27252a;letter-spacing:-.015em}
.tt-league-copy p{margin:0;font-size:.86rem;line-height:1.45;color:#696b76}
.tt-league-action{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:43px;padding:10px 15px;border:1px solid #e9cbd1;border-radius:12px;background:#fff5f6;color:#9f162b;font-size:.88rem;font-weight:850;white-space:nowrap}
.tt-league-action:hover{background:#ffe8ed;border-color:#dca3af}
.tt-training-hint{margin:14px 0 0}
#tt-spielplan{scroll-margin-top:95px}
:where(a,button,input,select,textarea):focus-visible{outline:3px solid #c71932;outline-offset:3px}
@media(max-width:670px){
 .tt-league-link{grid-template-columns:42px minmax(0,1fr);gap:11px;padding:15px}
 .tt-league-icon{width:42px;height:42px;border-radius:12px}
 .tt-league-copy h3{font-size:1rem}
 .tt-league-copy p{font-size:.8rem}
 .tt-league-action{grid-column:1/-1;min-height:42px;width:100%}
 .portal-topic-content{padding:17px 0 22px}
 .sectiontop{margin-bottom:14px}
 #tischtennis .ttcard{padding:15px}
 .panel{border-radius:16px}
}
@media(prefers-reduced-motion:reduce){.portal-tile{transition:none;transform:none!important}}

/* Vereinsseite im gleichen neutralen Farbsystem wie der Rest. */
.club-page{background:#f3f4f6}

/* V7.5 – gut lesbare Spielminute direkt unter dem Fan-Spielstand. */
.fan-home #phase{font-variant-numeric:tabular-nums;font-weight:850;color:#ad2137;font-size:clamp(.88rem,2vw,1.05rem);line-height:1.5;}


/* TSV 7.7 – Drohnenaufnahme nur als ruhiger Hero-Hintergrund auf der Fan-Startseite. */
.fan-home .hero-video-section{position:relative;isolation:isolate;overflow:hidden;background:#203429 url('./media/tsv-drohne-v7-7.jpg') center 50%/cover no-repeat;}
.fan-home .hero-video-section .hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 50%;z-index:0;pointer-events:none;}
.fan-home .hero-video-section::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(20,13,18,.84) 0%,rgba(27,17,21,.64) 55%,rgba(20,13,18,.45) 100%);}
.fan-home .hero-video-section > .wrap{position:relative;z-index:2;width:min(100% - 26px,1160px);}
.fan-home .hero-video-section .hero-inner{padding-right:0;}
.fan-home .hero-video-section .display,.fan-home .hero-video-section p,.fan-home .hero-video-section .eyebrow{color:white;text-shadow:0 2px 14px rgba(0,0,0,.32)}
.fan-home .hero-video-section .hero-video-toggle{position:absolute;right:max(14px,calc((100% - 1160px)/2));top:14px;z-index:4;padding:7px 11px;border:1px solid rgba(255,255,255,.54);border-radius:999px;background:rgba(25,16,23,.60);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);color:white;font:inherit;font-size:.76rem;font-weight:700;cursor:pointer;min-height:34px;line-height:1.2;box-shadow:none;}
.fan-home .hero-video-section .hero-video-toggle:focus-visible{outline:3px solid white;outline-offset:3px}
@media(max-width:600px){
 .fan-home .hero-video-section{min-height:280px;background-position:center 46%;}
 .fan-home .hero-video-section .hero-video{object-position:center 48%;}
 .fan-home .hero-video-section::before{background:linear-gradient(90deg,rgba(20,13,18,.81),rgba(21,12,17,.55));}
 .fan-home .hero-video-section .hero-inner{padding-top:51px;padding-bottom:31px;}
 .fan-home .hero-video-section .hero-video-toggle{top:9px;right:13px;padding:5px 9px;font-size:.68rem;min-height:28px;}
}
@media(prefers-reduced-motion:reduce){.fan-home .hero-video-section:not(.video-user-enabled) .hero-video{display:none}}

/* V7.9: BFV-Spieltage und BFV-Navigation wieder vollständig nutzbar.
   Auf Touchgeräten zwischen TSV-Scrollen und BFV-Bedienen umschalten.
   Ein einzelner Moduswechsel lädt die BFV-Daten NICHT neu. */
/* Wie vor V7.8: Die responsive Höhe (835/810/790 px) kommt aus dem bestehenden Layout. */
.football-league-card iframe[data-bfv-embed]{width:100%;display:block;border:0;max-width:100%;background:#fff}
.bfv-embed{overscroll-behavior:none}
.bfv-embed html,.bfv-embed body{overflow:hidden!important}
.bfv-touch-toolbar{display:none;align-items:center;gap:12px;justify-content:space-between;padding:12px 16px;background:#fff8f9;border-bottom:1px solid #f0d6dd}
.bfv-touch-toolbar p{margin:0;min-width:0;line-height:1.4}
.bfv-touch-toolbar p strong{display:block;color:#8d1428;font-size:.87rem}
.bfv-touch-toolbar p small{display:block;color:#695b61;font-size:.72rem;margin-top:3px}
.bfv-touch-activate{flex:0 0 auto;min-height:44px;border:1px solid #b71530;border-radius:12px;color:#fff;background:#b71530;padding:10px 13px;font:inherit;font-weight:800;font-size:.83rem;cursor:pointer}
.bfv-touch-activate[aria-pressed="true"]{background:#fff;color:#9f1a31}
.bfv-touch-activate:focus-visible,.bfv-return-scroll:focus-visible{outline:3px solid #e68899;outline-offset:3px}
.bfv-return-scroll{position:fixed;z-index:10000;right:16px;bottom:calc(87px + env(safe-area-inset-bottom, 0px));background:#8e1029;color:#fff;padding:12px 18px;min-height:48px;border-radius:999px;border:2px solid #fff;box-shadow:0 5px 22px #1f0d1466;font:inherit;font-size:.9rem;font-weight:800;cursor:pointer}
.bfv-return-scroll[hidden]{display:none!important}
@media (hover:none) and (pointer:coarse){
 .bfv-touch-toolbar{display:flex}
 /* Ruhiger Wischmodus, jedoch per Knopf vollständig umkehrbar. */
 .football-league-card iframe[data-bfv-embed]{pointer-events:none;touch-action:pan-y}
 .football-league-card.bfv-interactive iframe[data-bfv-embed]{pointer-events:auto;touch-action:auto}
 .football-league-card.bfv-interactive{outline:2px solid #bc1833;outline-offset:2px}
}
@media (max-width:430px){.bfv-touch-toolbar{flex-wrap:wrap}.bfv-touch-activate{width:100%}}

/* V8.1 – Entry to the private Mannschaftskasse, easy to find in Fußball */
.cash-football-link{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:15px;padding:12px 17px;background:#b91f39;color:#fff;border-radius:13px;font-weight:850;text-decoration:none;box-shadow:0 6px 17px #7f182b24}
.cash-football-link>span{font-size:12px;font-weight:600;color:#ffe6ed}
.cash-football-link:hover,.cash-football-link:focus-visible{background:#91162d;color:white}

/* V8.2: Fußball-Reihenfolge – Liveticker, Spiele, Mannschaftskasse */
.portal-football-cash .panel{padding:19px 22px;border-radius:18px}
.portal-football-cash .panel p{margin:0;color:#5c5359;line-height:1.5}
.portal-football-cash .cash-football-link{margin-top:13px}
.fan-home #live{padding-top:11px}

/* V9.1: Admin-Navigation auf Mobilgeräten als vollständiges Kachelraster. */
@media(max-width:850px){
 #dashboard .adminlayout{grid-template-columns:minmax(0,1fr);gap:17px}
 #dashboard .side{position:static;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;overflow:visible;width:100%;padding:0;scrollbar-width:none}
 #dashboard .side button,#dashboard .side a{white-space:normal!important;min-width:0;min-height:74px;display:flex!important;align-items:center;justify-content:flex-start;line-height:1.28;text-align:left;border:1px solid #efdce3;border-radius:13px;padding:12px!important;background:#fff;color:#6b2940!important;font-size:clamp(12px,1.8vw,15px)!important;font-weight:750;box-shadow:0 3px 10px #5b23300b;overflow-wrap:anywhere}
 #dashboard .side button.active{border-color:#bd2147;background:#fff0f4;color:#9c1637!important;box-shadow:inset 0 0 0 1px #bd2147}
 #dashboard .side button:focus-visible,#dashboard .side a:focus-visible{outline:3px solid #c91d33;outline-offset:2px}
}
@media(max-width:580px){#dashboard .side{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#dashboard .side button,#dashboard .side a{min-height:62px;font-size:13px!important;padding:10px!important}}

/* V9.8: distinguish upcoming table-tennis appointments from past matches. */
#tischtennis .tt-group-caption{display:block;margin:0 0 13px;color:#a9152a;font-size:.81rem;letter-spacing:.055em;text-transform:uppercase;font-weight:850}
#tischtennis .ttcard .tt-group-caption+.tag{display:inline-flex}

/* V9.16: Aktuelles direkt anzeigen, ohne die alte riesige Themen-Einleitung. */
#aktuell-start{height:0;padding:0;margin:0;overflow:hidden}
.aktuell-compact{padding-top:15px}
.aktuell-compact .sectiontop{align-items:center;gap:12px;margin-bottom:13px;flex-wrap:nowrap}
.aktuell-compact .sectiontop .h2{margin:0;font-size:clamp(1.35rem,4vw,1.8rem);line-height:1.17}
.aktuell-compact .sectiontop #reloadNews{padding:8px 12px;font-size:1.15rem;min-width:43px;min-height:43px;line-height:1.1;flex:none}
#aktuelles{scroll-margin-top:82px}
@media(max-width:560px){.aktuell-compact{padding-top:10px}.aktuell-compact .sectiontop{margin-bottom:9px}.aktuell-compact .sectiontop .h2{font-size:1.34rem}.aktuell-compact .wrap{width:calc(100% - 26px)}}

/* V9.18 – Kompakte, gut lesbare Vereinsnews oberhalb des Livetickers */
.portal-highlights{display:flex;flex-direction:column;gap:12px;padding-top:8px;padding-bottom:20px}
.portal-news-peek,.portal-live-peek{width:100%;min-height:0}
.portal-news-peek{padding:17px 19px;border-radius:18px}
.portal-news-topline{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.portal-news-peek .portal-peek-overline{font-size:.94rem;color:#752235;opacity:1}
.portal-news-controls{display:flex;gap:5px;flex:none}
.portal-news-control{border:1px solid #eedbe0;border-radius:9px;min-width:33px;height:31px;background:#fff8fa;color:#a41938;font-size:1.15rem;font-weight:850;line-height:1;cursor:pointer}
.portal-news-control:disabled{opacity:.25;cursor:default}
.portal-news-control:focus-visible,.portal-news-feature:focus-visible{outline:3px solid #c91d33;outline-offset:3px}
.portal-news-items{min-width:0}
.portal-news-feature{display:flex;align-items:center;min-height:100px;gap:17px;padding:9px 2px;text-decoration:none;color:inherit;overflow:hidden}
.portal-news-feature-image{width:142px;height:94px;flex:none;object-fit:cover;border-radius:12px;background:#fff1f3}
.portal-news-feature-copy{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}
.portal-news-feature-label{font-size:.7rem;letter-spacing:.055em;color:#a51c39;text-transform:uppercase;font-weight:900}
.portal-news-feature-title{font-size:clamp(1.02rem,2.2vw,1.3rem);line-height:1.3;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.portal-news-feature-meta{font-size:.83rem;color:#76676c;font-weight:650}
.portal-news-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid #f3e5e9;margin-top:8px;padding-top:8px}
.portal-news-bottom #homeNewsCounter{color:#8b6d77;font-size:.77rem;font-weight:800;font-variant-numeric:tabular-nums}
.portal-news-bottom .portal-peek-link{border:0;margin:0;padding:3px 0;min-width:0;gap:18px;font-size:.8rem}
.portal-live-peek{padding:17px 19px;border-radius:18px}
.portal-live-peek .portal-peek-game{margin:14px 0 16px}
@media(max-width:560px){
 .portal-highlights{gap:11px;padding-top:6px}
 .portal-news-peek,.portal-live-peek{padding:14px 15px;border-radius:17px}
 .portal-news-feature{min-height:90px;gap:11px}
 .portal-news-feature-image{width:94px;height:80px;border-radius:10px}
 .portal-news-feature-title{font-size:1rem;-webkit-line-clamp:3}
 .portal-news-feature-meta{font-size:.74rem}
 .portal-news-feature-label{font-size:.66rem}
 .portal-news-control{min-width:30px;height:30px}
 .portal-live-peek .portal-peek-game{margin:13px 0}
}
@media(prefers-reduced-motion:reduce){.portal-news-feature{transition:none}}
