
:root{--g:#075c43;--g2:#347F58;--light:#eef6f2;--line:#dbe5df;--text:#16342b}
*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;background:#f5f8f6;color:var(--text)}
header{background:white;border-bottom:1px solid var(--line);padding:12px 28px;display:flex;align-items:center;gap:16px;box-shadow:0 2px 12px #0000000a}
header img{width:72px;height:72px;object-fit:contain}header h1{margin:0;color:var(--g);font-size:30px}header p{margin:2px 0;color:#65736e;letter-spacing:2px;font-weight:700}
main{max-width:1450px;margin:auto;padding:22px}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 2px 8px #0000000a}
.hero{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.hero img{width:100px}.hero h2{font-size:30px;margin:0;color:var(--g)}
.actions{display:flex;gap:12px;flex-wrap:wrap}.actions button,.navbtn{border:0;border-radius:10px;padding:14px 18px;font-size:16px;font-weight:750;cursor:pointer}
.primary,.player{background:linear-gradient(135deg,var(--g2),var(--g));color:white}.secondary{background:#e8f1ed;color:var(--g)}.danger{background:#a63b3b;color:white}
.fields{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.fieldcard{border-top:6px solid var(--g2);position:relative}.fieldhead{display:flex;align-items:center;justify-content:space-between}.fieldhead img{width:64px}.live{color:#0b9b55;font-weight:800}
.miniScore{font-size:44px;font-weight:850;text-align:center;margin:18px;color:var(--g)}.badge{display:inline-block;padding:6px 10px;border-radius:999px;background:#e7f1ec;font-size:12px;font-weight:700}
.score{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:center;text-align:center}.score .pts{font-size:68px;font-weight:900;color:var(--g)}
.calc{font-size:14px;color:#667}.players{display:grid;grid-template-columns:1fr 1fr;gap:16px}.playergrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.player{border:0;border-radius:10px;padding:16px;font-size:17px;font-weight:800}
.confirm{display:grid;grid-template-columns:1fr 1fr;gap:16px}.confirm input{width:100%;padding:13px;border:1px solid #ccd8d2;border-radius:8px;font-size:16px}.hidden{display:none}
.brand{text-align:center}.brand img{max-width:160px}.brandline{font-weight:800;color:var(--g)}
.games p{padding:10px 4px;margin:0;border-bottom:1px solid #edf1ef}.topnav{margin-left:auto;display:flex;gap:8px}.topnav a{text-decoration:none;color:var(--g);font-weight:750;padding:9px 12px;border-radius:8px;background:#edf5f1}
@media(max-width:800px){header{padding:9px 14px}header img{width:54px;height:54px}header h1{font-size:20px}.fields,.players,.confirm{grid-template-columns:1fr}.score .pts{font-size:48px}.playergrid{grid-template-columns:repeat(2,1fr)}.topnav{display:none}}

/* V15 Turniertag-Feinschliff */
button,.btn,a.primary,a.secondary{min-height:46px}
button{touch-action:manipulation}
@media(max-width:900px){
  button,.btn{font-size:16px}
  .player{min-height:64px!important;font-size:18px!important}
}
.v15-status{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-weight:800;font-size:13px}
.v15-ok{background:#e4f5eb;color:#17653e}
.v15-warn{background:#fff1c7;color:#795700}
.v15-bad{background:#ffe2df;color:#9c2c23}

/* V16.4 – PIN confirmation as app-style push/modal */
.pin-modal:not(.hidden){
 position:fixed!important; inset:0!important; z-index:9999!important;
 width:auto!important; max-width:none!important; margin:0!important;
 border-radius:0!important; border:0!important;
 background:rgba(13,30,23,.72)!important;
 display:flex!important; flex-direction:column!important;
 justify-content:center!important; align-items:center!important;
 padding:22px!important; overflow:auto!important;
 box-shadow:none!important;
}
.pin-modal:not(.hidden) > *{
 width:min(680px,calc(100vw - 36px));
 box-sizing:border-box;
}
.pin-modal-head{
 background:#347F58; color:white; padding:20px 22px 14px;
 border-radius:22px 22px 0 0; display:flex; align-items:center; gap:14px;
 box-shadow:0 18px 55px rgba(0,0,0,.25);
}
.pin-push-icon{
 width:52px;height:52px;border-radius:16px;background:rgba(255,255,255,.16);
 display:grid;place-items:center;font-size:27px;flex:0 0 auto;
}
.pin-eyebrow{font-size:12px;font-weight:900;letter-spacing:.12em;opacity:.85}
.pin-modal:not(.hidden) > .pin-modal-head ~ *{
 background:white; padding-left:22px!important; padding-right:22px!important;
 margin-top:0!important; margin-bottom:0!important;
}
.pin-modal:not(.hidden) > :last-child{
 padding-bottom:22px!important;border-radius:0 0 22px 22px;
 box-shadow:0 18px 55px rgba(0,0,0,.25);
}
.pin-modal input[type=password]{
 font-size:28px!important; letter-spacing:.28em; text-align:center;
 min-height:60px; border:2px solid #cddbd4; border-radius:14px;
}
.pin-modal button{min-height:58px!important;font-size:18px!important;font-weight:900!important}
.pin-modal .confirm{gap:14px!important}
@media(max-width:700px){
 .pin-modal{padding:12px!important}
 .pin-modal:not(.hidden)>*{width:calc(100vw - 24px)}
 .pin-modal .confirm{grid-template-columns:1fr!important}
}

/* V16.11 Hilfealarm */
.help-button{width:100%;min-height:58px!important;background:#c62828!important;color:#fff!important;border:0!important;border-radius:14px!important;font-size:18px!important;font-weight:900!important;box-shadow:0 5px 15px rgba(198,40,40,.25)}
.help-button.help-sent{background:#347F58!important}
.help-feedback{margin-top:7px;padding:9px 12px;border-radius:10px;background:#e4f5eb;color:#17653e;font-weight:800;text-align:center}
.help-overlay{position:fixed;inset:0;background:rgba(18,18,18,.72);z-index:20000;display:flex;align-items:center;justify-content:center;padding:20px}
.help-alert-card{width:min(620px,calc(100vw - 30px));background:#fff;border-radius:24px;overflow:hidden;box-shadow:0 25px 80px rgba(0,0,0,.4);animation:helpPulse .75s ease-in-out infinite alternate}
.help-alert-head{background:#c62828;color:#fff;padding:22px;text-align:center}
.help-alert-head .big{font-size:48px}.help-alert-head h1{margin:4px 0;font-size:32px}
.help-alert-body{padding:22px;text-align:center;font-size:20px}
.help-alert-body button{width:100%;margin-top:14px;background:#347F58!important;color:white!important;font-size:18px!important;font-weight:900!important}
@keyframes helpPulse{from{transform:scale(1)}to{transform:scale(1.012)}}

/* V16.17 – Hilfe bei Trainer-PIN */
.pin-help-button{
 position:absolute!important;right:14px!important;top:14px!important;
 min-width:112px!important;min-height:44px!important;padding:9px 13px!important;
 border:0!important;border-radius:12px!important;background:#c62828!important;
 color:#fff!important;font-size:15px!important;font-weight:900!important;
 box-shadow:0 4px 12px rgba(198,40,40,.25)!important;z-index:50!important
}
.pin-help-button.help-sent{background:#347F58!important}
@media(max-width:600px){
 .pin-help-button{right:10px!important;top:10px!important;min-width:96px!important;font-size:13px!important}
}

/* V16.20 – Team-PIN bearbeiten */
.pin-edit-btn{margin-left:8px!important;padding:6px 10px!important;border-radius:9px!important;background:#edf5f1!important;color:#17653e!important;border:1px solid #bfd8cb!important;font-weight:800!important}

.confirmed-games-card{border-top:4px solid #347F58}
.confirmed-game-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:13px 0;border-bottom:1px solid #e5ebe8}
.confirmed-game-row:last-child{border-bottom:0}.confirmed-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.v22-edit{background:#edf5f1!important;color:#17653e!important;border:1px solid #bfd8cb!important;font-weight:800!important}
.v22-tournify{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:10px;background:#eef4fb;font-weight:800;font-size:13px}
.v22-tournify input{width:18px;height:18px}
@media(max-width:700px){.confirmed-game-row{align-items:flex-start;flex-direction:column}}

/* V16.23 – Bestätigte Spiele kompakt unter Aktuelle Spiele */
.confirmed-games-card{margin-top:16px!important;border-top:4px solid #347F58!important}
.v23-result-row{display:grid;grid-template-columns:110px minmax(340px,1fr) auto;align-items:center;gap:16px;padding:14px 0;border-top:1px solid #e5ebe8}
.v23-result-row:first-child{border-top:0}
.v23-game-meta{display:flex;flex-direction:column;gap:3px;font-size:12px;color:#758079}.v23-game-meta b{font-size:14px;color:#26342d}
.v23-result-main{display:grid;grid-template-columns:1fr 90px 1fr;align-items:center;gap:12px}.v23-team{font-weight:800}.v23-team.home{text-align:right}
.v23-score{display:flex;justify-content:center;align-items:center;gap:7px;background:#347F58;color:#fff;border-radius:12px;padding:9px 10px;font-size:22px;font-weight:900}.v23-score small{font-size:15px}
.v23-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.v22-tournify.checked{background:#e1f2e8!important;color:#17653e!important}
@media(max-width:900px){.v23-result-row{grid-template-columns:1fr}.v23-game-meta{flex-direction:row}.v23-actions{justify-content:flex-start}}

/* V16.24 – Platzierung */
.placement-hero{border-top:4px solid #347F58}
.placement-row{display:grid;grid-template-columns:58px 52px minmax(220px,1fr) auto;align-items:center;gap:12px;padding:17px 18px;margin:8px 0;border-radius:14px;border:1px solid #e2e9e5}
.placement-row.first{background:#faf8ee}.placement-row.second{background:#f5f7f6}
.placement-row .place{font-size:26px;font-weight:950;color:#347F58}.placement-row .medal{font-size:30px}
.placement-team{font-size:18px;font-weight:900}.placement-row .source{font-size:12px;color:#6f7b75;text-align:right}
.placement-wait{display:flex;gap:14px;align-items:center;padding:22px;background:#f6f8f7;border-radius:14px}
.placement-wait>span{font-size:28px}.placement-wait div{display:flex;flex-direction:column;gap:4px}.placement-wait small{color:#758079}
.placement-info p{margin-bottom:4px}
@media(max-width:700px){.placement-row{grid-template-columns:48px 42px 1fr}.placement-row .source{grid-column:3;text-align:left}}

/* V16.25 – Auswahl der Platzierungsspiele */
.placement-config-row{display:grid;grid-template-columns:220px 1fr;gap:16px;align-items:center;padding:11px 0;border-top:1px solid #e5ebe8}
.placement-config-row:first-child{border-top:0}.placement-config-row>div{display:flex;flex-direction:column;gap:3px}
.placement-config-row small{color:#758079}.placement-config-row select{width:100%;padding:10px 12px;border:1px solid #cfd9d4;border-radius:10px;background:#fff;font-weight:700}
.placement-row.pending{opacity:.62}
@media(max-width:700px){.placement-config-row{grid-template-columns:1fr}}

/* V16.26 – kompletter Spielplan unten in Verwaltung */
.v26-full-plan-card{margin-top:18px}
.v26-plan-wrap{overflow-x:auto}
.v26-plan-table{width:100%;border-collapse:collapse;min-width:760px}
.v26-plan-table th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#6e7a74;text-align:left;padding:10px;border-bottom:2px solid #dce5e0}
.v26-plan-table td{padding:10px;border-bottom:1px solid #e8eeeb;font-size:13px}
.v26-plan-table tr:hover td{background:#f7faf8}

/* V16.28 – offene Teams / Paarungen */
.v28-pair-btn{white-space:nowrap;padding:7px 10px;border-radius:8px;border:1px solid #347F58;background:#fff;color:#347F58;font-weight:800;cursor:pointer}
.v28-modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.48);display:flex;align-items:center;justify-content:center;z-index:9999;padding:18px}
.v28-modal{width:min(520px,100%);background:#fff;border-radius:16px;padding:22px;box-shadow:0 18px 60px rgba(0,0,0,.25)}
.v28-modal h3{margin-top:0}.v28-modal label{display:flex;flex-direction:column;gap:6px;font-weight:800;margin:14px 0}
.v28-modal select{width:100%;padding:11px;border:1px solid #cfd9d4;border-radius:10px;background:#fff}
.v28-modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}
.v28-modal-actions button{padding:9px 13px;border-radius:9px;border:1px solid #ccd6d1;background:#fff;font-weight:800}
.v28-modal-actions .primary{background:#347F58;color:#fff;border-color:#347F58}

/* V16.31 */
header{position:sticky;top:0;z-index:900}

/* V16.65 – Mobile Gesamt-Navigation der Turnierleitung */
@media(max-width:800px){
  header{flex-wrap:wrap;align-items:center;gap:10px;padding:9px 12px}
  header>div:nth-child(2){min-width:0;flex:1}
  header p{font-size:10px;letter-spacing:1px}
  .topnav{
    display:flex!important;
    order:10;
    width:100%;
    margin-left:0;
    gap:7px;
    overflow-x:auto;
    overflow-y:hidden;
    padding:4px 0 7px;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .topnav::-webkit-scrollbar{display:none}
  .topnav a,.topnav button{
    flex:0 0 auto;
    white-space:nowrap;
    min-height:42px!important;
    padding:10px 12px!important;
    font-size:14px!important;
  }
  main{padding:14px}
}


/* V17.8 – Turnierleitung Sport Dashboard.
   Scoped to body.tsv-sport-dashboard: no global redesign of other pages. */
body.tsv-sport-dashboard{
 --dash-green:#0c6549;
 --dash-green-dark:#084936;
 --dash-green-soft:#e9f3ee;
 --dash-ink:#153128;
 --dash-muted:#6b7c74;
 --dash-bg:#eef2f0;
 --dash-card:#ffffff;
 --dash-line:#dce5e0;
 background:
   radial-gradient(circle at 12% 0%,rgba(52,127,88,.075),transparent 24rem),
   var(--dash-bg);
 color:var(--dash-ink);
}
body.tsv-sport-dashboard main{max-width:1480px;padding-top:18px}

/* Hero */
body.tsv-sport-dashboard .dashboard-sport-hero{
 position:relative;
 min-height:168px;
 margin:0 0 14px;
 padding:27px 32px;
 border-radius:18px;
 overflow:hidden;
 color:#fff;
 background:
   linear-gradient(100deg,rgba(5,58,42,.98) 0%,rgba(11,99,72,.94) 58%,rgba(39,126,91,.88) 100%);
 box-shadow:0 14px 34px rgba(8,73,53,.16);
}
body.tsv-sport-dashboard .dashboard-sport-hero:before{
 content:"";
 position:absolute;inset:0;
 background:
   radial-gradient(circle at 82% 20%,rgba(255,255,255,.16),transparent 15rem),
   repeating-linear-gradient(120deg,transparent 0 46px,rgba(255,255,255,.035) 47px 48px);
 pointer-events:none;
}
body.tsv-sport-dashboard .dashboard-sport-hero:after{
 content:"";
 position:absolute;right:-85px;bottom:-155px;width:390px;height:390px;
 border:52px solid rgba(255,255,255,.055);border-radius:50%;
 pointer-events:none;
}
body.tsv-sport-dashboard .dashboard-hero-copy,
body.tsv-sport-dashboard .dashboard-hero-brand{position:relative;z-index:1}
body.tsv-sport-dashboard .dashboard-eyebrow,
body.tsv-sport-dashboard .dashboard-section-label{
 font-size:10px;font-weight:900;letter-spacing:.16em;text-transform:uppercase;
 color:#559174;
}
body.tsv-sport-dashboard .dashboard-eyebrow{color:#a8d0bd;margin-bottom:7px}
body.tsv-sport-dashboard .dashboard-sport-hero h2{
 margin:0 0 7px;color:#fff;font-size:38px;line-height:1;letter-spacing:-.045em;
}
body.tsv-sport-dashboard .dashboard-sport-hero #dashboardTournamentName{
 margin:0;color:#d8e9e1;font-size:18px;font-weight:800;
}
body.tsv-sport-dashboard .dashboard-live-pill{
 display:inline-flex;align-items:center;gap:8px;margin-top:16px;
 padding:7px 10px;border-radius:999px;
 background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.12);
 color:#e7f3ed;font-size:10px;font-weight:900;letter-spacing:.08em;
}
body.tsv-sport-dashboard .dashboard-live-pill span{
 width:8px;height:8px;border-radius:50%;background:#6be0a2;
 box-shadow:0 0 0 5px rgba(107,224,162,.13);
}
body.tsv-sport-dashboard .dashboard-hero-brand img{
 width:92px;filter:drop-shadow(0 8px 13px rgba(0,0,0,.18));
}
body.tsv-sport-dashboard .dashboard-hero-brand .brandline{color:#fff;font-size:12px}

/* Cards */
body.tsv-sport-dashboard .start-check-card,
body.tsv-sport-dashboard .report-status-card,
body.tsv-sport-dashboard .dashboard-timer-card,
body.tsv-sport-dashboard .confirmed-games-card{
 border:1px solid rgba(27,71,55,.08)!important;
 border-radius:15px!important;
 background:var(--dash-card);
 box-shadow:0 6px 18px rgba(21,54,43,.055)!important;
}
body.tsv-sport-dashboard .start-check-card{padding:15px 17px!important}
body.tsv-sport-dashboard .start-check-head h2{
 font-size:19px;margin-top:2px!important;color:var(--dash-ink)
}
body.tsv-sport-dashboard .start-check-state{font-size:.88rem;color:var(--dash-muted)}
body.tsv-sport-dashboard .start-check-grid{gap:7px}
body.tsv-sport-dashboard .start-check{
 border:0;border-radius:10px;padding:9px 10px;
 background:#f3f6f4;box-shadow:inset 0 0 0 1px rgba(25,68,52,.055)
}
body.tsv-sport-dashboard .start-check.ok{border-top:0;box-shadow:inset 3px 0 0 #347F58}
body.tsv-sport-dashboard .start-check.warn{border-top:0;box-shadow:inset 3px 0 0 #d99a1b}
body.tsv-sport-dashboard .start-check.bad{border-top:0;box-shadow:inset 3px 0 0 #cf4b45}

/* Turnierstatus + master timer */
body.tsv-sport-dashboard .dashboard-control-row{gap:12px;margin-bottom:13px}
body.tsv-sport-dashboard .report-status-card,
body.tsv-sport-dashboard .dashboard-timer-card{padding:15px 17px!important}
body.tsv-sport-dashboard .report-status-card h2,
body.tsv-sport-dashboard .dashboard-timer-card h2{
 margin:3px 0 11px;font-size:19px;color:var(--dash-ink)
}
body.tsv-sport-dashboard .report-status-card #stats{gap:7px}
body.tsv-sport-dashboard .report-status-card #stats p{
 border:0;border-radius:10px;background:#f3f6f4;padding:10px 8px;
}
body.tsv-sport-dashboard .report-status-card #stats p b{
 font-size:1.5rem;color:var(--dash-ink)
}
body.tsv-sport-dashboard .dashboard-timer-card{
 border:1px solid rgba(52,127,88,.18)!important;
 background:linear-gradient(145deg,#fbfdfc,#edf6f1);
}
body.tsv-sport-dashboard .dashboard-timer-action .timer-master{
 border:0;border-radius:10px;
 box-shadow:0 7px 16px rgba(7,92,67,.14);
 letter-spacing:.025em;
}

/* The 3 field cards – same JS/HTML, entirely new visual hierarchy */
body.tsv-sport-dashboard #fields{
 gap:12px!important;align-items:stretch;
}
body.tsv-sport-dashboard #fields .fieldcard{
 position:relative;
 padding:0 16px 15px!important;
 overflow:hidden;
 border:1px solid rgba(24,66,50,.09)!important;
 border-top:0!important;
 border-radius:15px!important;
 background:#fff!important;
 box-shadow:0 8px 23px rgba(18,53,40,.07)!important;
}
body.tsv-sport-dashboard #fields .fieldcard:before{
 content:"";display:block;height:6px;margin:0 -16px 10px;background:#347F58;
}
body.tsv-sport-dashboard #fields .fieldcard.field-2:before{background:#f0bd34}
body.tsv-sport-dashboard #fields .fieldcard.field-3:before{background:#d84b48}
body.tsv-sport-dashboard #fields .fieldcard.timer-running{
 background:linear-gradient(180deg,#edf8f2 0,#fff 48%)!important;
 box-shadow:0 8px 25px rgba(52,127,88,.13)!important;
}
body.tsv-sport-dashboard #fields .fieldcard.timer-stopped{
 background:linear-gradient(180deg,#fff1ef 0,#fff 48%)!important;
}
body.tsv-sport-dashboard #fields .field-topline{
 min-height:82px;margin-bottom:2px;
}
body.tsv-sport-dashboard #fields .field-topline .dashboard-field-logo{
 width:72px;height:72px;
}
body.tsv-sport-dashboard #fields .field-signals{
 gap:5px!important;
}
body.tsv-sport-dashboard #fields .signal-row{
 font-size:.73rem!important;color:#566a60;font-weight:800;
}
body.tsv-sport-dashboard #fields .signal-light{
 width:9px;height:9px;flex-basis:9px;
 box-shadow:0 0 0 3px #fff,0 0 0 4px rgba(25,68,52,.07)
}
body.tsv-sport-dashboard #fields .field-reset-btn{
 width:30px;height:30px;border-radius:9px;
 background:#f7f9f8;color:#9d4742;border:1px solid #e3e8e5;
}
body.tsv-sport-dashboard #fields .field-game-title{
 margin:6px 0 5px!important;
 color:#718078;
 font-size:.72rem!important;
 letter-spacing:.10em;
 text-transform:uppercase;
}
body.tsv-sport-dashboard #fields .fieldcard>p{
 margin:7px 0!important;
 min-height:50px;
 display:flex;flex-direction:column;justify-content:center;
 color:#19372c;font-size:1rem!important;line-height:1.28!important;
}
body.tsv-sport-dashboard #fields .miniScore{
 width:max-content;min-width:120px;
 margin:7px auto!important;padding:8px 17px;
 border:1px solid #e3e9e6;border-radius:11px;
 background:#f8faf9;color:#123328!important;
 box-shadow:0 4px 12px rgba(18,51,40,.05);
 font-size:2.5rem!important;line-height:1!important;
}
body.tsv-sport-dashboard #fields .field-timer-inline{
 width:max-content;min-width:86px;
 margin:9px auto 0!important;padding:6px 12px;
 border-radius:999px;background:#e7f2ec;color:#176247!important;
 font-size:1.2rem!important;
}

/* Confirmed results */
body.tsv-sport-dashboard .confirmed-games-card{
 border-top:0!important;padding:17px!important;
}
body.tsv-sport-dashboard .confirmed-games-card h2{
 margin:0 0 4px;font-size:20px;color:var(--dash-ink)
}
body.tsv-sport-dashboard .v23-result-row{
 margin-top:6px;padding:11px 7px!important;
 border-top:1px solid #edf1ef!important;
}
body.tsv-sport-dashboard .v23-score{
 border-radius:9px;padding:7px 10px;
 background:linear-gradient(135deg,#176247,#347F58);
 box-shadow:0 4px 10px rgba(7,92,67,.11);
}

/* Desktop header: polish without restructuring navigation */
body.tsv-sport-dashboard header{
 border-bottom:1px solid #dce5e0;
 box-shadow:0 3px 15px rgba(18,53,40,.055);
}
body.tsv-sport-dashboard .topnav a{
 background:#eaf3ee;border:1px solid transparent;
 transition:.15s ease;
}
body.tsv-sport-dashboard .topnav a:hover{
 border-color:#cfe0d7;transform:translateY(-1px);
}

@media(max-width:850px){
 body.tsv-sport-dashboard .dashboard-sport-hero{min-height:140px;padding:21px;border-radius:14px}
 body.tsv-sport-dashboard .dashboard-sport-hero h2{font-size:29px}
 body.tsv-sport-dashboard .dashboard-hero-brand img{width:68px}
}
@media(max-width:650px){
 body.tsv-sport-dashboard .dashboard-sport-hero{min-height:126px}
 body.tsv-sport-dashboard .dashboard-hero-brand .brandline{display:none}
 body.tsv-sport-dashboard #fields .fieldcard{padding:0 13px 14px!important}
 body.tsv-sport-dashboard #fields .fieldcard:before{margin:0 -13px 9px}
}


/* V17.9 – Arena header based on the supplied live-view background */
body.tsv-sport-dashboard header{
 background:#fff;
 min-height:76px;
 padding:10px 24px;
 display:flex;
 align-items:center;
 gap:20px;
}
body.tsv-sport-dashboard header .headbrand{flex:0 0 auto}
body.tsv-sport-dashboard header .topnav{
 margin-left:auto;
 justify-content:flex-end;
 flex-wrap:nowrap;
 gap:7px;
}
body.tsv-sport-dashboard header .topnav a{
 padding:10px 13px;
 border-radius:9px;
 background:#edf5f1;
 color:#075c43;
 font-size:13px;
 font-weight:850;
 white-space:nowrap;
}
body.tsv-sport-dashboard header .logout{
 margin-left:2px;
}

/* The uploaded arena artwork is a real page asset, not an external URL. */
body.tsv-sport-dashboard .dashboard-sport-hero{
 min-height:245px;
 padding:0;
 display:flex;
 align-items:stretch;
 background:
   linear-gradient(90deg,rgba(3,37,28,.90) 0%,rgba(4,57,41,.72) 43%,rgba(3,35,27,.30) 70%,rgba(3,27,21,.58) 100%),
   url('/assets/turnier-arena-header.png') center 43% / cover no-repeat;
 border-radius:18px;
 box-shadow:0 16px 38px rgba(5,49,36,.20);
}
body.tsv-sport-dashboard .dashboard-sport-hero:before{
 background:linear-gradient(180deg,rgba(0,0,0,.04),rgba(0,0,0,.26));
}
body.tsv-sport-dashboard .dashboard-sport-hero:after{
 display:none;
}
body.tsv-sport-dashboard .dashboard-hero-copy{
 width:min(650px,62%);
 padding:31px 34px;
 align-self:flex-end;
}
body.tsv-sport-dashboard .dashboard-eyebrow{
 color:#bce0cf;
 text-shadow:0 1px 4px rgba(0,0,0,.3);
}
body.tsv-sport-dashboard .dashboard-sport-hero h2{
 font-size:42px;
 text-shadow:0 3px 14px rgba(0,0,0,.34);
}
body.tsv-sport-dashboard .dashboard-sport-hero #dashboardTournamentName{
 font-size:19px;
 color:#fff;
 text-shadow:0 2px 8px rgba(0,0,0,.42);
}
body.tsv-sport-dashboard .dashboard-live-pill{
 background:rgba(5,44,32,.62);
 border-color:rgba(255,255,255,.18);
 backdrop-filter:blur(7px);
 -webkit-backdrop-filter:blur(7px);
}
body.tsv-sport-dashboard .dashboard-hero-side{
 margin-left:auto;
 position:relative;
 z-index:1;
 min-width:205px;
 padding:28px 30px;
 display:flex;
 flex-direction:column;
 align-items:flex-end;
 justify-content:flex-start;
 color:#fff;
 text-shadow:0 2px 8px rgba(0,0,0,.45);
}
body.tsv-sport-dashboard .dashboard-hero-time{
 font-size:25px;
 font-weight:950;
 font-variant-numeric:tabular-nums;
 letter-spacing:-.03em;
}
body.tsv-sport-dashboard .dashboard-hero-side-label{
 margin-top:4px;
 font-size:9px;
 font-weight:950;
 letter-spacing:.16em;
 color:#d5e9df;
}

/* Make secondary administration quieter so the arena and fields dominate. */
body.tsv-sport-dashboard .start-check-card{
 margin-top:12px!important;
 padding:12px 14px!important;
}
body.tsv-sport-dashboard .start-check-head{
 margin-bottom:7px;
}
body.tsv-sport-dashboard .start-check-grid{
 grid-template-columns:repeat(7,minmax(0,1fr));
}
body.tsv-sport-dashboard .start-check{
 min-height:58px;
 padding:8px 9px;
}
body.tsv-sport-dashboard .dashboard-control-row{
 margin-top:10px;
}
body.tsv-sport-dashboard .report-status-card,
body.tsv-sport-dashboard .dashboard-timer-card{
 min-height:138px;
}
body.tsv-sport-dashboard #fields{
 margin-top:10px;
}
body.tsv-sport-dashboard #fields .fieldcard{
 min-height:225px;
}
@media(max-width:1000px){
 body.tsv-sport-dashboard header{align-items:flex-start}
 body.tsv-sport-dashboard header .topnav{flex-wrap:wrap}
 body.tsv-sport-dashboard .start-check-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:750px){
 body.tsv-sport-dashboard .dashboard-sport-hero{min-height:205px;background-position:center 42%}
 body.tsv-sport-dashboard .dashboard-hero-copy{width:72%;padding:22px}
 body.tsv-sport-dashboard .dashboard-sport-hero h2{font-size:31px}
 body.tsv-sport-dashboard .dashboard-hero-side{min-width:auto;padding:22px 18px}
 body.tsv-sport-dashboard .dashboard-hero-time{font-size:18px}
 body.tsv-sport-dashboard .start-check-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}


/* V17.11 – feste linke Navigation, passend zur tatsächlichen DOM-Struktur */
@media(min-width:1001px){
 body.tsv-sport-dashboard{
   padding-left:190px !important;
   padding-right:0 !important;
 }

 body.tsv-sport-dashboard .topnav{
   position:fixed !important;
   z-index:1200 !important;
   left:0 !important;
   right:auto !important;
   top:0 !important;
   bottom:0 !important;
   width:190px !important;
   height:100vh !important;
   box-sizing:border-box !important;
   margin:0 !important;
   padding:24px 14px !important;
   display:flex !important;
   flex-direction:column !important;
   align-items:stretch !important;
   justify-content:flex-start !important;
   gap:8px !important;
   overflow-y:auto !important;
   background:linear-gradient(180deg,#064d39 0%,#087052 52%,#063f30 100%) !important;
   border:0 !important;
   border-right:1px solid rgba(255,255,255,.12) !important;
   box-shadow:10px 0 30px rgba(5,52,38,.15) !important;
 }

 body.tsv-sport-dashboard .topnav a{
   width:100% !important;
   min-height:46px !important;
   box-sizing:border-box !important;
   margin:0 !important;
   padding:11px 13px !important;
   display:flex !important;
   align-items:center !important;
   justify-content:flex-start !important;
   border:1px solid rgba(255,255,255,.10) !important;
   border-radius:10px !important;
   background:rgba(255,255,255,.075) !important;
   color:#fff !important;
   font-size:13px !important;
   font-weight:850 !important;
   text-align:left !important;
   white-space:normal !important;
   box-shadow:none !important;
 }

 body.tsv-sport-dashboard .topnav a:hover{
   transform:translateX(2px) !important;
   background:rgba(255,255,255,.16) !important;
   border-color:rgba(255,255,255,.22) !important;
 }

 body.tsv-sport-dashboard .topnav a.active,
 body.tsv-sport-dashboard .topnav a[aria-current="page"]{
   background:#fff !important;
   color:#075c43 !important;
 }

 body.tsv-sport-dashboard header{
   margin-left:0 !important;
 }

 body.tsv-sport-dashboard main{
   max-width:none !important;
 }
}
@media(max-width:1000px){
 body.tsv-sport-dashboard{padding-left:0 !important}
}



/* V17.20 – gemeinsame Sportsoftware-Optik: Spielplan */
body.tsv-sport-page{
 --sport-green:#075c43;--sport-green-2:#347F58;--sport-dark:#063f30;
 --sport-bg:#eef2f0;--sport-card:#fff;--sport-line:#dce5e0;--sport-ink:#153128;--sport-muted:#687a71;
 background:linear-gradient(135deg,#edf3f0 0%,#f7f9f8 48%,#edf3f0 100%);color:var(--sport-ink);
}
body.tsv-sport-page main{max-width:none;padding:22px 24px 38px}
body.tsv-sport-page header{min-height:92px;padding:15px 26px;background:#fff;border-bottom:1px solid var(--sport-line);box-shadow:0 3px 16px rgba(15,55,41,.06)}
body.tsv-sport-page header>img{width:62px;height:62px}
body.tsv-sport-page header h1{font-size:29px;letter-spacing:-.03em;color:var(--sport-green);font-weight:950}
body.tsv-sport-page header p{font-size:11px;color:#708078;letter-spacing:.16em}
body.tsv-sport-page .card,body.tsv-sport-page .sub,body.tsv-sport-page .planner-section,body.tsv-sport-page .phase-workspace{
 border-color:rgba(28,71,55,.10);box-shadow:0 7px 22px rgba(20,54,43,.055);background:rgba(255,255,255,.97)
}
body.tsv-sport-page .card{border-radius:16px;margin-bottom:14px}
body.tsv-sport-page .sub{border-radius:13px;background:#f8faf9}
body.tsv-sport-page .tabs{gap:6px;margin:15px 0 0;padding-top:12px;border-top:1px solid #e9efec}
body.tsv-sport-page .tabs button{border-radius:9px!important;min-height:40px!important;padding:9px 13px!important;font-size:13px!important}
body.tsv-sport-page .tabs button.on{box-shadow:0 5px 12px rgba(7,92,67,.14)}
body.tsv-sport-page .tournament-day-bar{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #e8eeeb}
body.tsv-sport-page .tournament-day-select select{border:1px solid #cfdcd5;border-radius:9px;box-shadow:0 2px 5px rgba(20,54,43,.03)}
body.tsv-sport-page .field-column{border:1px solid rgba(28,71,55,.10);border-radius:13px;box-shadow:0 7px 18px rgba(20,54,43,.055)}
body.tsv-sport-page .field-head{padding:10px 12px}
body.tsv-sport-page .field-head img{width:44px;height:44px}
body.tsv-sport-page .field-game{background:#fff;padding:10px 11px}
body.tsv-sport-page .field-game:hover{background:#f7faf8}
body.tsv-sport-page .schedule-time-settings{background:#f6f9f7;border-color:#dce7e1}
body.tsv-sport-page input,body.tsv-sport-page select,body.tsv-sport-page textarea{border-color:#cfdcd5;border-radius:8px}
body.tsv-sport-page button{transition:transform .14s ease,box-shadow .14s ease,background .14s ease}
body.tsv-sport-page button:hover{transform:translateY(-1px)}
body.tsv-sport-page .primary{background:linear-gradient(135deg,#25865e,#075c43);box-shadow:0 4px 10px rgba(7,92,67,.12)}
body.tsv-sport-page .secondary{background:#eef4f1;color:#245d45}

@media(min-width:1001px){
 body.tsv-sport-page{padding-left:210px!important}
 body.tsv-sport-page .topnav{
  position:fixed!important;z-index:1200!important;left:0!important;top:0!important;bottom:0!important;width:210px!important;height:100vh!important;
  margin:0!important;padding:138px 14px 150px!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:7px!important;
  overflow-y:auto!important;background:linear-gradient(180deg,#064d39 0%,#087052 54%,#063f30 100%)!important;border:0!important;
  box-shadow:10px 0 30px rgba(5,52,38,.14)!important;
 }
 body.tsv-sport-page .topnav:before{
  content:"";position:absolute;left:50%;top:20px;transform:translateX(-50%);width:105px;height:98px;
  background:url('/assets/tsv-junggaense-logo.png') center/contain no-repeat;filter:drop-shadow(0 5px 8px rgba(0,0,0,.13));
 }
 body.tsv-sport-page .topnav:after{
  content:"";position:absolute;left:18px;right:18px;bottom:18px;height:116px;
  background:url('/assets/mehr-als-ein-spiel.png') center bottom/contain no-repeat;opacity:.95;pointer-events:none;
 }
 body.tsv-sport-page .topnav a{
  width:100%!important;min-height:45px!important;padding:10px 12px!important;display:flex!important;align-items:center!important;
  border:1px solid rgba(255,255,255,.10)!important;border-radius:10px!important;background:rgba(255,255,255,.075)!important;color:#fff!important;
  font-size:13px!important;font-weight:850!important;text-decoration:none!important;box-shadow:none!important;white-space:normal!important;
 }
 body.tsv-sport-page .topnav a:hover{transform:translateX(2px)!important;background:rgba(255,255,255,.16)!important}
 body.tsv-sport-page .topnav a[aria-current="page"]{background:#fff!important;color:#075c43!important;border-color:#fff!important}
 body.tsv-sport-page header{position:relative;top:auto;z-index:20}
}
@media(max-width:1000px){body.tsv-sport-page{padding-left:0!important}body.tsv-sport-page main{padding:14px}body.tsv-sport-page .topnav:before,body.tsv-sport-page .topnav:after{display:none}}

/* TSV UI System 2026.09.23 – einheitlich in Turnierleitung und Arbeitsdiensten */
:root{
 --ui-green:#0b684b;--ui-green-dark:#064b38;--ui-green-soft:#eef7f2;
 --ui-ink:#16382b;--ui-muted:#687a71;--ui-line:#cfddd6;--ui-card:#fff;
 --ui-danger:#a73e39;--ui-danger-dark:#812e2a;--ui-radius:14px;
 --ui-shadow:0 8px 22px rgba(20,54,43,.075);
 --ui-shadow-hover:0 13px 28px rgba(20,54,43,.13);
}
html{-webkit-text-size-adjust:100%}
body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}

button,.btn,.navbtn,a.primary,a.secondary{
 -webkit-appearance:none!important;appearance:none!important;box-sizing:border-box;
 position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;
 min-height:44px;padding:10px 16px;border:1px solid var(--ui-line);border-radius:12px;
 background:linear-gradient(180deg,#fff,#f3f8f5);color:#174733;
 font:inherit;font-size:14px;font-weight:850;line-height:1.15;letter-spacing:-.01em;
 text-decoration:none;text-align:center;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;
 box-shadow:0 5px 13px rgba(20,54,43,.075),inset 0 1px 0 #fff;
 transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease,color .16s ease,filter .16s ease;
}
button:hover,.btn:hover,.navbtn:hover,a.primary:hover,a.secondary:hover{transform:translateY(-2px);border-color:#a9c8b8;box-shadow:var(--ui-shadow-hover)}
button:active,.btn:active,.navbtn:active,a.primary:active,a.secondary:active{transform:translateY(0) scale(.985);box-shadow:none}
button:focus-visible,.btn:focus-visible,.navbtn:focus-visible,a.primary:focus-visible,a.secondary:focus-visible{outline:3px solid rgba(52,127,88,.22);outline-offset:3px}
button:disabled,.btn:disabled,.navbtn:disabled,a[aria-disabled="true"]{opacity:.46;cursor:not-allowed;transform:none!important;box-shadow:none!important;filter:saturate(.35)}

.primary,.player,a.primary{
 color:#fff!important;border-color:rgba(3,67,48,.38);
 background:linear-gradient(145deg,#2e9368 0%,var(--ui-green) 52%,var(--ui-green-dark) 100%);
 box-shadow:0 8px 18px rgba(7,92,67,.20),inset 0 1px 0 rgba(255,255,255,.18);
}
.primary:hover,.player:hover,a.primary:hover{filter:brightness(1.04);box-shadow:0 11px 24px rgba(7,92,67,.26),inset 0 1px 0 rgba(255,255,255,.22)}
.secondary,a.secondary{color:#174733!important;border-color:var(--ui-line);background:linear-gradient(180deg,#fff,#f2f8f5);box-shadow:0 5px 13px rgba(20,54,43,.075),inset 0 1px 0 #fff}
.secondary:hover,a.secondary:hover{color:#075c43!important;border-color:#a9c8b8;background:linear-gradient(180deg,#fff,#e8f3ed);box-shadow:0 8px 18px rgba(20,54,43,.12),inset 0 1px 0 #fff}
.danger{color:#fff!important;border-color:rgba(107,28,25,.35);background:linear-gradient(145deg,#c85a53 0%,var(--ui-danger) 56%,var(--ui-danger-dark) 100%);box-shadow:0 7px 16px rgba(148,50,45,.18),inset 0 1px 0 rgba(255,255,255,.18)}
.danger:hover{filter:brightness(1.04);box-shadow:0 10px 21px rgba(148,50,45,.24),inset 0 1px 0 rgba(255,255,255,.20)}

input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),select,textarea{
 box-sizing:border-box;min-height:44px;padding:10px 12px;border:1px solid var(--ui-line);border-radius:11px;
 background:#fbfdfc;color:var(--ui-ink);font:inherit;box-shadow:inset 0 1px 2px rgba(20,54,43,.035);
 transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;
}
textarea{min-height:88px;line-height:1.45;resize:vertical}
input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]):focus,select:focus,textarea:focus{
 outline:none;border-color:#66a486;background:#fff;box-shadow:0 0 0 4px rgba(52,127,88,.12),inset 0 1px 2px rgba(20,54,43,.025);
}
input[type="checkbox"],input[type="radio"]{accent-color:#347F58}

.card{border-color:rgba(28,71,55,.11);border-radius:17px;box-shadow:var(--ui-shadow)}
.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.actions button,.actions .btn,.actions a{margin:0}
dialog{border:0;border-radius:20px;box-shadow:0 28px 85px rgba(3,32,23,.30)}
dialog::backdrop{background:rgba(3,24,17,.68);backdrop-filter:blur(4px)}
.button-svg,button svg{width:18px;height:18px;flex:0 0 auto}

@media(max-width:700px){
 button,.btn,.navbtn,a.primary,a.secondary{min-height:48px;padding:12px 15px}
 .actions{gap:8px}
}
@media(prefers-reduced-motion:reduce){button,.btn,.navbtn,a.primary,a.secondary{transition:none!important}}
