// ──────────────────────────────────────────────────────────────── // Widget · Wetter // Zwei Formen: `.weather` (kompakt in der Topbar) und // `.weather-card` (grosser rahmenloser Block). Aus j3-landing. // ──────────────────────────────────────────────────────────────── // ── Kompakt (Topbar) ──────────────────────────────────────────── .weather { display: inline-flex; flex-direction: column; align-items: center; gap: 6px; padding: 0; font: inherit; color: inherit; text-align: center; background: transparent; border: 0; cursor: pointer; transition: opacity var(--dur-base) var(--ease); &:hover, &:focus-visible { outline: none; opacity: .82; } &__main { display: inline-flex; align-items: center; gap: clamp(10px, 1.2vw, 16px); } &__meta { display: inline-flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 10px; font-size: clamp(13px, 1.6vw, 18px); letter-spacing: .04em; color: var(--dim); } &__sep { color: var(--faint); } &__sun { display: inline-flex; align-items: center; gap: 4px; color: var(--fg-soft); span[aria-hidden] { color: var(--ember); } } &__glyph { flex: 0 0 auto; width: clamp(38px, 3.9vw, 58px); height: clamp(38px, 3.9vw, 58px); color: var(--ember); filter: drop-shadow(0 0 12px color-mix(in srgb, var(--ember) 30%, transparent)); svg { display: block; width: 100%; height: 100%; } } &__temp { font-size: clamp(2.3rem, 4.1vw, 3.7rem); font-weight: var(--fw-bold); letter-spacing: -.02em; color: var(--fg); } &__desc { font-size: clamp(15px, 1.8vw, 22px); color: var(--dim); } &__chev { font-size: 30px; line-height: 1; color: var(--ember); opacity: .8; transition: transform var(--dur-base) var(--ease); } } .weather:hover .weather__chev { transform: translateX(3px); } // ── Gross (rahmenloser Block) ─────────────────────────────────── .weather-card { width: 100%; overflow: visible; font-size: var(--fs-md); border: 0; border-radius: 0; background: transparent; &__head { display: flex; align-items: center; gap: clamp(16px, 2vw, 26px); padding: 0 0 16px; border-bottom: 1px solid var(--line); } &__glyph { flex: 0 0 auto; width: clamp(48px, 5vw, 68px); height: clamp(48px, 5vw, 68px); color: var(--ember); filter: drop-shadow(0 0 16px color-mix(in srgb, var(--ember) 32%, transparent)); svg { display: block; width: 100%; height: 100%; } } &__temp { margin-left: auto; font-size: clamp(2.4rem, 4.4vw, 3.6rem); font-weight: var(--fw-bold); letter-spacing: -.02em; color: var(--fg); text-shadow: 0 0 30px color-mix(in srgb, var(--accent) 22%, transparent); } &__body { padding: 18px 0 0; } &__now { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 18px; font-size: clamp(15px, 1.7vw, 20px); color: var(--fg); } &__meta { font-size: clamp(12px, 1.3vw, 15px); color: var(--dim); } &__chart { margin-top: 18px; svg { display: block; width: 100%; height: auto; overflow: visible; } } &__axis { display: flex; justify-content: space-between; margin-top: 6px; font-size: clamp(10px, 1.1vw, 13px); letter-spacing: .06em; color: var(--muted); } &__forecast { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--line); } } .forecast-day { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 14px 6px; border: 1px solid var(--line); border-radius: var(--r-md); background: color-mix(in srgb, var(--bg) 40%, transparent); &--today { border-color: color-mix(in srgb, var(--accent) 42%, transparent); background: color-mix(in srgb, var(--accent) 8%, transparent); } &__name { font-size: clamp(11px, 1.2vw, 13px); letter-spacing: .1em; text-transform: uppercase; color: var(--dim); } &--today &__name { color: var(--fg); } &__icon { width: clamp(26px, 2.6vw, 34px); height: clamp(26px, 2.6vw, 34px); color: var(--fg); svg { display: block; width: 100%; height: 100%; } } &__max { font-size: clamp(17px, 1.8vw, 22px); color: var(--fg); } &__min { font-size: clamp(12px, 1.2vw, 14px); color: var(--dim); } }