@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";@import"https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700&display=swap";:root{--bg-primary: #363636;--bg-secondary: #12121a;--bg-card: #0e0e0e;--bg-control: #16213e;--bg-dropdown: #1c1b1b;--border-color: #2a2a3e;--text-primary: #e8e8f0;--text-secondary: #9898b0;--text-muted: #d4d4df8e;--accent: #4fc3f7;--accent-hover: #29b6f6;--heat-green: #1b5e20;--heat-yellow: #f9a825;--heat-red: #c62828;--heat-null: #1e1e2e;--radius: 8px;--radius-sm: 6px;--transition: .2s ease}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased}.navbar{display:flex;align-items:center;height:44px;padding:0 20px;background:#d9d9d9;flex-shrink:0}.navbar__left{display:flex;align-items:center;gap:0}.navbar__logo{font-family:Inter,sans-serif;font-size:28px;font-weight:400;color:#000;text-decoration:none;line-height:1;letter-spacing:-.5px}.navbar__logo-cursor{font-weight:300}.navbar__divider{width:1px;height:28px;background:#00000040;margin-left:16px}.navbar__links{display:flex;align-items:center;gap:40px;margin:0 auto}.navbar__link{font-family:-apple-system,BlinkMacSystemFont,SF Pro,Helvetica Neue,sans-serif;font-size:16px;font-weight:400;color:#000;text-decoration:none;transition:opacity .2s ease}.navbar__link:hover{opacity:.6}.navbar__link--active{font-weight:500}.header{display:flex;flex-direction:column;gap:14px;padding:14px 20px;background:#000;flex-shrink:0}.header__title{font-family:Raleway,sans-serif;font-weight:600;font-size:24px;color:#fff;white-space:nowrap;letter-spacing:-.3px}.header__controls{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}.control{position:relative}.control__button{display:flex;align-items:center;gap:6px;padding:0 12px;background:transparent;border:none;border-radius:var(--radius-sm);color:#fff;font-size:16px;font-family:-apple-system,BlinkMacSystemFont,SF Pro,Helvetica Neue,sans-serif;font-weight:400;cursor:pointer;white-space:nowrap;transition:border-color var(--transition),background var(--transition)}.control__button:hover{border-color:var(--accent);background:#1a2744}.control__button--active{border-color:var(--accent);background:#4fc3f71a}.control__icon{font-size:16px;margin-right:4px}.control__chevron{font-size:25px;color:#fff;transition:transform var(--transition)}.control__chevron--open{transform:rotate(180deg)}.dropdown{position:absolute;top:calc(100% + 4px);left:0;min-width:160px;background:var(--bg-dropdown);border:1px solid var(--border-color);border-radius:var(--radius);padding:4px;z-index:100;box-shadow:0 8px 32px #00000080;animation:dropdownIn .15s ease}@keyframes dropdownIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dropdown__item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:4px;cursor:pointer;font-size:13px;color:var(--text-primary);transition:background var(--transition)}.dropdown__item:hover{background:#4fc3f714}.dropdown__item--selected{background:#4fc3f71f;color:var(--accent)}.dropdown__checkbox{width:14px;height:14px;border:1.5px solid var(--border-color);border-radius:3px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--transition)}.dropdown__checkbox--checked{background:var(--accent);border-color:var(--accent)}.dropdown__checkbox--checked:after{content:"✓";font-size:10px;color:#0a0a0f;font-weight:700}.main{display:flex;flex-direction:column;height:calc(100vh - 162px);overflow-y:auto;padding:16px 24px;gap:16px;background:var(--bg-primary)}.heatmap-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius);padding:16px;flex-shrink:0}.heatmap-card__title{font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:12px;letter-spacing:.5px;text-transform:uppercase}.heatmap-card__grid-wrapper{position:relative;display:flex}.heatmap-card__y-labels{display:flex;flex-direction:column;justify-content:space-between;padding-right:8px;flex-shrink:0}.heatmap-card__y-label{font-size:11px;color:var(--text-muted);height:24px;display:flex;align-items:center;font-weight:500}.heatmap-card__canvas-container{flex:1;min-width:0;overflow:hidden}.heatmap-card__canvas{display:block;width:100%;border-radius:4px;image-rendering:pixelated}.heatmap-card__x-labels{display:flex;justify-content:space-between;padding-left:36px;margin-top:4px}.heatmap-card__x-label{font-size:10px;color:var(--text-muted);font-weight:500}.legend{display:flex;align-items:center;gap:12px;padding:8px 0;justify-content:center;flex-shrink:0}.legend__bar{width:240px;height:12px;border-radius:6px;background:linear-gradient(to right,#1b5e20,#4caf50,#cddc39,#ff9800,#f44336,#b71c1c)}.legend__labels{display:flex;width:240px;justify-content:space-between}.legend__label{font-size:10px;color:var(--text-muted);font-weight:500}.legend__null{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted)}.legend__null-swatch{width:12px;height:12px;background:var(--heat-null);border-radius:3px;border:1px solid var(--border-color)}.tooltip{position:fixed;pointer-events:none;z-index:200;background:#0c0c14f2;border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:8px 12px;box-shadow:0 4px 20px #0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:tooltipIn .1s ease;font-size:12px}@keyframes tooltipIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.tooltip__row{display:flex;justify-content:space-between;gap:16px;line-height:1.6}.tooltip__label{color:var(--text-muted)}.tooltip__value{color:var(--text-primary);font-weight:600}.loading{display:flex;align-items:center;justify-content:center;height:100%;font-size:14px;color:var(--text-secondary)}.loading__spinner{width:20px;height:20px;border:2px solid var(--border-color);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin-right:10px}@keyframes spin{to{transform:rotate(360deg)}}.range-info{font-size:12px;color:var(--text-muted);margin-left:auto;font-weight:500}.home{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;gap:48px;background:var(--bg-primary)}.home__hero{text-align:center}.home__title{font-size:40px;font-weight:700;letter-spacing:-.5px;background:linear-gradient(135deg,#4fc3f7,#81d4fa,#b3e5fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.home__subtitle{margin-top:12px;font-size:16px;color:var(--text-secondary)}.home__cards{display:flex;gap:24px;flex-wrap:wrap;justify-content:center;max-width:720px}.home__card{display:flex;align-items:center;gap:16px;padding:24px;width:340px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;text-decoration:none;color:inherit;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.home__card:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 8px 32px #4fc3f71f}.home__card-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}.home__card-body{flex:1;min-width:0}.home__card-title{font-size:16px;font-weight:600;color:var(--text-primary)}.home__card-desc{margin-top:4px;font-size:13px;color:var(--text-secondary);line-height:1.4}.home__card-arrow{font-size:20px;color:var(--text-muted);transition:color .2s ease,transform .2s ease}.home__card:hover .home__card-arrow{color:var(--accent);transform:translate(4px)}.parking-stat{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:48px 24px;background:var(--bg-primary)}.parking-stat__header{text-align:center;margin-bottom:32px}.parking-stat__title{font-size:28px;font-weight:700;color:var(--text-primary)}.parking-stat__subtitle{margin-top:8px;font-size:14px;color:var(--text-secondary)}.parking-stat__cards{display:flex;flex-direction:column;gap:16px;width:100%;max-width:560px}.parking-stat__card{display:block;padding:24px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;text-decoration:none;color:inherit;transition:border-color .2s ease}.parking-stat__card:hover{border-color:var(--accent)}.parking-stat__card-name{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:12px}.parking-stat__card-data{font-family:SF Mono,Fira Code,Fira Mono,Roboto Mono,monospace;font-size:16px;padding:12px 16px;border-radius:8px;background:#4fc3f714;color:var(--accent);text-align:center}.parking-stat__card-data--full{background:#f443361f;color:#ef5350}.parking-stat__dots span{animation:blink 1.4s infinite both;font-size:24px;color:var(--text-muted)}.parking-stat__dots span:nth-child(2){animation-delay:.2s}.parking-stat__dots span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,to{opacity:.2}50%{opacity:1}}.parking-stat__error{color:#ef5350}.parking-stat__footer{margin-top:32px;font-size:12px;color:var(--text-muted)}
