:root{--bg: #0b1622;--surface: #122332;--surface-2: #1a2f42;--accent: #0b3d5c;--text: #e8f1f8;--muted: #9bb3c4;--ok: #2e7d32;--warn: #b26a00;--bad: #b3261e;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--text);font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{width:100%;max-width:720px;margin:0 auto;padding:env(safe-area-inset-top) 12px 24px}@media(min-width:768px){.app{max-width:960px;padding-left:20px;padding-right:20px}}@media(min-width:1280px){.app{max-width:1200px}}.app-header{display:flex;align-items:center;justify-content:space-between;padding:12px 0}.app-header h1{font-size:1.4rem;margin:0}.settings-btn{background:var(--surface);border:1px solid var(--surface-2);color:var(--text);font-size:1.2rem;border-radius:10px;width:42px;height:42px;cursor:pointer}.header-actions{display:flex;align-items:center;gap:8px}.install-btn{background:var(--accent, #2f81f7);border:1px solid var(--accent, #2f81f7);color:#fff;font-size:.95rem;font-weight:600;border-radius:10px;height:42px;padding:0 14px;cursor:pointer}.install-hint{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface);border:1px solid var(--surface-2);border-radius:12px;padding:12px 14px;box-shadow:0 6px 24px #00000059;font-size:.95rem}.install-hint-close{background:none;border:none;color:var(--text);font-size:1rem;cursor:pointer;flex:0 0 auto}.resort-selector{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px}.resort-tab{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:var(--surface);border:1px solid var(--surface-2);border-radius:12px;padding:10px 14px;color:var(--text);cursor:pointer}.resort-tab.is-selected{border-color:#4aa3df;background:var(--accent)}.resort-tab-name{font-weight:600}.resort-tab-badge{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.app-main{margin-top:16px}.report-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}.report-head h2{margin:0;text-transform:capitalize}.report-mode{color:var(--muted);font-weight:400}.badge{font-size:.75rem;background:var(--surface-2);padding:4px 8px;border-radius:999px;color:var(--muted)}.badge-stale{background:var(--warn);color:#fff}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:12px;margin-top:14px}.card{background:var(--surface);border:1px solid var(--surface-2);border-radius:14px;padding:14px}.card-conditions{grid-column:1 / -1}.conditions-stats{display:flex;flex-wrap:wrap;gap:10px 32px}.conditions-stats .stat{display:flex;flex-direction:column;gap:2px}.stat-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.stat-value{font-size:1.2rem;font-weight:600}.card h3{margin:0 0 8px;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.card dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:4px 12px}.card dt{color:var(--muted)}.card dd{margin:0;text-align:right}.status-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.status-list li{display:flex;justify-content:space-between;align-items:center;gap:8px}.status-note{display:block;font-size:.75rem;color:var(--muted)}.pill{font-size:.7rem;padding:2px 8px;border-radius:999px;background:var(--surface-2);text-transform:capitalize}.pill-open{background:var(--ok);color:#fff}.pill-full,.pill-closed{background:var(--bad);color:#fff}.pill-scheduled,.pill-hold{background:var(--warn);color:#fff}.pill-reopened{background:var(--ok);color:#fff}.warnings{margin-top:14px;color:var(--warn);font-size:.85rem}.status{color:var(--muted)}.status-error{color:var(--bad)}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}.sheet-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008c}.sheet{position:absolute;top:0;right:0;height:100%;width:min(360px,88vw);background:var(--surface);border-left:1px solid var(--surface-2);display:flex;flex-direction:column;padding:16px}.sheet-head{display:flex;justify-content:space-between;align-items:center}.sheet-head h2{margin:0}.sheet-close{background:none;border:none;color:var(--text);font-size:1.1rem;cursor:pointer}.sheet-body{flex:1;display:flex;flex-direction:column;gap:16px;margin-top:16px}.field{display:flex;flex-direction:column;gap:6px}.field span{font-size:.85rem;color:var(--muted)}.field select,.field input{background:var(--bg);border:1px solid var(--surface-2);color:var(--text);border-radius:10px;padding:10px;font-size:1rem}.sheet-foot{display:flex;gap:10px;justify-content:flex-end}.btn-primary,.btn-secondary{border-radius:10px;padding:10px 16px;border:1px solid var(--surface-2);cursor:pointer;font-size:.95rem}.btn-primary{background:var(--accent);color:#fff;border-color:#4aa3df}.btn-secondary{background:var(--surface-2);color:var(--text)}.muted{color:var(--muted);font-size:.9rem}.card-source{font-size:.65rem;letter-spacing:.05em;color:var(--muted);border:1px solid var(--surface-2);border-radius:999px;padding:1px 6px;margin-left:6px}.card-weather{margin-top:14px}.weather-current{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:10px}.weather-icon{width:48px;height:48px;border-radius:8px;object-fit:cover;flex:0 0 auto}.weather-temp{font-size:2rem;font-weight:700}.weather-now{color:var(--muted)}.forecast{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr));gap:10px}.forecast-day{display:flex;flex-direction:column;gap:3px;background:var(--surface-2);border-radius:10px;padding:8px 10px}.forecast-name{font-weight:600;font-size:.85rem}.forecast-icon{width:40px;height:40px;border-radius:8px;object-fit:cover;align-self:flex-start}.forecast-temps{display:flex;gap:8px}.forecast-temps .hi{font-weight:600}.forecast-temps .lo{color:var(--muted)}.forecast-summary{font-size:.8rem;color:var(--muted)}.forecast-precip{font-size:.75rem;color:#4aa3df}.panel{background:var(--surface);border:1px solid var(--surface-2);border-radius:14px;padding:14px;margin-top:14px}.panel-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:4px 10px;margin-bottom:10px}.panel-head h3{margin:0;font-size:1rem}.panel-sub{font-size:.8rem;color:var(--muted)}.travel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:12px}.travel-dir h4{margin:0 0 8px;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.route-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.route{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:4px 10px;background:var(--surface-2);border-radius:10px;padding:8px 10px}.route-faster{outline:1px solid #4aa3df}.route-label{display:flex;align-items:center;gap:8px}.route-time{font-weight:600;white-space:nowrap}.route-dist{color:var(--muted);font-size:.85rem;white-space:nowrap}.pill-faster{background:var(--ok);color:#fff}.road-conditions{margin-top:14px}.road-conditions h4{margin:0 0 8px;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.road-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.road-list li{display:flex;gap:10px}.road-hwy{font-weight:600;white-space:nowrap}.road-summary{color:var(--muted)}.card-road,.card-parking-history{margin-top:14px}.road-incidents{margin-top:6px}.road-incidents .road-summary{color:var(--warn)}.ph-event{display:flex;align-items:center;gap:8px;min-width:0}.ph-lot{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
