.app{position:relative;min-height:100vh;min-height:100dvh;max-width:1200px;margin:0 auto;padding:1.5rem 1rem 2.5rem}@media(min-width:640px){.app{padding:2rem 1.25rem 3rem}}.sky-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(255,123,156,.35),transparent 55%),radial-gradient(ellipse 60% 40% at 90% 20%,rgba(196,161,255,.2),transparent 50%),radial-gradient(ellipse 50% 35% at 10% 60%,rgba(255,184,108,.15),transparent 45%),linear-gradient(180deg,#1a1528,#0f0e14 45%,#0a0c12);pointer-events:none}.app-header{margin-bottom:2.5rem}.brand h1{font-family:var(--font-display);font-size:clamp(2.25rem,5vw,3rem);font-weight:600;letter-spacing:-.02em;margin:0 0 .35rem;background:linear-gradient(135deg,var(--accent-sunrise) 0%,var(--accent-sunset) 50%,var(--accent-glow) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tagline{margin:0 0 1.75rem;color:var(--text-muted);font-size:1.05rem;max-width:28rem}.location-picker{position:relative;max-width:36rem}.search-row{display:flex;flex-wrap:wrap;gap:.75rem}.search-field{flex:1;min-width:200px;position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:1rem;color:var(--text-muted);font-size:1.1rem;pointer-events:none}.search-field input{width:100%;padding:.85rem 1rem .85rem 2.5rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);color:var(--text);font-size:1rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:border-color .2s,background .2s}.search-field input::placeholder{color:var(--text-muted)}.search-field input:focus{outline:none;border-color:#ffb86c73;background:var(--bg-card-hover)}.search-spinner{position:absolute;right:1rem;width:1rem;height:1rem;border:2px solid var(--border);border-top-color:var(--accent-sunrise);border-radius:50%;animation:spin .7s linear infinite}.btn-geo{padding:.85rem 1.15rem;border:1px solid var(--border);border-radius:var(--radius);background:#ffb86c1f;color:var(--accent-sunrise);font-size:.95rem;font-weight:500;white-space:nowrap;transition:background .2s,transform .15s}.btn-geo:hover:not(:disabled){background:#ffb86c38}.btn-geo:disabled{opacity:.6;cursor:wait}.current-location{display:flex;align-items:center;gap:.4rem;margin:.75rem 0 0;font-size:.9rem;color:var(--text-muted)}.current-location .pin{color:var(--accent-sunset)}.search-results{position:absolute;top:calc(100% + .35rem);left:0;right:0;margin:0;padding:.35rem;list-style:none;background:#14121cf2;border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 16px 48px #00000073;z-index:20;max-height:280px;overflow-y:auto}.search-results li button{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:.65rem .85rem;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text);text-align:left;transition:background .15s}.search-results li button:hover{background:var(--bg-card-hover)}.search-results li strong{font-weight:600}.search-results li span{font-size:.85rem;color:var(--text-muted)}.week-grid{display:grid;gap:1.25rem;grid-template-columns:1fr}@media(min-width:640px){.week-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.week-grid{grid-template-columns:repeat(3,1fr)}.day-card--today{grid-column:span 2}}@media(min-width:1100px){.day-card--today{grid-column:span 1}.week-grid{grid-template-columns:repeat(4,1fr)}.day-card--today{grid-column:span 2}}.day-card{background:var(--bg-card);border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);padding:1.15rem 1.2rem 1.25rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:border-color .2s,transform .2s}.day-card:hover{border-color:#ffffff29}.day-card--today{border-color:#ffb86c59;box-shadow:0 0 40px #ff7b9c14}.day-card-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1rem;padding-bottom:.65rem;border-bottom:1px solid var(--border)}.day-card-header h2{font-family:var(--font-display);font-size:1.2rem;font-weight:600;margin:0}.day-best{font-size:.75rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.day-events{display:flex;flex-direction:column;gap:1rem}.event-block{padding:.85rem;border-radius:var(--radius-sm);background:#0003}.event-sunrise{border-left:3px solid var(--accent-sunrise)}.event-sunset{border-left:3px solid var(--accent-sunset)}.event-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.event-kind{display:flex;align-items:center;gap:.35rem;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.event-sunrise .event-kind{color:var(--accent-sunrise)}.event-sunset .event-kind{color:var(--accent-sunset)}.event-icon{font-size:1rem}.event-header time{font-size:.9rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.score-row{display:flex;gap:.85rem;align-items:flex-start;margin-bottom:.75rem}.score-ring{--score: 50;flex-shrink:0;width:3.25rem;height:3.25rem;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--ring-color, var(--good)) calc(var(--score) * 3.6deg),rgba(255,255,255,.08) 0);position:relative}.score-ring:before{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;background:#0f0e14e6}.score-value{position:relative;font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums;z-index:1}.rating-excellent .score-ring{--ring-color: var(--excellent)}.rating-good .score-ring{--ring-color: var(--good)}.rating-fair .score-ring{--ring-color: var(--fair)}.rating-poor .score-ring{--ring-color: var(--poor)}.score-meta{flex:1;min-width:0}.rating-badge{display:inline-block;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:.2rem .5rem;border-radius:4px;margin-bottom:.35rem}.rating-badge.rating-excellent{background:#6ee7b733;color:var(--excellent)}.rating-badge.rating-good{background:#93c5fd33;color:var(--good)}.rating-badge.rating-fair{background:#fcd34d33;color:var(--fair)}.rating-badge.rating-poor{background:#fca5a533;color:var(--poor)}.event-summary{margin:0;font-size:.85rem;color:var(--text-muted);line-height:1.4}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin:0;padding-top:.65rem;border-top:1px solid rgba(255,255,255,.06)}.metrics div{text-align:center}.metrics dt{font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0 0 .15rem}.metrics dd{margin:0;font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 1rem;color:var(--text-muted)}.loading-orb{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--accent-sunrise),var(--accent-sunset),var(--accent-glow));animation:pulse 1.8s ease-in-out infinite;margin-bottom:1rem;opacity:.85}.banner{padding:.85rem 1rem;border-radius:var(--radius-sm);margin-bottom:1.5rem;font-size:.95rem}.banner-error{background:#fca5a51f;border:1px solid rgba(252,165,165,.35);color:#fecaca}.app-footer{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--border)}.app-footer p{margin:0;font-size:.8rem;color:var(--text-muted);max-width:36rem;line-height:1.55}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{transform:scale(1);opacity:.7}50%{transform:scale(1.08);opacity:1}}*,*:before,*:after{box-sizing:border-box}:root{--bg-deep: #0f0e14;--bg-card: rgba(255, 255, 255, .06);--bg-card-hover: rgba(255, 255, 255, .09);--border: rgba(255, 255, 255, .1);--text: #f4f0eb;--text-muted: rgba(244, 240, 235, .62);--accent-sunrise: #ffb86c;--accent-sunset: #ff7b9c;--accent-glow: #c4a1ff;--excellent: #6ee7b7;--good: #93c5fd;--fair: #fcd34d;--poor: #fca5a5;--font-body: "DM Sans", system-ui, sans-serif;--font-display: "Fraunces", Georgia, serif;--radius: 16px;--radius-sm: 10px}html{font-size:16px;-webkit-font-smoothing:antialiased}body{margin:0;min-height:100vh;min-height:100dvh;font-family:var(--font-body);color:var(--text);background:var(--bg-deep);line-height:1.5;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}#root{min-height:100vh}button{font-family:inherit;cursor:pointer}input{font-family:inherit}a{color:var(--accent-sunrise)}
