:root{--yellow:#ffd500;--ink:#111827;--navy:#16243d;--muted:#53647c;--line:#dce3ec;--soft:#f3f6fa;--green:#067437;--red:#b52230;--radius:18px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:#f4f6f9;font-size:16px}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #1687e7;outline-offset:3px}h1{font-size:clamp(2rem,4vw,3.25rem);line-height:1.12;letter-spacing:-.045em;margin:.35rem 0 .65rem}h2{font-size:1.3rem;letter-spacing:-.02em;margin:0 0 .7rem}h3{font-size:1.1rem}p{line-height:1.6;margin:.5rem 0 1rem}small,.small-copy{font-size:.875rem}input,select{width:100%;min-height:48px;border:1px solid #bec9d8;border-radius:10px;padding:12px;background:white;color:var(--ink)}input[type=checkbox]{width:20px;min-height:20px;vertical-align:middle}label{display:block;font-size:.94rem;font-weight:650;margin-bottom:6px}ul.errorlist{color:var(--red);font-size:.875rem;padding-left:20px}.helptext{font-size:.875rem;color:var(--muted)}.topbar{min-height:76px;display:flex;align-items:center;justify-content:space-between;padding:12px max(18px,calc((100vw - 1200px)/2));background:var(--yellow);border-bottom:1px solid #e2bc00;position:relative;z-index:1000}.brand{display:flex;align-items:center;gap:10px}.brand:hover{text-decoration:none}.brandmark{display:grid;place-items:center;width:42px;height:44px;border-radius:12px;background:var(--ink);color:var(--yellow);font-weight:900;font-size:1.65rem}.brand strong{font-size:1.35rem;display:block;line-height:1.1}.brand small{font-size:.75rem;letter-spacing:.17em;font-weight:750}.top-actions{display:flex;align-items:center;gap:9px}.icon-button,.avatar{width:44px;height:44px;display:inline-grid;place-items:center;flex-shrink:0;border:1px solid var(--line);background:white;border-radius:12px;font-size:1.4rem;color:var(--ink)}.avatar{background:var(--ink);color:white;font-size:1rem;font-weight:800;border-color:var(--ink)}.page{max-width:1200px;margin:auto;padding:30px 20px 24px;min-height:75vh}.page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px}.page-heading p{margin-bottom:0;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.78rem;font-weight:800;display:block}.date-chip{border-left:3px solid var(--yellow);padding:8px 12px;font-size:.875rem;white-space:nowrap;color:var(--muted)}.toolbar{display:flex;gap:12px;margin-bottom:20px}.toolbar form{display:flex;gap:8px;flex:1}.button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;border-radius:12px;padding:11px 18px;border:1px solid transparent;font-weight:750;gap:6px;text-align:center;text-decoration:none!important}.button.small{min-height:40px;font-size:.875rem;padding:8px 12px}.primary{background:var(--yellow);color:var(--ink)}.dark{background:var(--navy);color:white}.secondary{background:white;border-color:var(--line);color:var(--ink)}.full{width:100%;margin-top:8px}.workspace{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start}.map-frame{position:relative;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}#map{height:290px;background:#e5ebf0}.map-label{position:absolute;z-index:500;top:12px;left:50px;background:var(--navy);color:white;border-radius:9px;padding:9px 12px;font-size:.875rem;pointer-events:none}.map-label span{color:var(--yellow);margin-right:5px}.map-caption{display:flex;justify-content:space-between;gap:10px;font-size:.78rem;color:var(--muted);padding:8px 2px}.map-caption a{text-decoration:underline}.panel,.board-panel,.nearby-panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:22px}.panel{margin-bottom:18px}.nearby-panel{margin-top:14px;padding:18px}.board-panel{border-top:4px solid var(--yellow);min-height:510px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.section-heading h2{margin:0}.section-heading .eyebrow{margin-bottom:8px}.muted{color:var(--muted)}.badge{display:inline-block;padding:4px 8px;border-radius:6px;font-size:.75rem;font-weight:800;background:#eaf0f5;color:#40516c;white-space:nowrap}.live{color:var(--green);background:#e5f8ed}.late{color:#985600;background:#fff0cc}.very-late{color:var(--red);background:#fff0f1}.board-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}.filters{display:flex;flex-wrap:wrap;gap:5px}.filters button{border:0;padding:9px 12px;border-radius:9px;min-height:40px;color:var(--muted);background:var(--soft);font-size:.875rem;font-weight:700}.filters .selected{background:var(--navy);color:white}.departure{display:grid;grid-template-columns:50px minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;text-align:left;background:white;border:0;border-bottom:1px solid #e7ebf1;padding:16px 0;color:var(--ink)}.departure:hover{background:#f9fafc}.line-badge{width:48px;min-height:42px;padding:7px 3px;background:var(--navy);color:white;border-radius:10px;display:grid;place-items:center;font-weight:850;font-size:1rem}.line-badge.bus{background:#ffdc27;color:#111827}.line-badge.tram{background:#e9efff;color:#204a9b}.departure-title{display:block;font-size:1rem;font-weight:700;line-height:1.35}.departure-sub{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-top:6px;font-size:.8rem;color:var(--muted)}.departure-time{text-align:right;font-weight:800;font-size:1.3rem;white-space:nowrap}.departure-time small{display:block;font-size:.78rem;font-weight:500;color:var(--muted);margin-top:3px}.station-row{display:flex;width:100%;gap:12px;align-items:center;border:0;background:transparent;text-align:left;border-top:1px solid #eef1f5;padding:13px 0;color:var(--ink)}.station-row:first-child{border-top:0}.station-row:hover{background:#f4f6fa}.station-symbol{display:grid;place-items:center;width:40px;height:40px;flex-shrink:0;border-radius:12px;background:#edf1f6;font-size:1.2rem}.station-copy{flex:1;min-width:0}.station-copy strong{display:block;font-size:.95rem}.station-copy small{display:block;color:var(--muted);margin-top:4px}.station-arrow{color:var(--muted)}.empty{text-align:center;padding:35px 12px;color:var(--muted)}.empty strong{display:block;color:var(--ink);font-size:1.05rem}.empty p{font-size:.94rem;max-width:280px;margin:9px auto}.empty-icon{display:block;font-size:2.5rem;color:#8c9db4;margin-bottom:14px}.legend{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.8rem;color:var(--muted);border-top:1px solid var(--line);padding-top:12px}.favorite-grid{display:flex;flex-wrap:wrap;gap:10px}.favorite-grid button{border:1px solid var(--line);border-radius:12px;background:var(--soft);padding:13px;text-align:left;min-height:46px;font-size:.94rem}.favorite-grid button span{color:#8a6b00;margin-right:5px}#favoriten{margin-top:24px}.support-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:15px}.support-row .muted{margin-left:auto}.footer{display:flex;justify-content:center;flex-wrap:wrap;gap:16px;padding:20px 20px 110px;color:var(--muted);font-size:.78rem}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);z-index:1000;display:flex;justify-content:center;gap:30px;padding:9px 14px calc(9px + env(safe-area-inset-bottom))}.bottom-nav a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:1.25rem;min-width:70px}.bottom-nav span{font-size:.75rem;font-weight:700}.message{padding:14px 16px;border-radius:12px;background:#fff4c8;border:1px solid #e0ca79;line-height:1.5;margin-bottom:16px}.message.error{background:#fff0f1;border-color:#efb8c0;color:#8e1624}.message.success{background:#e5f8ed;border-color:#9edbbb;color:var(--green)}.narrow{max-width:760px;margin:auto}.auth{max-width:460px;margin:20px auto}.auth h1{font-size:2.75rem}.auth .panel{margin-top:28px}.back{display:block;color:var(--muted);margin-bottom:20px}.inline{display:inline}.inline button{margin-top:10px}.plans{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:15px}.plans form{border:1px solid var(--line);border-radius:14px;padding:20px;background:var(--soft)}.price{font-size:1.7rem;font-weight:800}.watch-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);margin-bottom:15px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stats span{display:block;color:var(--muted);font-size:.9rem}.stats strong{display:block;font-size:2rem;margin-top:14px}.admin-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.setup-row{display:flex;justify-content:space-between;gap:14px;font-size:.875rem}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}td,th{text-align:left;padding:14px 10px;border-bottom:1px solid var(--line)}td a{color:#1758ac;text-decoration:underline}dialog{border:1px solid var(--line);border-radius:24px;padding:30px;max-width:460px;width:calc(100% - 30px);color:var(--ink);max-height:85vh;overflow:auto;box-shadow:0 25px 90px #10203b55}dialog::backdrop{background:#101e35a6;backdrop-filter:blur(4px)}dialog h2{font-size:1.7rem;margin-top:10px}.close{position:absolute;right:12px;top:10px;width:40px;height:40px;border:0;background:#f1f4f8;border-radius:50%;font-size:1.5rem}.install-icon{width:62px;height:62px;display:grid;place-items:center;background:var(--yellow);border-radius:17px;font-size:2rem;font-weight:900;margin-bottom:24px}.install-steps{padding-left:24px;line-height:1.6}.install-steps li{margin-bottom:12px}.toast{position:fixed;z-index:2200;bottom:100px;left:50%;transform:translateX(-50%);padding:16px 22px;border-radius:16px;background:var(--navy);color:white;max-width:calc(100% - 30px);width:440px;box-shadow:0 8px 35px #10203b44}.journey-stops{padding-left:23px}.journey-stops li{padding:9px 0;border-bottom:1px solid var(--line)}.journey-stops small{display:block;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}[hidden]{display:none!important}.stop-marker{background:#fff;border:3px solid var(--navy);border-radius:50%;box-shadow:0 2px 5px #0003}.stop-marker.active{background:var(--yellow)}.leaflet-popup-content button{border:0;background:var(--yellow);border-radius:8px;padding:8px;margin-top:8px;font-weight:700}.leaflet-control-attribution{font-size:11px!important}.offline{background:#fff0f1!important}
@media(min-width:1100px){.bottom-nav{gap:80px}.board-panel{position:sticky;top:18px}}@media(max-width:800px){.workspace{grid-template-columns:1fr}.page{padding:22px 14px}.date-chip{display:none}.toolbar{flex-wrap:wrap}.toolbar>button{width:100%}.toolbar form{min-width:0;width:100%}.toolbar input{min-width:0}.map-frame #map{height:245px}.nearby-panel{margin-bottom:0}.board-panel{min-height:300px}.stats{grid-template-columns:1fr 1fr}.admin-grid{grid-template-columns:1fr}.page-heading h1{font-size:2.25rem}.bottom-nav{gap:6px;justify-content:space-around}.footer{font-size:.75rem;gap:12px}.support-row .muted{margin-left:0}.panel{padding:18px}.map-caption{font-size:.75rem}.section-heading>.muted{font-size:.8rem}.plans{grid-template-columns:1fr}.departure{gap:10px}.departure-title{font-size:.94rem}.auth h1{font-size:2.3rem}}@media(prefers-reduced-motion:no-preference){button,a{transition:background .15s ease}.toast{animation:appear .2s ease}@keyframes appear{from{opacity:0}to{opacity:1}}}
/* Map-first start screen, v0.1.1. Shared account/admin styles stay unchanged. */
.station-actions{display:flex;gap:7px;align-items:center;flex-shrink:0}.map-board .section-heading>div:first-child{min-width:0}.walk-nav{background:#e9f2ff;color:#1456a0;border-color:#c7dcf5}.postal-places{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}.postal-places button{text-align:left}
.favorite-service{display:flex;align-items:center;gap:14px;padding:18px;background:var(--navy);border:1px solid var(--navy);border-radius:14px;color:white;margin-bottom:22px;min-height:88px;max-width:520px}.favorite-service:hover{background:#223958;text-decoration:none}.favorite-service-icon{display:grid;place-items:center;flex-shrink:0;width:50px;height:50px;border-radius:13px;background:var(--yellow);color:var(--ink)}.favorite-service-copy{min-width:0}.favorite-service-copy strong{display:block;font-size:1.1rem}.favorite-service-copy small{display:block;font-size:.8125rem;color:#dbe5f3;margin-top:5px;line-height:1.45}.favorite-stations-title{font-size:.85rem;color:var(--muted);margin:0 0 12px;font-weight:750}#favoriten{scroll-margin-top:14px}
.map-selection{z-index:500}
.map-page{max-width:1280px;padding-top:14px}.map-toolbar{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;margin-bottom:12px}.map-toolbar form{display:flex;gap:8px;min-width:0}.map-toolbar input{min-width:0}.map-toolbar .icon-button{height:48px}.main-map #map{height:clamp(360px,62vh,680px);height:clamp(360px,62svh,680px)}.main-map.expanded #map{height:82vh;height:82svh}.main-map .map-label{left:52px;padding:7px 10px;top:12px}.map-expand{position:absolute;right:12px;top:12px;z-index:500;width:42px;height:42px;background:white;border:1px solid #aeb9c8;border-radius:10px;font-size:1.7rem;box-shadow:0 2px 8px #16243d22}.map-selection{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);max-width:calc(100% - 30px);padding:9px 15px;border-radius:30px;background:white;box-shadow:0 3px 15px #14243a26;font-size:.875rem;font-weight:700;text-align:center;pointer-events:none}.map-board{position:static!important;margin-top:16px;min-height:0;scroll-margin-top:14px}.map-board .section-heading{margin-bottom:12px}.map-board .board-tools{border-bottom:1px solid var(--line);padding-bottom:12px}.board-clock{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:.875rem;font-variant-numeric:tabular-nums}.map-board .departure{grid-template-columns:64px minmax(0,1fr) auto;padding:14px 0}.line-group{display:flex;flex-direction:column;gap:4px;align-items:center;min-width:0}.mode-label{font-size:.66rem;font-weight:750;color:var(--muted);line-height:1.4;white-space:nowrap}.mode-label.postauto{background:#ffd500;color:#171717;border-radius:4px;padding:1px 4px}.line-group .line-badge{width:64px;min-height:42px;border-radius:8px;border:1px solid #00000012;font-size:1.05rem;line-height:1.15;overflow-wrap:anywhere}.line-group .line-badge.bus{background:#175a9c;color:white}.line-group .line-badge.tram{background:#244990;color:white}.line-group .line-badge.train{background:#003399;color:white}.line-group .line-badge.postauto{background:#ffd500;color:#111827}.line-group .line-badge.long-line{font-size:.77rem}.data-notes{border-top:1px solid var(--line);padding-top:12px;font-size:.8rem;color:var(--muted)}.data-notes summary{cursor:pointer;padding:3px 0}.data-notes p{margin-top:12px}.nearby-fold{margin-top:16px;padding:16px 20px}.nearby-fold>summary{cursor:pointer;font-weight:750}.nearby-fold>summary .badge{margin-left:10px}.nearby-fold[open]>summary{margin-bottom:12px}.map-page #favoriten{margin-top:16px}.main-map .stop-marker{background:transparent;border:0;box-shadow:none;display:grid;place-items:center}.main-map .stop-marker span{display:block;width:22px;height:22px;border:3px solid white;border-radius:50%;background:#18385a;box-shadow:0 0 0 2px #18385a,0 2px 8px #0005}.main-map .stop-marker.active span{background:#ffd500;box-shadow:0 0 0 3px #16243d,0 2px 10px #0005;transform:scale(1.14)}.station-row[aria-pressed=true]{background:#fff8d6}.map-board h2:focus{outline:none}
@media(max-width:800px){.map-page{padding:10px 10px 22px}.map-toolbar{gap:8px}.map-toolbar>.button{padding:10px 12px;font-size:.875rem;white-space:nowrap}.map-toolbar form{gap:5px}.map-toolbar input{padding:9px;font-size:.875rem}.map-toolbar .icon-button{width:40px}.main-map{border-radius:14px}.main-map #map{height:clamp(340px,60vh,620px);height:clamp(340px,60svh,620px)}.map-board{padding:18px 14px}.map-board .departure{gap:10px}.board-clock{gap:5px}.board-clock time{font-size:.75rem}.map-board .filters{gap:4px}.map-board .filters button{padding:8px 10px}.map-board h2{font-size:1.2rem}.nearby-fold{padding:15px}.map-page .panel{padding:16px}}
@media(max-width:370px){.board-clock time{display:none}.map-toolbar>.button{padding:10px 9px}.map-toolbar input{font-size:.8125rem}.map-board .departure{grid-template-columns:56px minmax(0,1fr) auto;gap:7px}.line-group .line-badge{width:56px}}
@media(max-height:520px) and (orientation:landscape){.main-map #map{height:280px}.main-map.expanded #map{height:85svh}}
