/* ========================================================================== ZOOM CONTROL - Fixed Bottom Center ========================================================================== */ .zoom-control { position: fixed; bottom: 100px; /* Default position, can be dragged */ left: 50%; transform: translateX(-50%); z-index: 900; display: flex; align-items: center; gap: 0.75rem; padding: 0.65rem 1.25rem; background: rgba(128, 128, 128, 0.7); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-radius: 50px; box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2); transition: all 0.3s ease; opacity: 0.7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; cursor: move; /* Indicate draggability */ user-select: none; /* Prevent text selection while dragging */ } /* Zoom control highlight when hovering zoom toggle button */ .zoom-control.zoom-highlight { opacity: 1; box-shadow: 0px 0px 10px 4px rgb(1 113 188 / 80%); background: rgb(91 91 91); } /* Hidden state for zoom control and show button */ .zoom-hidden { display: none !important; } /* Close button for zoom control */ .zoom-close-btn { position: absolute; top: -8px; right: -8px; width: 24px; height: 24px; background: rgba(128, 128, 128, 0.6); /* Subtle grey */ border: 2px solid rgba(255, 255, 255, 0.3); border-radius: 50%; color: rgba(255, 255, 255, 0.8); /* Light grey icon */ cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; transition: all 0.2s ease; z-index: 1; opacity: 0.7; /* Subtle by default */ } .zoom-close-btn:hover { background: rgba(220, 53, 69, 0.9); /* Red on hover */ color: white; /* White icon on hover */ opacity: 1; /* Fully visible on hover */ transform: scale(1.1); box-shadow: 0 2px 8px rgba(220, 53, 69, 0.4); } .zoom-control:hover { opacity: 1; background: rgb(91 91 91); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); } /* Zoom Values (Labels) */ .zoom-value { color: rgba(255, 255, 255, 1); /* 100% white */ font-size: 0.95rem; /* Bigger */ font-weight: 500; /* Medium weight */ min-width: 30px; text-align: center; } .zoom-value-current { color: rgba(255, 255, 255, 1); /* 100% white */ font-weight: 600; font-size: 1.05rem; /* Bigger */ min-width: 35px; } /* Range Slider Styling */ .zoom-slider { -webkit-appearance: none; appearance: none; width: 180px; height: 5px; border-radius: 3px; background: rgba(200, 200, 200, 0.5); outline: none; cursor: pointer; transition: all 0.3s ease; } /* Solid blue color on hover - no gradient */ .zoom-control:hover .zoom-slider, .zoom-slider:hover { background: rgba(145, 190, 236, 1); /* solid blue */ } .zoom-slider:focus { outline: 2px solid rgba(255, 255, 255, 0.6); outline-offset: 2px; } /* Webkit Slider Thumb */ .zoom-slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 18px; height: 18px; border-radius: 50%; background: white; border: 2px solid rgba(180, 180, 180, 0.8); cursor: pointer; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); transition: all 0.2s ease; } .zoom-slider::-webkit-slider-thumb:hover { transform: scale(1.1); border-color: rgba(200, 200, 200, 1); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.4); } .zoom-slider::-webkit-slider-thumb:active { transform: scale(1.05); } /* Firefox Slider Thumb */ .zoom-slider::-moz-range-thumb { width: 18px; height: 18px; border-radius: 50%; background: white; border: 2px solid rgba(180, 180, 180, 0.8); cursor: pointer; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); transition: all 0.2s ease; } .zoom-slider::-moz-range-thumb:hover { transform: scale(1.1); border-color: rgba(200, 200, 200, 1); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.4); } .zoom-slider::-moz-range-thumb:active { transform: scale(1.05); } /* Firefox Range Track */ .zoom-slider::-moz-range-track { height: 5px; border-radius: 3px; background: rgba(200, 200, 200, 0.5); transition: all 0.3s ease; } /* Firefox Range Track - Solid blue on hover */ .zoom-control:hover .zoom-slider::-moz-range-track, .zoom-slider:hover::-moz-range-track { background: #3b82f6; /* solid blue */ } /* Reset Button - Circular with dynamic value inside */ .zoom-reset-btn { display: flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0.5rem; background: rgba(200, 200, 200, 0.2); border: 2px solid rgba(220, 220, 220, 0.3); border-radius: 50%; color: rgba(255, 255, 255, 0.8); font-size: 0.85rem; font-weight: 700; cursor: pointer; transition: all 0.3s ease; flex-shrink: 0; margin: 0 -5px 0 10px; } .zoom-reset-btn #zoom-value-current { color: inherit; font-size: inherit; font-weight: inherit; min-width: auto; } .zoom-reset-btn:hover { background: rgba(220, 220, 220, 0.4); border-color: rgba(240, 240, 240, 0.6); color: white; } /* Green hover only when zoom is not at default (100) */ .zoom-reset-btn.zoom-not-default:hover { background: #74aacd; border-color: #74aacd; color: white; } .zoom-reset-btn:active { transform: scale(0.95); } .zoom-reset-btn:focus { outline: 2px solid rgba(255, 255, 255, 0.6); outline-offset: 2px; } /* Mobile Responsive - Horizontal button layout defined below (around line 2867) */ /* Old mobile styles removed - now using horizontal layout with all three buttons */ /* Very Small Screens - Ultra Compact */ @media (max-width: 480px) { .zoom-control { bottom: 40px; padding: 0.35rem 0.7rem; gap: 0.35rem; } .zoom-slider { width: 100px; } /* Hide min/max labels on very small screens */ .zoom-value-min, .zoom-value-max { display: none; } } /* ============================================================================= HTMX CSS TRANSITIONS ============================================================================= */ /* Inline loading transition styles moved to main section above (~line 1677) */ /* Prevent layout shift during content fade */ .cv-page-content-wrapper { position: relative; }