199 lines
5.9 KiB
CSS
199 lines
5.9 KiB
CSS
/* ============================================================
|
||
public/css/daily.css
|
||
Daily Herausforderung – Karten-Pfad Overlay
|
||
============================================================ */
|
||
|
||
/* ── Overlay ─────────────────────────────────────────────── */
|
||
#daily-map-overlay {
|
||
position: fixed;
|
||
inset: 0;
|
||
z-index: 10000;
|
||
background: rgba(0, 0, 0, 0.92);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
animation: dailyFadeIn 0.35s ease;
|
||
}
|
||
|
||
@keyframes dailyFadeIn { from { opacity: 0; } to { opacity: 1; } }
|
||
@keyframes dailyPulse { 0%, 100% { box-shadow: 0 0 14px 4px rgba(80,160,255,0.7); } 50% { box-shadow: 0 0 28px 10px rgba(80,160,255,1); } }
|
||
@keyframes dailyGlow { 0%, 100% { opacity: 1; } 50% { opacity: 0.65; } }
|
||
|
||
/* ── Map Container ───────────────────────────────────────── */
|
||
#daily-map-wrap {
|
||
position: relative;
|
||
max-width: min(95vw, 1000px);
|
||
max-height: 90vh;
|
||
border-radius: 14px;
|
||
overflow: hidden;
|
||
box-shadow: 0 0 0 2px rgba(80, 140, 255, 0.4), 0 30px 80px rgba(0, 0, 0, 0.9);
|
||
}
|
||
|
||
#daily-map-img {
|
||
display: block;
|
||
width: 100%;
|
||
height: auto;
|
||
max-height: 90vh;
|
||
object-fit: cover;
|
||
user-select: none;
|
||
pointer-events: none;
|
||
}
|
||
|
||
/* ── Close Button ────────────────────────────────────────── */
|
||
#daily-map-close {
|
||
position: absolute;
|
||
top: 12px;
|
||
right: 14px;
|
||
background: rgba(0, 0, 0, 0.7);
|
||
border: 1px solid rgba(255, 255, 255, 0.2);
|
||
border-radius: 50%;
|
||
width: 34px;
|
||
height: 34px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: #fff;
|
||
font-size: 16px;
|
||
cursor: pointer;
|
||
z-index: 10;
|
||
transition: background 0.2s;
|
||
}
|
||
#daily-map-close:hover { background: rgba(200, 50, 50, 0.8); }
|
||
|
||
/* ── Title Banner ────────────────────────────────────────── */
|
||
#daily-map-title {
|
||
position: absolute;
|
||
top: 14px;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
background: rgba(0, 0, 0, 0.72);
|
||
border: 1px solid rgba(80, 140, 255, 0.45);
|
||
border-radius: 8px;
|
||
padding: 6px 22px;
|
||
font-family: "Cinzel", serif;
|
||
font-size: 15px;
|
||
color: #a0c8ff;
|
||
letter-spacing: 3px;
|
||
white-space: nowrap;
|
||
z-index: 10;
|
||
}
|
||
|
||
/* ── Circles ─────────────────────────────────────────────── */
|
||
.daily-circle {
|
||
position: absolute;
|
||
width: 7%; /* scales with image width */
|
||
aspect-ratio: 1;
|
||
border-radius: 50%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-family: "Cinzel", serif;
|
||
font-size: clamp(12px, 1.8vw, 22px);
|
||
font-weight: bold;
|
||
transform: translate(-50%, -50%);
|
||
cursor: default;
|
||
transition: transform 0.15s ease;
|
||
z-index: 5;
|
||
user-select: none;
|
||
}
|
||
|
||
/* Completed station ─ grün */
|
||
.daily-circle.done {
|
||
background: radial-gradient(circle at 40% 35%, #4ecf6a, #1a7a30);
|
||
border: 3px solid #7af09a;
|
||
color: #fff;
|
||
box-shadow: 0 0 14px rgba(78, 207, 106, 0.6);
|
||
}
|
||
.daily-circle.done::after {
|
||
content: "✓";
|
||
font-size: clamp(10px, 1.5vw, 18px);
|
||
}
|
||
|
||
/* Available station ─ blaues Pulsieren */
|
||
.daily-circle.available {
|
||
background: radial-gradient(circle at 40% 35%, #5090ff, #1a3a9a);
|
||
border: 3px solid #90c0ff;
|
||
color: #fff;
|
||
cursor: pointer;
|
||
animation: dailyPulse 2s ease-in-out infinite;
|
||
}
|
||
.daily-circle.available:hover {
|
||
transform: translate(-50%, -50%) scale(1.15);
|
||
animation: none;
|
||
box-shadow: 0 0 30px 8px rgba(80, 160, 255, 0.9);
|
||
}
|
||
|
||
/* Locked station ─ ausgegraut */
|
||
.daily-circle.locked {
|
||
background: radial-gradient(circle at 40% 35%, #2a2a3a, #141420);
|
||
border: 3px solid rgba(80, 100, 150, 0.4);
|
||
color: rgba(150, 160, 200, 0.35);
|
||
}
|
||
|
||
/* ── Progress Text ───────────────────────────────────────── */
|
||
#daily-progress-bar-wrap {
|
||
position: absolute;
|
||
bottom: 14px;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
width: 60%;
|
||
background: rgba(0, 0, 0, 0.72);
|
||
border: 1px solid rgba(80, 140, 255, 0.35);
|
||
border-radius: 8px;
|
||
padding: 8px 16px;
|
||
z-index: 10;
|
||
text-align: center;
|
||
font-family: "Cinzel", serif;
|
||
}
|
||
|
||
#daily-progress-text {
|
||
font-size: 12px;
|
||
color: #a0c8ff;
|
||
letter-spacing: 1px;
|
||
margin-bottom: 5px;
|
||
}
|
||
|
||
#daily-progress-track {
|
||
height: 6px;
|
||
background: rgba(80, 140, 255, 0.15);
|
||
border-radius: 3px;
|
||
overflow: hidden;
|
||
}
|
||
|
||
#daily-progress-fill {
|
||
height: 100%;
|
||
background: linear-gradient(90deg, #3060cc, #60a0ff);
|
||
border-radius: 3px;
|
||
transition: width 0.6s ease;
|
||
}
|
||
|
||
/* ── All Done ────────────────────────────────────────────── */
|
||
#daily-all-done {
|
||
position: absolute;
|
||
inset: 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background: rgba(0, 0, 0, 0.78);
|
||
border-radius: 14px;
|
||
z-index: 20;
|
||
animation: dailyFadeIn 0.4s ease;
|
||
}
|
||
#daily-all-done .done-icon { font-size: 56px; margin-bottom: 14px; }
|
||
#daily-all-done .done-title { font-family: "Cinzel", serif; font-size: 22px; color: #7af09a; letter-spacing: 4px; margin-bottom: 8px; }
|
||
#daily-all-done .done-sub { font-family: "Cinzel", serif; font-size: 12px; color: #a0c8a0; margin-bottom: 24px; }
|
||
#daily-all-done .done-btn {
|
||
background: linear-gradient(135deg, #1a4a28, #27ae60);
|
||
border: 2px solid rgba(100, 220, 100, 0.6);
|
||
border-radius: 10px;
|
||
color: #fff;
|
||
font-family: "Cinzel", serif;
|
||
font-size: 13px;
|
||
letter-spacing: 3px;
|
||
padding: 11px 32px;
|
||
cursor: pointer;
|
||
transition: 0.2s;
|
||
}
|
||
#daily-all-done .done-btn:hover { border-color: #7af09a; background: linear-gradient(135deg, #2a6a38, #37be70); }
|