Commit ·
d94e704
1
Parent(s): dd42a9e
feat: entity panel CSS — fog, grain, vignette, flash and glitch keyframes
Browse files- styles.css +110 -0
styles.css
CHANGED
|
@@ -362,3 +362,113 @@ footer { display: none !important; }
|
|
| 362 |
animation: none !important;
|
| 363 |
}
|
| 364 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 362 |
animation: none !important;
|
| 363 |
}
|
| 364 |
}
|
| 365 |
+
|
| 366 |
+
/* ── 15. Entity panel — the child in the fog ──── */
|
| 367 |
+
.entity-stage {
|
| 368 |
+
position: relative;
|
| 369 |
+
aspect-ratio: 5 / 6;
|
| 370 |
+
overflow: hidden;
|
| 371 |
+
border-radius: 6px;
|
| 372 |
+
background: #0b0a10;
|
| 373 |
+
border: 1px solid #1c1528;
|
| 374 |
+
}
|
| 375 |
+
|
| 376 |
+
.entity-figure {
|
| 377 |
+
position: absolute;
|
| 378 |
+
inset: 0;
|
| 379 |
+
}
|
| 380 |
+
|
| 381 |
+
.entity-sway {
|
| 382 |
+
animation: entity-sway 9s ease-in-out infinite alternate;
|
| 383 |
+
transform-origin: 50% 100%;
|
| 384 |
+
}
|
| 385 |
+
|
| 386 |
+
@keyframes entity-sway {
|
| 387 |
+
from { transform: rotate(-0.5deg) translateX(-2px); }
|
| 388 |
+
to { transform: rotate(0.5deg) translateX(2px); }
|
| 389 |
+
}
|
| 390 |
+
|
| 391 |
+
.entity-img {
|
| 392 |
+
position: absolute;
|
| 393 |
+
inset: 0;
|
| 394 |
+
width: 100%;
|
| 395 |
+
height: 100%;
|
| 396 |
+
object-fit: cover;
|
| 397 |
+
}
|
| 398 |
+
|
| 399 |
+
/* terror flash: one-shot animation, restarts on Gradio re-mount */
|
| 400 |
+
.entity-flash-wrap {
|
| 401 |
+
position: absolute;
|
| 402 |
+
inset: 0;
|
| 403 |
+
}
|
| 404 |
+
|
| 405 |
+
.entity-flash {
|
| 406 |
+
position: absolute;
|
| 407 |
+
inset: 0;
|
| 408 |
+
width: 100%;
|
| 409 |
+
height: 100%;
|
| 410 |
+
object-fit: cover;
|
| 411 |
+
opacity: 0;
|
| 412 |
+
animation: entity-flash-anim 1.2s ease-out forwards;
|
| 413 |
+
}
|
| 414 |
+
|
| 415 |
+
.entity-flash-strong {
|
| 416 |
+
animation: entity-flash-anim 2s ease-out forwards,
|
| 417 |
+
entity-glitch 2s steps(2) forwards;
|
| 418 |
+
}
|
| 419 |
+
|
| 420 |
+
@keyframes entity-flash-anim {
|
| 421 |
+
0% { opacity: 0; }
|
| 422 |
+
12% { opacity: 1; }
|
| 423 |
+
70% { opacity: 1; }
|
| 424 |
+
100% { opacity: 0; }
|
| 425 |
+
}
|
| 426 |
+
|
| 427 |
+
@keyframes entity-glitch {
|
| 428 |
+
0%, 100% { transform: translate(0, 0); }
|
| 429 |
+
20% { transform: translate(-3px, 1px); }
|
| 430 |
+
40% { transform: translate(2px, -2px); }
|
| 431 |
+
60% { transform: translate(-2px, 2px); }
|
| 432 |
+
80% { transform: translate(3px, -1px); }
|
| 433 |
+
}
|
| 434 |
+
|
| 435 |
+
/* atmosphere overlays, in front of the portrait */
|
| 436 |
+
.entity-fog {
|
| 437 |
+
position: absolute;
|
| 438 |
+
inset: -15%;
|
| 439 |
+
pointer-events: none;
|
| 440 |
+
background:
|
| 441 |
+
radial-gradient(ellipse 50% 25% at 30% 75%, rgba(150,140,165,0.14) 0%, transparent 70%),
|
| 442 |
+
radial-gradient(ellipse 55% 30% at 75% 35%, rgba(120,110,140,0.10) 0%, transparent 70%);
|
| 443 |
+
filter: blur(10px);
|
| 444 |
+
animation: entity-fog-drift 16s ease-in-out infinite alternate;
|
| 445 |
+
}
|
| 446 |
+
|
| 447 |
+
@keyframes entity-fog-drift {
|
| 448 |
+
from { transform: translateX(-3%) translateY(1%); }
|
| 449 |
+
to { transform: translateX(3%) translateY(-1.5%); }
|
| 450 |
+
}
|
| 451 |
+
|
| 452 |
+
.entity-grain {
|
| 453 |
+
position: absolute;
|
| 454 |
+
inset: 0;
|
| 455 |
+
pointer-events: none;
|
| 456 |
+
opacity: 0.13;
|
| 457 |
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");
|
| 458 |
+
}
|
| 459 |
+
|
| 460 |
+
.entity-vig {
|
| 461 |
+
position: absolute;
|
| 462 |
+
inset: 0;
|
| 463 |
+
pointer-events: none;
|
| 464 |
+
background: radial-gradient(ellipse at 50% 42%, transparent 42%, rgba(5,4,9,0.82) 100%);
|
| 465 |
+
}
|
| 466 |
+
|
| 467 |
+
/* finale: struck-through treasure + decomposing type already inline;
|
| 468 |
+
reduced motion */
|
| 469 |
+
@media (prefers-reduced-motion: reduce) {
|
| 470 |
+
.entity-sway, .entity-fog, .entity-flash, .entity-flash-strong {
|
| 471 |
+
animation: none !important;
|
| 472 |
+
}
|
| 473 |
+
.entity-flash, .entity-flash-strong { opacity: 0 !important; }
|
| 474 |
+
}
|