551 lines
12 KiB
CSS
551 lines
12 KiB
CSS
/* ============================================
|
|
DOOR STATUS VOTING - FRONTEND STYLES
|
|
Angepasst an Website-Design mit Elementor-Variablen
|
|
============================================ */
|
|
|
|
:root {
|
|
--dsv-primary: #2F4858;
|
|
--dsv-text: #141F27;
|
|
--dsv-accent: #C5422A;
|
|
--dsv-bg: #F6F9FC;
|
|
--dsv-white: #FFFFFF;
|
|
--dsv-hover: #B33822;
|
|
--dsv-border: #E0E5E9;
|
|
--dsv-success: #4CAF50;
|
|
--dsv-error: #C5422A;
|
|
}
|
|
|
|
/* ============================================
|
|
HAUPT-WIDGET
|
|
============================================ */
|
|
|
|
.dsv-widget {
|
|
background: var(--dsv-bg);
|
|
border-radius: 12px;
|
|
padding: 24px 28px;
|
|
width: 100%;
|
|
border: 1px solid var(--dsv-border);
|
|
box-shadow: 0 4px 12px rgba(47, 72, 88, 0.06);
|
|
font-family: var(--e-global-typography-text-font-family), Sans-serif;
|
|
font-size: var(--e-global-typography-text-font-size);
|
|
font-weight: var(--e-global-typography-text-font-weight);
|
|
color: var(--e-global-color-text, var(--dsv-text));
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* Titel */
|
|
.dsv-title {
|
|
text-align: center;
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
color: var(--dsv-primary);
|
|
margin: 0 0 18px 0;
|
|
}
|
|
|
|
/* Hauptzeile: Tür links, Voting rechts */
|
|
.dsv-main-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 30px;
|
|
}
|
|
|
|
/* ============================================
|
|
TÜR CONTAINER
|
|
============================================ */
|
|
|
|
.dsv-door-container {
|
|
position: relative;
|
|
width: 110px;
|
|
height: 150px;
|
|
flex-shrink: 0;
|
|
perspective: 500px;
|
|
}
|
|
|
|
/* Status Badge */
|
|
.dsv-status-badge {
|
|
position: absolute;
|
|
top: -10px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
padding: 4px 12px;
|
|
border-radius: 12px;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: white;
|
|
z-index: 10;
|
|
white-space: nowrap;
|
|
transition: all 0.5s ease;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
.dsv-status-open {
|
|
background: linear-gradient(135deg, var(--dsv-success), #43A047);
|
|
box-shadow: 0 3px 10px rgba(76, 175, 80, 0.35);
|
|
}
|
|
|
|
.dsv-status-closed {
|
|
background: linear-gradient(135deg, var(--dsv-accent), var(--dsv-hover));
|
|
box-shadow: 0 3px 10px rgba(197, 66, 42, 0.35);
|
|
}
|
|
|
|
.dsv-status-tied {
|
|
background: linear-gradient(135deg, #FF9800, #F57C00);
|
|
box-shadow: 0 3px 10px rgba(255, 152, 0, 0.35);
|
|
}
|
|
|
|
/* Türrahmen */
|
|
.dsv-door-frame {
|
|
position: absolute;
|
|
top: 10px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
width: 85px;
|
|
height: 120px;
|
|
background: linear-gradient(135deg, #5D4037 0%, #4E342E 100%);
|
|
border-radius: 4px 4px 0 0;
|
|
border: 4px solid #3E2723;
|
|
border-bottom: 6px solid #3E2723;
|
|
box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.5);
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* Licht hinter der Tür */
|
|
.dsv-light {
|
|
position: absolute;
|
|
inset: 3px;
|
|
border-radius: 2px;
|
|
background: linear-gradient(180deg, #FFF9C4 0%, #FFEE58 50%, #FFC107 100%);
|
|
opacity: 0;
|
|
transition: opacity 0.7s ease;
|
|
}
|
|
|
|
.dsv-widget[data-status="open"] .dsv-light {
|
|
opacity: 1;
|
|
box-shadow: 0 0 35px 12px rgba(255, 235, 59, 0.3);
|
|
}
|
|
|
|
.dsv-widget[data-status="tied"] .dsv-light {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
/* Lichtstrahlen */
|
|
.dsv-light-rays {
|
|
position: absolute;
|
|
inset: 3px;
|
|
overflow: hidden;
|
|
border-radius: 2px;
|
|
opacity: 0;
|
|
transition: opacity 0.7s ease;
|
|
}
|
|
|
|
.dsv-widget[data-status="open"] .dsv-light-rays,
|
|
.dsv-widget[data-status="tied"] .dsv-light-rays {
|
|
opacity: 1;
|
|
}
|
|
|
|
.dsv-ray {
|
|
position: absolute;
|
|
width: 2px;
|
|
height: 100%;
|
|
background: rgba(255, 255, 200, 0.4);
|
|
filter: blur(1px);
|
|
transform: rotate(5deg);
|
|
}
|
|
|
|
.dsv-ray:nth-child(1) { left: 15%; }
|
|
.dsv-ray:nth-child(2) { left: 30%; }
|
|
.dsv-ray:nth-child(3) { left: 45%; }
|
|
.dsv-ray:nth-child(4) { left: 60%; }
|
|
.dsv-ray:nth-child(5) { left: 75%; }
|
|
|
|
/* ============================================
|
|
DIE TÜR
|
|
============================================ */
|
|
|
|
.dsv-door {
|
|
position: absolute;
|
|
top: 3px;
|
|
left: 3px;
|
|
width: 71px;
|
|
height: 106px;
|
|
border-radius: 2px 2px 0 0;
|
|
transform-origin: left center;
|
|
transform-style: preserve-3d;
|
|
transition: transform 0.7s cubic-bezier(0.4, 0, 0.2, 1);
|
|
|
|
background:
|
|
linear-gradient(90deg,
|
|
rgba(0,0,0,0.1) 0%,
|
|
transparent 3%,
|
|
transparent 97%,
|
|
rgba(0,0,0,0.1) 100%
|
|
),
|
|
linear-gradient(180deg,
|
|
#8D6E63 0%,
|
|
#795548 15%,
|
|
#8D6E63 30%,
|
|
#6D4C41 50%,
|
|
#795548 70%,
|
|
#8D6E63 85%,
|
|
#795548 100%
|
|
);
|
|
|
|
box-shadow: 2px 0 6px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.dsv-widget[data-status="open"] .dsv-door {
|
|
transform: rotateY(-70deg);
|
|
box-shadow: 4px 0 12px rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
.dsv-widget[data-status="tied"] .dsv-door {
|
|
transform: rotateY(-35deg);
|
|
box-shadow: 3px 0 8px rgba(0, 0, 0, 0.35);
|
|
}
|
|
|
|
.dsv-widget[data-status="closed"] .dsv-door {
|
|
transform: rotateY(0deg);
|
|
}
|
|
|
|
/* Holzmaserung */
|
|
.dsv-door-grain {
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: 2px 2px 0 0;
|
|
opacity: 0.15;
|
|
background-image:
|
|
repeating-linear-gradient(
|
|
92deg,
|
|
transparent,
|
|
transparent 5px,
|
|
rgba(0,0,0,0.1) 5px,
|
|
rgba(0,0,0,0.1) 6px
|
|
);
|
|
}
|
|
|
|
/* Türpaneele */
|
|
.dsv-door-panel {
|
|
position: absolute;
|
|
left: 6px;
|
|
right: 6px;
|
|
border: 2px solid rgba(62, 39, 35, 0.4);
|
|
border-radius: 2px;
|
|
background: rgba(93, 64, 55, 0.2);
|
|
}
|
|
|
|
.dsv-door-panel-top {
|
|
top: 10px;
|
|
height: 32px;
|
|
}
|
|
|
|
.dsv-door-panel-bottom {
|
|
bottom: 10px;
|
|
height: 42px;
|
|
}
|
|
|
|
/* Türklinke */
|
|
.dsv-door-handle {
|
|
position: absolute;
|
|
right: 6px;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
.dsv-handle-plate {
|
|
width: 9px;
|
|
height: 26px;
|
|
border-radius: 4px;
|
|
background: linear-gradient(135deg, #FFD54F 0%, #FFA000 50%, #FF8F00 100%);
|
|
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
.dsv-handle-lever {
|
|
position: absolute;
|
|
top: 50%;
|
|
right: -1px;
|
|
transform: translateY(-50%);
|
|
width: 11px;
|
|
height: 5px;
|
|
border-radius: 0 2px 2px 0;
|
|
background: linear-gradient(180deg, #FFD54F 0%, #FFA000 100%);
|
|
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
/* Schatten */
|
|
.dsv-shadow {
|
|
position: absolute;
|
|
bottom: -5px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
width: 75px;
|
|
height: 10px;
|
|
background: radial-gradient(ellipse, rgba(0,0,0,0.2) 0%, transparent 70%);
|
|
transition: all 0.7s ease;
|
|
}
|
|
|
|
.dsv-widget[data-status="open"] .dsv-shadow {
|
|
width: 90px;
|
|
transform: translateX(-50%) scaleX(1.2);
|
|
}
|
|
|
|
/* ============================================
|
|
VOTING SECTION (rechte Seite)
|
|
============================================ */
|
|
|
|
.dsv-voting-section {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
/* Fortschrittsbalken */
|
|
.dsv-progress-container {
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.dsv-progress-bar {
|
|
position: relative;
|
|
height: 28px;
|
|
background: var(--dsv-bg);
|
|
border-radius: 14px;
|
|
overflow: hidden;
|
|
border: 1px solid var(--dsv-border);
|
|
display: flex;
|
|
}
|
|
|
|
.dsv-progress-open {
|
|
height: 100%;
|
|
background: linear-gradient(90deg, var(--dsv-success) 0%, #66BB6A 100%);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-start;
|
|
padding-left: 12px;
|
|
transition: width 0.7s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
|
|
.dsv-progress-closed {
|
|
height: 100%;
|
|
background: linear-gradient(90deg, #EF5350 0%, var(--dsv-accent) 100%);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
padding-right: 12px;
|
|
transition: width 0.7s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
|
|
.dsv-progress-count {
|
|
color: white;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
text-shadow: 0 1px 2px rgba(0,0,0,0.2);
|
|
}
|
|
|
|
.dsv-progress-divider {
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 0;
|
|
width: 2px;
|
|
height: 100%;
|
|
background: rgba(255,255,255,0.5);
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.dsv-progress-labels {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
margin-top: 6px;
|
|
font-size: 12px;
|
|
font-weight: var(--e-global-typography-text-font-weight);
|
|
}
|
|
|
|
.dsv-label-open {
|
|
color: #388E3C;
|
|
}
|
|
|
|
.dsv-label-closed {
|
|
color: var(--dsv-accent);
|
|
}
|
|
|
|
/* ============================================
|
|
VOTING BUTTONS
|
|
============================================ */
|
|
|
|
.dsv-buttons {
|
|
display: flex;
|
|
gap: 12px;
|
|
}
|
|
|
|
.dsv-buttons.dsv-voted {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.dsv-btn {
|
|
flex: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
padding: 12px 18px;
|
|
border: none;
|
|
border-radius: 8px;
|
|
font-family: var(--e-global-typography-text-font-family), Sans-serif;
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
color: white;
|
|
cursor: pointer;
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
box-shadow: 0 3px 10px rgba(0,0,0,0.15);
|
|
}
|
|
|
|
.dsv-btn:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
|
|
}
|
|
|
|
.dsv-btn:active {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.dsv-btn:disabled {
|
|
opacity: 0.6;
|
|
cursor: not-allowed;
|
|
transform: none;
|
|
}
|
|
|
|
.dsv-btn-open {
|
|
background: linear-gradient(135deg, var(--dsv-success) 0%, #388E3C 100%);
|
|
}
|
|
|
|
.dsv-btn-open:hover {
|
|
box-shadow: 0 5px 15px rgba(76, 175, 80, 0.4);
|
|
}
|
|
|
|
.dsv-btn-closed {
|
|
background: linear-gradient(135deg, var(--dsv-accent) 0%, var(--dsv-hover) 100%);
|
|
}
|
|
|
|
.dsv-btn-closed:hover {
|
|
box-shadow: 0 5px 15px rgba(197, 66, 42, 0.4);
|
|
}
|
|
|
|
.dsv-btn-icon {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.dsv-btn-text {
|
|
font-size: 14px;
|
|
}
|
|
|
|
/* Voted Message mit Remove Button */
|
|
.dsv-voted-message {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 10px 16px;
|
|
border-radius: 8px;
|
|
font-size: 13px;
|
|
font-weight: 500;
|
|
border: 1px solid;
|
|
}
|
|
|
|
.dsv-voted-open {
|
|
background: #E8F5E9;
|
|
color: #2E7D32;
|
|
border-color: #A5D6A7;
|
|
}
|
|
|
|
.dsv-voted-closed {
|
|
background: #FFEBEE;
|
|
color: var(--dsv-hover);
|
|
border-color: #FFCDD2;
|
|
}
|
|
|
|
.dsv-voted-icon {
|
|
font-size: 16px;
|
|
}
|
|
|
|
/* Remove Vote Button */
|
|
.dsv-remove-vote {
|
|
background: transparent;
|
|
border: none;
|
|
color: inherit;
|
|
opacity: 0.5;
|
|
cursor: pointer;
|
|
padding: 4px 8px;
|
|
margin-left: 6px;
|
|
border-radius: 4px;
|
|
font-size: 14px;
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
.dsv-remove-vote:hover {
|
|
opacity: 1;
|
|
background: rgba(0,0,0,0.08);
|
|
}
|
|
|
|
/* ============================================
|
|
INFO TEXT
|
|
============================================ */
|
|
|
|
.dsv-info {
|
|
color: #666;
|
|
font-size: 12px;
|
|
margin: 12px 0 0 0;
|
|
font-weight: var(--e-global-typography-text-font-weight);
|
|
}
|
|
|
|
.dsv-total {
|
|
font-weight: 600;
|
|
color: var(--dsv-primary);
|
|
}
|
|
|
|
/* ============================================
|
|
ANIMATIONEN
|
|
============================================ */
|
|
|
|
.dsv-widget.dsv-animating .dsv-door {
|
|
transition: transform 0.8s cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
|
}
|
|
|
|
@keyframes dsv-pulse {
|
|
0% { transform: translateX(-50%) scale(1); }
|
|
50% { transform: translateX(-50%) scale(1.08); }
|
|
100% { transform: translateX(-50%) scale(1); }
|
|
}
|
|
|
|
.dsv-widget.dsv-just-voted .dsv-status-badge {
|
|
animation: dsv-pulse 0.5s ease;
|
|
}
|
|
|
|
/* ============================================
|
|
RESPONSIVE
|
|
============================================ */
|
|
|
|
@media (max-width: 550px) {
|
|
.dsv-widget {
|
|
padding: 20px;
|
|
}
|
|
|
|
.dsv-main-row {
|
|
flex-direction: column;
|
|
gap: 20px;
|
|
}
|
|
|
|
.dsv-door-container {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
.dsv-voting-section {
|
|
width: 100%;
|
|
}
|
|
|
|
.dsv-btn {
|
|
padding: 11px 14px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.dsv-title {
|
|
font-size: 16px;
|
|
}
|
|
}
|