:root{--bg-light:#201e21;--bg-dark:#1b191c;--bg:var(--bg-dark);--bg-grad-1:#252126;--bg-grad-2:#181619;--panel:#29252b;--line:#3a343c;--line-2:#4a434d;--text:#eabaa5;--muted:#c59a8e;--accent:#f4b88f;--accent-soft:#3d2b31;--danger:#ff7e9f}*{box-sizing:border-box}html,body{min-height:100%;color:var(--text);background:radial-gradient(circle at 15% 0%,var(--bg-grad-1)0%,var(--bg-light)35%,var(--bg-dark)100%);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;margin:0;padding:0;font-family:JetBrains Mono,IBM Plex Mono,SFMono-Regular,Menlo,Monaco,Consolas,monospace}a{color:inherit}button,input,select{font:inherit;color:var(--text)}::placeholder{color:var(--muted);opacity:1}select option{color:var(--text);background:#241f25}.app-shell{height:100vh;display:flex;position:relative;overflow:hidden}.sidebar{border-right:1px solid var(--line);background:linear-gradient(#262127 0%,#211d23 60%,#1b181c 100%);flex-direction:column;gap:12px;width:clamp(290px,27vw,380px);padding:16px;display:flex;overflow-y:auto}.mobile-sheet-header{display:none}.brand h1{margin:0;font-size:1.2rem;line-height:1.15}.brand p{color:var(--muted);margin:4px 0 0;font-size:.84rem}.panel{border:1px solid var(--line);background:var(--panel);border-radius:0;flex-direction:column;gap:10px;padding:12px;display:flex}.panel h2{margin:0;font-size:.95rem}.row{gap:8px;display:flex}.stack{flex-direction:column;gap:6px;display:flex}.label{color:var(--muted);font-size:.8rem}.input,.select,.btn{border:1px solid var(--line-2);color:var(--text);background:#241f25;border-radius:0;padding:8px 10px}.btn{cursor:pointer;background:0 0;border:0;border-radius:0;padding:2px 0;text-decoration:none}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn:before{content:"["}.btn:after{content:"]"}.btn-primary{color:var(--accent)}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{cursor:pointer;color:var(--text);background:0 0;border:0;border-radius:0;padding:2px 0;font-size:.8rem}.chip[disabled]{opacity:.45;cursor:not-allowed}.chip:before{content:"["}.chip:after{content:"]"}.chip.active{color:var(--accent);text-underline-offset:2px;font-weight:700;text-decoration:underline}.status{color:var(--muted);font-size:.79rem}.open-state{font-weight:700}.open-state.open{color:#b7d9b0}.open-state.closed{color:#d8a7a7}.status.error{color:var(--danger)}.station-list{flex-direction:column;gap:8px;max-height:33vh;display:flex;overflow-y:auto}.station-item{border:1px solid var(--line);cursor:pointer;text-align:left;background:#221e24;border-radius:0;padding:8px}.station-item.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)inset}.station-select-btn{color:var(--text);text-align:left;cursor:pointer;font:inherit;background:0 0;border:0;padding:0}.station-select-btn:before,.station-select-btn:after{content:""}.fav-toggle{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:0}.station-row{justify-content:space-between;gap:8px;font-size:.84rem;display:flex}.station-title{font-weight:600}.price{color:var(--accent);font-weight:700}.note{color:var(--muted);font-size:.75rem}.sync-code{color:var(--accent);border:1px solid var(--line);word-break:break-word;background:#201c22;padding:8px 10px;font-size:.92rem}.sync-qr{border:1px solid var(--line);width:184px;height:184px;image-rendering:pixelated;background:#1b191c;display:block}.map-area{flex:1;min-height:100vh;position:relative}.mobile-menu-btn{top:calc(env(safe-area-inset-top,0px) + 12px);z-index:1400;border:1px solid var(--line-2);color:var(--text);cursor:pointer;font:inherit;background:#251f28eb;padding:6px 10px;display:none;position:absolute;right:12px}.mobile-menu-btn:before{content:"["}.mobile-menu-btn:after{content:"]"}.mobile-backdrop{display:none}.map-loading{height:100%;color:var(--muted);place-items:center;font-size:.9rem;display:grid}.map-overlay{z-index:800;flex-direction:column;gap:8px;display:flex;position:absolute;top:16px;right:16px}.overlay-card{border:1px solid var(--line);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1b181deb;border-radius:0;padding:7px 10px;font-size:.78rem}.heat-row{align-items:center;gap:6px;display:flex}.heat-grid{flex:1;grid-template-columns:repeat(24,minmax(8px,1fr));gap:2px;display:grid}.heat-cell{background:#4b3f48;border-radius:0;height:10px}.heat-cell[data-level="1"]{background:#6d5056}.heat-cell[data-level="2"]{background:#9b615f}.heat-cell[data-level="3"]{background:#c87565}.heat-cell[data-level="4"]{background:#f4b88f}.map-price-wrapper{background:0 0;border:0}.map-price-label{pointer-events:none;width:100%;height:72px;position:relative}.map-price-svg{width:100%;height:72px;overflow:visible}.map-price-dot{fill:#f5e4dd}.map-price-path{fill:none;stroke:#f5e4dd;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.map-price-backdrop{fill:#1c181db8;stroke:#f5e4dd47;stroke-width:1px}.map-price-name{fill:#e7cdc4;letter-spacing:.01em;font-size:.62rem}.map-price-price{fill:#f5e4dd;letter-spacing:.02em;font-size:.73rem;font-weight:700}.map-price-label.tone-dark .map-price-dot{fill:#111}.map-price-label.tone-dark .map-price-path{stroke:#111}.map-price-label.tone-dark .map-price-backdrop{fill:#fff6edcc;stroke:#11111140}.map-price-label.tone-dark .map-price-name{fill:#1a1a1a}.map-price-label.tone-dark .map-price-price{fill:#111}.map-price-label.tone-light .map-price-dot{fill:#f5e4dd}.map-price-label.tone-light .map-price-path{stroke:#f5e4dd}.map-price-label.tone-light .map-price-backdrop{fill:#1c181dc7;stroke:#f5e4dd47}.map-price-label.tone-light .map-price-name{fill:#e7cdc4}.map-price-label.tone-light .map-price-price{fill:#f5e4dd}.map-price-label.selected .map-price-dot{fill:var(--accent)}.map-price-label.selected .map-price-path{stroke:var(--accent)}.map-price-label.selected .map-price-name,.map-price-label.selected .map-price-price{fill:var(--accent)}.map-price-label.selected .map-price-backdrop{stroke:#f4b88fbf}.map-home-wrapper{background:0 0;border:0}.map-home-marker{background:#1b191cd6;border:1px solid;place-items:center;width:26px;height:26px;display:grid}.map-home-marker.tone-dark{color:#111;background:#fff6eddb;border-color:#1116}.map-home-marker.tone-light{color:#f5e4dd;background:#1b191cd6;border-color:#f5e4dd59}.map-home-svg{stroke:currentColor;stroke-width:1.8px;fill:none;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px}.home-pick-mode,.home-pick-mode *{cursor:crosshair!important}.leaflet-popup-content-wrapper,.leaflet-popup-tip{color:var(--text);border:1px solid var(--line);background:#241f25}.leaflet-popup-content-wrapper{border-radius:0!important}.map-station-popup{flex-direction:column;gap:6px;min-width:180px;display:flex}.map-popup-prices{flex-direction:column;gap:2px;font-size:.82rem;display:flex}.map-popup-opening{color:var(--muted);flex-direction:column;gap:2px;font-size:.78rem;display:flex}.map-popup-opening-title{color:var(--text);margin-top:2px}.map-popup-opening-error{color:var(--danger)}.map-popup-fav-btn{color:var(--accent);cursor:pointer;text-align:left;font:inherit;background:0 0;border:0;padding:0}.leaflet-container{color:var(--text);background:#1b191c}.leaflet-control-attribution{color:var(--muted)!important;background:#1b181dd9!important}.leaflet-control-attribution a{color:var(--text)!important}.leaflet-control-zoom a{color:var(--text)!important;border-color:var(--line)!important;background:#2a252b!important}.leaflet-bar a:hover,.leaflet-bar a:focus{color:var(--text)!important;background:#342d35!important}@media (max-width:980px){.app-shell{height:100vh;min-height:100vh;display:block}.sidebar{z-index:1500;border-bottom:none;border-right:none;width:100%;max-width:none;transition:transform .22s;position:fixed;inset:0;transform:translate(100%)}.sidebar.mobile-open{transform:translate(0)}.sidebar.mobile-closed{transform:translate(100%)}.mobile-sheet-header{border:1px solid var(--line);background:#1e1a21e6;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.mobile-backdrop{z-index:1300;background:#0a090b73;border:0;margin:0;padding:0;display:block;position:fixed;inset:0}.map-area{height:100vh;min-height:100vh}.map-overlay{top:calc(env(safe-area-inset-top,0px) + 52px);right:10px}.mobile-menu-btn{display:inline-block}}
