.weather{position: relative;display: inline-block;color: var(--color-headings,currentColor)}.weather summary{list-style: none}.weather summary::-webkit-details-marker{display: none}.weather__current{display: inline-flex;align-items: center;justify-content: flex-end;gap: 0.25rem;cursor: pointer;user-select: none;border: 0;background: transparent;color: inherit;padding: 0}.weather__temp{font-family: var(--font-headings,inherit);font-size: 1rem;font-weight: 700;line-height: 1;letter-spacing: 0.01em}.weather__icon,.weather__forecast-icon{display: inline-flex;align-items: center;justify-content: center;color: var(--color-accent,currentColor)}.weather__icon svg,.weather__forecast-icon svg{width: 1.15rem;height: 1.15rem;display: block;fill: currentColor}.weather__panel{position: absolute;top: calc(100% + 0.4rem);right: 0;z-index: 40;width: min(16rem,calc(100vw - 2rem));padding: 1rem 1rem 0.9rem;border-radius: 1rem;background: var(--color-bg,#fff);box-shadow: 0 20px 40px rgba(0,0,0,0.16);border: 1px solid rgba(0,0,0,0.06);opacity: 0;visibility: hidden;transform: translateY(0.35rem);transition: opacity 0.18s ease,transform 0.18s ease,visibility 0.18s ease}.weather:hover .weather__panel,.weather:focus-within .weather__panel,.weather[open] .weather__panel{opacity: 1;visibility: visible;transform: translateY(0)}.weather__panel-heading{margin-bottom: 0.7rem;font-family: var(--font-headings,inherit);font-size: 0.8rem;font-weight: 700;letter-spacing: 0.08em;text-transform: uppercase;color: var(--color-text-light,#555)}.weather__forecast{margin: 0;padding: 0;list-style: none}.weather__forecast-item{display: grid;grid-template-columns: auto minmax(0,1fr) auto;align-items: center;gap: 0.75rem;padding: 0.55rem 0;border-top: 1px solid rgba(0,0,0,0.08)}.weather__forecast-item:first-child{border-top: 0;padding-top: 0}.weather__day,.weather__temps{font-size: 0.9rem;line-height: 1.2}.weather__day{font-weight: 600;color: var(--color-headings,currentColor)}.weather__temps{color: var(--color-text,#404040);white-space: nowrap;text-align: right}.weather--error-state .weather__current{cursor: help}.weather__error-mark{display: inline-flex;align-items: center;justify-content: center;width: 1.15rem;height: 1.15rem;border-radius: 999px;background: var(--color-accent,currentColor);color: var(--color-white,#fff);font-family: var(--font-headings,inherit);font-size: 0.8rem;font-weight: 800;line-height: 1}.weather--error-state .weather__error-mark{box-shadow: 0 0 0 1px rgba(0,0,0,0.08)}.weather--error-state{position: relative}.weather--error-state::after{content: attr(data-weather-message);position: absolute;top: calc(100% + 0.6rem);right: 0;z-index: 45;width: min(18rem,70vw);padding: 0.65rem 0.75rem;border-radius: 0.75rem;background: var(--color-headings,#111);color: var(--color-white,#fff);font-family: var(--font-primary,inherit);font-size: 0.8rem;font-weight: 500;line-height: 1.35;white-space: normal;box-shadow: 0 14px 28px rgba(0,0,0,0.18);opacity: 0;visibility: hidden;transform: translateY(0.2rem);transition: opacity 0.18s ease,transform 0.18s ease,visibility 0.18s ease;pointer-events: none}.weather--error-state:hover::after,.weather--error-state:focus-visible::after,.weather--error-state:focus::after{opacity: 1;visibility: visible;transform: translateY(0)}.desktop-actions .weather,.mobile-actions .weather{margin-inline-start: 0.35rem}.mobile-actions .weather{display: block}.mobile-actions .weather__current{justify-content: flex-start}.mobile-actions .weather__panel{position: static;width: 100%;margin-top: 0.85rem;opacity: 1;visibility: visible;transform: none;display: none;box-shadow: none;border: 1px solid rgba(255,255,255,0.14);background: rgba(255,255,255,0.06);color: inherit}.mobile-actions .weather[open] .weather__panel{display: block}.mobile-actions .weather__forecast-item{border-top-color: rgba(255,255,255,0.14)}.mobile-actions .weather__day,.mobile-actions .weather__temps,.mobile-actions .weather__panel-heading{color: inherit}@media (hover: none){.weather__panel{display: none}.weather[open] .weather__panel{display: block;opacity: 1;visibility: visible;transform: none}}