diff options
Diffstat (limited to 'static/bv/bracket.css')
-rw-r--r-- | static/bv/bracket.css | 1286 |
1 files changed, 0 insertions, 1286 deletions
diff --git a/static/bv/bracket.css b/static/bv/bracket.css deleted file mode 100644 index ab0285f..0000000 --- a/static/bv/bracket.css +++ /dev/null @@ -1,1286 +0,0 @@ -/* =================== - Root Variables and Resets - =================== */ - :root { - --main-font: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; - --mono-font: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; - --highlight-color: #fefcbf; - } - - *, *::before, *::after { - box-sizing: border-box; - } - - /* =================== - Container Structure - =================== */ - .puzzle-container { - width: 100%; - margin: 0 auto; - border: 1px solid #e2e8f0; - border-radius: 0.5rem; - background: white; - box-shadow: 0 1px 3px rgba(0,0,0,0.1); - padding: 0; - display: flex; - flex-direction: column; - } - - @media (min-width: 640px) { - .puzzle-container { - max-width: 42rem; - } - } - - /* =================== - Header Styles - =================== */ - /* Header Base Styles */ - .puzzle-header { - background: white; - border-bottom: 1px solid #e2e8f0; - box-sizing: border-box; - padding: 0.6rem; - position: relative; /* Desktop default */ - text-align: center; - z-index: 10; - } - - /* Mobile-specific header styles */ - @media (max-width: 640px) { - .puzzle-header { - position: fixed; - top: 0; - left: 0; - right: 0; - z-index: 1000; - padding: max(0.4rem, env(safe-area-inset-top)); - } - } - - /* Header title */ - .puzzle-header h1 { - margin: 0 0 0.5rem 0; - text-align: center; - font-size: clamp(2rem, 8vw, 3rem); - cursor: pointer; - font-family: var(--main-font); - font-variant: small-caps; - color: #1a202c; - font-weight: 600; - } - - @media (max-width: 640px) { - .puzzle-header h1 { - margin: 0; - font-size: clamp(1.8rem, 7vw, 2.8rem); - } - } - - /* Help button */ - .help-icon { - background: none; - border: 2px solid #333; - border-radius: 50%; - width: 2.4rem; - height: 2.4rem; - display: inline-flex; - align-items: center; - justify-content: center; - font-weight: bold; - font-size: 1.2rem; - color: #333; - } - - .puzzle-header .help-button { - position: absolute; - top: 10px; - right: 20px; - background: none; - border: 2px solid #333; - border-radius: 50%; - width: 2.4rem; - height: 2.4rem; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - font-weight: bold; - font-size: 1.2rem; - color: #333; - } - - @media (max-width: 640px) { - .puzzle-header .help-button { - right: 10px; - } - } - - /* Text bubble for help button */ -.help-button.new-player-highlight::after { - content: "try the tutorial!"; - position: absolute; - top: 42px; - right: -10px; - background-color: #333; - color: white; - padding: 6px 10px; - border-radius: 6px; - font-size: 14px; - font-weight: normal; - white-space: nowrap; - z-index: 10; - filter: drop-shadow(0 2px 3px rgba(0,0,0,0.2)); - /*animation: fade-in-out 3s infinite;*/ -} - -/* Triangle pointer for the bubble */ -.help-button.new-player-highlight::before { - content: ""; - position: absolute; - top: 35px; - right: 10px; - width: 0; - height: 0; - border-left: 8px solid transparent; - border-right: 8px solid transparent; - border-bottom: 8px solid #333; - z-index: 10; - /*animation: fade-in-out 3s infinite;*/ - -} - -/* Animation for the bubble to fade in and out */ -@keyframes fade-in-out { - 0%, 100% { opacity: 0.7; } - 50% { opacity: 1; } -} - -/* Keep the pulsing animation for the button itself */ -.help-button.new-player-highlight { - border-color: rgb(0, 0, 0); - color: rgb(0, 0, 0); - animation: pulse 1s infinite; -} - - /* Optional: Pulse animation to draw attention */ - @keyframes pulse { - 0% { transform: scale(1); } - 50% { transform: scale(1.10); } - 100% { transform: scale(1); } - } - - /* Help button */ - .puzzle-header .info-button { - position: absolute; - top: 10px; - left: 20px; - background: none; - border: 2px solid #333; - border-radius: 50%; - width: 2.4rem; - height: 2.4rem; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - font-weight: bold; - font-size: 1.2rem; - font-family: menlo; - color: #333; - } - - /* Style for the unseen info button */ - .info-button.unseen-info { - border-color: #000000; /* Red border */ - color: #ef4444; /* Red text */ - /*animation: pulse 1s infinite; Optional: add a subtle pulse animation */ - } - - /* Optional: Pulse animation to draw attention */ - @keyframes pulse { - 0% { transform: scale(1); } - 50% { transform: scale(1.10); } - 100% { transform: scale(1); } - } - - @media (max-width: 640px) { - .puzzle-header .info-button { - left: 10px; - } - } - - /* Navigation container */ - .puzzle-header .nav-container { - display: flex; - align-items: center; - justify-content: center; - gap: 1rem; - } - - /* Navigation buttons */ - .puzzle-header .nav-button { - padding: 4px 12px; - border: none; - border-radius: 4px; - background: none; - cursor: pointer; - font-weight: bold; - font-size: 1.5rem; - color: #333; - } - - .puzzle-header .nav-button:disabled { - opacity: 0.3; - cursor: default; - } - - /* Puzzle date */ - .puzzle-header .puzzle-date { - margin: 0; - font-size: 20px; - font-weight: 600; - font-family: var(--main-font); - font-variant: small-caps; - color: #1a202c; - } - - /* =================== - Main Content Area - =================== */ - /* New rules for loading state */ - - .loading { - text-align: center; - padding: 2rem; - } - - .puzzle-content { - padding: 1rem; - display: flex; - flex-direction: column; - gap: 0rem; - width: 100%; - } - - /* =================== - Puzzle Display - =================== */ - .puzzle-display { - width: 100%; - min-height: 40vh; - max-height: 60vh; - background: #f1f5f9; - border-radius: 0.5rem; - padding: 1.5rem; - font-family: var(--mono-font); - font-size: 24px; - line-height: 1.5; - overflow-y: auto; - word-break: keep-all; - overflow-wrap: break-word; - hyphens: none; - transition: all 0.3s ease; - } - - .puzzle-display.completed { - min-height: auto; - max-height: none; - height: auto; - } - - .blank-line { - display: inline-block; - border-bottom: .15rem solid currentColor; - line-height: 1; - position: relative; - top: .2rem; /* Move line down slightly */ - padding: 0 2px; - margin: 0 1px; - } - - @media (max-width: 640px) { - .blank-line { - border-bottom: .1rem solid currentColor; - } - } - - /* =================== - Active Clue & Mark Styles - =================== */ - .active-clue { - background-color: rgba(255, 255, 0, 0.2); - border-radius: 3px; - padding: 2px 4px; - margin: -2px -4px; - transition: background-color 0.3s ease; - cursor: pointer; - } - - .active-clue:hover { - background-color: rgba(255, 255, 0, 0.3); - } - - mark.solved { - background-color: rgba(0, 255, 0, 0.2); - border-radius: 3px; - padding: 2px 4px; - margin: -2px -4px; - } - - mark { - background-color: transparent; - color: inherit; - } - - /* =================== - Input Styles - =================== */ - .input-container { - width: 100%; - margin: 10px 0 0 0; - position: relative; - } - - .answer-input { - width: 100%; - padding: 16px; - height: 60px; - font-size: 16px !important; - border: 1px solid #e2e8f0; - border-radius: 6px; - margin-bottom: 0px; - box-sizing: border-box; - font-family: var(--mono-font); - } - - /* =================== - Message Styles - =================== */ - .message { - padding: 0.5rem; - margin: 0.5rem 0; - border-radius: 0.375rem; - text-align: center; - font-family: var(--mono-font); - display: none; - } - - .message.success { - background-color: #c6f6d5; - color: #1a202c; - overflow-wrap: anywhere; - font-size: 1.2rem; - display: block; - padding: 20px; - line-height: 2rem; - } - - - .message.success .completion-link { - color: #2563eb; - text-decoration: underline; - } - - .message.error { - background-color: #fee2e2; - color: #1a202c; - overflow-wrap: anywhere; - font-size: 1.2rem; - display: block; - padding: 20px; - line-height: 2rem; - } - - /* =================== - Completion Message - =================== */ - .completion-message { - margin: 0.5rem 0; - padding: 0rem; - border-radius: 0.375rem; - text-align: center; - font-family: var(--mono-font); - font-size: 1.2rem; - line-height: 1.5; - } - - /* =================== - Solved Expressions - =================== */ - .solved-expressions { - margin-top: 0rem; - } - - .solved-expressions h3 { - font-size: 1.2rem; - font-weight: 500; - margin-bottom: 0.75rem; - font-family: var(--main-font); - color: #1a202c; - } - - .expression-item { - background: #f1f5f9; - padding: 0.75rem; - border-radius: 0.375rem; - margin-bottom: 0.5rem; - font-size: 1.2rem; - font-family: var(--mono-font); - line-height: 1.5; - } - - .expression-item .solution { - font-weight: 600; - color: #1a202c; - } - - - /* =================== - Stats & Completion - =================== */ - .stats-content { - margin-top: 0rem; - } - - .stat-items { - margin: 0.5rem 0; - } - - .stat-item { - background: #f1f5f9; - padding: 0.75rem; - border-radius: 0.375rem; - margin-bottom: 0.5rem; - font-size: 1rem; - line-height: 1.5; - font-family: var(--main-font); - } - - /* =================== - Share Button Styles - =================== */ - .share-buttons { - margin-top: 1rem; - display: flex; - flex-direction: column; - gap: 0.5rem; - } - - .share-button { - width: 100%; - padding: 0.75rem; - font-size: 1rem; - font-family: var(--main-font); - background: #1a202c; - color: white; - border: none; - border-radius: 0.375rem; - cursor: pointer; - } - - .share-button.reset { - background-color: #ff4444; - } - - .share-button:hover { - background: #2d3748; - } - - .share-message { - font-family: var(--main-font); - color: #1a202c; - text-align: center; - padding: 0.5rem; - margin-top: 0.5rem; - background: var(--highlight-color); - border-radius: 0.375rem; - } - - /* =================== - Rank Display - =================== */ - .rank-display { - font-family: var(--mono-font); - position: relative; - overflow: hidden; - padding: 1rem; - text-align: center; - font-size: 1.2em; - font-weight: 500; - border-radius: 0.375rem; - margin: 0rem 0rem 1rem 0rem; - border: 1px solid rgba(255,255,255,0.4); - box-shadow: 0 2px 4px rgba(0,0,0,0.05); - cursor: pointer; - transition: transform 0.2s; - user-select: none; - } - - .rank-display:active { - transform: scale(0.95); - } - .rank-display .next-rank { - font-size: 0.8em; - font-weight: normal; - } - - .rank-display .share-hint { - font-size: 0.7em; - margin-top: 0.5em; - color: #666; - } - - /* Rank gradients */ - .rank-display[data-rank="Tourist"] { background: linear-gradient(135deg, #f0fdf4 0%, #6ee7b7 100%); } - .rank-display[data-rank="Commuter"] { background: linear-gradient(135deg, #fff7ed 0%, #fbd38d 100%); } - .rank-display[data-rank="Resident"] { background: linear-gradient(135deg, #f8fafc 0%, #cbd5e1 100%); } - .rank-display[data-rank="Council Member"] { background: linear-gradient(135deg, #fafaf9 0%, #d6d3d1 100%); } - .rank-display[data-rank="Chief of Police"] { background: linear-gradient(135deg, #f0f9ff 0%, #93c5fd 100%); } - .rank-display[data-rank="Mayor"] { background: linear-gradient(135deg, #fff1f2 0%, #fda4af 100%); } - .rank-display[data-rank="Power Broker"] { background: linear-gradient(135deg, #fefce8 0%, #92400e 100%); } - .rank-display[data-rank="Kingmaker"] { background: linear-gradient(135deg, #fffbeb 0%, #fcd34d 100%); } - .rank-display[data-rank="Puppet Master"] { background: linear-gradient(135deg, #faf5ff 0%, #d8b4fe 100%); } - - /* =================== - Shimmer Animation - =================== */ - @keyframes shimmer { - 0% { transform: translateX(-150%) rotate(45deg); } - 100% { transform: translateX(150%) rotate(45deg); } - } - - .rank-display::after { - content: ''; - position: absolute; - top: -50%; - left: -100%; - width: 300%; - height: 200%; - background: linear-gradient( - to bottom right, - rgba(255,255,255,0) 0%, - rgba(255,255,255,0.3) 50%, - rgba(255,255,255,0) 100% - ); - transform: rotate(45deg); - animation: shimmer 4s infinite linear; - pointer-events: none; - } - - /* =================== - Mobile Styles - =================== */ - @media (max-width: 640px) { - body { - margin: 0; - padding: 0; - height: 100vh; - font-size: 14px; - overflow: hidden; - } - - .message.success { - background-color: #c6f6d5; - color: #1a202c; - overflow-wrap: anywhere; - font-size: 1rem; - display: block; - padding: 10px; - line-height: 1.4rem; - margin-top: 0.2rem; - } - - .message.error { - background-color: #fee2e2; - color: #1a202c; - overflow-wrap: anywhere; - font-size: 1rem; - display: block; - padding: 10px; - line-height: 1.4rem; - margin-top: 0.2rem; - } - - - - /* Mobile container setup */ - .puzzle-container { - height: 100vh; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - display: flex; - flex-direction: column; - } - - /* Mobile content area */ - .puzzle-content { - position: absolute; - top: 85px; - left: 0; - right: 0; - bottom: 0; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - padding: 0; - gap: 0rem; - } - - @font-face { - font-family: 'CustomMono'; - /* Use ui-monospace for every character except underscore */ - src: local("ui-monospace"); - /* All Unicode except underscore (U+005F) */ - unicode-range: U+0000-005E, U+0060-10FFFF; - } - - @font-face { - font-family: 'CustomMono'; - /* Use Menlo for underscore only */ - src: local("Menlo"); - unicode-range: U+005F; - } - - .puzzle-display { - height: auto; - padding: 0.5rem 1rem 1rem 1rem; - margin: 0; - font-size: 1.2rem; - background: #f1f5f9; - padding-bottom: 200px; - font-family: ui-monospace, "SF Mono", "Roboto Mono", "Menlo", "Consolas", "Liberation Mono", monospace; - } - - .puzzle-display.completed { - padding-bottom: 1rem !important; - } - - - .rank-display { - margin: 0rem 0.5rem 1rem 0.5rem; - } - - - /* Mobile input container */ - .input-container { - position: fixed; - bottom: 0; - left: 0; - right: 0; - background: white; - z-index: 10; - width: 100%; - border-top: 1px solid #e2e8f0; - box-shadow: 0 -2px 6px rgba(0,0,0,0.1); - padding: 0.5rem calc(0.5rem + env(safe-area-inset-left)) calc(0.5rem + env(safe-area-inset-bottom)) calc(0.5rem + env(safe-area-inset-right)); - box-sizing: border-box; - } - - .custom-input { - border: 1px solid #e2e8f0; - padding: 0.63rem; - border-radius: 6px; - margin-bottom: 0.125rem; - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; - font-size: 1.2rem; - min-height: 2.4rem; - background: white; - width: 100%; - color: #000; - } - - .placeholder { - color: #9ca3af; - } - - /* Mobile keyboard */ - .custom-keyboard { - width: 100%; - padding: .25rem 0 0 0; - box-sizing: border-box; - background-color: white; - touch-action: none; - } - - .keyboard-row { - display: grid; - grid-template-columns: repeat(10, 1fr); - gap: 0.02rem; - margin-bottom: 0.125rem; - justify-content: center; - width: 100%; - } - - .keyboard-key { - height: 3.3rem; - min-height: 2.2rem; - display: flex; - align-items: center; - justify-content: center; - padding: 0.2rem; - margin: 0.1rem 0.15rem 0.1rem 0.15rem; - cursor: pointer; - color: black; - background-color:rgb(233, 233, 233); - box-sizing: border-box; - touch-action: manipulation; - text-align: center; - font-size: 1.125rem; - font-weight: 600; - border: 1px solid rgb(200, 200, 200); - user-select: none; - -webkit-tap-highlight-color: transparent; - -webkit-appearance: none !important; - appearance: none !important; - border-radius: 4px !important; - outline: none !important; - -webkit-tap-highlight-color: transparent !important; - transition: background-color 0.1s ease-out, - transform 0.1s ease-out; - -webkit-user-select: none; - user-select: none; - -webkit-transform: translateZ(0); - transform: translateZ(0); - } - - .keyboard-key:active { - background-color: #94a3b8; - transform: translateY(2px); - } - - .stat-item { - background: #f1f5f9; - padding: 0.75rem; - border-radius: 0.375rem; - margin-bottom: 0.5rem; - font-size: 1rem; - line-height: 1.5; - } - - /* Hide desktop elements */ - .bottom-controls, - .reset-button, - .solved-expressions, - .keystroke-stats, - .share-button.copy { - display: none; - } - - /* Mobile completion state */ - .puzzle-container.completed .puzzle-content { - position: static; - height: auto; - overflow: visible; - margin-top: 85px; - padding: 1rem; - } - - .puzzle-container.completed { - position: static; - height: auto; - min-height: 100vh; - overflow-y: auto; - } - - .puzzle-display.completed .input-container { - display: none; - } - - .puzzle-container.completed .solved-expressions, - .puzzle-container.completed .keystroke-stats { - display: block; - margin: 1rem; - } - - .keystroke-stats { - margin-top: 0rem; - } - } - - /* =================== - iOS-specific Styles - =================== */ - @supports (-webkit-touch-callout: none) { - .keyboard-key:active { - background-color: #94a3b8 !important; - transform: translateY(2px) !important; - } - } - - /* =================== - Score Bar - =================== */ - - .score-bar { - margin: 1.5rem 0; - text-align: center; - font-size: 1.1rem; - font-family: var(--mono-font), monospace; - border: 2px dashed #aaa; - padding: 1rem; - border-radius: 0.5rem; - background-color: rgba(255, 255, 255, 0.5); - } - - .score-value { - font-weight: bold; - margin-bottom: 0rem; - } - - .progress-bar { - font-size: 1.5rem; - letter-spacing: 0.1rem; - line-height: 1.5; - } - - /* Mobile adjustments */ - @media (max-width: 640px) { - .score-bar { - margin: 1rem 0; - font-size: 1rem; - padding: 0.75rem; - } - - .progress-bar { - font-size: 1.2rem; - } - } - - /* Submit button and input wrapper */ - .input-submit-wrapper { - display: flex; - gap: 0.5rem; - width: 100%; - } - - .submit-answer { - padding: 0 1.5rem; - height: 60px; - background-color: #2563eb; - color: white; - border: none; - border-radius: 0.375rem; - cursor: pointer; - font-weight: 500; - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; - white-space: nowrap; - font-size: 1rem; - } - - .submit-answer:hover { - background-color: #1d4ed8; - } - - .submit-answer:active { - background-color: #1e40af; - transform: scale(0.98); - } - - .mobile-submit-button { - background-color: #2563eb !important; - color: white !important; - font-size: 1rem !important; - font-weight: 500 !important; - } - -/* Date Picker Styles */ -.puzzle-date { - cursor: pointer; - position: relative; - display: inline-flex; - align-items: center; - transition: color 0.2s ease; - padding: 4px; /* Larger tap target */ - border-radius: 4px; - user-select: none; - -webkit-tap-highlight-color: rgba(0,0,0,0); /* Remove default mobile tap highlight */ - touch-action: manipulation; /* Optimize for touch */ -} - -.puzzle-date:hover { - color: #4299e1; - background-color: rgba(66, 153, 225, 0.1); -} - -.puzzle-date:active { - transform: scale(0.98); -} - -.puzzle-date::after { - content: "\23F7"; /* dropdown arrow maybe */ - display: inline-block; - margin-left: 0.5rem; - font-size: 0.8em; - opacity: 0.7; -} - -/* Visible hint on mobile */ -@media (max-width: 640px) { - .puzzle-date { - padding: 5px 8px; - border: none !important; /* Explicitly remove any border */ - } - - .puzzle-date::after { - font-size: 1em; - margin-left: 8px; - } -} - -.date-picker-container { - font-family: var(--main-font); - border-radius: 0.5rem; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - border: 1px solid rgba(0, 0, 0, 0.1); - background-color: white; - animation: fadeIn 0.2s ease; - box-sizing: border-box; - overflow: hidden; /* Ensure nothing bleeds outside the container */ - padding: 1rem !important; /* Force padding */ -} - -@keyframes fadeIn { - from { opacity: 0; transform: translateY(-10px) translateX(-50%); } - to { opacity: 1; transform: translateY(0) translateX(-50%); } -} - -.month-nav { - width: 30px; - height: 30px; - display: flex; - align-items: center; - justify-content: center; - border-radius: 50%; - transition: background-color 0.2s; -} - -.month-nav:hover { - background-color: #f0f0f0; -} - -.weekdays { - font-size: 0.85rem; - color: #4a5568; - padding-bottom: 0.5rem; -} - -.calendar-grid { - font-size: 0.95rem; -} - -.date-cell { - transition: transform 0.1s ease, box-shadow 0.1s ease; - user-select: none; - aspect-ratio: 1; - display: flex; - align-items: center; - justify-content: center; -} - -.date-cell.has-puzzle:hover:not([disabled="true"]) { - transform: translateY(-2px); - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.date-cell.has-puzzle:active:not([disabled="true"]) { - transform: translateY(0); -} - -.date-cell.has-puzzle[data-status="complete"] { - position: relative; -} - -.date-cell.has-puzzle[data-status="complete"]::after { - content: "\2713"; - position: absolute; - top: 0; - right: 2px; - font-size: 8px; - color: #22543d; -} - -.date-cell.has-puzzle[data-status="started"] { - position: relative; -} - -.date-cell.has-puzzle[data-status="started"]::after { - content: "\2022\2022\2022"; - position: absolute; - bottom: 1px; - left: 50%; - transform: translateX(-50%); - font-size: 8px; - line-height: 1; - color: #744210; -} - -.empty-day { - aspect-ratio: 1; -} - -/* Mobile styles */ -/* Fix for the date picker right column padding issue on mobile */ - -/* Balanced fix for date picker columns on mobile */ - -/* Robust fix for date picker edge issues on mobile */ - -@media (max-width: 640px) { - /* Force container to be smaller than viewport width and centered */ - .date-picker-container { - width: 85vw !important; /* Reduced from 90vw to ensure space */ - max-width: 300px !important; /* Smaller max-width */ - left: 50% !important; - transform: translateX(-50%) !important; - margin-left: 0 !important; - margin-right: 0 !important; - padding: 0.75rem !important; /* Slightly reduced padding */ - box-sizing: border-box !important; - border-radius: 0.5rem !important; - overflow: hidden !important; /* Force content to stay within bounds */ - } - - /* Force grid to be contained */ - .calendar-grid { - display: grid !important; - grid-template-columns: repeat(7, 1fr) !important; - gap: 3px !important; /* Reduced gap */ - width: 100% !important; - max-width: 100% !important; /* Ensure it can't exceed container */ - overflow: visible !important; /* Allow cell content to be visible */ - padding: 0 !important; - margin: 0 !important; - } - - /* Ensure weekday headers don't overflow */ - .weekdays { - display: grid !important; - grid-template-columns: repeat(7, 1fr) !important; - gap: 3px !important; - width: 100% !important; - max-width: 100% !important; - padding: 0 !important; - margin: 0 0 8px 0 !important; - } - - /* Make date cells slightly smaller */ - .date-cell { - width: 100% !important; - height: auto !important; - min-height: 30px !important; - display: flex !important; - align-items: center !important; - justify-content: center !important; - padding: 0.2rem 0 !important; - font-size: 0.85rem !important; /* Slightly smaller text */ - margin: 0 !important; - box-sizing: border-box !important; - } - - /* Explicitly set column sizes */ - .calendar-grid > div, .weekdays > div { - width: 100% !important; - box-sizing: border-box !important; - } - - /* Additional safeguard for month selector */ - .date-picker-header { - padding: 0 !important; - margin-bottom: 0.75rem !important; - } -} - -/* iOS Toggle Switch */ -.toggle-container { - margin: 1em 0; - display: flex; - justify-content: space-between; - align-items: center; -} - -.toggle-labels { - display: flex; - flex-direction: column; -} - -.toggle-title { - font-weight: 500; - margin-bottom: 0.3em; -} - -.toggle-description { - font-size: 0.8em; - color: #666; - line-height: 1.2; -} - -.toggle-switch { - position: relative; - display: inline-block; - width: 50px; - height: 28px; - flex-shrink: 0; - margin-left: 12px; -} - -.toggle-switch input { - opacity: 0; - width: 0; - height: 0; -} - -.toggle-slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #ccc; - transition: .4s; - border-radius: 34px; -} - -.toggle-slider:before { - position: absolute; - content: ""; - height: 24px; - width: 24px; - left: 2px; - bottom: 2px; - background-color: white; - transition: .3s; - border-radius: 50%; - box-shadow: 0 1px 3px rgba(0,0,0,0.2); -} - -input:checked + .toggle-slider { - background-color: #2563eb; -} - -input:checked + .toggle-slider:before { - transform: translateX(22px); -} - -/* Mode labels */ -.mode-indicator { - margin-top: 0.8em; - font-size: 0.9em; - color: #555; - text-align: center; -} - -.mode-name { - font-weight: 600; - color: #2563eb; -} - -/* Modal Styles */ -.announcement-modal-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.5); - z-index: 2000; - display: flex; - align-items: center; - justify-content: center; - opacity: 0; - transition: opacity 0.3s ease; - pointer-events: none; -} - -.announcement-modal-overlay.visible { - opacity: 1; - pointer-events: auto; -} - -.announcement-modal { - background-color: white; - border-radius: 0.5rem; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - width: 90%; - max-width: 500px; - max-height: 90vh; - overflow-y: auto; - padding: 1.5rem; - position: relative; - transform: translateY(-20px); - transition: transform 0.3s ease; -} - -.announcement-modal-overlay.visible .announcement-modal { - transform: translateY(0); -} - -.announcement-modal-title { - font-size: 1.5rem; - font-weight: 600; - margin-bottom: 1rem; - color: #1a202c; - text-align: center; - font-family: var(--main-font); -} - -.announcement-modal-content { - font-size: 1rem; - line-height: 1.5; - color: #4a5568; - margin-bottom: 1.5rem; - font-family: var(--main-font); -} - -.announcement-modal-button { - display: block; - width: 100%; - padding: 0.75rem; - background-color: #2563eb; - color: white; - border: none; - border-radius: 0.375rem; - font-size: 1rem; - font-weight: 500; - cursor: pointer; - text-align: center; - transition: background-color 0.2s; - font-family: var(--main-font); -} - -.announcement-modal-button:hover { - background-color: #1d4ed8; -} - -.announcement-modal-button:active { - background-color: #1e40af; - transform: scale(0.98); -} - -/* Add more space between list items */ -.announcement-modal-content li { - margin-bottom: 0.75rem; -} - -/* Remove extra margin from the last list item */ -.announcement-modal-content li:last-child { - margin-bottom: 0; -} - -@media (max-width: 640px) { - .announcement-modal { - width: 85%; - padding: 1rem; - } - - .announcement-modal-title { - font-size: 1.25rem; - } - - .announcement-modal-content { - font-size: 0.95rem; - } -} |