dok/public/css/events.css
2026-04-11 14:26:09 +01:00

598 lines
12 KiB
CSS
Raw Permalink 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: 18px;
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: 12px;
font-weight: bold;
padding: 1px 4px;
z-index: 5;
pointer-events: none;
}
/* Verteidigung links mittig */
.bs-stat-def {
position: absolute;
left: 22px;
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: 12px;
font-weight: bold;
padding: 1px 4px;
z-index: 5;
pointer-events: none;
}
/* Cooldown unten rechts, Kreis */
.bs-stat-cd {
position: absolute;
bottom: 30px;
right: 20px;
width: 25px;
height: 25px;
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: 20px;
font-weight: bold;
color: #f0d9a6;
z-index: 5;
pointer-events: none;
}
/* Kristalle mittig unten */
.bs-rarity {
position: absolute;
top: 75%;
left: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
gap: 1px;
z-index: 5;
pointer-events: none;
}
/* Reichweite & Laufen Badges */
.bs-range-race {
position: absolute;
top: 82%;
left: 0;
right: 0;
display: flex;
justify-content: center;
gap: 3px;
pointer-events: none;
z-index: 6;
}
.bs-badge-range,
.bs-badge-race {
display: flex;
align-items: center;
gap: 2px;
padding: 1px 4px;
border-radius: 20px;
font-family: "Cinzel", serif;
font-size: 8px;
font-weight: bold;
line-height: 1;
}
.bs-badge-range {
background: rgba(30, 20, 0, 0.85);
border: 1px solid #e8b84b;
color: #e8b84b;
}
.bs-badge-race {
background: rgba(0, 25, 0, 0.85);
border: 1px solid #7de87d;
color: #7de87d;
}
/* 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-locked {
cursor: not-allowed;
opacity: 0.6;
}
.event-locked-overlay {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0, 0, 0, 0.55);
border-radius: inherit;
pointer-events: none;
}
.event-locked-overlay span {
display: block;
padding: 4px 7px;
border: 2px solid #a05010;
border-radius: 5px;
color: #e08030;
font-family: "Cinzel", serif;
font-size: 9px;
font-weight: bold;
text-align: center;
line-height: 1.4;
background: rgba(0, 0, 0, 0.5);
white-space: nowrap;
}
/* ── Arena Daily UI ── */
.arena-daily-wrap {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
flex: 1;
padding: 20px;
}
.arena-mode-card-daily {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
padding: 20px 40px;
background: linear-gradient(135deg, #2a1a08, #1a0f04);
border: 2px solid #6b4b2a;
border-radius: 12px;
cursor: pointer;
transition: all 0.2s;
}
.arena-mode-card-daily:hover {
border-color: #f0d060;
box-shadow: 0 0 20px rgba(200, 160, 60, 0.3);
transform: scale(1.04);
}
.arena-mode-card-daily.searching {
opacity: 0.6;
pointer-events: none;
border-color: rgba(255, 215, 80, 0.5);
}
.arena-mode-icon {
font-size: 2rem;
}
.arena-mode-label-daily {
font-family: "Cinzel", serif;
font-size: 18px;
font-weight: bold;
color: #f0d9a6;
}
.arena-mode-desc-daily {
font-family: "Cinzel", serif;
font-size: 11px;
color: #a08060;
text-align: center;
}
#arena-daily-status {
padding: 10px 18px;
border-radius: 8px;
background: rgba(255, 215, 80, 0.08);
border: 1px solid rgba(255, 215, 80, 0.3);
color: #dceb15;
font-family: "Cinzel", serif;
font-size: 12px;
text-align: center;
letter-spacing: 1px;
animation: pulse 2s ease-in-out infinite;
}
.arena-cancel-link {
display: inline-block;
margin-top: 6px;
font-size: 10px;
color: rgba(255, 100, 100, 0.8);
cursor: pointer;
text-decoration: underline;
}
.wood-btn-wrap {
position: relative;
width: 100%;
}
/* Wood-UI: Bild + Slot auf gleiche Größe wie Booster-Slots zwingen */
#wood-ui .booster-stage,
#gold-ui .booster-stage {
justify-content: center;
align-items: center;
gap: 20px;
}
#wood-ui .booster-left,
#wood-ui .booster-slot,
#gold-ui .booster-left,
#gold-ui .booster-slot {
flex: 0 0 calc((100% - 50px) / 6);
max-width: calc((100% - 50px) / 6);
}
.wood-stamp,
.gold-stamp {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) rotate(-20deg);
padding: 3px 6px;
border: 2px solid #c8400a;
border-radius: 4px;
color: #e85010;
background: rgba(0, 0, 0, 0.5);
font-family: "Cinzel", serif;
font-size: 8px;
font-weight: bold;
letter-spacing: 1px;
white-space: nowrap;
pointer-events: none;
box-shadow: 0 0 6px rgba(200, 64, 10, 0.5);
text-shadow: 0 0 6px rgba(200, 64, 10, 0.6);
}
.gold-stamp {
border-color: #b8960a;
color: #f0c020;
box-shadow: 0 0 6px rgba(200, 160, 10, 0.5);
text-shadow: 0 0 6px rgba(200, 160, 10, 0.6);
}
.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;
}