Changeset 3366801
- Timestamp:
- 09/23/2025 10:20:49 PM (5 months ago)
- Location:
- weatherbot
- Files:
-
- 4 edited
- 1 copied
-
tags/1.0.9 (copied) (copied from weatherbot/trunk)
-
tags/1.0.9/assets/css/weather-bot.css (modified) (16 diffs)
-
tags/1.0.9/readme.txt (modified) (2 diffs)
-
trunk/assets/css/weather-bot.css (modified) (16 diffs)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
weatherbot/tags/1.0.9/assets/css/weather-bot.css
r3366760 r3366801 1 /* WeatherBot by RoxxiStudios Public Styles (optimized v3.2.2 with compat patch) */ 1 /* WeatherBot by RoxxiStudios — Public Styles (optimized v3.3.1 + ADA enhancements) 2 - Component-scoped, class-only selectors (no element qualifiers) 3 - Predictable typography + color baseline (prevents footer/theme bleed) 4 - Accessible focus states, reduced-motion fallback, high-contrast support 5 - Flat specificity (optional class-doubling bumps at bottom) 6 */ 7 8 9 /* ========================= 10 0) CSS Reset (component scope) 11 ========================= */ 12 13 .roxxi-weather, 14 .roxxi-weather * { 15 box-sizing: border-box; 16 } 2 17 3 18 … … 12 27 --wb-light: #D3D3D3; 13 28 --wb-dark: #1A1A1A; 29 /* Focus/outline tokens */ 30 --wb-focus: #6799cc; 31 /* fallback if currentColor unavailable */ 32 --wb-outline: #000000; 33 --wb-outline-contrast: #ffffff; 14 34 } 15 35 … … 24 44 gap: 5px; 25 45 width: fit-content; 46 /* Typography baseline */ 26 47 font-family: inherit; 27 font-weight: 600; 28 background: white; 29 } 48 font-weight: 400; 49 font-size: 16px; 50 line-height: 1.3; 51 /* Color baseline to resist footer/theme overrides */ 52 color: var(--wb-dark); 53 background: #ffffff; 54 /* Improve tap targets in touch contexts */ 55 -webkit-tap-highlight-color: transparent; 56 } 57 58 59 /* Inherit typography safely for children */ 30 60 31 61 .roxxi-weather * { … … 33 63 font-weight: inherit; 34 64 font-size: inherit; 35 line-height: normal;65 line-height: inherit; 36 66 word-break: normal; 37 67 white-space: normal; 38 box-sizing: border-box; 39 } 40 41 span.roxxi-weather .details, 42 span.roxxi-weather .conditions { 68 } 69 70 71 /* ========================= 72 3) Layout Groups 73 ========================= */ 74 75 .roxxi-weather .details, 76 .roxxi-weather .conditions { 43 77 display: flex; 44 78 flex-wrap: wrap; … … 48 82 49 83 84 /* ========================= 85 4) Variants 86 ========================= */ 87 88 50 89 /*** BADGE ***/ 51 90 52 span.roxxi-weather.wb-type-badge {91 .roxxi-weather.wb-type-badge { 53 92 display: inline-flex; 54 93 align-items: flex-start; … … 61 100 } 62 101 63 span.roxxi-weather.wb-type-badge span.badge {102 .roxxi-weather.wb-type-badge .badge { 64 103 display: flex; 65 104 gap: 8px; 66 105 } 67 106 68 span.roxxi-weather.wb-type-badge span.details {107 .roxxi-weather.wb-type-badge .details { 69 108 flex-direction: column; 70 109 align-items: flex-start; 71 110 } 72 111 73 span.roxxi-weather.wb-type-badge span.conditions {112 .roxxi-weather.wb-type-badge .conditions { 74 113 align-items: center; 75 114 } 76 115 77 span.roxxi-weather.wb-type-badge span.temp {116 .roxxi-weather.wb-type-badge .temp { 78 117 gap: 5px; 79 118 } 80 119 81 span.roxxi-weather.wb-type-badge .wb-ico {120 .roxxi-weather.wb-type-badge .wb-ico { 82 121 width: 28px; 83 122 height: auto; 84 123 } 85 124 86 span.roxxi-weather.wb-type-badge span.temp span.degree {87 font-size: inherit;88 }89 90 125 91 126 /*** COMPACT ***/ 92 127 93 span.roxxi-weather.wb-type-compact {128 .roxxi-weather.wb-type-compact { 94 129 flex-direction: column; 95 130 padding: 8px 10px; … … 97 132 border-radius: 5px; 98 133 font-size: 16px; 134 /* variant scale */ 99 135 } 100 136 … … 107 143 flex-wrap: wrap; 108 144 gap: 8px; 109 background: unset;145 background: transparent; 110 146 border: 0; 111 147 font-size: inherit; 112 vertical-align: text-bottom; 113 } 114 115 116 /*** ALIGNMENT ***/ 117 118 span.roxxi-weather.wb-left, 119 span.roxxi-weather.wb-left .details, 120 span.roxxi-weather.wb-left .conditions { 148 vertical-align: baseline; 149 } 150 151 152 /* ========================= 153 5) Alignment Utilities 154 ========================= */ 155 156 .roxxi-weather.wb-left, 157 .roxxi-weather.wb-left .details, 158 .roxxi-weather.wb-left .conditions { 121 159 justify-content: flex-start; 122 160 margin: 0; … … 124 162 } 125 163 126 span.roxxi-weather.wb-center,127 span.roxxi-weather.wb-center .details,128 span.roxxi-weather.wb-center .conditions {164 .roxxi-weather.wb-center, 165 .roxxi-weather.wb-center .details, 166 .roxxi-weather.wb-center .conditions { 129 167 display: flex; 130 168 justify-content: center; … … 133 171 } 134 172 135 span.roxxi-weather.wb-right,136 span.roxxi-weather.wb-right .details,137 span.roxxi-weather.wb-right .conditions {173 .roxxi-weather.wb-right, 174 .roxxi-weather.wb-right .details, 175 .roxxi-weather.wb-right .conditions { 138 176 display: flex; 139 177 justify-content: flex-end; … … 142 180 } 143 181 144 span.roxxi-weather.wb-center:not(.wp-badge),145 span.roxxi-weather.wb-right:not(.wp-badge) {182 .roxxi-weather.wb-center:not(.wp-badge), 183 .roxxi-weather.wb-right:not(.wp-badge) { 146 184 align-items: inherit; 147 185 } 148 186 149 span.roxxi-weather.wb-right .wb-badge.conditions {187 .roxxi-weather.wb-right .wb-badge.conditions { 150 188 display: inline-flex; 151 189 align-items: center; 152 190 } 153 191 154 span.roxxi-weather .conditions { 155 display: flex; 156 flex-direction: row; 157 align-items: center; 158 flex-wrap: wrap; 159 gap: 5px; 160 } 161 162 span.roxxi-weather strong.wb-pre { 163 font-size: inherit; 164 font-weight: inherit; 165 line-height: 1.2; 166 } 167 168 169 /*** temperature and conditions ***/ 170 171 span.roxxi-weather span.details, 172 span.roxxi-weather span.conditions { 173 font-size: inherit; 174 } 175 176 span.roxxi-weather span.wb-ico { 192 193 /* ========================= 194 6) Temperature & Conditions 195 ========================= */ 196 197 .roxxi-weather .wb-ico { 177 198 width: 20px; 178 199 height: auto; 179 200 } 180 201 181 span.roxxi-weather span.temp {202 .roxxi-weather .temp { 182 203 display: flex; 183 204 align-items: center; 184 205 gap: 3px; 185 font-weight: inherit; 186 } 187 188 span.roxxi-weather span.degree { 206 } 207 208 .roxxi-weather .degree { 189 209 display: inline-flex; 190 210 align-items: baseline; 191 211 gap: 2px; 192 font-weight: inherit; 193 } 194 195 span.roxxi-weather span.wb-temp { 196 font-weight: inherit; 212 } 213 214 .roxxi-weather .wb-temp, 215 .roxxi-weather .wb-unit { 197 216 opacity: 0.9; 198 217 } 199 218 200 span.roxxi-weather span.wb-unit { 201 font-weight: inherit; 202 opacity: 0.9; 203 } 204 205 span.roxxi-weather span.wb-desc { 219 .roxxi-weather .wb-desc { 206 220 color: var(--wb-neutral); 207 font-size: inherit; 208 font-weight: inherit; 209 } 210 211 212 /*** powered-by line ***/ 213 214 span.widget.widget_roxxi_weather_widget .wb-powered, 215 span.roxxi-weather span.wb-powered { 221 } 222 223 .roxxi-weather .wb-pre, 224 .roxxi-weather .wb-temp, 225 .roxxi-weather .wb-unit { 226 font-weight: 600; 227 line-height: 1.2; 228 } 229 230 231 /* ========================= 232 7) Powered-by Line 233 ========================= */ 234 235 .widget.widget_roxxi_weather_widget .wb-powered, 236 .roxxi-weather .wb-powered { 216 237 color: var(--wb-neutral); 217 238 font-size: 12px; … … 219 240 } 220 241 221 span.roxxi-weather span.wb-powered a.wb-powered-link {242 .roxxi-weather .wb-powered a.wb-powered-link { 222 243 font-size: inherit; 223 font-weight: 500; 224 } 225 226 span.roxxi-weather a.wb-powered-link { 244 transition: 250ms; 245 } 246 247 248 /* Default link styles inside component (distinguished from text) */ 249 250 .roxxi-weather a { 227 251 color: var(--wb-primary); 228 text-decoration: none; 229 transition: 250ms; 230 } 231 232 span.roxxi-weather a.wb-powered-link:hover, 233 span.roxxi-weather a.wb-powered-link:focus { 252 text-decoration: underline; 253 text-underline-offset: 2px; 254 transition: color 250ms; 255 } 256 257 .roxxi-weather a:hover, 258 .roxxi-weather a:focus { 234 259 color: var(--wb-secondary); 235 text-decoration: none; 236 } 237 238 239 /* ========================= 240 Font Color Helpers 241 ========================= */ 242 243 span.roxxi-weather.wb-font-light { 260 } 261 262 263 /* Powered-by link: keep underline to avoid color-only cue */ 264 265 .roxxi-weather a.wb-powered-link { 266 text-decoration: underline; 267 text-underline-offset: 2px; 268 } 269 270 271 /* === FIX: ensure powered-by hover/focus beats theme a:hover and adds a clearer cue === */ 272 273 .roxxi-weather a.wb-powered-link:hover, 274 .roxxi-weather a.wb-powered-link:focus { 275 color: var(--wb-secondary); 276 text-underline-offset: 4px; 277 } 278 279 280 /* ========================= 281 8) Color Utilities 282 ========================= */ 283 284 285 /* Support both wb-text-* and wb-font-* for backward compatibility */ 286 287 .roxxi-weather.wb-text-dark, 288 .roxxi-weather.wb-font-dark { 289 color: var(--wb-dark); 290 } 291 292 .roxxi-weather.wb-text-dark a, 293 .roxxi-weather.wb-font-dark a { 294 color: var(--wb-primary); 295 } 296 297 .roxxi-weather.wb-text-light, 298 .roxxi-weather.wb-font-light { 244 299 color: #ffffff; 245 300 } 246 301 247 span.roxxi-weather.wb-font-light span.wb-powered-link { 302 .roxxi-weather.wb-text-light a, 303 .roxxi-weather.wb-font-light a { 248 304 color: inherit; 249 } 250 251 span.roxxi-weather.wb-font-dark { 252 color: var(--wb-dark); 253 } 254 255 span.roxxi-weather.wb-font-dark span.wb-powered-link { 256 color: inherit; 257 } 258 259 260 /* While loading, show only the line; hide icon/temp/unit/desc */ 261 262 span.roxxi-weather .conditions.wb-loading span.wb-ico, 263 span.roxxi-weather .conditions.wb-loading span.wb-temp, 264 span.roxxi-weather .conditions.wb-loading span.wb-sep, 265 span.roxxi-weather .conditions.wb-loading span.wb-unit, 266 span.roxxi-weather .conditions.wb-loading span.wb-desc { 305 /* white links on dark */ 306 } 307 308 309 /* Description color adjusts for light mode cards */ 310 311 .roxxi-weather.wb-text-light .wb-desc, 312 .roxxi-weather.wb-font-light .wb-desc { 313 color: var(--wb-light); 314 } 315 316 317 /* Card backgrounds for light text variants */ 318 319 .roxxi-weather.wb-type-badge.wb-text-light, 320 .roxxi-weather.wb-type-compact.wb-text-light { 321 background: var(--wb-dark); 322 } 323 324 325 /* ========================= 326 9) Loading States 327 ========================= */ 328 329 330 /* Hide icon/temp/unit/desc while loading */ 331 332 .roxxi-weather .conditions.wb-loading .wb-ico, 333 .roxxi-weather .conditions.wb-loading .wb-temp, 334 .roxxi-weather .conditions.wb-loading .wb-sep, 335 .roxxi-weather .conditions.wb-loading .wb-unit, 336 .roxxi-weather .conditions.wb-loading .wb-desc { 267 337 display: none; 268 338 } … … 271 341 /* Show the loading message only during loading */ 272 342 273 span.roxxi-weather span.conditions span.wb-loading-msg {343 .roxxi-weather .conditions .wb-loading-msg { 274 344 display: none; 275 345 } 276 346 277 span.roxxi-weather span.conditions.wb-loading span.wb-loading-msg {347 .roxxi-weather .conditions.wb-loading .wb-loading-msg { 278 348 display: inline; 279 349 } 280 350 281 351 282 /* ** Optional niceties ***/283 284 span.roxxi-weather span.conditions span.wb-loading-msg {352 /* Optional niceties */ 353 354 .roxxi-weather .conditions .wb-loading-msg { 285 355 font-size: 15px; 286 356 margin-left: 0; 287 357 font-style: italic; 288 font-weight: normal;358 font-weight: 400; 289 359 text-align: center; 290 360 opacity: .85; 291 361 } 292 362 293 span.roxxi-weather span.conditions.wb-loading span.wb-loading-msg::after {363 .roxxi-weather .conditions.wb-loading .wb-loading-msg::after { 294 364 content: ""; 295 365 display: inline-block; … … 319 389 320 390 321 /* ========================= 322 Compat Patch 391 /* Respect user motion preferences */ 392 393 @media (prefers-reduced-motion: reduce) { 394 .roxxi-weather .conditions.wb-loading .wb-loading-msg::after { 395 animation: none; 396 content: "..."; 397 } 398 .roxxi-weather a { 399 transition: none; 400 } 401 } 402 403 404 /* ========================= 405 10) Focus Visibility (ADA) 406 ========================= */ 407 408 .roxxi-weather a:focus-visible, 409 .roxxi-weather button:focus-visible, 410 .roxxi-weather [role="button"]:focus-visible { 411 outline: 3px solid currentColor; 412 /* ensures ≥3:1 contrast vs background */ 413 outline-offset: 2px; 414 border-radius: 3px; 415 /* subtle rounding to improve visibility on icons */ 416 } 417 418 419 /* When keyboard navigating within dark cards, allow explicit contrast override if needed */ 420 421 .roxxi-weather.wb-text-light a:focus-visible, 422 .roxxi-weather.wb-font-light a:focus-visible { 423 outline-color: currentColor; 424 /* still inherits white; strong on dark */ 425 } 426 427 428 /* High-contrast/forced-colors support (Windows HC Mode) */ 429 430 @media (forced-colors: active) { 431 .roxxi-weather { 432 forced-color-adjust: none; 433 border: 1px solid CanvasText; 434 background: Canvas; 435 color: CanvasText; 436 } 437 .roxxi-weather a { 438 color: LinkText; 439 } 440 .roxxi-weather a:focus-visible { 441 outline: 3px solid Highlight; 442 } 443 .roxxi-weather .wb-desc { 444 color: CanvasText; 445 } 446 } 447 448 449 /* ========================= 450 11) Responsive Adjustments 451 ========================= */ 452 453 @media (max-width: 480px) { 454 .roxxi-weather.wb-type-badge .badge { 455 display: flex; 456 flex-direction: column; 457 justify-content: center; 458 gap: 8px; 459 } 460 .roxxi-weather .wb-sep { 461 display: none; 462 } 463 } 464 465 @media (max-width: 320px) { 466 .roxxi-weather.wb-type-badge, 467 .roxxi-weather.wb-type-compact, 468 .roxxi-weather.wb-type-inline { 469 font-size: 14px; 470 } 471 .roxxi-weather.wb-type-inline .wb-ico { 472 display: none; 473 } 474 } 475 476 477 /* ========================= 478 12) Compat Patch 323 479 ========================= */ 324 480 … … 326 482 /*** Badge wrapper class used by renderer ***/ 327 483 328 span.roxxi-weather.wb-type-badge span.wb-badge {484 .roxxi-weather.wb-type-badge .wb-badge { 329 485 display: flex; 330 486 flex-direction: column; … … 335 491 336 492 337 /* ** Support both wb-text-* and wb-font-* ***/338 339 span.roxxi-weather.wb-text-light * {493 /* Keep legacy utility name working (alias of wb-text-*) */ 494 495 .roxxi-weather.wb-font-light * { 340 496 color: #ffffff; 341 497 } 342 498 343 .roxxi-weather.wb-text-light span.wb-desc { 344 color: var(--wb-light); 345 } 346 347 span.roxxi-weather.wb-type-badge.wb-text-light, 348 span.roxxi-weather.wb-type-compact.wb-text-light { 349 background: var(--wb-dark) 350 } 351 352 span.roxxi-weather.wb-text-dark { 353 color: var(--wb-dark); 354 } 355 356 span.roxxi-weather.wb-text-light a.wb-powered-link { 357 color: inherit; 358 } 359 360 .roxxi-weather.wb-text-dark a.wb-powered-link { 361 color: var(--wb-primary); 362 } 363 364 365 /* ========================= 366 Responsive Adjustments 367 ========================= */ 368 369 @media (max-width: 480px) { 370 span.roxxi-weather.wb-type-badge .badge { 371 display: flex; 372 flex-direction: column; 373 justify-content: center; 374 gap: 8px; 375 } 376 span.roxxi-weather .wb-sep { 377 display: none; 378 } 379 } 380 381 @media (max-width: 320px) { 382 span.roxxi-weather.wb-type-badge, 383 span.roxxi-weather.wb-type-compact, 384 span.roxxi-weather.wb-type-inline { 385 font-size: 14px; 386 } 387 span.roxxi-weather.wb-type-inline .wb-ico { 388 display: none; 389 } 390 } 499 500 /* 501 .roxxi-weather.roxxi-weather { color: var(--wb-dark); } 502 .roxxi-weather.roxxi-weather a { color: var(--wb-primary); } 503 */ -
weatherbot/tags/1.0.9/readme.txt
r3366762 r3366801 5 5 Tested up to: 6.8 6 6 Requires PHP: 7.4 7 Stable tag: 1.0. 87 Stable tag: 1.0.9 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 181 181 == Changelog == 182 182 183 = 1.0.9 = 184 * Improved CSS with layering and theme style inherit for consistency. 185 * Added additional CSS for ADA enhancements 186 183 187 = 1.0.8 = 184 188 * Updated readme.txt content -
weatherbot/trunk/assets/css/weather-bot.css
r3366760 r3366801 1 /* WeatherBot by RoxxiStudios Public Styles (optimized v3.2.2 with compat patch) */ 1 /* WeatherBot by RoxxiStudios — Public Styles (optimized v3.3.1 + ADA enhancements) 2 - Component-scoped, class-only selectors (no element qualifiers) 3 - Predictable typography + color baseline (prevents footer/theme bleed) 4 - Accessible focus states, reduced-motion fallback, high-contrast support 5 - Flat specificity (optional class-doubling bumps at bottom) 6 */ 7 8 9 /* ========================= 10 0) CSS Reset (component scope) 11 ========================= */ 12 13 .roxxi-weather, 14 .roxxi-weather * { 15 box-sizing: border-box; 16 } 2 17 3 18 … … 12 27 --wb-light: #D3D3D3; 13 28 --wb-dark: #1A1A1A; 29 /* Focus/outline tokens */ 30 --wb-focus: #6799cc; 31 /* fallback if currentColor unavailable */ 32 --wb-outline: #000000; 33 --wb-outline-contrast: #ffffff; 14 34 } 15 35 … … 24 44 gap: 5px; 25 45 width: fit-content; 46 /* Typography baseline */ 26 47 font-family: inherit; 27 font-weight: 600; 28 background: white; 29 } 48 font-weight: 400; 49 font-size: 16px; 50 line-height: 1.3; 51 /* Color baseline to resist footer/theme overrides */ 52 color: var(--wb-dark); 53 background: #ffffff; 54 /* Improve tap targets in touch contexts */ 55 -webkit-tap-highlight-color: transparent; 56 } 57 58 59 /* Inherit typography safely for children */ 30 60 31 61 .roxxi-weather * { … … 33 63 font-weight: inherit; 34 64 font-size: inherit; 35 line-height: normal;65 line-height: inherit; 36 66 word-break: normal; 37 67 white-space: normal; 38 box-sizing: border-box; 39 } 40 41 span.roxxi-weather .details, 42 span.roxxi-weather .conditions { 68 } 69 70 71 /* ========================= 72 3) Layout Groups 73 ========================= */ 74 75 .roxxi-weather .details, 76 .roxxi-weather .conditions { 43 77 display: flex; 44 78 flex-wrap: wrap; … … 48 82 49 83 84 /* ========================= 85 4) Variants 86 ========================= */ 87 88 50 89 /*** BADGE ***/ 51 90 52 span.roxxi-weather.wb-type-badge {91 .roxxi-weather.wb-type-badge { 53 92 display: inline-flex; 54 93 align-items: flex-start; … … 61 100 } 62 101 63 span.roxxi-weather.wb-type-badge span.badge {102 .roxxi-weather.wb-type-badge .badge { 64 103 display: flex; 65 104 gap: 8px; 66 105 } 67 106 68 span.roxxi-weather.wb-type-badge span.details {107 .roxxi-weather.wb-type-badge .details { 69 108 flex-direction: column; 70 109 align-items: flex-start; 71 110 } 72 111 73 span.roxxi-weather.wb-type-badge span.conditions {112 .roxxi-weather.wb-type-badge .conditions { 74 113 align-items: center; 75 114 } 76 115 77 span.roxxi-weather.wb-type-badge span.temp {116 .roxxi-weather.wb-type-badge .temp { 78 117 gap: 5px; 79 118 } 80 119 81 span.roxxi-weather.wb-type-badge .wb-ico {120 .roxxi-weather.wb-type-badge .wb-ico { 82 121 width: 28px; 83 122 height: auto; 84 123 } 85 124 86 span.roxxi-weather.wb-type-badge span.temp span.degree {87 font-size: inherit;88 }89 90 125 91 126 /*** COMPACT ***/ 92 127 93 span.roxxi-weather.wb-type-compact {128 .roxxi-weather.wb-type-compact { 94 129 flex-direction: column; 95 130 padding: 8px 10px; … … 97 132 border-radius: 5px; 98 133 font-size: 16px; 134 /* variant scale */ 99 135 } 100 136 … … 107 143 flex-wrap: wrap; 108 144 gap: 8px; 109 background: unset;145 background: transparent; 110 146 border: 0; 111 147 font-size: inherit; 112 vertical-align: text-bottom; 113 } 114 115 116 /*** ALIGNMENT ***/ 117 118 span.roxxi-weather.wb-left, 119 span.roxxi-weather.wb-left .details, 120 span.roxxi-weather.wb-left .conditions { 148 vertical-align: baseline; 149 } 150 151 152 /* ========================= 153 5) Alignment Utilities 154 ========================= */ 155 156 .roxxi-weather.wb-left, 157 .roxxi-weather.wb-left .details, 158 .roxxi-weather.wb-left .conditions { 121 159 justify-content: flex-start; 122 160 margin: 0; … … 124 162 } 125 163 126 span.roxxi-weather.wb-center,127 span.roxxi-weather.wb-center .details,128 span.roxxi-weather.wb-center .conditions {164 .roxxi-weather.wb-center, 165 .roxxi-weather.wb-center .details, 166 .roxxi-weather.wb-center .conditions { 129 167 display: flex; 130 168 justify-content: center; … … 133 171 } 134 172 135 span.roxxi-weather.wb-right,136 span.roxxi-weather.wb-right .details,137 span.roxxi-weather.wb-right .conditions {173 .roxxi-weather.wb-right, 174 .roxxi-weather.wb-right .details, 175 .roxxi-weather.wb-right .conditions { 138 176 display: flex; 139 177 justify-content: flex-end; … … 142 180 } 143 181 144 span.roxxi-weather.wb-center:not(.wp-badge),145 span.roxxi-weather.wb-right:not(.wp-badge) {182 .roxxi-weather.wb-center:not(.wp-badge), 183 .roxxi-weather.wb-right:not(.wp-badge) { 146 184 align-items: inherit; 147 185 } 148 186 149 span.roxxi-weather.wb-right .wb-badge.conditions {187 .roxxi-weather.wb-right .wb-badge.conditions { 150 188 display: inline-flex; 151 189 align-items: center; 152 190 } 153 191 154 span.roxxi-weather .conditions { 155 display: flex; 156 flex-direction: row; 157 align-items: center; 158 flex-wrap: wrap; 159 gap: 5px; 160 } 161 162 span.roxxi-weather strong.wb-pre { 163 font-size: inherit; 164 font-weight: inherit; 165 line-height: 1.2; 166 } 167 168 169 /*** temperature and conditions ***/ 170 171 span.roxxi-weather span.details, 172 span.roxxi-weather span.conditions { 173 font-size: inherit; 174 } 175 176 span.roxxi-weather span.wb-ico { 192 193 /* ========================= 194 6) Temperature & Conditions 195 ========================= */ 196 197 .roxxi-weather .wb-ico { 177 198 width: 20px; 178 199 height: auto; 179 200 } 180 201 181 span.roxxi-weather span.temp {202 .roxxi-weather .temp { 182 203 display: flex; 183 204 align-items: center; 184 205 gap: 3px; 185 font-weight: inherit; 186 } 187 188 span.roxxi-weather span.degree { 206 } 207 208 .roxxi-weather .degree { 189 209 display: inline-flex; 190 210 align-items: baseline; 191 211 gap: 2px; 192 font-weight: inherit; 193 } 194 195 span.roxxi-weather span.wb-temp { 196 font-weight: inherit; 212 } 213 214 .roxxi-weather .wb-temp, 215 .roxxi-weather .wb-unit { 197 216 opacity: 0.9; 198 217 } 199 218 200 span.roxxi-weather span.wb-unit { 201 font-weight: inherit; 202 opacity: 0.9; 203 } 204 205 span.roxxi-weather span.wb-desc { 219 .roxxi-weather .wb-desc { 206 220 color: var(--wb-neutral); 207 font-size: inherit; 208 font-weight: inherit; 209 } 210 211 212 /*** powered-by line ***/ 213 214 span.widget.widget_roxxi_weather_widget .wb-powered, 215 span.roxxi-weather span.wb-powered { 221 } 222 223 .roxxi-weather .wb-pre, 224 .roxxi-weather .wb-temp, 225 .roxxi-weather .wb-unit { 226 font-weight: 600; 227 line-height: 1.2; 228 } 229 230 231 /* ========================= 232 7) Powered-by Line 233 ========================= */ 234 235 .widget.widget_roxxi_weather_widget .wb-powered, 236 .roxxi-weather .wb-powered { 216 237 color: var(--wb-neutral); 217 238 font-size: 12px; … … 219 240 } 220 241 221 span.roxxi-weather span.wb-powered a.wb-powered-link {242 .roxxi-weather .wb-powered a.wb-powered-link { 222 243 font-size: inherit; 223 font-weight: 500; 224 } 225 226 span.roxxi-weather a.wb-powered-link { 244 transition: 250ms; 245 } 246 247 248 /* Default link styles inside component (distinguished from text) */ 249 250 .roxxi-weather a { 227 251 color: var(--wb-primary); 228 text-decoration: none; 229 transition: 250ms; 230 } 231 232 span.roxxi-weather a.wb-powered-link:hover, 233 span.roxxi-weather a.wb-powered-link:focus { 252 text-decoration: underline; 253 text-underline-offset: 2px; 254 transition: color 250ms; 255 } 256 257 .roxxi-weather a:hover, 258 .roxxi-weather a:focus { 234 259 color: var(--wb-secondary); 235 text-decoration: none; 236 } 237 238 239 /* ========================= 240 Font Color Helpers 241 ========================= */ 242 243 span.roxxi-weather.wb-font-light { 260 } 261 262 263 /* Powered-by link: keep underline to avoid color-only cue */ 264 265 .roxxi-weather a.wb-powered-link { 266 text-decoration: underline; 267 text-underline-offset: 2px; 268 } 269 270 271 /* === FIX: ensure powered-by hover/focus beats theme a:hover and adds a clearer cue === */ 272 273 .roxxi-weather a.wb-powered-link:hover, 274 .roxxi-weather a.wb-powered-link:focus { 275 color: var(--wb-secondary); 276 text-underline-offset: 4px; 277 } 278 279 280 /* ========================= 281 8) Color Utilities 282 ========================= */ 283 284 285 /* Support both wb-text-* and wb-font-* for backward compatibility */ 286 287 .roxxi-weather.wb-text-dark, 288 .roxxi-weather.wb-font-dark { 289 color: var(--wb-dark); 290 } 291 292 .roxxi-weather.wb-text-dark a, 293 .roxxi-weather.wb-font-dark a { 294 color: var(--wb-primary); 295 } 296 297 .roxxi-weather.wb-text-light, 298 .roxxi-weather.wb-font-light { 244 299 color: #ffffff; 245 300 } 246 301 247 span.roxxi-weather.wb-font-light span.wb-powered-link { 302 .roxxi-weather.wb-text-light a, 303 .roxxi-weather.wb-font-light a { 248 304 color: inherit; 249 } 250 251 span.roxxi-weather.wb-font-dark { 252 color: var(--wb-dark); 253 } 254 255 span.roxxi-weather.wb-font-dark span.wb-powered-link { 256 color: inherit; 257 } 258 259 260 /* While loading, show only the line; hide icon/temp/unit/desc */ 261 262 span.roxxi-weather .conditions.wb-loading span.wb-ico, 263 span.roxxi-weather .conditions.wb-loading span.wb-temp, 264 span.roxxi-weather .conditions.wb-loading span.wb-sep, 265 span.roxxi-weather .conditions.wb-loading span.wb-unit, 266 span.roxxi-weather .conditions.wb-loading span.wb-desc { 305 /* white links on dark */ 306 } 307 308 309 /* Description color adjusts for light mode cards */ 310 311 .roxxi-weather.wb-text-light .wb-desc, 312 .roxxi-weather.wb-font-light .wb-desc { 313 color: var(--wb-light); 314 } 315 316 317 /* Card backgrounds for light text variants */ 318 319 .roxxi-weather.wb-type-badge.wb-text-light, 320 .roxxi-weather.wb-type-compact.wb-text-light { 321 background: var(--wb-dark); 322 } 323 324 325 /* ========================= 326 9) Loading States 327 ========================= */ 328 329 330 /* Hide icon/temp/unit/desc while loading */ 331 332 .roxxi-weather .conditions.wb-loading .wb-ico, 333 .roxxi-weather .conditions.wb-loading .wb-temp, 334 .roxxi-weather .conditions.wb-loading .wb-sep, 335 .roxxi-weather .conditions.wb-loading .wb-unit, 336 .roxxi-weather .conditions.wb-loading .wb-desc { 267 337 display: none; 268 338 } … … 271 341 /* Show the loading message only during loading */ 272 342 273 span.roxxi-weather span.conditions span.wb-loading-msg {343 .roxxi-weather .conditions .wb-loading-msg { 274 344 display: none; 275 345 } 276 346 277 span.roxxi-weather span.conditions.wb-loading span.wb-loading-msg {347 .roxxi-weather .conditions.wb-loading .wb-loading-msg { 278 348 display: inline; 279 349 } 280 350 281 351 282 /* ** Optional niceties ***/283 284 span.roxxi-weather span.conditions span.wb-loading-msg {352 /* Optional niceties */ 353 354 .roxxi-weather .conditions .wb-loading-msg { 285 355 font-size: 15px; 286 356 margin-left: 0; 287 357 font-style: italic; 288 font-weight: normal;358 font-weight: 400; 289 359 text-align: center; 290 360 opacity: .85; 291 361 } 292 362 293 span.roxxi-weather span.conditions.wb-loading span.wb-loading-msg::after {363 .roxxi-weather .conditions.wb-loading .wb-loading-msg::after { 294 364 content: ""; 295 365 display: inline-block; … … 319 389 320 390 321 /* ========================= 322 Compat Patch 391 /* Respect user motion preferences */ 392 393 @media (prefers-reduced-motion: reduce) { 394 .roxxi-weather .conditions.wb-loading .wb-loading-msg::after { 395 animation: none; 396 content: "..."; 397 } 398 .roxxi-weather a { 399 transition: none; 400 } 401 } 402 403 404 /* ========================= 405 10) Focus Visibility (ADA) 406 ========================= */ 407 408 .roxxi-weather a:focus-visible, 409 .roxxi-weather button:focus-visible, 410 .roxxi-weather [role="button"]:focus-visible { 411 outline: 3px solid currentColor; 412 /* ensures ≥3:1 contrast vs background */ 413 outline-offset: 2px; 414 border-radius: 3px; 415 /* subtle rounding to improve visibility on icons */ 416 } 417 418 419 /* When keyboard navigating within dark cards, allow explicit contrast override if needed */ 420 421 .roxxi-weather.wb-text-light a:focus-visible, 422 .roxxi-weather.wb-font-light a:focus-visible { 423 outline-color: currentColor; 424 /* still inherits white; strong on dark */ 425 } 426 427 428 /* High-contrast/forced-colors support (Windows HC Mode) */ 429 430 @media (forced-colors: active) { 431 .roxxi-weather { 432 forced-color-adjust: none; 433 border: 1px solid CanvasText; 434 background: Canvas; 435 color: CanvasText; 436 } 437 .roxxi-weather a { 438 color: LinkText; 439 } 440 .roxxi-weather a:focus-visible { 441 outline: 3px solid Highlight; 442 } 443 .roxxi-weather .wb-desc { 444 color: CanvasText; 445 } 446 } 447 448 449 /* ========================= 450 11) Responsive Adjustments 451 ========================= */ 452 453 @media (max-width: 480px) { 454 .roxxi-weather.wb-type-badge .badge { 455 display: flex; 456 flex-direction: column; 457 justify-content: center; 458 gap: 8px; 459 } 460 .roxxi-weather .wb-sep { 461 display: none; 462 } 463 } 464 465 @media (max-width: 320px) { 466 .roxxi-weather.wb-type-badge, 467 .roxxi-weather.wb-type-compact, 468 .roxxi-weather.wb-type-inline { 469 font-size: 14px; 470 } 471 .roxxi-weather.wb-type-inline .wb-ico { 472 display: none; 473 } 474 } 475 476 477 /* ========================= 478 12) Compat Patch 323 479 ========================= */ 324 480 … … 326 482 /*** Badge wrapper class used by renderer ***/ 327 483 328 span.roxxi-weather.wb-type-badge span.wb-badge {484 .roxxi-weather.wb-type-badge .wb-badge { 329 485 display: flex; 330 486 flex-direction: column; … … 335 491 336 492 337 /* ** Support both wb-text-* and wb-font-* ***/338 339 span.roxxi-weather.wb-text-light * {493 /* Keep legacy utility name working (alias of wb-text-*) */ 494 495 .roxxi-weather.wb-font-light * { 340 496 color: #ffffff; 341 497 } 342 498 343 .roxxi-weather.wb-text-light span.wb-desc { 344 color: var(--wb-light); 345 } 346 347 span.roxxi-weather.wb-type-badge.wb-text-light, 348 span.roxxi-weather.wb-type-compact.wb-text-light { 349 background: var(--wb-dark) 350 } 351 352 span.roxxi-weather.wb-text-dark { 353 color: var(--wb-dark); 354 } 355 356 span.roxxi-weather.wb-text-light a.wb-powered-link { 357 color: inherit; 358 } 359 360 .roxxi-weather.wb-text-dark a.wb-powered-link { 361 color: var(--wb-primary); 362 } 363 364 365 /* ========================= 366 Responsive Adjustments 367 ========================= */ 368 369 @media (max-width: 480px) { 370 span.roxxi-weather.wb-type-badge .badge { 371 display: flex; 372 flex-direction: column; 373 justify-content: center; 374 gap: 8px; 375 } 376 span.roxxi-weather .wb-sep { 377 display: none; 378 } 379 } 380 381 @media (max-width: 320px) { 382 span.roxxi-weather.wb-type-badge, 383 span.roxxi-weather.wb-type-compact, 384 span.roxxi-weather.wb-type-inline { 385 font-size: 14px; 386 } 387 span.roxxi-weather.wb-type-inline .wb-ico { 388 display: none; 389 } 390 } 499 500 /* 501 .roxxi-weather.roxxi-weather { color: var(--wb-dark); } 502 .roxxi-weather.roxxi-weather a { color: var(--wb-primary); } 503 */ -
weatherbot/trunk/readme.txt
r3366762 r3366801 5 5 Tested up to: 6.8 6 6 Requires PHP: 7.4 7 Stable tag: 1.0. 87 Stable tag: 1.0.9 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 181 181 == Changelog == 182 182 183 = 1.0.9 = 184 * Improved CSS with layering and theme style inherit for consistency. 185 * Added additional CSS for ADA enhancements 186 183 187 = 1.0.8 = 184 188 * Updated readme.txt content
Note: See TracChangeset
for help on using the changeset viewer.