*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #f5f6f8;--bg-surface: #ffffff;--bg-input: #eef0f4;--text: #1c1c1e;--text-dim: #6b6b80;--accent: #3a5ce5;--accent-dim: rgba(58, 92, 229, .1);--border: #d8dbe3;--focus-ring: rgba(58, 92, 229, .5);--row-alt: rgba(0, 0, 0, .025);--sweet-bg: rgba(255, 152, 0, .1);--sweet-border: rgba(255, 152, 0, .6);--header-border: #c8ccd6;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--ubahn: #0065ae;--sbahn: #00834b;--bus: #007a8a;--tram: #d4202c;--bahn: #6e6e6e;--delay-color: #d48800;--cancelled-color: #c0392b;--live-color: #1a9e52;--scheduled-color: #d48800;--error-color: #c0392b}@media(prefers-color-scheme:dark){:root{--bg: #161625;--bg-surface: #1e1e32;--bg-input: #272742;--text: #e8e8ec;--text-dim: #9494ad;--accent: #5b7ef7;--accent-dim: rgba(91, 126, 247, .12);--border: #2e2e48;--focus-ring: rgba(91, 126, 247, .5);--row-alt: rgba(255, 255, 255, .02);--sweet-bg: rgba(255, 140, 0, .12);--sweet-border: rgba(255, 140, 0, .7);--header-border: #2e2e48;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 2px 8px rgba(0, 0, 0, .4);--delay-color: #f5a623;--cancelled-color: #e74c3c;--live-color: #2ecc71;--scheduled-color: #f5a623;--error-color: #e74c3c}}html,body{height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,SF Pro Display,Segoe UI,Roboto,Helvetica,Arial,sans-serif;overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}button:focus:not(:focus-visible),input:focus:not(:focus-visible){outline:none}.page{display:flex;flex-direction:column;height:100dvh;max-width:900px;margin:0 auto;padding:env(safe-area-inset-top,8px) 0 env(safe-area-inset-bottom,0)}.app-header{display:flex;align-items:center;padding:12px 16px 14px;border-bottom:1px solid var(--header-border);gap:12px;background:var(--bg-surface);box-shadow:var(--shadow-sm)}.badge{font-size:.8rem;font-weight:600;letter-spacing:.5px;padding:4px 10px;border-radius:6px}.badge.live{color:var(--live-color);border:1.5px solid var(--live-color);background:#1a9e5214}.badge.error{color:var(--error-color);border:1.5px solid var(--error-color);background:#c0392b14}.app-title{flex:1;text-align:center;font-size:1.1rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.2px}.app-clock{text-align:right;font-size:1.5rem;font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:1px}.lang-toggle{display:flex;gap:0;border:1px solid var(--border);border-radius:8px;overflow:hidden}.lang-btn{background:none;border:none;color:var(--text-dim);font-size:.75rem;font-weight:600;padding:6px 10px;cursor:pointer;min-height:32px;transition:background .15s,color .15s}.lang-btn.active{background:var(--accent);color:#fff}.accordion-header{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 16px;background:var(--bg-surface);border:none;border-bottom:1px solid var(--border);color:var(--text);font-size:.95rem;font-weight:600;cursor:pointer;min-height:48px}.accordion-arrow{transition:transform .25s ease;color:var(--text-dim);font-size:1rem}.accordion.open .accordion-arrow{transform:rotate(180deg)}.accordion-body{max-height:0;overflow:hidden;transition:max-height .3s ease;background:var(--bg-surface)}.accordion.open .accordion-body{max-height:55vh;overflow-y:auto;border-bottom:1px solid var(--border)}.accordion-instructions{font-size:.85rem;color:var(--text-dim);padding:12px 16px 8px;line-height:1.5}.saved-stops{list-style:none;padding:0 8px}.stops-empty{padding:12px 16px;font-size:.9rem;color:var(--text-dim);line-height:1.5}.stops-error{color:var(--error-color)}.saved-stop-item{display:flex;align-items:center;gap:12px;padding:12px 8px;border-bottom:1px solid var(--border)}.saved-stop-info{flex:1;min-width:0}.saved-stop-name{font-size:.95rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved-stop-products{display:flex;gap:4px;margin-top:4px}.product-badge{font-size:.65rem;font-weight:700;color:#fff;padding:2px 6px;border-radius:4px;letter-spacing:.3px}.product-badge.UBAHN{background:var(--ubahn)}.product-badge.SBAHN{background:var(--sbahn)}.product-badge.BUS{background:var(--bus)}.product-badge.TRAM{background:var(--tram)}.product-badge.BAHN{background:var(--bahn)}.remove-stop-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--error-color);background:none;color:var(--error-color);cursor:pointer;flex-shrink:0;font-size:1.1rem;transition:background .15s,color .15s}.remove-stop-btn:active{background:var(--error-color);color:#fff}.search-section{padding:10px 10px 6px}.search-row{display:flex;gap:8px}.search-input{flex:1;background:var(--bg-input);border:1.5px solid var(--border);border-radius:10px;padding:11px 14px;color:var(--text);font-size:1rem;outline:none;min-height:48px;transition:border-color .2s}.search-input:focus{border-color:var(--accent)}.search-input::placeholder{color:var(--text-dim)}.nearby-btn{background:var(--bg-input);border:1.5px solid var(--border);border-radius:10px;color:var(--text);padding:11px 14px;font-size:.85rem;font-weight:600;cursor:pointer;white-space:nowrap;min-height:48px;transition:border-color .2s}.nearby-btn:active{border-color:var(--accent)}.nearby-btn.loading-loc{color:var(--text-dim);pointer-events:none}.search-results{list-style:none;margin-top:8px}.search-result-item{display:flex;align-items:center;gap:12px;padding:12px 8px;border-bottom:1px solid var(--border);cursor:pointer;min-height:48px;transition:background .15s}.search-result-item:active{background:var(--accent-dim)}.result-info{flex:1;min-width:0}.result-name{font-size:.95rem;font-weight:500}.result-place{font-size:.8rem;color:var(--text-dim);margin-top:2px}.result-distance{font-size:.75rem;color:var(--text-dim)}.result-products{display:flex;gap:4px}.add-stop-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--accent);background:none;color:var(--accent);cursor:pointer;flex-shrink:0;font-size:1.2rem;transition:background .15s,color .15s}.add-stop-btn:active{background:var(--accent);color:#fff}.board-section{flex:1;display:flex;flex-direction:column;min-height:0;padding:0 16px}.col-header{padding:8px 6px!important;font-size:.7rem;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--border);margin-bottom:2px}.departures-list{flex:1;overflow-y:auto;padding:4px 0;-webkit-overflow-scrolling:touch}.departure-row{display:grid;grid-template-columns:68px 100px 1fr auto;align-items:center;padding:10px 8px;gap:12px;border-radius:6px;transition:background .2s;margin-bottom:2px}.departure-row:nth-child(2n){background:var(--row-alt)}.departure-row.sweet-spot{background:var(--sweet-bg);border-left:3px solid var(--sweet-border)}.departure-row.cancelled .direction{text-decoration:line-through;color:var(--cancelled-color)}.line-badge{display:inline-flex;align-items:center;justify-content:center;min-width:52px;padding:5px 10px;border-radius:6px;font-weight:700;font-size:1.15rem;color:#fff;text-align:center;white-space:nowrap;letter-spacing:.5px}.line-badge.UBAHN{background:var(--ubahn)}.line-badge.SBAHN{background:var(--sbahn)}.line-badge.BUS{background:var(--bus)}.line-badge.TRAM{background:var(--tram)}.line-badge.BAHN{background:var(--bahn)}.line-badge.SEV{background:#8b5e3c}.stop-name{font-size:.8rem;font-weight:600;color:var(--text);line-height:1.3;word-break:break-word}.direction-col{display:flex;align-items:baseline;gap:8px;min-width:0}.direction{font-size:1.05rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.delay-tag{font-size:.85rem;font-weight:700;color:var(--delay-color);flex-shrink:0}.cancelled-tag{font-size:.8rem;font-weight:700;color:var(--cancelled-color);flex-shrink:0;text-transform:uppercase}.countdown{font-size:1.4rem;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;min-width:75px}.countdown .unit{font-size:.85rem;font-weight:400;color:var(--text-dim);margin-left:2px}.countdown.now{color:var(--live-color);animation:pulse-now 1.5s ease-in-out infinite}@keyframes pulse-now{0%,to{opacity:1}50%{opacity:.6}}.rt-indicator{font-size:.7rem;margin-left:4px;vertical-align:middle}.rt-live{color:var(--live-color)}.rt-static{color:var(--text-dim)}.board-footer{padding:10px 4px 6px;border-top:1px solid var(--border);text-align:center}.board-footer-label{font-size:.75rem;color:var(--text-dim);letter-spacing:.3px}.loading,.empty-state,.error-msg{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;font-size:1.1rem;color:var(--text-dim);text-align:center;padding:24px;gap:14px;line-height:1.5}.departures-list::-webkit-scrollbar,.accordion-body::-webkit-scrollbar,.search-results::-webkit-scrollbar{width:5px}.departures-list::-webkit-scrollbar-track,.accordion-body::-webkit-scrollbar-track,.search-results::-webkit-scrollbar-track{background:transparent}.departures-list::-webkit-scrollbar-thumb,.accordion-body::-webkit-scrollbar-thumb,.search-results::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.ad-banner-mock{position:fixed;bottom:0;left:0;right:0;height:50px;background:var(--bg-surface);color:var(--text-dim);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;letter-spacing:2px;border-top:1px solid var(--border);z-index:1000}@media(prefers-reduced-motion:reduce){.countdown.now{animation:none}.departure-row,.accordion-body{transition:none}}@media(max-width:480px){.page{padding:env(safe-area-inset-top,4px) 0 env(safe-area-inset-bottom,0)}.app-header{padding:8px 12px 10px}.app-title{font-size:.9rem}.app-clock{font-size:1.25rem}.badge{font-size:.7rem;padding:3px 8px}.board-section{padding:0 10px}.col-header{grid-template-columns:50px 75px 1fr auto!important;font-size:.65rem}.departure-row{grid-template-columns:50px 75px 1fr auto;padding:8px 4px;gap:8px}.stop-name{font-size:.7rem}.line-badge{min-width:42px;padding:4px 6px;font-size:.95rem;border-radius:4px}.direction{font-size:.9rem}.delay-tag{font-size:.75rem}.cancelled-tag{font-size:.7rem}.countdown{font-size:1.2rem;min-width:55px}.countdown .unit{font-size:.75rem}.rt-indicator{font-size:.6rem;margin-left:3px}.board-footer{padding:6px 2px 4px}.board-footer-label{font-size:.7rem}.remove-stop-btn,.add-stop-btn{width:44px;height:44px}}
