/* ===== ADAC Cyclassics – Streckensperrungen · CI =========================== */
:root{
  --navy:#011e41;        /* Cyclassics Primärfarbe            */
  --navy-2:#0a2c57;
  --cyan:#5bbad5;        /* Cyclassics Akzent                 */
  --blue:#3969b7;
  --blue-soft:#d4e4f5;
  --red:#e2231a;         /* aktiv gesperrt                    */
  --amber:#f0a202;       /* wird gesperrt                     */
  --grey:#9aa3b2;        /* wieder frei                       */
  --course:#b9c0cc;      /* Streckenverlauf                   */
  --ink:#1c2530;
  --muted:#6b7685;
  --bg:#eef1f6;
  --panel:#ffffff;
  --line:#e3e8ef;
  --r57:#e2231a; --r110:#3969b7; --rpro:#7b2d8e;
  --shadow:0 2px 10px rgba(1,30,65,.08);
  --shadow-2:0 6px 24px rgba(1,30,65,.16);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{height:100%}
button,.chip,.sec,.play,.tb-presets button,.topbar-link,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
body{
  margin:0;font-family:"Open Sans",Helvetica,Arial,sans-serif;color:var(--ink);
  background:var(--bg);display:flex;flex-direction:column;overflow:hidden;
}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}

