*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button{cursor:pointer;font:inherit;border:none;background:none}input{font:inherit}a{color:inherit}.layout{display:flex;flex-direction:column;height:100vh}.header{display:flex;align-items:center;justify-content:space-between;padding:0 1.25rem;height:52px;background:#0f172a;color:#fff;flex-shrink:0;z-index:10}.header-logo{font-size:1.2rem;font-weight:700;letter-spacing:-.3px;color:#38bdf8;text-decoration:none}.header-nav a{color:#94a3b8;text-decoration:none;font-size:.875rem}.header-nav a:hover{color:#e2e8f0}.body{display:flex;flex:1;overflow:hidden}.sidebar{width:320px;flex-shrink:0;display:flex;flex-direction:column;overflow:hidden;background:#fff;border-right:1px solid #e2e8f0}.search-section{padding:.875rem;border-bottom:1px solid #e2e8f0;flex-shrink:0}.search-row{display:flex;gap:.5rem}.search-input{flex:1;padding:.5rem .75rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.875rem;outline:none;color:#1e293b;text-transform:uppercase;letter-spacing:.05em}.search-input::placeholder{text-transform:none;letter-spacing:normal;color:#94a3b8}.search-input:focus{border-color:#38bdf8;box-shadow:0 0 0 3px #e0f2fe}.btn-search{padding:.5rem .875rem;background:#0ea5e9;color:#fff;border-radius:6px;font-size:.875rem;font-weight:600;white-space:nowrap;transition:background .15s}.btn-search:hover:not(:disabled){background:#0284c7}.btn-search:disabled{background:#94a3b8;cursor:default}.btn-location{margin-top:.5rem;width:100%;padding:.5rem;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;font-size:.8125rem;color:#475569;display:flex;align-items:center;justify-content:center;gap:.375rem;transition:background .15s,border-color .15s}.btn-location:hover:not(:disabled){background:#f1f5f9;border-color:#94a3b8}.btn-location:disabled{opacity:.6;cursor:default}.filters-section{padding:.75rem .875rem;border-bottom:1px solid #e2e8f0;flex-shrink:0}.filter-group{margin-bottom:.625rem}.filter-group:last-child{margin-bottom:0}.filter-label{font-size:.6875rem;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.375rem}.filter-chips{display:flex;flex-wrap:wrap;gap:.25rem}.filter-group--scroll .filter-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;mask-image:linear-gradient(to right,black calc(100% - 2.5rem),transparent 100%);-webkit-mask-image:linear-gradient(to right,black calc(100% - 2.5rem),transparent 100%)}.filter-group--scroll .filter-chips::-webkit-scrollbar{display:none}.chip{padding:.25rem .625rem;border:1px solid #e2e8f0;border-radius:999px;font-size:.75rem;background:#f8fafc;color:#475569;transition:all .1s}.chip:hover{border-color:#0ea5e9;color:#0ea5e9;background:#f0f9ff}.chip--active{background:#0ea5e9;border-color:#0ea5e9;color:#0f172a}.chip--active:hover{background:#0ea5e9;border-color:#0284c7;color:#0f172a}.results-section{flex:1;overflow-y:auto}.results-count{padding:.5rem .875rem;font-size:.75rem;color:#64748b;background:#f8fafc;border-bottom:1px solid #f1f5f9}.results-empty{padding:2rem 1rem;text-align:center;color:#64748b;font-size:.875rem;line-height:1.5}.result-card{padding:.75rem .875rem;border-bottom:1px solid #f1f5f9;cursor:pointer;transition:background .1s;border-left:3px solid transparent}.result-card:hover{background:#f8fafc}.result-card--selected{background:#eff6ff;border-left-color:#0ea5e9}.result-name{font-size:.875rem;font-weight:600;color:#1e293b;margin-bottom:.2rem;line-height:1.3}.result-addr{font-size:.75rem;color:#64748b;margin-bottom:.35rem;line-height:1.4}.result-meta{display:flex;align-items:center;gap:.3rem;flex-wrap:wrap}.result-dist{font-size:.75rem;color:#0ea5e9;font-weight:600}.result-badge{padding:.125rem .45rem;border-radius:999px;font-size:.6875rem;font-weight:500;background:#f1f5f9;color:#475569}.result-badge--type{background:#ecfdf5;color:#059669}.map-wrapper{flex:1;position:relative}.map-wrapper .mapboxgl-map{position:absolute;inset:0}.map-marker{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.9);background-color:var(--color, #0ea5e9);cursor:pointer;box-shadow:0 1px 4px #00000059;transition:transform .15s}.map-marker:hover{transform:scale(1.4)}.map-marker--selected{transform:scale(1.8);border-color:#fff;box-shadow:0 2px 10px #0006;z-index:1}.mapboxgl-popup-content{padding:.75rem .875rem;border-radius:8px;font-family:system-ui,sans-serif;min-width:160px;max-width:220px;box-shadow:0 4px 16px #00000026}.popup-name{font-size:.8125rem;font-weight:600;color:#1e293b;margin-bottom:.2rem;line-height:1.3}.popup-addr{font-size:.75rem;color:#64748b;margin-bottom:.25rem;line-height:1.4}.popup-dist{font-size:.75rem;color:#0ea5e9;font-weight:600}.spinner{display:inline-block;width:1rem;height:1rem;border:2px solid #e2e8f0;border-top-color:#0ea5e9;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.loading-row{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem 1rem;color:#64748b;font-size:.875rem}.error-msg{margin:.875rem;padding:.75rem;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626;font-size:.8125rem;line-height:1.5}.about-wrap{padding:2.5rem 1.5rem;max-width:640px;margin:0 auto}.about-back{display:inline-flex;align-items:center;gap:.25rem;color:#0ea5e9;text-decoration:none;font-size:.875rem;margin-bottom:1.5rem}.about-back:hover{text-decoration:underline}.about-wrap h1{font-size:1.75rem;font-weight:700;color:#0f172a;margin-bottom:.5rem}.about-wrap h2{font-size:1rem;font-weight:600;color:#1e293b;margin:1.25rem 0 .375rem}.about-wrap p{color:#475569;line-height:1.65;margin-bottom:.625rem;font-size:.9375rem}.about-wrap ul{color:#475569;line-height:1.65;padding-left:1.25rem;margin-bottom:.625rem;font-size:.9375rem}.about-wrap li{margin-bottom:.25rem}.not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:1rem;text-align:center;padding:1.5rem}.not-found h1{font-size:4rem;font-weight:700;color:#e2e8f0}.not-found p{color:#64748b}.not-found a{color:#0ea5e9;text-decoration:none}.not-found a:hover{text-decoration:underline}
