*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--green: #16a34a;--amber: #d97706;--red: #dc2626;--bg: #0f172a;--surface: #1e293b;--surface2: #334155;--border: #475569;--text: #f1f5f9;--muted: #94a3b8;--radius: 10px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);height:100dvh;overflow:hidden}#root{height:100dvh;display:flex;flex-direction:column}header{flex-shrink:0;display:flex;align-items:center;gap:20px;padding:10px 20px;background:var(--surface);border-bottom:1px solid var(--border)}header h1{display:flex;align-items:center;gap:8px;font-size:1.1rem;font-weight:700;white-space:nowrap}.header-logo{height:28px;width:auto}header h1 span{color:inherit}.accent{color:#38bdf8}.header-stats{display:flex;align-items:center;gap:16px;margin-left:12px}.hstat{display:flex;flex-direction:column;align-items:center;gap:1px}.hstat-label{font-size:.6rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.hstat-value{font-size:.88rem;font-weight:700;color:var(--text)}.hstat-avail{color:#86efac}.hstat-sep{width:1px;height:28px;background:var(--border)}.header-meta{font-size:.72rem;color:var(--muted);white-space:nowrap}.header-right{margin-left:auto;display:flex;align-items:center;gap:16px}.dev-credit{display:flex;align-items:center;gap:6px;background:none;border:1px solid var(--border);border-radius:20px;padding:4px 10px 4px 8px;color:var(--muted);font-size:.7rem;font-weight:600;letter-spacing:.04em;cursor:pointer;transition:color .15s,border-color .15s;white-space:nowrap;flex-shrink:0}.dev-credit:hover{color:var(--text);border-color:#38bdf8}.dev-credit-dot{width:6px;height:6px;border-radius:50%;background:#38bdf8;opacity:.7;flex-shrink:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#000000a6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px}.modal{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:28px;width:100%;max-width:520px;box-shadow:0 24px 60px #00000080;animation:modal-in .2s ease}@keyframes modal-in{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-close{position:absolute;top:16px;right:16px;background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer;line-height:1;padding:4px 6px;border-radius:6px;transition:color .15s,background .15s}.modal-close:hover{color:var(--text);background:var(--surface2)}.modal-header{margin-bottom:22px}.modal-header h2{font-size:1.15rem;font-weight:700;margin-bottom:4px}.modal-header p{font-size:.8rem;color:var(--muted)}.modal-form{display:flex;flex-direction:column;gap:14px}.modal-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-field{display:flex;flex-direction:column;gap:5px}.modal-field label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.modal-field input,.modal-field textarea{background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:inherit;font-size:.88rem;padding:9px 12px;outline:none;resize:none;transition:border-color .15s;width:100%}.modal-field input:focus,.modal-field textarea:focus{border-color:#38bdf8}.modal-field textarea{line-height:1.5}.modal-error{font-size:.78rem;color:#fca5a5;background:#dc26261a;border:1px solid rgba(220,38,38,.3);border-radius:8px;padding:8px 12px}.modal-submit{background:#38bdf8;color:#0f172a;border:none;border-radius:8px;font-size:.88rem;font-weight:700;padding:10px 20px;cursor:pointer;transition:opacity .15s;align-self:flex-end}.modal-submit:disabled{opacity:.5;cursor:not-allowed}.modal-submit:not(:disabled):hover{opacity:.85}.modal-captcha-note{font-size:.65rem;color:var(--border);text-align:center}.modal-captcha-note a{color:var(--border);text-decoration:underline}.modal-success{display:flex;flex-direction:column;align-items:center;gap:14px;padding:20px 0 10px}.modal-success-icon{width:52px;height:52px;border-radius:50%;background:#16a34a26;border:1px solid #16a34a;display:flex;align-items:center;justify-content:center;font-size:1.4rem;color:#86efac}.modal-success p{font-size:.88rem;color:var(--muted)}.layout{flex:1;display:flex;overflow:hidden}.sidebar{width:320px;flex-shrink:0;display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--border);overflow:hidden}.sidebar-filters{flex-shrink:0;padding:12px 12px 10px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:10px}.search-input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:7px;color:var(--text);font-size:.8rem;padding:7px 10px;outline:none}.search-input::placeholder{color:var(--muted)}.search-input:focus{border-color:#38bdf8}.filter-group{display:flex;flex-direction:column;gap:5px}.filter-group-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.filter-pills{display:flex;flex-wrap:wrap;gap:5px}.filter-pill{display:inline-flex;align-items:center;gap:5px;background:var(--bg);border:1px solid var(--border);border-radius:999px;color:var(--muted);font-size:.72rem;font-weight:500;padding:3px 10px;cursor:pointer;transition:all .12s}.filter-pill:hover{border-color:#64748b;color:var(--text)}.filter-pill.fp-Available.active{background:#14532d;border-color:var(--green);color:#86efac}.filter-pill.fp-Almost-Full.active{background:#451a03;border-color:var(--amber);color:#fcd34d}.filter-pill.fp-Full.active{background:#450a0a;border-color:var(--red);color:#fca5a5}.filter-pill.fp-sort.active{background:#1e3a52;border-color:#38bdf8;color:#38bdf8}.pill-count{background:#ffffff1a;border-radius:999px;font-size:.65rem;padding:0 5px;line-height:1.6}.filter-results{display:flex;align-items:center;justify-content:space-between;font-size:.72rem;color:var(--muted)}.filter-results strong{color:var(--text)}.clear-filters{background:none;border:none;color:#38bdf8;font-size:.72rem;cursor:pointer;padding:0}.clear-filters:hover{text-decoration:underline}.insights-panel{flex-shrink:0;border-bottom:1px solid var(--border);padding:12px 12px 10px;display:flex;flex-direction:column;gap:10px;background:#131f30}.insights-header{display:flex;align-items:baseline;gap:6px}.insights-title{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);white-space:nowrap}.insights-name{font-size:.75rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.insights-loading,.insights-empty{display:flex;align-items:center;gap:8px;font-size:.75rem;color:var(--muted);padding:4px 0}.insights-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.istat{display:flex;flex-direction:column;gap:2px;padding:7px 8px;border-radius:8px;border:1px solid}.istat-green{background:#052e16;border-color:#166534}.istat-amber{background:#1c0f00;border-color:#92400e}.istat-red{background:#1c0000;border-color:#7f1d1d}.istat-muted{background:var(--surface2);border-color:var(--border)}.istat-label{font-size:.58rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.istat-green .istat-label{color:#4ade80;opacity:.75}.istat-amber .istat-label{color:#fbbf24;opacity:.75}.istat-red .istat-label{color:#f87171;opacity:.75}.istat-value{font-size:.95rem;font-weight:800;line-height:1;color:var(--text)}.istat-green .istat-value{color:#86efac}.istat-amber .istat-value{color:#fcd34d}.istat-red .istat-value{color:#fca5a5}.istat-sub{font-size:.58rem;color:var(--muted);margin-top:1px}.cards-list{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:6px}.cards-list::-webkit-scrollbar{width:4px}.cards-list::-webkit-scrollbar-track{background:transparent}.cards-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.park-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px 8px;cursor:pointer;transition:border-color .15s,background .15s}.park-card:hover{background:#3d526a;border-color:#64748b}.park-card.selected{border-color:#38bdf8;background:#1e3a52}.card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}.card-name{font-size:.8rem;font-weight:600;line-height:1.3;flex:1}.status-badge{font-size:.64rem;font-weight:700;padding:2px 7px;border-radius:999px;white-space:nowrap;flex-shrink:0}.status-badge.Available{background:#14532d;color:#86efac}.status-badge.Almost\ Full{background:#451a03;color:#fcd34d}.status-badge.Full{background:#450a0a;color:#fca5a5}.card-stats{display:flex;align-items:center;gap:0;margin-bottom:8px}.card-stat{flex:1;display:flex;flex-direction:column;gap:2px}.card-stat-label{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.card-stat-value{font-size:1rem;font-weight:700;color:var(--text);line-height:1}.card-avail-Available{color:#86efac}.card-avail-Almost-Full{color:#fcd34d}.card-avail-Full{color:#fca5a5}.card-stat-sep{width:1px;height:28px;background:var(--border);margin:0 12px;flex-shrink:0}.card-bar-track{height:3px;background:#ffffff12;border-radius:2px;overflow:hidden}.card-bar-fill{height:100%;border-radius:2px;transition:width .4s ease}.bar-Available{background:var(--green)}.bar-Almost-Full{background:var(--amber)}.bar-Full{background:var(--red)}.map-panel{flex:1;display:flex;flex-direction:column;overflow:hidden}.map-wrap{flex:1;position:relative}.map-wrap>div{height:100%!important}.chart-drawer{flex-shrink:0;height:300px;background:var(--surface);border-top:1px solid var(--border);padding:10px 16px 8px;display:flex;flex-direction:column;gap:6px}.chart-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex-shrink:0}.chart-title{font-size:.78rem;font-weight:600;color:var(--muted);white-space:nowrap}.chart-title strong{color:var(--text)}.chart-inputs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto}.time-input{background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.75rem;padding:3px 7px;outline:none;cursor:pointer}.time-input:focus{border-color:#38bdf8}.time-input:disabled{opacity:.4;cursor:not-allowed}.time-input::-webkit-calendar-picker-indicator{filter:invert(.6);cursor:pointer}.time-lookup-result{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:7px 12px;border-radius:8px;border:1px solid}.time-lookup-result.status-Available{background:#052e16;border-color:#16a34a}.time-lookup-result.status-Almost-Full{background:#1c0a00;border-color:#d97706}.time-lookup-result.status-Full{background:#1c0000;border-color:#dc2626}.lookup-avail{font-size:1.6rem;font-weight:800;line-height:1;color:var(--text)}.status-Available .lookup-avail{color:#86efac}.status-Almost-Full .lookup-avail{color:#fcd34d}.status-Full .lookup-avail{color:#fca5a5}.lookup-detail{display:flex;flex-direction:column;gap:2px}.lookup-status{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.status-Available .lookup-status{color:#86efac}.status-Almost-Full .lookup-status{color:#fcd34d}.status-Full .lookup-status{color:#fca5a5}.lookup-sub{font-size:.72rem;color:var(--muted)}.lookup-sub strong{color:var(--text)}.lookup-of{margin-left:auto;font-size:.75rem;color:var(--muted)}.chart-inner{flex:1;min-height:0}.chart-footer{font-size:.68rem;color:var(--border);text-align:right;flex-shrink:0}.loading-wrap{flex:1;display:flex;align-items:center;justify-content:center;font-size:.85rem;color:var(--muted);gap:10px}.spinner{width:18px;height:18px;border:2px solid var(--border);border-top-color:#38bdf8;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.leaflet-container{background:#1a2535}.mobile-tab-bar,.mobile-park-strip,.mobile-history-view{display:none}.desktop-chart{display:contents}@media (max-width: 768px){:root{--tab-h: 62px;--strip-h: 68px}header{padding:8px 14px;gap:10px}header h1{font-size:1rem}.header-stats{display:none}.header-meta{font-size:.68rem}.dev-credit{padding:4px 9px;font-size:.65rem}.modal{padding:20px}.modal-row{grid-template-columns:1fr}.layout{position:relative;overflow:hidden;padding-bottom:0}.sidebar{display:none;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;border-right:none;overflow-y:auto;z-index:10}.sidebar.mobile-active{display:flex}.map-panel{position:absolute;top:0;right:0;bottom:0;left:0}.map-panel.has-strip{bottom:var(--strip-h)}.map-panel.mobile-hidden,.desktop-chart{display:none}.mobile-history-view{display:none;position:absolute;top:0;right:0;bottom:0;left:0;flex-direction:column;background:var(--bg);z-index:10;overflow:hidden}.mobile-history-view.active{display:flex}.history-view-header{flex-shrink:0;display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.history-view-name{font-size:.85rem;font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-view-avail{font-size:.8rem;color:var(--muted)}.mobile-history-view .chart-drawer{flex:1;height:auto;border-top:none}.mobile-park-strip{display:flex;align-items:center;gap:10px;position:fixed;bottom:var(--tab-h);left:0;right:0;z-index:20;background:var(--surface);border-top:1px solid var(--border);padding:10px 14px;min-height:var(--strip-h)}.mps-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.mps-name{font-size:.85rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mps-row{display:flex;align-items:center;gap:8px}.mps-avail{font-size:.85rem;font-weight:700}.mps-avail span{font-size:.72rem;font-weight:400;color:var(--muted)}.mps-btn{min-height:44px;min-width:44px;padding:0 14px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.8rem;font-weight:600;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center}.mps-btn-muted{background:none;border-color:transparent;color:var(--muted);font-size:1.1rem}.mobile-tab-bar{display:flex;position:fixed;bottom:0;left:0;right:0;height:var(--tab-h);background:var(--surface);border-top:1px solid var(--border);z-index:30;padding-bottom:env(safe-area-inset-bottom,0px)}.tab-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:none;border:none;color:var(--muted);font-size:.65rem;font-weight:600;cursor:pointer;transition:color .15s;min-height:44px;-webkit-tap-highlight-color:transparent}.tab-btn.active{color:#38bdf8}.tab-btn.disabled{opacity:.35;cursor:default}#root{padding-bottom:var(--tab-h)}.filter-pill{min-height:40px;padding:0 14px;font-size:.78rem}.park-card{padding:12px 14px 10px}.search-input{padding:10px 12px;font-size:.9rem}.leaflet-interactive{cursor:pointer}}
