/* === CSS extrahiert aus analyse.html (extrahiert 2026-04-26) === */
  @import url('/shared/fonts/inter.css');
  *{margin:0;padding:0;box-sizing:border-box}
  :root{--bg:linear-gradient(145deg,#eef2f7 0%,#e4ecf4 25%,#dfe8f0 50%,#e8eef5 75%,#f0f4f8 100%);--nav-bg:rgba(255,255,255,0.55);--nav-border:rgba(255,255,255,0.5);--card-bg:rgba(255,255,255,0.45);--card-border:rgba(255,255,255,0.6);--card-hover-bg:rgba(255,255,255,0.65);--card-shadow:0 2px 16px rgba(0,0,0,0.04);--text-primary:#1c1c1e;--text-secondary:#636366;--text-tertiary:#8e8e93;--badge-bg:rgba(4,179,214,0.1);--badge-color:#04b3d6;--toggle-bg:rgba(0,0,0,0.06);--toggle-knob:#fff;--accent:#04b3d6}
  [data-theme="dark"]{--bg:linear-gradient(145deg,#0a0a1a 0%,#0f1528 20%,#151022 40%,#1a0f1e 60%,#12111a 80%,#0d1318 100%);--nav-bg:rgba(255,255,255,0.05);--nav-border:rgba(255,255,255,0.09);--card-bg:rgba(255,255,255,0.06);--card-border:rgba(255,255,255,0.1);--card-hover-bg:rgba(255,255,255,0.1);--card-shadow:0 2px 16px rgba(0,0,0,0.2);--text-primary:#f5f5f7;--text-secondary:#a1a1a6;--text-tertiary:#636366;--badge-bg:rgba(4,179,214,0.15);--badge-color:#2cc5e4;--toggle-bg:rgba(255,255,255,0.1);--toggle-knob:#1c1c1e}
  body{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;min-height:100vh;background:var(--bg);background-size:400% 400%;animation:gs 20s ease infinite;-webkit-font-smoothing:antialiased}
  @keyframes gs{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}

  nav{position:sticky;top:0;z-index:200;background:var(--nav-bg);backdrop-filter:blur(44px) saturate(180%);-webkit-backdrop-filter:blur(44px) saturate(180%);border-bottom:1px solid var(--nav-border);padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between}
  .nav-left{display:flex;align-items:center;gap:10px}
  .nav-logo{height:28px}[data-theme="dark"] .nav-logo{filter:brightness(2.2) contrast(0.85)}
  .nav-brand{font-size:16px;font-weight:700;color:var(--text-primary);letter-spacing:-.4px}
  .nav-divider{width:1px;height:18px;background:var(--nav-border);margin:0 2px}
  .nav-subtitle{font-size:12px;color:var(--text-secondary);font-weight:500}
  .nav-right{display:flex;align-items:center;gap:12px}
  .nav-back{font-size:13px;font-weight:500;color:var(--badge-color);text-decoration:none;padding:5px 10px;border-radius:8px}
  .nav-back:hover{background:var(--badge-bg)}
  .theme-toggle{display:flex;align-items:center;gap:6px;cursor:pointer}
  .toggle-icon{font-size:14px;line-height:1}
  .toggle-track{width:44px;height:26px;border-radius:13px;background:var(--toggle-bg);backdrop-filter:blur(20px);border:1px solid var(--card-border);position:relative}
  .toggle-knob{width:20px;height:20px;border-radius:10px;background:var(--toggle-knob);position:absolute;top:2px;left:3px;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 4px rgba(0,0,0,.15)}
  [data-theme="dark"] .toggle-knob{left:21px;background:#f5f5f7}

  .container{max-width:1200px;margin:0 auto;padding:32px 24px 60px}
  .toolbar{display:flex;align-items:center;gap:10px;margin-bottom:20px;flex-wrap:wrap}
  .toolbar input[type="date"],.toolbar select{padding:7px 12px;border-radius:10px;border:1px solid var(--card-border);background:var(--toggle-bg);color:var(--text-primary);font-family:inherit;font-size:13px}
  .btn-primary{display:flex;align-items:center;gap:6px;padding:8px 16px;border-radius:10px;border:none;background:linear-gradient(135deg,#04b3d6,#0090b0);color:#fff;font-size:13.5px;font-weight:600;font-family:inherit;cursor:pointer}
  .btn-primary:hover{opacity:.88}
  .btn-secondary{padding:7px 14px;border-radius:10px;border:1px solid var(--card-border);background:var(--card-bg);color:var(--text-secondary);font-size:13px;font-weight:500;font-family:inherit;cursor:pointer}
  .btn-secondary:hover{background:var(--card-hover-bg)}
  .btn-danger{padding:7px 14px;border-radius:10px;border:1px solid rgba(255,69,58,.3);background:var(--card-bg);color:#ff453a;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer}

  /* Sync Banner */
  .sync-banner{background:rgba(255,159,10,.1);border:1px solid rgba(255,159,10,.3);border-radius:12px;padding:12px 18px;margin-bottom:20px;display:flex;align-items:center;gap:12px;font-size:13px;color:var(--text-primary)}
  .sync-banner.hidden{display:none}
  .sync-progress{margin-top:8px}
  .progress-bar{width:100%;height:6px;border-radius:3px;background:var(--card-border);overflow:hidden}
  .progress-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .3s}
  .progress-text{font-size:11px;color:var(--text-tertiary);margin-top:4px}

  /* KPI Grid */
  .stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:28px}
  .stat-card{background:var(--card-bg);backdrop-filter:blur(60px) saturate(180%);border:1px solid var(--card-border);border-radius:16px;padding:18px 20px;box-shadow:var(--card-shadow);position:relative;overflow:hidden;cursor:pointer;transition:all .2s}
  .stat-card:hover{box-shadow:0 8px 32px rgba(0,0,0,.08);transform:translateY(-1px)}
  .stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:50%;background:linear-gradient(180deg,rgba(255,255,255,.18) 0%,transparent 100%);border-radius:16px 16px 0 0;pointer-events:none}
  [data-theme="dark"] .stat-card::before{background:linear-gradient(180deg,rgba(255,255,255,.04) 0%,transparent 100%)}
  .stat-label{font-size:11px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
  .stat-value{font-size:26px;font-weight:700;color:var(--text-primary);letter-spacing:-1px;line-height:1}
  .stat-sub{font-size:11px;color:var(--text-tertiary);margin-top:4px}
  .delta{font-size:12px;font-weight:600;margin-left:6px}
  .delta.up{color:#30d158}
  .delta.down{color:#ff453a}
  .delta.neutral{color:var(--text-tertiary)}

  /* Sections */
  .section{margin-bottom:28px}
  .section-title{font-size:16px;font-weight:700;color:var(--text-primary);margin-bottom:14px;display:flex;align-items:center;gap:8px}

  /* Anomalie Cards */
  .anomalie-list{display:flex;flex-direction:column;gap:8px;max-height:400px;overflow-y:auto;padding-right:4px}
  .anomalie-card{background:var(--card-bg);backdrop-filter:blur(40px);border:1px solid var(--card-border);border-radius:12px;padding:14px 16px;display:flex;align-items:flex-start;gap:12px;cursor:pointer;transition:all .2s}
  .anomalie-card:hover{background:var(--card-hover-bg);box-shadow:var(--card-shadow)}
  .anomalie-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
  .anomalie-icon.rot{background:rgba(255,107,107,.15);color:#ff6b6b}
  .anomalie-icon.orange{background:rgba(255,169,77,.15);color:#ffa94d}
  .anomalie-icon.gelb{background:rgba(255,224,102,.15);color:#e6c200}
  .anomalie-body{flex:1;min-width:0}
  .anomalie-titel{font-size:13px;font-weight:600;color:var(--text-primary)}
  .anomalie-desc{font-size:12px;color:var(--text-secondary);margin-top:2px;line-height:1.4}
  .anomalie-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;text-transform:uppercase;flex-shrink:0}
  .anomalie-badge.rot{background:rgba(255,107,107,.15);color:#ff6b6b}
  .anomalie-badge.orange{background:rgba(255,169,77,.15);color:#ffa94d}
  .anomalie-badge.gelb{background:rgba(255,224,102,.15);color:#e6c200}
  .anomalie-chips{display:flex;gap:6px;margin-top:6px}
  .anomalie-chip{font-size:11px;padding:3px 10px;border-radius:20px;border:1px solid var(--card-border);color:var(--badge-color);cursor:pointer;background:transparent}
  .anomalie-chip:hover{background:var(--badge-bg)}

  /* Heatmap */
  .heatmap-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .heatmap{border-collapse:collapse;width:100%}
  .heatmap th{font-size:10px;font-weight:600;color:var(--text-tertiary);padding:4px 0;text-align:center;min-width:36px}
  .heatmap td{text-align:center;padding:0}
  .heatmap-cell{width:100%;height:32px;border-radius:4px;margin:1px;cursor:pointer;transition:all .15s;border:1px solid transparent;font-size:10px;display:flex;align-items:center;justify-content:center;color:transparent}
  .heatmap-cell:hover{border-color:var(--accent);color:var(--text-primary)}
  .heatmap-cell.dimmed{opacity:.2}
  .heatmap .dow-label{font-size:11px;font-weight:600;color:var(--text-secondary);text-align:right;padding-right:8px;min-width:30px}

  /* Charts */
  .chart-wrap{background:var(--card-bg);backdrop-filter:blur(60px);border:1px solid var(--card-border);border-radius:16px;padding:20px;box-shadow:var(--card-shadow)}
  .chart-container{position:relative;height:300px}
  .charts-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}

  /* Tour-Treue */
  .tour-treue-item{background:var(--card-bg);backdrop-filter:blur(40px);border:1px solid var(--card-border);border-radius:12px;padding:14px 16px;margin-bottom:8px}
  .tour-treue-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}
  .tour-treue-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}
  .tour-treue-name{font-size:14px;font-weight:600;color:var(--text-primary)}
  .tour-treue-pct{font-size:14px;font-weight:700;margin-left:auto}
  .tour-treue-bar{height:8px;border-radius:4px;background:var(--card-border);overflow:hidden;display:flex}
  .tour-treue-fill{height:100%}
  .tour-treue-fill.ok{background:#30d158}
  .tour-treue-fill.miss{background:#ff6b6b}
  .tour-treue-missed{font-size:11px;color:var(--text-tertiary);margin-top:6px}

  /* Map */
  #analyse-map{width:100%;height:400px;border-radius:16px;border:1px solid var(--card-border);overflow:hidden}
  .map-toggle{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:4px;margin-bottom:8px}

  /* Detail Panel */
  .detail-panel{position:fixed;top:0;right:0;width:400px;height:100%;background:var(--nav-bg);backdrop-filter:blur(44px) saturate(180%);-webkit-backdrop-filter:blur(44px) saturate(180%);border-left:1px solid var(--nav-border);z-index:500;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);overflow-y:auto;box-shadow:-4px 0 24px rgba(0,0,0,.1)}
  .detail-panel.open{transform:translateX(0)}
  .detail-header{position:sticky;top:0;background:var(--nav-bg);backdrop-filter:blur(44px);padding:16px 20px;border-bottom:1px solid var(--nav-border);display:flex;align-items:center;justify-content:space-between;z-index:1}
  .detail-title{font-size:15px;font-weight:700;color:var(--text-primary)}
  .detail-close{width:28px;height:28px;border-radius:50%;border:none;background:var(--toggle-bg);color:var(--text-secondary);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}
  .detail-close:hover{background:var(--card-hover-bg);color:var(--text-primary)}
  .detail-body{padding:20px}

  /* Timeline */
  .timeline{position:relative;padding-left:24px}
  .timeline::before{content:'';position:absolute;left:8px;top:0;bottom:0;width:2px;background:var(--card-border)}
  .timeline-event{position:relative;padding-bottom:16px}
  .timeline-dot{position:absolute;left:-20px;top:2px;width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.2)}
  .timeline-dot.fahrt{background:#3b82f6}
  .timeline-dot.besuch{background:#30d158}
  .timeline-dot.stop{background:#8e8e93}
  .timeline-time{font-size:11px;font-weight:600;color:var(--text-tertiary)}
  .timeline-text{font-size:13px;color:var(--text-primary);margin-top:2px}
  .timeline-sub{font-size:11px;color:var(--text-tertiary)}

  /* Tour-Tagesdetail */
  .ttd-tour-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
  .ttd-tour-tab{padding:6px 14px;border-radius:8px;border:1px solid var(--card-border);background:var(--card-bg);color:var(--text-secondary);font-size:12.5px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px;font-family:inherit;transition:all .15s}
  .ttd-tour-tab:hover{background:var(--card-hover-bg)}
  .ttd-tour-tab.active{border-color:var(--accent);color:var(--accent);background:var(--badge-bg)}
  .ttd-tour-tab .ttd-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
  .ttd-day-list{display:flex;flex-direction:column;gap:8px}
  .ttd-day{background:var(--card-bg);backdrop-filter:blur(40px);border:1px solid var(--card-border);border-radius:14px;overflow:hidden;transition:all .2s}
  .ttd-day-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;cursor:pointer;transition:background .15s}
  .ttd-day-header:hover{background:var(--card-hover-bg)}
  .ttd-day-header-left{display:flex;align-items:center;gap:10px}
  .ttd-day-date{font-size:13.5px;font-weight:600;color:var(--text-primary)}
  .ttd-day-kz{font-size:11px;color:var(--text-tertiary)}
  .ttd-day-header-right{display:flex;align-items:center;gap:12px}
  .ttd-day-stats{font-size:11.5px;color:var(--text-secondary);display:flex;gap:8px}
  .ttd-day-badge{padding:2px 8px;border-radius:6px;font-size:11px;font-weight:600}
  .ttd-day-badge.ok{background:rgba(48,209,88,.1);color:#30d158}
  .ttd-day-badge.warn{background:rgba(255,159,10,.1);color:#ff9f0a}
  .ttd-day-badge.danger{background:rgba(255,69,58,.1);color:#ff453a}
  .ttd-chevron{font-size:14px;color:var(--text-tertiary);transition:transform .2s}
  .ttd-day.open .ttd-chevron{transform:rotate(90deg)}
  .ttd-day-body{display:none;padding:0 16px 14px;border-top:1px solid var(--card-border)}
  .ttd-day.open .ttd-day-body{display:block}
  .ttd-segment{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--card-border)}
  .ttd-segment:last-child{border-bottom:none}
  .ttd-seg-icon{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
  .ttd-seg-icon.fahrt{background:rgba(59,130,246,.1);color:#3b82f6}
  .ttd-seg-icon.stop{background:rgba(48,209,88,.1);color:#30d158}
  .ttd-seg-icon.depot{background:rgba(142,142,147,.1);color:#8e8e93}
  .ttd-seg-body{flex:1;min-width:0}
  .ttd-seg-title{font-size:13px;font-weight:600;color:var(--text-primary)}
  .ttd-seg-sub{font-size:11.5px;color:var(--text-tertiary);margin-top:2px}
  .ttd-seg-right{text-align:right;flex-shrink:0}
  .ttd-seg-time{font-size:12px;font-weight:600;color:var(--text-secondary)}
  .ttd-seg-dur{font-size:11px;color:var(--text-tertiary)}

  /* Track Player */
  .tp-overlay{position:fixed;inset:0;z-index:600;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center}
  .tp-overlay.hidden{display:none}
  .tp-player{width:92vw;max-width:1200px;height:82vh;background:var(--nav-bg);backdrop-filter:blur(44px);border-radius:20px;border:1px solid var(--nav-border);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.3)}
  .tp-header{padding:12px 20px;border-bottom:1px solid var(--card-border);display:flex;align-items:center;justify-content:space-between;gap:12px}
  .tp-title{font-size:15px;font-weight:700;color:var(--text-primary)}
  .tp-stats{font-size:12px;color:var(--text-tertiary);display:flex;gap:10px}
  #tp-map{flex:1;min-height:0}
  .tp-controls{padding:10px 20px;border-top:1px solid var(--card-border);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
  .tp-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--card-border);background:var(--card-bg);color:var(--text-primary);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:all .15s}
  .tp-btn:hover{background:var(--card-hover-bg)}
  .tp-timeline{flex:1;height:6px;border-radius:3px;background:var(--card-border);cursor:pointer;position:relative;min-width:100px;margin-top:18px}
  .tp-progress{height:100%;border-radius:3px;background:var(--accent);width:0;pointer-events:none;transition:width .1s}
  .tp-playhead{position:absolute;top:-3px;left:0;width:2px;height:12px;background:var(--accent);pointer-events:none;transform:translateX(-1px);transition:left .1s}
  .tp-playhead::after{content:attr(data-time);position:absolute;bottom:16px;left:50%;transform:translateX(-50%);background:var(--accent);color:#fff;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;white-space:nowrap;font-family:inherit;box-shadow:0 2px 4px rgba(0,0,0,.2)}
  .tp-playhead::before{content:'';position:absolute;bottom:13px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid var(--accent)}
  .tp-time{font-size:12px;color:var(--text-secondary);font-weight:600;min-width:40px}
  .tp-speed{padding:4px 8px;border-radius:6px;border:1px solid var(--card-border);background:var(--card-bg);color:var(--text-primary);font-size:12px;font-family:inherit}
  .tp-legend{display:flex;gap:6px;align-items:center;font-size:10px;color:var(--text-tertiary)}
  .tp-ldot{width:10px;height:10px;border-radius:2px}
  .tp-stops{display:flex;gap:6px;padding:8px 16px;overflow-x:auto;border-top:1px solid var(--card-border);-webkit-overflow-scrolling:touch}
  .tp-stops:empty{display:none}
  .tp-stop-btn{display:flex;flex-direction:column;gap:1px;padding:6px 12px;border-radius:8px;border:1px solid var(--card-border);background:var(--card-bg);cursor:pointer;white-space:nowrap;transition:all .15s;font-family:inherit;text-align:left;flex-shrink:0}
  .tp-stop-btn:hover{background:var(--card-hover-bg);border-color:var(--accent)}
  @media(max-width:768px){.tp-player{width:100vw;height:100vh;border-radius:0}.tp-controls{padding:8px 12px;gap:6px}.tp-legend{display:none}}

  /* Loading */
  .loading{display:flex;align-items:center;justify-content:center;padding:60px;gap:10px;color:var(--text-secondary);font-size:14px}
  .spinner{width:20px;height:20px;border:2px solid var(--card-border);border-top-color:var(--badge-color);border-radius:50%;animation:spin .8s linear infinite}
  @keyframes spin{to{transform:rotate(360deg)}}
  .empty-state{text-align:center;padding:40px;color:var(--text-tertiary);font-size:13px}

  /* Print */
  @media print{nav,.toolbar,.sync-banner,.btn-primary,.btn-secondary,.chart-wrap,#analyse-map,.detail-panel,.anomalie-chips{display:none!important}.container{padding:10px}.stat-grid{grid-template-columns:repeat(3,1fr)}}

  /* Mobile */
  @media(max-width:768px){
    .container{padding:20px 16px 60px}
    .stat-grid{grid-template-columns:repeat(2,1fr)}
    .stat-value{font-size:22px}
    .charts-row{grid-template-columns:1fr}
    .chart-container{height:220px}
    #analyse-map{height:280px}
    .nav-subtitle{display:none}
    .detail-panel{width:100%;left:0}
    .anomalie-list{max-height:300px}
    .toolbar{gap:6px}
  }


/* === Auto-generierte Klassen aus inline style="..." (analyse.html, 7 unique) === */
.s-bcf003 { font-size:14px;font-weight:600;color:var(--text-primary); }
.s-09ccb6 { color:var(--text-tertiary); }
.s-815ff6 { padding:6px 14px;font-size:12px; }
.s-551358 { background:#30d158; }
.s-7cc68c { background:#ffd60a; }
.s-671b00 { background:#ff9f0a; }
.s-0b48d9 { background:#ff453a; }


/* === Auto-Klassen aus inline style="..." in analyse.js (24 unique) === */
.s-6ae3f8 { font-size:14px;font-weight:400;color:var(--text-tertiary); }
.s-161768 { font-size:12px;color:var(--text-tertiary); }
.s-b84c7d { font-size:13px; }
.s-8fdce8 { text-decoration:none; }
.s-e90af2 { background:' + bg + '; }
.s-7377f0 { font-size:20px;text-shadow:0 1px 3px rgba(0,0,0,.3); }
.s-01a3c3 { background:' + escHtml(t.farbe) + '; }
.s-2ed99c { background:#8e8e93; }
.s-d3c951 { text-decoration:none;cursor:pointer; }
.s-58de29 { cursor:pointer;border:none;font-family:inherit; }
.s-5f40cb { font-size:10px;padding:1px 5px;border-radius:4px;background:rgba(48,209,88,.12);color:#30d158;font-weight:600; }
.s-9eab2f { color:var(--badge-color); }
.s-5534b3 { margin-bottom:16px; }
.s-55fccc { font-size:11px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px; }
.s-e3faae { font-size:18px;font-weight:700;color:var(--text-primary); }
.s-e206ce { display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px; }
.s-3f866c { padding:12px; }
.s-ff9ec5 { font-size:20px; }
.s-53fad5 { font-size:13px;margin-top:16px; }
.s-306ed5 { font-size:12px;font-weight:600;color:var(--text-primary); }
.s-64fa8e { font-size:10px;color:var(--text-tertiary); }
.s-de8322 { font-size:22px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.4)); }
.s-e21515 { font-size:18px; }
.s-93c426 { font-size:16px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3)); }

/* CSP-Helper */
.warnbox-orange { background: rgba(255,159,10,0.12); border-color: rgba(255,159,10,0.4); }
