fonts
9 months ago
vendor
9 months ago
admin-notices.css
2 months ago
admin.build.css
2 months ago
admin.css
8 months ago
analytics.build.css
2 months ago
blocks.build.css
3 days ago
carousel.min.css
2 years ago
custom-player.build.css
2 months ago
el-icon.css
3 months ago
embedpress-elementor.css
2 years ago
embedpress.css
3 days ago
ep-gr-elementor-picker.css
3 days ago
ep-pdf-lightbox.css
3 months ago
feature-notices.css
8 months ago
feature-preview-modal.css
3 days ago
font.css
7 years ago
glider.min.css
2 years ago
google-reviews.build.css
3 days ago
google-reviews.css
3 days ago
index.html
7 years ago
instagram-shortcode-generator.css
1 month ago
lazy-load.css
6 months ago
meetup-events.css
8 months ago
modal.css
9 months ago
onboarding.build.css
2 months ago
pdf-gallery.css
3 months ago
plyr.css
9 months ago
preview.css
6 years ago
settings-icons.css
9 months ago
settings.css
3 days ago
feature-preview-modal.css
990 lines
| 1 | /** |
| 2 | * EmbedPress — "What's New" Feature Preview Modal |
| 3 | * |
| 4 | * Split-panel post-update announcement modal shown on EmbedPress admin pages |
| 5 | * after a version bump. Left = animated feature preview in faux browser chrome; |
| 6 | * right = copy + CTA. Adapts between a single feature (no nav) and a carousel |
| 7 | * (dots + Back/Next) automatically — the JS toggles `.epwn--multi`. |
| 8 | * |
| 9 | * Themed with the real EmbedPress design tokens (mirrored from the Analytics UI |
| 10 | * + EmbedDetailsModal): brand purple #5945b0, navy ink #25396F, slate muted |
| 11 | * #7C8DB5, soft panel #F5F7FD, coral accent #FE504F, 24px modal radius, DMSans. |
| 12 | * |
| 13 | * Source file: static/css/feature-preview-modal.css |
| 14 | * Build output: assets/css/feature-preview-modal.css (mirror until vite build). |
| 15 | */ |
| 16 | |
| 17 | .epwn { |
| 18 | /* ===== EmbedPress design tokens ===== */ |
| 19 | --epwn-brand: #5945b0; |
| 20 | --epwn-brand-hover: #4a3a9a; |
| 21 | --epwn-brand-light: #f3f1fc; |
| 22 | --epwn-brand-2: #7c3aed; |
| 23 | --epwn-ink: #25396f; |
| 24 | /* navy — headings */ |
| 25 | --epwn-muted: #7c8db5; |
| 26 | /* slate — secondary text */ |
| 27 | --epwn-soft: #f5f7fd; |
| 28 | /* soft lavender panel bg */ |
| 29 | --epwn-accent: #fe504f; |
| 30 | /* coral accent */ |
| 31 | --epwn-line: #eef1f8; |
| 32 | --epwn-dark: #0f1014; |
| 33 | --epwn-font: "DMSans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; |
| 34 | |
| 35 | position: fixed; |
| 36 | inset: 0; |
| 37 | z-index: 100000; |
| 38 | /* above wp-admin chrome */ |
| 39 | display: flex; |
| 40 | align-items: center; |
| 41 | justify-content: center; |
| 42 | padding: 24px; |
| 43 | background: rgba(15, 16, 20, .6); |
| 44 | font-family: var(--epwn-font); |
| 45 | color: var(--epwn-ink); |
| 46 | opacity: 0; |
| 47 | visibility: hidden; |
| 48 | transition: opacity .22s ease, visibility .22s ease; |
| 49 | } |
| 50 | |
| 51 | .epwn.is-open { |
| 52 | opacity: 1; |
| 53 | visibility: visible; |
| 54 | } |
| 55 | |
| 56 | /* ===== modal shell ===== */ |
| 57 | .epwn__modal { |
| 58 | width: 820px; |
| 59 | max-width: 100%; |
| 60 | max-height: calc(100vh - 48px); |
| 61 | background: #fff; |
| 62 | border-radius: 24px; |
| 63 | overflow: hidden; |
| 64 | box-shadow: 0 24px 60px rgba(37, 57, 111, .22); |
| 65 | position: relative; |
| 66 | display: flex; |
| 67 | min-height: 392px; |
| 68 | transform: translateY(10px) scale(.985); |
| 69 | transition: transform .22s ease; |
| 70 | } |
| 71 | |
| 72 | .epwn.is-open .epwn__modal { |
| 73 | transform: translateY(0) scale(1); |
| 74 | } |
| 75 | |
| 76 | .epwn__close { |
| 77 | position: absolute; |
| 78 | top: 16px; |
| 79 | right: 16px; |
| 80 | width: 32px; |
| 81 | height: 32px; |
| 82 | border: none; |
| 83 | border-radius: 50%; |
| 84 | background: rgba(255, 255, 255, .92); |
| 85 | box-shadow: 0 2px 8px rgba(37, 57, 111, .14); |
| 86 | display: flex; |
| 87 | align-items: center; |
| 88 | justify-content: center; |
| 89 | color: #64748b; |
| 90 | font-size: 14px; |
| 91 | line-height: 1; |
| 92 | cursor: pointer; |
| 93 | z-index: 6; |
| 94 | padding: 0; |
| 95 | transition: var(--epwn-trans, all .15s ease); |
| 96 | } |
| 97 | |
| 98 | .epwn__close:hover { |
| 99 | background: var(--epwn-accent); |
| 100 | color: #fff; |
| 101 | } |
| 102 | |
| 103 | .epwn__close:focus, .epwn__close:focus-visible { |
| 104 | outline: none; |
| 105 | } |
| 106 | |
| 107 | |
| 108 | /* ===== left: preview panel (light) ===== */ |
| 109 | .epwn__left { |
| 110 | width: 54%; |
| 111 | background: var(--epwn-soft, #f5f7fd); |
| 112 | display: flex; |
| 113 | align-items: center; |
| 114 | justify-content: center; |
| 115 | padding: 26px; |
| 116 | position: relative; |
| 117 | } |
| 118 | |
| 119 | .epwn__demo { |
| 120 | width: 100%; |
| 121 | background: #fff; |
| 122 | border: 1px solid #e7ebf3; |
| 123 | border-radius: 14px; |
| 124 | overflow: hidden; |
| 125 | position: relative; |
| 126 | z-index: 1; |
| 127 | box-shadow: 0 12px 30px rgba(37, 57, 111, .12); |
| 128 | height: 100%; |
| 129 | } |
| 130 | |
| 131 | .epwn__bar { |
| 132 | height: 30px; |
| 133 | background: #f3f5fa; |
| 134 | border-bottom: 1px solid #e7ebf3; |
| 135 | display: flex; |
| 136 | align-items: center; |
| 137 | gap: 6px; |
| 138 | padding: 0 13px; |
| 139 | } |
| 140 | |
| 141 | .epwn__bar i { |
| 142 | width: 9px; |
| 143 | height: 9px; |
| 144 | border-radius: 50%; |
| 145 | background: #d3d8e4; |
| 146 | } |
| 147 | |
| 148 | .epwn__bar i:nth-child(1) { |
| 149 | background: #fe504f; |
| 150 | } |
| 151 | |
| 152 | .epwn__bar i:nth-child(2) { |
| 153 | background: #ffa53c; |
| 154 | } |
| 155 | |
| 156 | .epwn__bar i:nth-child(3) { |
| 157 | background: #00cc76; |
| 158 | } |
| 159 | |
| 160 | .epwn__badge { |
| 161 | position: absolute; |
| 162 | top: 38px; |
| 163 | right: 38px; |
| 164 | background: var(--epwn-accent); |
| 165 | color: #fff; |
| 166 | font-size: 9px; |
| 167 | font-weight: 700; |
| 168 | letter-spacing: .1em; |
| 169 | padding: 4px 9px; |
| 170 | border-radius: 6px; |
| 171 | z-index: 3; |
| 172 | box-shadow: 0 2px 8px rgba(254, 80, 79, .4); |
| 173 | } |
| 174 | |
| 175 | .epwn__stage { |
| 176 | padding: 16px; |
| 177 | display: flex; |
| 178 | align-items: center; |
| 179 | justify-content: center; |
| 180 | min-height: 180px; |
| 181 | background: #fff; |
| 182 | height: 100%; |
| 183 | } |
| 184 | |
| 185 | /* File media (image/gif/video, e.g. the PDF-flipbook slide) sizes to its |
| 186 | content instead of stretching the panel to full column height — the parent |
| 187 | .epwn__left centers the compact panel, removing the gap above a landscape |
| 188 | clip. html demos keep height:100% so they fill as designed. */ |
| 189 | .epwn__demo--flat, |
| 190 | .epwn__demo--flat .epwn__stage { |
| 191 | height: auto; |
| 192 | } |
| 193 | |
| 194 | .epwn__stage img, |
| 195 | .epwn__stage video { |
| 196 | max-width: 100%; |
| 197 | max-height: 240px; |
| 198 | border-radius: 10px; |
| 199 | display: block; |
| 200 | } |
| 201 | |
| 202 | /* While a large image/GIF/video is still loading, show a soft shimmer on the |
| 203 | stage instead of a blank white box; the media fades in once ready. */ |
| 204 | .epwn__stage img, |
| 205 | .epwn__stage video { |
| 206 | opacity: 1; |
| 207 | transition: opacity .25s ease; |
| 208 | } |
| 209 | |
| 210 | .epwn__stage--loading { |
| 211 | position: relative; |
| 212 | background: |
| 213 | linear-gradient(100deg, #f3f4fa 30%, #e9ebf5 45%, #f3f4fa 60%) #f3f4fa; |
| 214 | background-size: 200% 100%; |
| 215 | border-radius: 10px; |
| 216 | animation: epwn-shimmer 1.2s ease-in-out infinite; |
| 217 | } |
| 218 | |
| 219 | .epwn__stage--loading img, |
| 220 | .epwn__stage--loading video { |
| 221 | opacity: 0; |
| 222 | } |
| 223 | |
| 224 | @keyframes epwn-shimmer { |
| 225 | 0% { |
| 226 | background-position: 150% 0; |
| 227 | } |
| 228 | |
| 229 | 100% { |
| 230 | background-position: -50% 0; |
| 231 | } |
| 232 | } |
| 233 | |
| 234 | @media (prefers-reduced-motion: reduce) { |
| 235 | .epwn__stage--loading { |
| 236 | animation: none; |
| 237 | } |
| 238 | } |
| 239 | |
| 240 | /* ===== right: copy panel ===== */ |
| 241 | .epwn__right { |
| 242 | width: 46%; |
| 243 | padding: 30px 32px 26px; |
| 244 | display: flex; |
| 245 | flex-direction: column; |
| 246 | overflow-y: auto; |
| 247 | background: #fff; |
| 248 | } |
| 249 | |
| 250 | /* brand header: EmbedPress logo */ |
| 251 | .epwn__header { |
| 252 | display: flex; |
| 253 | align-items: center; |
| 254 | margin-bottom: 18px; |
| 255 | } |
| 256 | |
| 257 | .epwn__logo { |
| 258 | height: 26px; |
| 259 | width: auto; |
| 260 | display: block; |
| 261 | } |
| 262 | |
| 263 | .epwn__eyebrow { |
| 264 | font-size: 12px; |
| 265 | font-weight: 700; |
| 266 | letter-spacing: .06em; |
| 267 | text-transform: uppercase; |
| 268 | color: var(--epwn-brand); |
| 269 | min-height: 14px; |
| 270 | } |
| 271 | |
| 272 | .epwn__title { |
| 273 | font-size: 26px; |
| 274 | font-weight: 700; |
| 275 | letter-spacing: -.02em; |
| 276 | line-height: 1.16; |
| 277 | margin: 10px 0 11px; |
| 278 | color: var(--epwn-ink); |
| 279 | } |
| 280 | |
| 281 | .epwn__desc { |
| 282 | font-size: 14px; |
| 283 | color: var(--epwn-muted); |
| 284 | line-height: 1.6; |
| 285 | margin: 0; |
| 286 | } |
| 287 | |
| 288 | .epwn__grow { |
| 289 | flex: 1; |
| 290 | min-height: 14px; |
| 291 | } |
| 292 | |
| 293 | /* fade animation applied to the right copy on step change */ |
| 294 | .epwn__fade { |
| 295 | animation: epwn-fade .3s ease; |
| 296 | } |
| 297 | |
| 298 | @keyframes epwn-fade { |
| 299 | from { |
| 300 | opacity: 0; |
| 301 | transform: translateY(7px); |
| 302 | } |
| 303 | |
| 304 | to { |
| 305 | opacity: 1; |
| 306 | transform: translateY(0); |
| 307 | } |
| 308 | } |
| 309 | |
| 310 | .epwn__cta { |
| 311 | font-family: var(--epwn-font); |
| 312 | font-size: 14px; |
| 313 | font-weight: 600; |
| 314 | border-radius: 10px; |
| 315 | padding: 13px 18px; |
| 316 | cursor: pointer; |
| 317 | border: none; |
| 318 | background: var(--epwn-brand); |
| 319 | color: #fff; |
| 320 | margin-top: 22px; |
| 321 | text-align: center; |
| 322 | text-decoration: none; |
| 323 | display: block; |
| 324 | transition: background .15s ease; |
| 325 | } |
| 326 | |
| 327 | .epwn__cta:hover { |
| 328 | background: var(--epwn-brand-hover); |
| 329 | color: #fff; |
| 330 | } |
| 331 | |
| 332 | .epwn__cta:focus-visible { |
| 333 | outline: 2px solid var(--epwn-brand); |
| 334 | outline-offset: 2px; |
| 335 | } |
| 336 | |
| 337 | /* ===== nav (multi only) ===== */ |
| 338 | .epwn__nav { |
| 339 | display: none; |
| 340 | align-items: center; |
| 341 | margin-top: 16px; |
| 342 | height: 24px; |
| 343 | } |
| 344 | |
| 345 | .epwn--multi .epwn__nav { |
| 346 | display: flex; |
| 347 | } |
| 348 | |
| 349 | .epwn__back, |
| 350 | .epwn__next { |
| 351 | font-family: var(--epwn-font); |
| 352 | font-size: 13px; |
| 353 | background: none; |
| 354 | border: none; |
| 355 | cursor: pointer; |
| 356 | padding: 4px 2px; |
| 357 | } |
| 358 | |
| 359 | .epwn__back { |
| 360 | font-weight: 600; |
| 361 | color: var(--epwn-muted); |
| 362 | visibility: hidden; |
| 363 | } |
| 364 | |
| 365 | .epwn__next { |
| 366 | font-weight: 700; |
| 367 | color: var(--epwn-brand); |
| 368 | } |
| 369 | |
| 370 | .epwn__back:focus-visible, |
| 371 | .epwn__next:focus-visible { |
| 372 | outline: 2px solid var(--epwn-brand); |
| 373 | outline-offset: 2px; |
| 374 | border-radius: 4px; |
| 375 | } |
| 376 | |
| 377 | .epwn__dots { |
| 378 | display: flex; |
| 379 | gap: 6px; |
| 380 | margin: 0 auto; |
| 381 | align-items: center; |
| 382 | } |
| 383 | |
| 384 | .epwn__dot { |
| 385 | width: 7px; |
| 386 | height: 7px; |
| 387 | border-radius: 50%; |
| 388 | background: #d7daea; |
| 389 | transition: .2s; |
| 390 | padding: 0; |
| 391 | border: none; |
| 392 | cursor: pointer; |
| 393 | } |
| 394 | |
| 395 | .epwn__dot.is-on { |
| 396 | background: var(--epwn-accent); |
| 397 | width: 22px; |
| 398 | border-radius: 5px; |
| 399 | } |
| 400 | |
| 401 | .epwn__chglink { |
| 402 | margin-top: 18px; |
| 403 | text-align: left; |
| 404 | } |
| 405 | |
| 406 | .epwn__chglink a { |
| 407 | font-size: 12.5px; |
| 408 | color: var(--epwn-muted); |
| 409 | text-decoration: none; |
| 410 | border-bottom: 1px dashed #c7cee2; |
| 411 | transition: color .15s ease; |
| 412 | } |
| 413 | |
| 414 | .epwn__chglink a:hover { |
| 415 | color: var(--epwn-brand); |
| 416 | border-bottom-color: var(--epwn-brand); |
| 417 | } |
| 418 | |
| 419 | /* ===== Google Reviews animated demo (light) ===== |
| 420 | A single light card that cross-fades between TWO phases on a 7s loop: |
| 421 | Phase A — our place-search picker (type a name → suggestion → click); |
| 422 | Phase B — the reviews our block renders (summary + cards). |
| 423 | Only one phase is visible at a time (both absolutely stacked). Inline |
| 424 | markup carries .ep-grdemo-* classes — the modal kses-strips <style>, so all |
| 425 | motion lives here. */ |
| 426 | .ep-grdemo { |
| 427 | /* Mirror the real Google Reviews block's tokens (google-reviews.css). */ |
| 428 | /* Review cards mirror the real Google Reviews block; the search field uses |
| 429 | the EmbedPress admin field style (brand purple). */ |
| 430 | --grd-heading: #202124; |
| 431 | --grd-text: #202124; |
| 432 | --grd-muted: #5f6368; |
| 433 | --grd-border: #eef1f6; |
| 434 | --grd-star: #fbbc05; |
| 435 | --grd-blue: #1a73e8; |
| 436 | /* EmbedPress admin field tokens (from google-reviews.scss). */ |
| 437 | --ep-field-border: #d7d7ea; |
| 438 | --ep-field-text: #2c3e66; |
| 439 | --ep-field-muted: #7f8bb2; |
| 440 | --ep-brand: #5b4e96; |
| 441 | --grd-font: "Google Sans", Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif; |
| 442 | |
| 443 | width: 100%; |
| 444 | height: 100%; |
| 445 | min-height: 248px; |
| 446 | background: #fff; |
| 447 | border-radius: 12px; |
| 448 | font-family: var(--grd-font); |
| 449 | color: var(--grd-text); |
| 450 | position: relative; |
| 451 | overflow: hidden; |
| 452 | } |
| 453 | |
| 454 | .ep-grdemo-stars { |
| 455 | color: var(--grd-star); |
| 456 | font-size: 13px; |
| 457 | letter-spacing: 1px; |
| 458 | white-space: nowrap; |
| 459 | } |
| 460 | |
| 461 | .ep-grdemo-stars span { |
| 462 | display: inline; |
| 463 | } |
| 464 | |
| 465 | /* Both phases share the same box; cross-faded via opacity. Children sit at |
| 466 | the top at their natural height (the search box must NOT stretch to fill). */ |
| 467 | .ep-grdemo, |
| 468 | .ep-grdemo * { |
| 469 | box-sizing: border-box; |
| 470 | } |
| 471 | |
| 472 | .ep-grdemo-phase { |
| 473 | position: absolute; |
| 474 | inset: 0; |
| 475 | display: flex; |
| 476 | flex-direction: column; |
| 477 | justify-content: flex-start; |
| 478 | padding: 16px; |
| 479 | opacity: 0; |
| 480 | } |
| 481 | |
| 482 | .ep-grdemo-phase--search { |
| 483 | animation: ep-grdemo-phaseA 7s infinite; |
| 484 | } |
| 485 | |
| 486 | .ep-grdemo-phase--reviews { |
| 487 | animation: ep-grdemo-phaseB 7s infinite; |
| 488 | } |
| 489 | |
| 490 | /* ── Phase A: search picker — matches the EmbedPress admin search field ── */ |
| 491 | .ep-grdemo-label { |
| 492 | font-size: 12px; |
| 493 | font-weight: 600; |
| 494 | color: var(--ep-field-text); |
| 495 | margin-bottom: 6px; |
| 496 | } |
| 497 | |
| 498 | .ep-grdemo-search { |
| 499 | flex: 0 0 auto; |
| 500 | display: flex; |
| 501 | align-items: center; |
| 502 | gap: 8px; |
| 503 | height: 40px; |
| 504 | border: 1px solid var(--ep-field-border); |
| 505 | border-radius: 8px; |
| 506 | padding: 0 12px; |
| 507 | font-size: 14px; |
| 508 | color: var(--ep-field-text); |
| 509 | box-shadow: 0 0 0 2px rgba(91, 78, 150, .1); |
| 510 | /* focus-ring while "typing", removed once the result is picked */ |
| 511 | animation: ep-grdemo-focus 7s infinite; |
| 512 | } |
| 513 | |
| 514 | .ep-grdemo-search-ico { |
| 515 | color: var(--ep-field-muted); |
| 516 | flex-shrink: 0; |
| 517 | display: block; |
| 518 | } |
| 519 | |
| 520 | .ep-grdemo-label { |
| 521 | flex: 0 0 auto; |
| 522 | } |
| 523 | |
| 524 | .ep-grdemo-typed { |
| 525 | overflow: hidden; |
| 526 | white-space: nowrap; |
| 527 | width: 0; |
| 528 | flex-shrink: 0; |
| 529 | animation: ep-grdemo-type 7s infinite steps(18, end); |
| 530 | } |
| 531 | |
| 532 | .ep-grdemo-caret { |
| 533 | width: 1.5px; |
| 534 | height: 16px; |
| 535 | flex-shrink: 0; |
| 536 | background: var(--ep-brand); |
| 537 | animation: ep-grdemo-blink 1s infinite step-end, ep-grdemo-caret-hide 7s infinite; |
| 538 | } |
| 539 | |
| 540 | /* suggestion dropdown */ |
| 541 | .ep-grdemo-suggest { |
| 542 | flex: 0 0 auto; |
| 543 | margin-top: 8px; |
| 544 | border: 1px solid var(--grd-border); |
| 545 | border-radius: 10px; |
| 546 | box-shadow: 0 8px 20px rgba(60, 64, 67, .12); |
| 547 | overflow: hidden; |
| 548 | opacity: 0; |
| 549 | transform: translateY(-6px); |
| 550 | animation: ep-grdemo-suggest 7s infinite; |
| 551 | } |
| 552 | |
| 553 | .ep-grdemo-result { |
| 554 | display: flex; |
| 555 | align-items: center; |
| 556 | gap: 10px; |
| 557 | padding: 11px 12px; |
| 558 | background: #fff; |
| 559 | animation: ep-grdemo-hl 7s infinite; |
| 560 | } |
| 561 | |
| 562 | .ep-grdemo-pin { |
| 563 | color: var(--ep-brand); |
| 564 | flex-shrink: 0; |
| 565 | display: block; |
| 566 | } |
| 567 | |
| 568 | .ep-grdemo-result-text { |
| 569 | display: flex; |
| 570 | flex-direction: column; |
| 571 | line-height: 1.35; |
| 572 | min-width: 0; |
| 573 | } |
| 574 | |
| 575 | .ep-grdemo-result-text strong { |
| 576 | font-size: 13px; |
| 577 | font-weight: 600; |
| 578 | color: var(--ep-field-text); |
| 579 | } |
| 580 | |
| 581 | .ep-grdemo-result-text small { |
| 582 | font-size: 11px; |
| 583 | color: var(--ep-field-muted); |
| 584 | } |
| 585 | |
| 586 | /* a little click-cursor that taps the result */ |
| 587 | .ep-grdemo-cursor { |
| 588 | margin-left: auto; |
| 589 | width: 14px; |
| 590 | height: 14px; |
| 591 | border: 2px solid var(--ep-field-muted); |
| 592 | border-radius: 50%; |
| 593 | flex-shrink: 0; |
| 594 | opacity: 0; |
| 595 | animation: ep-grdemo-tap 7s infinite; |
| 596 | } |
| 597 | |
| 598 | /* ── Phase B: reviews (matches the real block's summary + cards) ── */ |
| 599 | .ep-grdemo-summary { |
| 600 | display: flex; |
| 601 | align-items: center; |
| 602 | gap: 8px; |
| 603 | margin-bottom: 10px; |
| 604 | } |
| 605 | |
| 606 | .ep-grdemo-summary b { |
| 607 | font-size: 22px; |
| 608 | font-weight: 500; |
| 609 | color: var(--grd-heading); |
| 610 | line-height: 1; |
| 611 | } |
| 612 | |
| 613 | .ep-grdemo-count { |
| 614 | margin-left: auto; |
| 615 | font-size: 12px; |
| 616 | color: var(--grd-muted); |
| 617 | } |
| 618 | |
| 619 | .ep-grdemo-review { |
| 620 | border: 1px solid var(--grd-border); |
| 621 | border-radius: 10px; |
| 622 | padding: 9px 11px; |
| 623 | margin-bottom: 7px; |
| 624 | opacity: 0; |
| 625 | transform: translateY(8px); |
| 626 | animation: ep-grdemo-card 7s infinite; |
| 627 | } |
| 628 | |
| 629 | .ep-grdemo-review:last-child { |
| 630 | margin-bottom: 0; |
| 631 | } |
| 632 | |
| 633 | /* Stagger via adjacent-sibling chains (kses strips inline animation-delay). |
| 634 | 1st review = base; 2nd = preceded by one; 3rd = preceded by two. */ |
| 635 | .ep-grdemo-review+.ep-grdemo-review { |
| 636 | animation: ep-grdemo-card2 7s infinite; |
| 637 | } |
| 638 | |
| 639 | .ep-grdemo-review+.ep-grdemo-review+.ep-grdemo-review { |
| 640 | animation: ep-grdemo-card3 7s infinite; |
| 641 | } |
| 642 | |
| 643 | .ep-grdemo-review-head { |
| 644 | display: flex; |
| 645 | align-items: center; |
| 646 | gap: 8px; |
| 647 | margin-bottom: 4px; |
| 648 | } |
| 649 | |
| 650 | .ep-grdemo-avatar { |
| 651 | width: 22px; |
| 652 | height: 22px; |
| 653 | border-radius: 50%; |
| 654 | background: var(--ep-brand); |
| 655 | color: #fff; |
| 656 | display: inline-flex; |
| 657 | align-items: center; |
| 658 | justify-content: center; |
| 659 | font-size: 11px; |
| 660 | font-weight: 500; |
| 661 | flex-shrink: 0; |
| 662 | } |
| 663 | |
| 664 | .ep-grdemo-name { |
| 665 | font-size: 12.5px; |
| 666 | font-weight: 600; |
| 667 | color: var(--grd-heading); |
| 668 | } |
| 669 | |
| 670 | .ep-grdemo-review-head .ep-grdemo-stars { |
| 671 | margin-left: auto; |
| 672 | font-size: 10px; |
| 673 | } |
| 674 | |
| 675 | .ep-grdemo-text { |
| 676 | font-size: 12.5px; |
| 677 | line-height: 1.45; |
| 678 | color: var(--grd-text); |
| 679 | } |
| 680 | |
| 681 | /* ── Timeline (0–100% of 7s) ── |
| 682 | Phase A visible 0–52%: type 5–35%, dropdown 38%, tap 46%. |
| 683 | cross-fade 52–58%. |
| 684 | Phase B visible 58–100%: cards stagger in 62–74%, hold, fade at loop. */ |
| 685 | @keyframes ep-grdemo-phaseA { |
| 686 | 0%, 50% { |
| 687 | opacity: 1; |
| 688 | } |
| 689 | |
| 690 | 57%, 100% { |
| 691 | opacity: 0; |
| 692 | } |
| 693 | } |
| 694 | |
| 695 | @keyframes ep-grdemo-phaseB { |
| 696 | 0%, 52% { |
| 697 | opacity: 0; |
| 698 | } |
| 699 | |
| 700 | 60%, 96% { |
| 701 | opacity: 1; |
| 702 | } |
| 703 | |
| 704 | 100% { |
| 705 | opacity: 0; |
| 706 | } |
| 707 | } |
| 708 | |
| 709 | @keyframes ep-grdemo-type { |
| 710 | 0%, 5% { |
| 711 | width: 0; |
| 712 | } |
| 713 | |
| 714 | 34%, 100% { |
| 715 | /* Wide enough for the full "Sydney Opera House" string at 14px. */ |
| 716 | width: 168px; |
| 717 | } |
| 718 | } |
| 719 | |
| 720 | @keyframes ep-grdemo-blink { |
| 721 | 0%, 50% { |
| 722 | opacity: 1; |
| 723 | } |
| 724 | |
| 725 | 51%, 100% { |
| 726 | opacity: 0; |
| 727 | } |
| 728 | } |
| 729 | |
| 730 | @keyframes ep-grdemo-caret-hide { |
| 731 | 0%, 35% { |
| 732 | opacity: 1; |
| 733 | } |
| 734 | |
| 735 | 36%, 100% { |
| 736 | opacity: 0; |
| 737 | } |
| 738 | } |
| 739 | |
| 740 | @keyframes ep-grdemo-suggest { |
| 741 | 0%, 35% { |
| 742 | opacity: 0; |
| 743 | transform: translateY(-6px); |
| 744 | } |
| 745 | |
| 746 | 40%, 50% { |
| 747 | opacity: 1; |
| 748 | transform: translateY(0); |
| 749 | } |
| 750 | |
| 751 | 57%, 100% { |
| 752 | opacity: 0; |
| 753 | transform: translateY(-6px); |
| 754 | } |
| 755 | } |
| 756 | |
| 757 | @keyframes ep-grdemo-hl { |
| 758 | 0%, 44% { |
| 759 | background: #fff; |
| 760 | } |
| 761 | |
| 762 | 47%, 50% { |
| 763 | background: rgba(91, 78, 150, .08); |
| 764 | } |
| 765 | |
| 766 | 57%, 100% { |
| 767 | background: #fff; |
| 768 | } |
| 769 | } |
| 770 | |
| 771 | /* Search field focus ring while typing; drops once the result is picked. */ |
| 772 | @keyframes ep-grdemo-focus { |
| 773 | 0%, 50% { |
| 774 | box-shadow: 0 0 0 2px rgba(91, 78, 150, .1); |
| 775 | border-color: var(--ep-brand); |
| 776 | } |
| 777 | |
| 778 | 57%, 100% { |
| 779 | box-shadow: none; |
| 780 | border-color: var(--ep-field-border); |
| 781 | } |
| 782 | } |
| 783 | |
| 784 | @keyframes ep-grdemo-tap { |
| 785 | 0%, 42% { |
| 786 | opacity: 0; |
| 787 | transform: scale(1); |
| 788 | } |
| 789 | |
| 790 | 44% { |
| 791 | opacity: 1; |
| 792 | transform: scale(1); |
| 793 | } |
| 794 | |
| 795 | 47% { |
| 796 | opacity: 1; |
| 797 | transform: scale(.7); |
| 798 | } |
| 799 | |
| 800 | 50%, 100% { |
| 801 | opacity: 0; |
| 802 | transform: scale(1); |
| 803 | } |
| 804 | } |
| 805 | |
| 806 | @keyframes ep-grdemo-card { |
| 807 | 0%, 60% { |
| 808 | opacity: 0; |
| 809 | transform: translateY(8px); |
| 810 | } |
| 811 | |
| 812 | 68%, 96% { |
| 813 | opacity: 1; |
| 814 | transform: translateY(0); |
| 815 | } |
| 816 | |
| 817 | 100% { |
| 818 | opacity: 0; |
| 819 | transform: translateY(8px); |
| 820 | } |
| 821 | } |
| 822 | |
| 823 | @keyframes ep-grdemo-card2 { |
| 824 | 0%, 64% { |
| 825 | opacity: 0; |
| 826 | transform: translateY(8px); |
| 827 | } |
| 828 | |
| 829 | 72%, 96% { |
| 830 | opacity: 1; |
| 831 | transform: translateY(0); |
| 832 | } |
| 833 | |
| 834 | 100% { |
| 835 | opacity: 0; |
| 836 | transform: translateY(8px); |
| 837 | } |
| 838 | } |
| 839 | |
| 840 | @keyframes ep-grdemo-card3 { |
| 841 | 0%, 68% { |
| 842 | opacity: 0; |
| 843 | transform: translateY(8px); |
| 844 | } |
| 845 | |
| 846 | 76%, 96% { |
| 847 | opacity: 1; |
| 848 | transform: translateY(0); |
| 849 | } |
| 850 | |
| 851 | 100% { |
| 852 | opacity: 0; |
| 853 | transform: translateY(8px); |
| 854 | } |
| 855 | } |
| 856 | |
| 857 | @media (prefers-reduced-motion: reduce) { |
| 858 | |
| 859 | .ep-grdemo-phase, .ep-grdemo-typed, .ep-grdemo-caret, .ep-grdemo-suggest, |
| 860 | .ep-grdemo-result, .ep-grdemo-cursor, .ep-grdemo-review { |
| 861 | animation: none; |
| 862 | } |
| 863 | |
| 864 | /* Reduced motion → just show the reviews phase. */ |
| 865 | .ep-grdemo-phase--search { |
| 866 | display: none; |
| 867 | } |
| 868 | |
| 869 | .ep-grdemo-phase--reviews { |
| 870 | opacity: 1; |
| 871 | } |
| 872 | |
| 873 | .ep-grdemo-review { |
| 874 | opacity: 1; |
| 875 | transform: none; |
| 876 | } |
| 877 | } |
| 878 | |
| 879 | /* ===== responsive ===== */ |
| 880 | @media (max-width: 760px) { |
| 881 | .epwn { |
| 882 | padding: 14px; |
| 883 | } |
| 884 | |
| 885 | .epwn__modal { |
| 886 | flex-direction: column; |
| 887 | min-height: 0; |
| 888 | max-height: calc(100vh - 28px); |
| 889 | overflow-y: auto; |
| 890 | } |
| 891 | |
| 892 | .epwn__left, |
| 893 | .epwn__right { |
| 894 | width: 100%; |
| 895 | } |
| 896 | |
| 897 | .epwn__left { |
| 898 | padding: 18px; |
| 899 | } |
| 900 | |
| 901 | .epwn__title { |
| 902 | font-size: 21px; |
| 903 | } |
| 904 | |
| 905 | /* keep the PREVIEW badge clear of the close button when stacked */ |
| 906 | .epwn__badge { |
| 907 | top: 28px; |
| 908 | right: 14px; |
| 909 | } |
| 910 | |
| 911 | /* tighten nav so Back/Next don't clip at narrow widths */ |
| 912 | .epwn__nav { |
| 913 | margin-top: 14px; |
| 914 | } |
| 915 | |
| 916 | .epwn__back, |
| 917 | .epwn__next { |
| 918 | font-size: 12px; |
| 919 | } |
| 920 | } |
| 921 | |
| 922 | @media (prefers-reduced-motion: reduce) { |
| 923 | |
| 924 | .epwn, |
| 925 | .epwn__modal, |
| 926 | .epwn__fade, |
| 927 | .epwn__cta { |
| 928 | transition: none; |
| 929 | animation: none; |
| 930 | } |
| 931 | } |
| 932 | /* ========================================================================= |
| 933 | * Menu "New" indicator — the blinking bubble on the EmbedPress admin menu. |
| 934 | * |
| 935 | * NOTE: this stylesheet only loads on EmbedPress pages, but the bubble shows on |
| 936 | * EVERY admin page. FeaturePreviewModal::print_menu_indicator_style() prints an |
| 937 | * identical rule inline in <head> so the blink works globally; this copy keeps |
| 938 | * the source of truth here and covers EmbedPress pages where the modal CSS is |
| 939 | * already enqueued. Keep the two in sync. |
| 940 | * ========================================================================= */ |
| 941 | #adminmenu li.menu-top:has(.ep-whatsnew-badge) .wp-menu-name { |
| 942 | white-space: nowrap; |
| 943 | } |
| 944 | /* Inline red "NEW" pill with a sweeping white-gradient shine. */ |
| 945 | #adminmenu .ep-whatsnew-badge { |
| 946 | position: relative; |
| 947 | overflow: hidden; |
| 948 | display: inline-flex; |
| 949 | align-items: center; |
| 950 | justify-content: center; |
| 951 | vertical-align: middle; |
| 952 | width: 28px; |
| 953 | height: 18px; |
| 954 | margin: -2px 0 0 0; |
| 955 | padding: 0; |
| 956 | border-radius: 9px; |
| 957 | background: #d63637; |
| 958 | color: #fff; |
| 959 | font-size: 8px; |
| 960 | font-weight: 700; |
| 961 | line-height: 1.6; |
| 962 | letter-spacing: .04em; |
| 963 | text-transform: uppercase; |
| 964 | text-align: center; |
| 965 | box-shadow: none !important; |
| 966 | animation: ep-whatsnew-glow 1.8s ease-in-out infinite; |
| 967 | } |
| 968 | #adminmenu .ep-whatsnew-badge::after { |
| 969 | content: ""; |
| 970 | position: absolute; |
| 971 | top: 0; |
| 972 | left: 0; |
| 973 | width: 45%; |
| 974 | height: 100%; |
| 975 | background: linear-gradient(100deg, transparent 0%, rgba(255, 255, 255, .85) 50%, transparent 100%); |
| 976 | animation: ep-whatsnew-shine 1.8s ease-in-out infinite; |
| 977 | } |
| 978 | @keyframes ep-whatsnew-shine { |
| 979 | 0% { transform: translateX(-160%) skewX(-18deg); } |
| 980 | 55%, 100% { transform: translateX(320%) skewX(-18deg); } |
| 981 | } |
| 982 | @keyframes ep-whatsnew-glow { |
| 983 | 0%, 100% { box-shadow: 0 1px 4px rgba(0, 185, 105, .5); } |
| 984 | 50% { box-shadow: 0 1px 9px rgba(0, 185, 105, .85); } |
| 985 | } |
| 986 | @media (prefers-reduced-motion: reduce) { |
| 987 | #adminmenu .ep-whatsnew-badge { animation: none; } |
| 988 | #adminmenu .ep-whatsnew-badge::after { display: none; } |
| 989 | } |
| 990 |