.weather-symbols { position: absolute; width: 0; height: 0; overflow: hidden; }
.weather-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }

.weather-widget {
  min-width: 0;
  min-height: 374px;
  padding: 20px;
  display: block;
}

.weather-widget:hover { transform: none; border-color: rgba(210, 220, 212, 0.85); }
.weather-card-heading { display: flex; align-items: center; gap: 10px; min-height: 36px; }
.weather-card-heading .weather-marker { align-self: center; flex-shrink: 0; }
.weather-card-heading .weather-name { margin: 0; font-size: 1.05rem; line-height: 1.25; }
.weather-content { min-height: 261px; padding-top: 20px; }
.weather-current { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.weather-temperature { font-size: 2.85rem; font-weight: 750; letter-spacing: -0.055em; line-height: 1; font-variant-numeric: tabular-nums; }
.weather-condition { margin: 9px 0 0; font-size: 0.91rem; font-weight: 600; }
.weather-feels { margin: 2px 0 0; color: var(--muted); font-size: 0.78rem; }
.weather-icon { width: 58px; height: 58px; flex-shrink: 0; fill: none; stroke: var(--muted); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.weather-icon.is-sun, .weather-icon.is-partly { stroke: #b88026; }
.weather-icon.is-rain, .weather-icon.is-snow { stroke: #477dab; }
.weather-icon.is-thunder { stroke: #9c7331; }
.weather-details { display: flex; flex-wrap: wrap; gap: 4px 15px; margin: 16px 0 0; color: var(--muted); font-size: 0.77rem; }
.weather-details strong { color: var(--ink); font-weight: 600; }
.weather-forecast { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin-top: 18px; }
.weather-day { display: flex; flex-direction: column; align-items: center; gap: 7px; min-width: 0; padding: 11px 3px; border-radius: 13px; background: var(--surface-muted); }
.weather-day-label { font-size: 0.71rem; font-weight: 600; }
.weather-day .weather-icon { width: 28px; height: 28px; stroke-width: 2.3; }
.weather-day-temperatures { display: flex; gap: 7px; font-size: 0.85rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.weather-day-temperatures strong { font-weight: 700; }
.weather-day-temperatures span { color: var(--muted); }
.weather-day-chance { font-size: 0.64rem; color: var(--muted); white-space: nowrap; }
.weather-card-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 7px; padding-top: 14px; margin-top: 16px; border-top: 1px solid var(--line); }
.weather-status { color: var(--muted); font-size: 0.7rem; }
.weather-status.is-stale { color: #966526; }
.weather-card-footer .weather-link { color: var(--accent); font-size: 0.74rem; text-decoration: none; }
.weather-card-footer .weather-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.weather-card-footer .weather-link:focus-visible, .weather-retry:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.weather-placeholder { display: flex; align-items: center; justify-content: center; min-height: 241px; margin: 0; color: var(--muted); font-size: 0.85rem; }
.weather-error { min-height: 241px; display: flex; align-items: flex-start; justify-content: center; flex-direction: column; gap: 14px; }
.weather-error p { margin: 0; color: var(--muted); font-size: 0.86rem; }
.weather-retry { border: 0; border-radius: 999px; padding: 8px 14px; background: var(--accent-soft); color: var(--accent); font: inherit; font-size: 0.8rem; font-weight: 600; cursor: pointer; }
.source-message a { color: var(--accent); text-underline-offset: 2px; }

@media (max-width: 680px) {
  .weather-widget { min-height: 0; }
  .weather-card-heading .weather-name { font-size: 1.06rem; }
}
