/* ============================================ 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; } }