.weather-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none!important;z-index:1050;contain:strict}
/* The sun belongs to the castle photo, so it scrolls out of view with it. */
.collage-photo-main.weather-sunny::after{content:"";position:absolute;top:7%;right:14%;width:clamp(90px,12vw,150px);aspect-ratio:1;border-radius:50%;pointer-events:none;background:radial-gradient(circle,#fefefe 0 12%,#f7f7f7 15%,#e9e9e9b3 20%,#e1e1e157 32%,#e1e1e124 49%,#e8e8e800 70%);mix-blend-mode:screen}
.weather-particle{position:absolute;top:-30px;left:var(--x);animation:weather-fall var(--duration) var(--delay) linear infinite;will-change:transform}
.weather-layer[data-weather="rain"] .weather-particle{width:1px;height:var(--length);background:linear-gradient(transparent,#929292b3);transform:rotate(12deg)}
.weather-layer[data-weather="snow"] .weather-particle{width:var(--size);height:var(--size);border-radius:50%;background:#fff;box-shadow:0 0 2px #83838380;opacity:.8}
@keyframes weather-fall{from{transform:translate3d(0,-30px,0)}to{transform:translate3d(var(--drift),calc(100vh + 60px),0)}}
@media(prefers-reduced-motion:reduce){.weather-layer{display:none}}
.weather-badge{display:inline-flex;flex:0 0 44px;width:44px;height:44px;align-items:center;justify-content:center;border:1px solid #c6c6c6;border-radius:12px;background:#f8f8f8;color:#616161;box-shadow:0 4px 18px #35353514;text-decoration:none}.weather-badge:hover{background:#f5f5f5;color:#6c6c6c}.weather-badge:focus-visible{outline:3px solid #616161;outline-offset:3px}
.weather-admin{border-top:4px solid #ababab}.weather-admin form{max-width:680px}.weather-admin label{display:block;font-weight:500;margin:12px 0 6px}.weather-admin select{display:block;width:100%;box-sizing:border-box;font:inherit;min-height:44px;padding:10px;border:1px solid #c6c6c6;border-radius:8px;background:#f8f8f8;color:#515151}.weather-levels{display:grid;grid-template-columns:1fr 1fr;gap:16px}.weather-admin button{margin-top:18px}.weather-admin [role=status]{min-height:1.6em}
@media(max-width:600px){.weather-levels{grid-template-columns:1fr;gap:0}}
.weather-badge{cursor:pointer;font:inherit;padding:0}.weather-badge:hover{background:#f0f0f0;color:#5a5a5a}
.weather-dialog{box-sizing:border-box;width:min(620px,calc(100% - 24px));max-height:85dvh;padding:24px;border:1px solid #c6c6c6;border-radius:18px;background:#fbfbfb;color:#444444;font-family:Poppins,sans-serif;box-shadow:0 20px 70px #35353533}
.weather-dialog::backdrop{background:#3434345e}
.weather-dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.weather-dialog h2{margin:0;font-size:1.35rem}.weather-dialog-heading p{margin:4px 0 18px;font-size:.85rem}.weather-close{border:1px solid #c6c6c6;border-radius:10px;background:white;color:#444444;font:inherit;font-size:1.5rem;min-width:44px;min-height:44px;cursor:pointer}.weather-close:focus-visible,.weather-forecast button:focus-visible{outline:3px solid #616161;outline-offset:2px}
.weather-day{display:grid;grid-template-columns:1fr auto;gap:4px 16px;padding:14px 0;border-top:1px solid #e5e5e5}.weather-day h3{margin:0;font-size:.95rem;text-transform:capitalize}.weather-day h3 span{display:block;font-size:.75rem;font-weight:400;margin-top:2px}.weather-temperature{margin:0;font-size:.95rem;font-weight:600;white-space:nowrap}.weather-rain{grid-column:1/-1;margin:0;font-size:.8rem;line-height:1.6}.weather-source{font-size:.7rem;margin:14px 0 0;color:#6a6a6a}
@media(max-width:420px){.weather-dialog{padding:18px}.weather-temperature{font-size:.85rem}}

.weather-badge{flex:0 0 auto;width:auto;min-width:88px;max-width:150px;box-sizing:border-box;height:46px;padding:5px 10px;text-align:left}
.weather-badge-text{display:flex;flex-direction:column;min-width:0;line-height:1.35}
.weather-badge-text strong{font-size:14px;font-weight:600}
.weather-badge-text>span{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:380px){#site-menu{gap:6px}.weather-badge{min-width:88px;padding:5px 8px}}