/* ---- Topbar -------------------------------------------------------------- */
.topbar{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;
  gap:16px;padding:10px 20px;background:#fff;border-bottom:3px solid var(--navy);
  box-shadow:var(--shadow);z-index:1200;
}
.brand{display:flex;align-items:center;gap:14px;min-width:0}
.logo{height:42px;width:auto;display:block}
.brand-txt{display:flex;flex-direction:column;line-height:1.1;min-width:0}
.brand-kicker{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan)}
.brand-txt h1{margin:1px 0 0;font-size:20px;font-weight:700;color:var(--navy);white-space:nowrap}
.topbar-right{display:flex;align-items:center;gap:18px}
.race-date{text-align:right;line-height:1.15}
.rd-label{display:block;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.race-date strong{font-size:14px;color:var(--navy)}
.topbar-link{
  font-size:13px;font-weight:600;color:#fff;background:var(--navy);
  padding:8px 14px;border-radius:999px;white-space:nowrap;
}
.topbar-link:hover{background:var(--navy-2);text-decoration:none}

/* ---- App-Layout ---------------------------------------------------------- */
.app{flex:1 1 auto;display:flex;min-height:0}
.sidebar{
  flex:0 0 372px;display:flex;flex-direction:column;background:var(--panel);
  border-right:1px solid var(--line);min-height:0;
}
.intro{padding:14px 18px 10px}
.intro p{margin:0;font-size:13.5px;line-height:1.5;color:var(--muted)}
.intro strong{color:var(--navy)}

.controls{padding:4px 18px 10px;border-bottom:1px solid var(--line)}
.search-wrap{position:relative;margin-bottom:10px}
#search{
  width:100%;padding:11px 14px 11px 38px;border:1px solid var(--line);border-radius:10px;
  font:inherit;font-size:14px;background:#f7f9fc url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%236b7685' stroke-width='2' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><path d='M21 21l-4.3-4.3'/></svg>") 12px center no-repeat;
}
#search:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(91,186,213,.25);background-color:#fff}
.filters{display:flex;flex-wrap:wrap;gap:6px}
.chip{
  font:inherit;font-size:12.5px;font-weight:600;color:var(--navy);cursor:pointer;
  background:#eef2f8;border:1px solid transparent;padding:6px 11px;border-radius:999px;transition:.12s;
}
.chip:hover{background:var(--blue-soft)}
.chip.is-active{background:var(--navy);color:#fff}

.list-head{
  display:flex;align-items:baseline;justify-content:space-between;
  padding:10px 18px 6px;font-size:12px;color:var(--muted);
}
#listCount{font-weight:700;color:var(--navy);font-size:13px}
.list-hint{font-style:italic}

.seclist{list-style:none;margin:0;padding:0 10px 6px;overflow-y:auto;flex:1 1 auto}
.sec{
  display:block;padding:10px 12px;margin:4px 2px;border-radius:10px;cursor:pointer;
  border:1px solid var(--line);border-left:4px solid var(--grey);background:#fff;transition:.12s;
}
.sec:hover{border-color:var(--cyan);box-shadow:var(--shadow)}
.sec.sel{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(91,186,213,.4)}
.sec.dim{opacity:.55}
.sec[data-status="active"]{border-left-color:var(--red)}
.sec[data-status="upcoming"]{border-left-color:var(--amber)}
.sec[data-status="cleared"]{border-left-color:var(--grey)}
.sec-top{display:flex;align-items:center;gap:8px;justify-content:space-between}
.sec-area{font-weight:700;font-size:14px;color:var(--navy);line-height:1.2}
.sec-badge{
  flex:0 0 auto;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:2px 7px;border-radius:999px;color:#fff;background:var(--grey);
}
.sec-badge.active{background:var(--red)}
.sec-badge.upcoming{background:var(--amber)}
.sec-badge.cleared{background:var(--grey)}
.sec-time{display:flex;align-items:center;gap:6px;margin-top:5px;font-size:13px;font-weight:600;color:var(--ink)}
.sec-time svg{flex:0 0 auto}
.sec-streets{margin-top:4px;font-size:12px;color:var(--muted);line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sec-meta{margin-top:6px;display:flex;gap:5px;flex-wrap:wrap}
.tag{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:6px;background:#eef2f8;color:var(--navy)}
.tag.state{background:var(--blue-soft)}

.route-toggle{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:9px 18px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted);
}
.rt-label{font-weight:700;color:var(--navy)}
.route-toggle label{display:inline-flex;align-items:center;gap:5px;cursor:pointer;color:var(--ink)}
.sw{width:16px;height:4px;border-radius:2px;display:inline-block}
.sw-r57{background:var(--r57)} .sw-r110{background:var(--r110)} .sw-rpro{background:var(--rpro)}
.disclaimer{padding:10px 18px 14px;font-size:11px;line-height:1.5;color:var(--muted);background:#f7f9fc;border-top:1px solid var(--line)}

/* ---- Karte --------------------------------------------------------------- */
.mapwrap{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0;position:relative}
#map{flex:1 1 auto;min-height:0;background:#dfe5ee}
.leaflet-container{font-family:inherit}

.map-overlay{position:absolute;z-index:600;background:rgba(255,255,255,.95);
  border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}
.legend{right:12px;top:12px;padding:9px 12px;font-size:12px}
.lg-row{display:flex;align-items:center;gap:8px;padding:2px 0;color:var(--ink)}
.lg-line{width:22px;height:0;border-top-width:4px;border-top-style:solid;border-radius:2px}
.lg-active{border-top-color:var(--red)}
.lg-upcoming{border-top-color:var(--amber);border-top-style:dotted;border-top-width:4px}
.lg-cleared{border-top-color:var(--grey)}
.lg-course{border-top-color:var(--course);border-top-width:3px}
/* gefüllte Zone (Veranstaltungsfläche) – wie auf der Karte: roter Rand + halbtransparente Füllung */
.lg-area{flex:0 0 auto;width:22px;height:12px;border-radius:3px;
  background:rgba(226,35,26,.22);border:1.5px solid var(--red)}

/* ---- Zeitleiste ---------------------------------------------------------- */
.timebar{flex:0 0 auto;background:#fff;border-top:1px solid var(--line);
  padding:10px 18px 12px;box-shadow:0 -2px 10px rgba(1,30,65,.06);z-index:700}
.tb-top{display:flex;align-items:center;gap:14px}
.play{
  flex:0 0 auto;width:42px;height:42px;border-radius:50%;border:none;cursor:pointer;
  background:var(--navy);color:#fff;font-size:15px;display:grid;place-items:center;transition:.12s;
}
.play:hover{background:var(--blue)}
.play.is-playing{background:var(--red)}
.tb-clock{flex:0 0 auto;min-width:108px}
.tb-time{display:block;font-size:26px;font-weight:700;color:var(--navy);line-height:1;font-variant-numeric:tabular-nums}
.tb-active{display:block;font-size:12px;font-weight:600;color:var(--red);margin-top:2px}
.tb-presets{margin-left:auto;display:flex;gap:6px}
.tb-presets button{
  font:inherit;font-size:12px;font-weight:600;color:var(--navy);background:#eef2f8;
  border:none;border-radius:8px;padding:6px 9px;cursor:pointer;transition:.12s;
}
.tb-presets button:hover{background:var(--blue-soft)}

.slider{ -webkit-appearance:none;appearance:none;width:100%;height:8px;margin:14px 0 4px;
  border-radius:999px;background:var(--blue-soft);cursor:pointer;touch-action:none;
  background-image:linear-gradient(var(--cyan),var(--cyan));background-repeat:no-repeat}
.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;
  background:var(--navy);border:3px solid #fff;box-shadow:var(--shadow-2);cursor:pointer}
.slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--navy);
  border:3px solid #fff;box-shadow:var(--shadow-2);cursor:pointer}
.slider:focus{outline:none}
.slider:focus::-webkit-slider-thumb{box-shadow:0 0 0 4px rgba(91,186,213,.4)}
.tb-scale{display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums}

/* ---- Popup --------------------------------------------------------------- */
.leaflet-popup-content-wrapper{border-radius:12px;box-shadow:var(--shadow-2)}
.leaflet-popup-content{margin:12px 14px;font-size:13px;line-height:1.5}
.pp-area{font-weight:700;font-size:15px;color:var(--navy)}
.pp-state{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.pp-time{margin:7px 0;font-weight:700;font-size:14px}
.pp-time.active{color:var(--red)} .pp-time.upcoming{color:var(--amber)} .pp-time.cleared{color:var(--grey)}
.pp-streets{color:var(--muted);font-size:12px}
.pp-tags{margin-top:7px;display:flex;gap:5px;flex-wrap:wrap}

/* ---- Mobil --------------------------------------------------------------- */
.mobile-toggle{display:none}
@media (max-width:860px){
  body{overflow:auto}
  .topbar{flex-wrap:wrap;gap:8px;padding:8px 14px}
  .brand-txt h1{font-size:18px}
  .topbar-right{gap:10px}
  .race-date strong{font-size:13px}
  .app{flex-direction:column;height:auto}
  .mapwrap{order:1;height:62vh;min-height:380px;flex:none}
  .timebar{padding:9px 14px 11px}
  .sidebar{order:2;flex:none;width:100%;border-right:none;border-top:1px solid var(--line)}
  .seclist{max-height:none;overflow:visible}
  .legend{font-size:11px;padding:7px 9px}
  .tb-presets{display:none}
}
@media (max-width:480px){
  .brand-kicker{display:none}
  .topbar-link{padding:6px 10px;font-size:12px}
  .tb-time{font-size:22px}
}

/* Touch-Geräte: größerer Regler-Daumen für sichere Bedienung am Daumen */
@media (pointer:coarse){
  .slider{height:10px}
  .slider::-webkit-slider-thumb{width:28px;height:28px}
  .slider::-moz-range-thumb{width:26px;height:26px}
  .play{width:46px;height:46px}
}

/* ---- Tabs + Routenplaner ------------------------------------------------- */
.tabs{display:flex;gap:4px;padding:8px 14px 0;border-bottom:1px solid var(--line);flex:0 0 auto}
.tab{flex:1;font:inherit;font-size:14px;font-weight:700;color:var(--muted);background:none;border:none;
  padding:11px 8px;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1px}
.tab:hover{color:var(--navy)}
.tab.is-active{color:var(--navy);border-bottom-color:var(--cyan)}
.tabpane{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.tabpane[hidden]{display:none}
#pane-route{overflow-y:auto}

.planner-intro{margin:14px 16px 14px;font-size:13.5px;line-height:1.5;color:var(--muted)}
.planner-intro strong{color:var(--navy)}
.fld{position:relative;display:block;padding:0 16px;margin-bottom:13px}
.fld>span{display:block;font-size:12px;font-weight:700;color:var(--navy);margin-bottom:5px}
.fld input[type=text],.fld input[type=time]{width:100%;padding:11px 12px;border:1px solid var(--line);
  border-radius:10px;font:inherit;font-size:14px;background:#f7f9fc;color:var(--ink)}
.fld input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(91,186,213,.25);background:#fff}
.fld-row{display:flex;gap:8px}
.fld-row input{flex:1}
.iconbtn{flex:0 0 auto;width:44px;border:1px solid var(--line);border-radius:10px;background:#f7f9fc;cursor:pointer;font-size:18px;line-height:1}
.iconbtn:hover{background:var(--blue-soft);border-color:var(--cyan)}
.iconbtn.busy{opacity:.5}
.fld-when input[type=time]{max-width:150px}

/* Abfahrt/Ankunft-Umschalter */
.seg{display:flex;gap:4px;background:#eef2f8;border-radius:10px;padding:3px;margin-bottom:8px}
.seg-btn{flex:1;font:inherit;font-size:13px;font-weight:700;color:var(--muted);background:none;border:none;
  padding:8px 6px;border-radius:7px;cursor:pointer;transition:.12s}
.seg-btn:hover{color:var(--navy)}
.seg-btn.is-active{background:#fff;color:var(--navy);box-shadow:var(--shadow)}

/* Verkehrs-Hinweis */
.rnote{margin:0 16px 14px;padding:10px 12px;font-size:12.5px;line-height:1.5;color:#7a4d00;
  background:#fff7e6;border:1px solid #ffe0a3;border-left:3px solid var(--amber);border-radius:10px}
.rnote strong{color:#8a4b00}

.ac{position:absolute;left:16px;right:16px;top:100%;z-index:40;margin:3px 0 0;padding:4px;list-style:none;
  background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-2);max-height:230px;overflow:auto}
.ac li{padding:8px 10px;border-radius:7px;cursor:pointer;font-size:13px;line-height:1.35}
.ac li:hover,.ac li.active{background:var(--blue-soft)}
.ac li b{font-weight:600;color:var(--navy)}
.ac li small{display:block;color:var(--muted);font-size:11.5px}

.btn-primary{display:block;width:calc(100% - 32px);margin:8px 16px 6px;padding:13px;border:none;border-radius:10px;
  background:var(--navy);color:#fff;font:inherit;font-size:15px;font-weight:700;cursor:pointer;transition:.12s}
.btn-primary:hover{background:var(--blue)}
.btn-primary:disabled{opacity:.55;cursor:default}
.btn-ghost{margin-top:10px;background:none;border:none;color:var(--blue);font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.btn-ghost:hover{text-decoration:underline}

.rstatus{margin:8px 16px;padding:10px 12px;border-radius:8px;font-size:13px;background:#eef2f8;color:var(--navy)}
.rstatus.err{background:#fdeaea;color:#b3160f}
.rresult{margin:8px 16px;padding:13px 15px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}
.rr-head{display:flex;align-items:baseline;gap:10px}
.rr-dist{font-size:23px;font-weight:700;color:var(--navy)}
.rr-dur{font-size:14px;color:var(--muted)}
.rr-when{margin-top:7px;font-size:14px;font-weight:700;color:var(--navy)}
.rr-when .ca{color:var(--muted);font-weight:600}
.rr-when .arrow{color:var(--cyan);margin:0 5px;font-weight:700}
.rr-avoid{margin-top:7px;font-size:13px;line-height:1.5;color:var(--ink)}
.rr-avoid b{color:var(--red)}
.rr-avoid .none{color:#1dae50;font-weight:600}

/* Routen-Marker */
.rmk{width:24px;height:24px;border-radius:50%;border:3px solid #fff;box-shadow:var(--shadow-2);
  display:grid;place-items:center;color:#fff;font-weight:700;font-size:12px}
.rmk-a{background:#1dae50}
.rmk-b{background:var(--navy)}
