dok/public/css/events.css
2026-04-07 07:16:46 +01:00

414 lines
8.0 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ================================
Events Grid
================================ */
.events-grid {
display: flex;
gap: 10px;
justify-content: center;
flex-wrap: nowrap;
padding: 10px 4px;
}
.event-card {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
cursor: pointer;
flex: 1;
min-width: 0;
}
.event-card-img-wrap {
width: 100%;
aspect-ratio: 1 / 1;
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 8px;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
padding: 6px;
box-sizing: border-box;
position: relative; /* ← fix: damit event-done-overlay korrekt positioniert wird */
}
.event-card-img-wrap img {
width: 100%;
height: 100%;
object-fit: contain;
image-rendering: pixelated;
}
.event-card-label {
font-size: 14px;
color: #000000;
text-align: center;
line-height: 1.3;
word-break: break-word;
}
/* ================================
Detail-Popup
================================ */
#event-detail-overlay {
display: none;
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.55);
z-index: 9999;
align-items: center;
justify-content: center;
}
#event-detail-overlay.active {
display: flex;
}
#event-detail-popup {
background: #1e1a14 !important;
border: 1px solid rgba(255, 200, 80, 0.3) !important;
border-radius: 6px !important;
padding: 12px !important;
width: 210px !important;
min-width: unset !important;
max-width: unset !important;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.7) !important;
position: relative !important;
transform: none !important;
animation: eventDetailIn 0.18s ease forwards !important;
}
@keyframes eventDetailIn {
from {
opacity: 0;
transform: translateY(6px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
#event-detail-popup .edp-close {
position: absolute;
top: 6px;
right: 8px;
background: none;
border: none;
color: #888;
font-size: 11px;
cursor: pointer;
line-height: 1;
transition: color 0.1s;
}
#event-detail-popup .edp-close:hover {
color: #fff;
}
#event-detail-popup .edp-img {
display: block;
margin: 0 auto 8px;
width: 44px;
height: 44px;
object-fit: contain;
image-rendering: pixelated;
}
#event-detail-popup .edp-title {
text-align: center;
font-size: 11px;
font-weight: bold;
color: #f5c842;
margin-bottom: 6px;
}
#event-detail-popup .edp-body {
font-size: 10px;
color: #cccccc;
line-height: 1.6;
text-align: center;
}
/* ================================
Booster UI Container
================================ */
.booster-ui {
flex-direction: column;
gap: 14px;
padding: 10px 0;
width: 100%;
}
.booster-back-btn {
align-self: flex-start;
background: none;
border: 1px solid rgba(255, 200, 80, 0.3);
color: #c8960c;
font-size: 12px;
padding: 4px 12px;
border-radius: 4px;
cursor: pointer;
font-family: "Cinzel", serif;
transition:
background 0.15s,
color 0.15s;
}
.booster-back-btn:hover {
background: rgba(200, 150, 12, 0.15);
color: #f0d060;
}
/* Alle 6 Elemente (Stapel + 5 Slots) in einem einzigen Flex-Container */
.booster-stage {
display: flex;
align-items: flex-start;
gap: 10px;
width: 100%;
}
/* ── Stapel ── */
.booster-left {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
flex: 1;
min-width: 0;
}
.booster-stapel-img {
width: 100%;
aspect-ratio: 2 / 3;
object-fit: cover;
cursor: pointer;
image-rendering: pixelated;
filter: drop-shadow(0 4px 12px rgba(200, 150, 12, 0.4));
transition:
transform 0.15s ease,
filter 0.15s ease;
border: 2px solid rgba(255, 255, 255, 0.1);
border-radius: 6px;
display: block;
}
.booster-stapel-img:hover:not(.used) {
transform: scale(1.06) translateY(-3px);
filter: drop-shadow(0 6px 18px rgba(240, 200, 60, 0.65));
}
.booster-stapel-img.used {
cursor: default;
filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.3));
}
.booster-stapel-hint {
font-size: 11px;
color: #a08040;
font-family: "Cinzel", serif;
letter-spacing: 1px;
text-align: center;
}
/* Slots werden direkte Flex-Kinder von .booster-stage */
.booster-slots {
display: contents;
}
/* ── Einzelner Slot ── */
.booster-slot {
display: flex;
flex-direction: column;
align-items: center;
flex: 1;
min-width: 0;
}
.booster-slot-inner {
width: 100%;
aspect-ratio: 2 / 3;
border: 2px solid rgba(255, 255, 255, 0.1);
border-radius: 6px;
overflow: hidden;
background: #0d0a06;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
/* Drehen */
.booster-slot.spinning .booster-slot-inner {
border-color: rgba(200, 150, 12, 0.5);
box-shadow: 0 0 12px rgba(200, 150, 12, 0.25);
}
/* Enthüllt */
.booster-slot.revealed .booster-slot-inner {
border-color: #c8960c;
box-shadow:
0 0 16px rgba(200, 150, 12, 0.45),
inset 0 0 8px rgba(200, 150, 12, 0.1);
animation: revealPop 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}
@keyframes revealPop {
0% {
transform: scale(0.85);
opacity: 0.5;
}
60% {
transform: scale(1.06);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 1;
}
}
.booster-slot-img {
width: 100%;
height: 100%;
object-fit: cover;
image-rendering: pixelated;
display: block;
}
/* ================================
Karten-Stats innerhalb der Slots
(identisch mit carddeck.js)
================================ */
/* Angriff rechts mittig */
.bs-stat-atk {
position: absolute;
right: 6px;
top: 40%;
transform: translateY(-50%);
background: rgba(180, 40, 20, 0.88);
border: 1px solid #ff6040;
border-radius: 45px;
color: #fff;
font-family: "Cinzel", serif;
font-size: 9px;
font-weight: bold;
padding: 1px 4px;
z-index: 5;
pointer-events: none;
}
/* Verteidigung links mittig */
.bs-stat-def {
position: absolute;
left: 6px;
top: 40%;
transform: translateY(-50%);
background: rgba(20, 80, 180, 0.88);
border: 1px solid #4090ff;
border-radius: 45px;
color: #fff;
font-family: "Cinzel", serif;
font-size: 9px;
font-weight: bold;
padding: 1px 4px;
z-index: 5;
pointer-events: none;
}
/* Cooldown unten rechts, Kreis */
.bs-stat-cd {
position: absolute;
bottom: 6px;
right: 5px;
width: 18px;
height: 18px;
border-radius: 50%;
background: rgba(0, 0, 0, 0.75);
border: 1px solid #f0d060;
display: flex;
align-items: center;
justify-content: center;
font-family: "Cinzel", serif;
font-size: 8px;
font-weight: bold;
color: #f0d9a6;
z-index: 5;
pointer-events: none;
}
/* Kristalle mittig unten */
.bs-rarity {
position: absolute;
top: 72%;
left: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
gap: 1px;
z-index: 5;
pointer-events: none;
}
/* Kartenname ganz unten */
.bs-card-name {
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: 2px 3px;
background: linear-gradient(transparent, rgba(0, 0, 0, 0.82));
font-family: "Cinzel", serif;
font-size: 7px;
color: #f0d9a6;
text-align: center;
line-height: 1.3;
border-radius: 0 0 4px 4px;
z-index: 5;
pointer-events: none;
}
.event-done {
cursor: not-allowed;
}
.event-done-overlay {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0, 0, 0, 0.18);
border-radius: inherit;
pointer-events: none;
}
/* Der Stempel selbst */
.event-done-overlay::after {
content: "Erfolgreich";
display: block;
padding: 5px 8px;
border: 3px solid #3dbb3d;
border-radius: 5px;
color: #3dbb3d;
font-family: "Cinzel", serif;
font-size: 11px;
font-weight: bold;
letter-spacing: 1px;
text-transform: uppercase;
text-align: center;
transform: rotate(-18deg);
opacity: 0.92;
box-shadow: 0 0 6px rgba(61, 187, 61, 0.4);
text-shadow: 0 0 6px rgba(61, 187, 61, 0.5);
background: rgba(0, 0, 0, 0.45);
white-space: nowrap;
}
.event-done-label {
display: none;
}