:root{--bg: #0b1220;--surface: #111827;--surface-2: #1f2937;--border: #334155;--text: #f8fafc;--muted: #94a3b8;--accent: #22c55e;--accent-2: #3b82f6;--danger: #ef4444;--shadow: 0 10px 30px rgba(0, 0, 0, .35);--header-h: 64px;--sidebar-w: 360px;--radius: 14px;--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input{font:inherit}.app{display:flex;flex-direction:column;height:100%}.header{height:var(--header-h);padding:0 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#0f172aeb;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:1000}.header__title{display:flex;align-items:center;gap:12px;min-width:0}.header__logo{font-size:24px}.header h1{margin:0;font-size:1.05rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header__subtitle{margin:2px 0 0;font-size:.75rem;color:var(--muted)}.header__link{color:#93c5fd;text-decoration:none}.header__link:hover{text-decoration:underline}.header__meta{display:flex;align-items:center;gap:12px;flex-shrink:0}.header__count{font-size:.85rem;color:var(--muted)}.status{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--muted)}.status__dot{width:8px;height:8px;border-radius:50%;background:#64748b}.status--live .status__dot{background:var(--accent);box-shadow:0 0 8px var(--accent)}.status--poll .status__dot{background:#f59e0b;box-shadow:0 0 8px #f59e0b99}.header__pulse{font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#86efac;background:#22c55e26;border:1px solid rgba(34,197,94,.35);border-radius:999px;padding:3px 8px;animation:pulse-live 1.6s ease-in-out infinite}@keyframes pulse-live{0%,to{opacity:1}50%{opacity:.55}}.app__body{flex:1;display:flex;min-height:0;position:relative}.sidebar{width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);overflow:auto;z-index:900}.sidebar__placeholder{padding:24px 20px;color:var(--muted);font-size:.95rem;line-height:1.5}.map-wrap{flex:1;position:relative;min-width:0}.map{width:100%;height:100%;background:#0f172a}.filters{position:absolute;top:12px;left:12px;right:12px;z-index:800;display:flex;flex-wrap:wrap;gap:8px;align-items:center;pointer-events:none}.filters>*{pointer-events:auto}.filters__search-form{display:flex;gap:6px;flex:1 1 260px;min-width:200px;max-width:420px;pointer-events:auto}.filters__search{flex:1 1 auto;min-width:0;max-width:none;padding:10px 14px;border-radius:999px;border:1px solid var(--border);background:#111827eb;color:var(--text);box-shadow:var(--shadow)}.filters__search-btn{flex-shrink:0;border:1px solid var(--border);background:#2563ebe6;color:#fff;border-radius:999px;padding:10px 14px;font-size:.85rem;font-weight:700;cursor:pointer;box-shadow:var(--shadow)}.filters__search-btn:disabled{opacity:.6;cursor:wait}.filters__search::placeholder{color:#64748b}.filters__fuels{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--border);background:#111827eb;color:var(--text);border-radius:999px;padding:8px 12px;font-size:.8rem;cursor:pointer;box-shadow:var(--shadow)}.chip--active{border-color:var(--accent-2);background:#3b82f633}.filters__clear{border:none;background:#ef444426;color:#fecaca;border-radius:999px;padding:8px 12px;cursor:pointer;font-size:.8rem}.error-banner{position:absolute;top:72px;left:50%;transform:translate(-50%);z-index:850;background:#7f1d1df2;color:#fee2e2;padding:10px 16px;border-radius:10px;font-size:.9rem;box-shadow:var(--shadow);max-width:calc(100% - 24px);text-align:center}.map-hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:750;background:#111827eb;color:var(--text);padding:14px 20px;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow);font-size:.95rem;pointer-events:none}.geo-hint{position:absolute;left:12px;right:12px;bottom:calc(84px + var(--safe-bottom));z-index:820;background:#1e293bf2;color:#cbd5e1;padding:10px 40px 10px 14px;border-radius:10px;border:1px solid var(--border);font-size:.85rem;line-height:1.4}.geo-hint__close{position:absolute;top:8px;right:8px;width:24px;height:24px;border:none;border-radius:50%;background:#ffffff14;color:#cbd5e1;cursor:pointer;font-size:.75rem}.user-location-marker{background:transparent;border:none}.user-location-marker__dot{width:18px;height:18px;border-radius:50%;background:#3b82f6;border:3px solid #fff;box-shadow:0 0 0 6px #3b82f640,0 2px 8px #00000059}.locate-btn{position:absolute;right:12px;bottom:calc(110px + var(--safe-bottom));z-index:1100;width:48px;height:48px;border-radius:50%;border:1px solid var(--border);background:#111827f7;color:var(--text);font-size:1.25rem;cursor:pointer;box-shadow:var(--shadow)}.locate-btn--busy{opacity:.75}.leaflet-bottom.leaflet-right{margin-bottom:calc(12px + var(--safe-bottom))}.station-marker{background:transparent;border:none}.station-marker__pin{width:44px;height:44px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 4px 12px #00000059;display:flex;align-items:center;justify-content:center}.station-marker__pin--available{background:linear-gradient(135deg,#22c55e,#16a34a)}.station-marker__pin--unavailable{background:linear-gradient(135deg,#ef4444,#dc2626)}.station-marker__pin--unknown{background:linear-gradient(135deg,#64748b,#475569)}.station-marker__pin--closed{background:linear-gradient(135deg,#334155,#1e293b);opacity:.9}.station-marker__pin--active{background:linear-gradient(135deg,#3b82f6,#2563eb)!important;transform:rotate(-45deg) scale(1.1)}.station-marker__pin--queue-short{box-shadow:0 0 0 3px #3b82f6bf,0 4px 12px #00000059}.station-marker__pin--queue-medium{box-shadow:0 0 0 3px #f59e0bd9,0 4px 12px #00000059}.station-marker__pin--queue-long{background:linear-gradient(135deg,#f59e0b,#ea580c)!important;box-shadow:0 0 0 3px #ef4444bf,0 4px 12px #00000059}.station-marker__price{transform:rotate(45deg);font-size:.62rem;font-weight:700;color:#fff;line-height:1}.panel{padding:20px;display:flex;flex-direction:column;gap:14px}.panel__header{display:flex;justify-content:space-between;gap:12px}.panel h2{margin:0;font-size:1.15rem}.panel__brand{margin:4px 0 0;color:var(--muted);font-size:.9rem}.panel__close{width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;flex-shrink:0}.panel__address{margin:0;color:var(--muted);font-size:.9rem;line-height:1.4}.panel__badges{display:flex;flex-wrap:wrap;gap:8px}.panel__queue h3{margin:0 0 8px;font-size:.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.queue-badge{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border)}.queue-badge--large{padding:12px 14px}.queue-badge--none{border-color:#22c55e40;background:#22c55e14}.queue-badge--short{border-color:#3b82f640;background:#3b82f614}.queue-badge--medium{border-color:#f59e0b59;background:#f59e0b1a}.queue-badge--long{border-color:#ef444459;background:#ef44441a}.queue-badge--unknown{border-style:dashed}.queue-badge__icon{width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800;background:#ffffff14;flex-shrink:0}.queue-badge__text{display:flex;flex-direction:column;gap:2px;min-width:0}.queue-badge__text strong{font-size:.92rem}.queue-badge__text span{font-size:.76rem;color:var(--muted);line-height:1.35}.queue-form{display:flex;flex-direction:column;gap:8px}.queue-form__title{font-size:.82rem;font-weight:600;color:var(--text)}.queue-form__options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.queue-form--compact .queue-form__options{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.queue-form__btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;padding:8px;border-radius:12px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer}.queue-form--compact .queue-form__btn{min-height:42px;padding:6px 4px}.queue-form__btn:disabled{opacity:.6;cursor:wait}.queue-form__btn--none{border-color:#22c55e59}.queue-form__btn--short{border-color:#3b82f659}.queue-form__btn--medium{border-color:#f59e0b73}.queue-form__btn--long{border-color:#ef444473}.queue-form__btn-label{font-size:.82rem;font-weight:700}.queue-form__btn-hint{font-size:.7rem;color:var(--muted)}.queue-form__error{margin:0;font-size:.78rem;color:#fca5a5}.queue-form__success{margin:0;font-size:.78rem;color:#86efac}.queue-form__note{margin:0;font-size:.72rem;color:var(--muted);line-height:1.35}.station-action-bar{position:absolute;left:8px;right:8px;bottom:calc(8px + var(--safe-bottom));z-index:860;padding:12px;border-radius:16px;border:1px solid var(--border);background:#111827f7;box-shadow:0 -8px 30px #00000059;display:flex;flex-direction:column;gap:10px;max-height:48vh;overflow:auto}.station-action-bar__head{display:flex;align-items:center;justify-content:space-between;gap:8px}.station-action-bar__titles{min-width:0;flex:1}.station-action-bar__title{font-size:.92rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.station-action-bar__brand{margin-top:2px;color:var(--muted);font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.station-action-bar__close{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;flex-shrink:0}.station-popup__queue{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;align-items:center;padding:8px 10px;margin-bottom:8px;border-radius:10px;background:var(--surface-2);border:1px solid var(--border)}.station-popup__queue-label{grid-column:1 / -1;font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.station-popup__queue strong{font-size:.88rem}.station-popup__queue-time{font-size:.72rem;color:var(--muted);text-align:right}.station-popup__queue--none{border-color:#22c55e40}.station-popup__queue--medium{border-color:#f59e0b59}.station-popup__queue--long{border-color:#ef444459}.badge{font-size:.75rem;padding:4px 10px;border-radius:999px;background:var(--surface-2);color:var(--muted)}.badge--green{background:#22c55e26;color:#86efac}.badge--red{background:#ef444426;color:#fca5a5}.panel__prices h3{margin:0 0 8px;font-size:.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.panel__prices ul{list-style:none;margin:0;padding:0}.fuel-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.fuel-grid--compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.fuel-grid__empty{margin:0;padding:12px;border-radius:10px;background:var(--surface-2);color:var(--muted);font-size:.85rem;line-height:1.4;text-align:center}.fuel-chip{display:flex;align-items:flex-start;gap:8px;padding:10px 10px 8px;border-radius:12px;background:var(--surface-2);border:1px solid transparent;min-width:0}.fuel-chip--available{border-color:#22c55e40;background:#22c55e14}.fuel-chip--unavailable{border-color:#ef444433;background:#ef44440f;opacity:.92}.fuel-chip--unknown{border-color:#94a3b826}.fuel-chip__dot{margin-top:4px;width:10px;height:10px;border-radius:50%;flex-shrink:0}.fuel-chip__body{flex:1;min-width:0}.fuel-chip__label{display:block;font-weight:700;font-size:.92rem;line-height:1.1}.fuel-chip__footer{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:4px}.fuel-chip__status{display:inline-flex;align-items:center;gap:4px;font-size:.74rem;font-weight:600;line-height:1.2}.fuel-chip__status--available{color:#86efac}.fuel-chip__status--unavailable{color:#fca5a5}.fuel-chip__status--unknown{color:#cbd5e1}.fuel-chip__icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:.62rem;font-weight:800}.fuel-chip--available .fuel-chip__icon{background:#22c55e33;color:#bbf7d0}.fuel-chip--unavailable .fuel-chip__icon{background:#ef444433;color:#fecaca}.fuel-chip--unknown .fuel-chip__icon{background:#94a3b833;color:#e2e8f0}.fuel-chip__price{font-size:.82rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap}.fuel-grid--compact .fuel-chip{padding:8px;gap:1px 6px}.fuel-grid--compact .fuel-chip__label{font-size:.84rem}.fuel-grid--compact .fuel-chip__price{font-size:.78rem}.fuel-chip__label{display:flex;align-items:center;gap:6px;font-weight:700;font-size:.92rem;line-height:1.1}.fuel-chip__live{font-size:.62rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#86efac;background:#22c55e2e;border-radius:999px;padding:2px 6px}.fuel-chip--live{box-shadow:inset 0 0 0 1px #22c55e33}.fuel-chip__ago{display:block;margin-top:4px;font-size:.68rem;color:var(--muted)}.fuel-report{display:flex;flex-direction:column;gap:8px;margin-top:10px}.fuel-report__title{font-size:.82rem;font-weight:600}.fuel-report__list{display:flex;flex-direction:column;gap:6px}.fuel-report__row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border)}.fuel-report__row--available{border-color:#22c55e4d;background:#22c55e14}.fuel-report__row--unavailable{border-color:#ef44444d;background:#ef444414}.fuel-report__meta{display:flex;flex-direction:column;gap:2px;min-width:0}.fuel-report__meta strong{font-size:.88rem}.fuel-report__meta span{font-size:.72rem;color:var(--muted)}.fuel-report__actions{display:flex;gap:6px;flex-shrink:0}.fuel-report__btn{min-width:52px;padding:7px 10px;border-radius:10px;border:1px solid var(--border);background:#0f172a8c;color:var(--text);font-size:.78rem;font-weight:700;cursor:pointer}.fuel-report__btn:disabled{opacity:.6;cursor:wait}.fuel-report__btn--yes{border-color:#22c55e73;color:#bbf7d0}.fuel-report__btn--no{border-color:#ef444473;color:#fecaca}.fuel-report--compact .fuel-report__row{padding:6px 8px}.fuel-report--compact .fuel-report__btn{min-width:44px;padding:6px 8px}.fuel-report__error{margin:0;font-size:.78rem;color:#fca5a5}.fuel-report__success{margin:0;font-size:.78rem;color:#86efac}.fuel-report__note{margin:0;font-size:.72rem;color:var(--muted);line-height:1.35}.panel__note{margin:10px 0 0;font-size:.78rem;color:var(--muted);line-height:1.4}.panel__empty{color:var(--muted);margin:0;line-height:1.4}.panel__route{display:block;text-align:center;margin-top:8px;padding:12px;border-radius:12px;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;text-decoration:none;font-weight:600}.panel__route:hover{filter:brightness(1.05)}.station-popup-leaflet .leaflet-popup-content-wrapper{background:#111827fa;color:var(--text);border:1px solid var(--border);border-radius:16px;box-shadow:0 16px 40px #00000073;padding:0}.station-popup-leaflet .leaflet-popup-content{margin:0;width:272px!important;line-height:1.35}.station-popup-leaflet .leaflet-popup-tip{background:#111827fa;border:1px solid var(--border);box-shadow:none}.station-popup-leaflet .leaflet-popup-close-button{color:#cbd5e1!important;font-size:20px!important;padding:8px 10px 0 0!important}.station-popup{padding:14px 14px 12px}.station-popup__head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:6px}.station-popup__titles{min-width:0}.station-popup__name{display:block;font-size:.98rem;line-height:1.25}.station-popup__brand{display:block;margin-top:2px;color:var(--muted);font-size:.78rem}.station-popup__address{margin:0 0 8px;color:var(--muted);font-size:.78rem;line-height:1.35}.station-popup__meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px}.station-popup__updated{font-size:.72rem;color:var(--muted)}.station-popup__badge{font-size:.68rem;font-weight:700;padding:3px 8px;border-radius:999px}.station-popup__badge--green{background:#22c55e26;color:#86efac}.station-popup__badge--red{background:#ef444426;color:#fca5a5}.station-popup__section-title{margin-bottom:6px;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.station-popup__note{margin:8px 0 0;font-size:.7rem;color:var(--muted);line-height:1.35}.station-popup__route{display:block;margin-top:10px;padding:10px 12px;border-radius:10px;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff!important;text-align:center;text-decoration:none;font-size:.86rem;font-weight:700}.station-popup__route:hover{filter:brightness(1.05)}.leaflet-control-zoom{border:none!important;box-shadow:var(--shadow)!important}.leaflet-control-zoom a{background:#111827f2!important;color:var(--text)!important;border-color:var(--border)!important}.leaflet-control-attribution{background:#111827d9!important;color:#94a3b8!important;font-size:10px!important;border-radius:8px 0 0}.leaflet-control-attribution a{color:#93c5fd!important}@media(max-width:900px){.sidebar{position:absolute;left:0;right:0;bottom:0;width:auto;max-height:55vh;border-right:none;border-top:1px solid var(--border);border-radius:18px 18px 0 0;transform:translateY(100%);transition:transform .25s ease;box-shadow:0 -10px 30px #00000059}.sidebar--open{transform:translateY(0)}.sidebar:not(.sidebar--open){display:none}.header h1{font-size:.95rem}.header__subtitle{display:none}.map-wrap:has(.station-action-bar) .locate-btn{bottom:calc(260px + var(--safe-bottom))}.map-wrap:has(.station-action-bar) .leaflet-bottom.leaflet-right{margin-bottom:calc(180px + var(--safe-bottom))}}@media(min-width:901px){.sidebar:not(.sidebar--open) .sidebar__placeholder{display:block}.sidebar--open .sidebar__placeholder{display:none}}@media(max-width:600px){:root{--header-h: 56px}.filters{top:8px;left:8px;right:8px}.chip{padding:6px 10px;font-size:.75rem}.filters__search-form{flex-basis:100%;max-width:none}.filters__search{flex-basis:auto;max-width:none}}
