Spaces:
Running
Running
| /* Modern CSS Reset & CSS Variables */ | |
| :root { | |
| --bg-color: #121212; | |
| --card-bg: #1e1e1e; | |
| --border-color: #333333; | |
| --text-primary: #e0e0e0; | |
| --text-secondary: #a0a0a0; | |
| --text-muted: #707070; | |
| /* Monochromatic Accent Colors */ | |
| --accent-cyan: #ffffff; | |
| --accent-purple: #e0e0e0; | |
| --accent-magenta: #cccccc; | |
| /* Strength colors - Monochromatic opacity scale */ | |
| --str-0: rgba(255, 255, 255, 0.2); | |
| --str-1: rgba(255, 255, 255, 0.4); | |
| --str-2: rgba(255, 255, 255, 0.6); | |
| --str-3: rgba(255, 255, 255, 0.8); | |
| --str-4: rgba(255, 255, 255, 1.0); | |
| --str-5: #ffffff; | |
| --transition-speed: 0.2s; | |
| } | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| body { | |
| background-color: var(--bg-color); | |
| color: var(--text-primary); | |
| font-family: 'JetBrains Mono', monospace; | |
| min-height: 100vh; | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| overflow-x: hidden; | |
| position: relative; | |
| } | |
| /* Removed Ambient Orbs */ | |
| /* App Layout Container */ | |
| .app-container { | |
| width: 100%; | |
| max-width: 480px; | |
| padding: 20px; | |
| z-index: 10; | |
| } | |
| .app-header { | |
| text-align: center; | |
| margin-bottom: 24px; | |
| } | |
| .logo { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 10px; | |
| margin-bottom: 6px; | |
| } | |
| .logo-icon { | |
| color: var(--accent-cyan); | |
| filter: drop-shadow(0 0 8px rgba(0, 242, 254, 0.6)); | |
| } | |
| .app-header h1 { | |
| font-size: 20px; | |
| font-weight: 700; | |
| letter-spacing: 1px; | |
| color: var(--text-primary); | |
| } | |
| .subtitle { | |
| font-size: 13px; | |
| color: var(--text-secondary); | |
| letter-spacing: 0.5px; | |
| } | |
| /* Flat Card Panel */ | |
| .glass-card { | |
| background: var(--card-bg); | |
| border: 1px solid var(--border-color); | |
| border-radius: 8px; | |
| padding: 30px; | |
| transition: border var(--transition-speed); | |
| } | |
| .glass-card:hover { | |
| border-color: #555555; | |
| } | |
| /* Password Display Wrapper */ | |
| .password-display-wrapper { | |
| position: relative; | |
| background: #151515; | |
| border: 1px solid var(--border-color); | |
| border-radius: 6px; | |
| padding: 8px 16px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 24px; | |
| transition: border var(--transition-speed); | |
| } | |
| .password-display-wrapper:focus-within { | |
| border-color: #777777; | |
| } | |
| .password-input { | |
| width: 100%; | |
| background: transparent; | |
| border: none; | |
| outline: none; | |
| color: #ffffff; | |
| font-family: 'JetBrains Mono', monospace; | |
| font-size: 19px; | |
| font-weight: 500; | |
| letter-spacing: 0.5px; | |
| padding: 12px 0; | |
| overflow-x: auto; | |
| white-space: nowrap; | |
| text-overflow: ellipsis; | |
| } | |
| @keyframes spin { | |
| 0% { transform: rotate(0deg); } | |
| 100% { transform: rotate(360deg); } | |
| } | |
| .spinning { | |
| animation: spin 0.5s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* Hide scrollbar for password input */ | |
| .password-input::-webkit-scrollbar { | |
| display: none; | |
| } | |
| .password-input { | |
| -ms-overflow-style: none; /* IE and Edge */ | |
| scrollbar-width: none; /* Firefox */ | |
| } | |
| .display-actions { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| margin-left: 12px; | |
| } | |
| .action-btn { | |
| background: rgba(255, 255, 255, 0.03); | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: 12px; | |
| width: 42px; | |
| height: 42px; | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| color: var(--text-secondary); | |
| cursor: pointer; | |
| position: relative; | |
| transition: all var(--transition-speed) cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .action-btn:hover { | |
| background: rgba(255, 255, 255, 0.08); | |
| border-color: rgba(255, 255, 255, 0.2); | |
| color: #ffffff; | |
| transform: translateY(-2px); | |
| } | |
| .action-btn:active { | |
| transform: translateY(0); | |
| } | |
| /* Specific button styles */ | |
| #btn-regenerate:hover { | |
| color: #ffffff; | |
| border-color: #777777; | |
| } | |
| #btn-regenerate:hover .icon-refresh { | |
| transform: rotate(180deg); | |
| } | |
| .icon-refresh { | |
| transition: transform 0.5s ease; | |
| } | |
| #btn-copy:hover { | |
| color: #ffffff; | |
| border-color: #777777; | |
| } | |
| /* Tooltip design */ | |
| .tooltip { | |
| position: absolute; | |
| bottom: calc(100% + 10px); | |
| left: 50%; | |
| transform: translateX(-50%) translateY(4px); | |
| background: rgba(15, 17, 28, 0.95); | |
| border: 1px solid rgba(255, 255, 255, 0.15); | |
| color: #ffffff; | |
| font-size: 11px; | |
| font-weight: 500; | |
| padding: 5px 10px; | |
| border-radius: 6px; | |
| opacity: 0; | |
| pointer-events: none; | |
| white-space: nowrap; | |
| box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); | |
| transition: all var(--transition-speed) ease; | |
| } | |
| .tooltip::after { | |
| content: ''; | |
| position: absolute; | |
| top: 100%; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| border-width: 5px; | |
| border-style: solid; | |
| border-color: rgba(15, 17, 28, 0.95) transparent transparent transparent; | |
| } | |
| .action-btn:hover .tooltip { | |
| opacity: 1; | |
| transform: translateX(-50%) translateY(0); | |
| } | |
| /* Copy State Classes */ | |
| .action-btn.copied { | |
| background: rgba(0, 242, 254, 0.1); | |
| color: var(--accent-cyan); | |
| border-color: var(--accent-cyan); | |
| } | |
| /* Settings Controls Section */ | |
| .controls-section { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| margin-bottom: 24px; | |
| } | |
| .control-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| } | |
| .control-group.border-top { | |
| border-top: 1px solid rgba(255, 255, 255, 0.06); | |
| padding-top: 20px; | |
| } | |
| .control-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .control-header label { | |
| font-size: 14px; | |
| font-weight: 500; | |
| color: var(--text-secondary); | |
| } | |
| .badge { | |
| background: #151515; | |
| border: 1px solid var(--border-color); | |
| padding: 4px 10px; | |
| border-radius: 4px; | |
| font-family: 'JetBrains Mono', monospace; | |
| font-size: 13px; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| } | |
| .section-label { | |
| font-size: 13px; | |
| font-weight: 600; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 1px; | |
| } | |
| /* Custom Range Slider */ | |
| .slider-wrapper { | |
| position: relative; | |
| width: 100%; | |
| height: 6px; | |
| margin: 10px 0; | |
| } | |
| .range-slider { | |
| -webkit-appearance: none; | |
| width: 100%; | |
| height: 100%; | |
| border-radius: 3px; | |
| background: rgba(255, 255, 255, 0.06); | |
| outline: none; | |
| transition: background 0.3s; | |
| } | |
| .range-slider::-webkit-slider-thumb { | |
| -webkit-appearance: none; | |
| appearance: none; | |
| width: 14px; | |
| height: 14px; | |
| border-radius: 4px; | |
| background: #ffffff; | |
| border: 1px solid var(--border-color); | |
| cursor: pointer; | |
| transition: transform var(--transition-speed) ease, background-color var(--transition-speed); | |
| } | |
| .range-slider::-webkit-slider-thumb:hover { | |
| transform: scale(1.2); | |
| background-color: var(--accent-cyan); | |
| } | |
| .range-slider::-moz-range-thumb { | |
| width: 14px; | |
| height: 14px; | |
| border-radius: 4px; | |
| background: #ffffff; | |
| border: 1px solid var(--border-color); | |
| cursor: pointer; | |
| transition: transform var(--transition-speed) ease, background-color var(--transition-speed); | |
| } | |
| .range-slider::-moz-range-thumb:hover { | |
| transform: scale(1.2); | |
| background-color: var(--accent-cyan); | |
| } | |
| /* Grid Checkboxes */ | |
| .checkbox-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 12px; | |
| } | |
| /* Custom Checkbox Design */ | |
| .custom-checkbox { | |
| display: flex; | |
| align-items: center; | |
| position: relative; | |
| padding-left: 28px; | |
| cursor: pointer; | |
| font-size: 14px; | |
| font-weight: 500; | |
| color: var(--text-primary); | |
| user-select: none; | |
| height: 24px; | |
| } | |
| .custom-checkbox input { | |
| position: absolute; | |
| opacity: 0; | |
| cursor: pointer; | |
| height: 0; | |
| width: 0; | |
| } | |
| .checkmark { | |
| position: absolute; | |
| top: 2px; | |
| left: 0; | |
| height: 18px; | |
| width: 18px; | |
| background-color: #151515; | |
| border: 1px solid var(--border-color); | |
| border-radius: 4px; | |
| transition: all var(--transition-speed) cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .custom-checkbox:hover input ~ .checkmark { | |
| border-color: #777777; | |
| background-color: #222222; | |
| } | |
| .custom-checkbox input:checked ~ .checkmark { | |
| background-color: #ffffff; | |
| border-color: #ffffff; | |
| } | |
| /* Create the checkmark indicator */ | |
| .checkmark::after { | |
| content: ""; | |
| position: absolute; | |
| display: none; | |
| left: 6px; | |
| top: 2px; | |
| width: 4px; | |
| height: 9px; | |
| border: solid #000; | |
| border-width: 0 2px 2px 0; | |
| transform: rotate(45deg); | |
| } | |
| .custom-checkbox input:checked ~ .checkmark::after { | |
| display: block; | |
| } | |
| /* Special styling for custom toggle option */ | |
| .toggle-option { | |
| padding-left: 32px; | |
| height: auto; | |
| } | |
| .toggle-option .checkmark { | |
| height: 20px; | |
| width: 20px; | |
| border-radius: 6px; | |
| top: 0; | |
| } | |
| .toggle-option .checkmark::after { | |
| left: 6px; | |
| top: 2px; | |
| } | |
| .subtext { | |
| display: block; | |
| font-size: 11px; | |
| color: var(--text-muted); | |
| font-weight: 400; | |
| margin-top: 2px; | |
| } | |
| /* Password Strength & Metrics Panel */ | |
| .metrics-section { | |
| background: rgba(0, 0, 0, 0.18); | |
| border: 1px solid rgba(255, 255, 255, 0.04); | |
| border-radius: 16px; | |
| padding: 16px 20px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| } | |
| .metrics-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| font-size: 12px; | |
| font-weight: 600; | |
| color: var(--text-secondary); | |
| letter-spacing: 0.5px; | |
| } | |
| .metrics-header strong { | |
| font-family: 'JetBrains Mono', monospace; | |
| font-size: 13px; | |
| color: #ffffff; | |
| } | |
| /* 5-segment meter styling */ | |
| .strength-meter { | |
| display: flex; | |
| gap: 6px; | |
| width: 100%; | |
| height: 6px; | |
| border-radius: 3px; | |
| } | |
| .meter-segment { | |
| flex: 1; | |
| height: 100%; | |
| background-color: rgba(255, 255, 255, 0.06); | |
| border-radius: 3px; | |
| transition: background-color 0.4s ease, box-shadow 0.4s ease; | |
| } | |
| /* Visual Glow classes */ | |
| .meter-segment.active-0 { background-color: var(--str-0); } | |
| .meter-segment.active-1 { background-color: var(--str-1); } | |
| .meter-segment.active-2 { background-color: var(--str-2); } | |
| .meter-segment.active-3 { background-color: var(--str-3); } | |
| .meter-segment.active-4 { background-color: var(--str-4); } | |
| .meter-segment.active-5 { background-color: var(--str-5); } | |
| .crack-time-wrapper { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 12px; | |
| color: var(--text-secondary); | |
| } | |
| .icon-clock { | |
| color: var(--text-muted); | |
| } | |
| #crack-time { | |
| font-weight: 500; | |
| } | |
| /* Active coloring for crack time text based on strength rating */ | |
| .strength-label-0 { color: var(--str-0) ; } | |
| .strength-label-1 { color: var(--str-1) ; } | |
| .strength-label-2 { color: var(--str-2) ; } | |
| .strength-label-3 { color: var(--str-3) ; } | |
| .strength-label-4 { color: var(--str-4) ; } | |
| .strength-label-5 { color: var(--str-5) ; font-weight: 700 ; } | |
| /* App Footer Info */ | |
| .app-footer { | |
| text-align: center; | |
| margin-top: 24px; | |
| font-size: 11px; | |
| color: var(--text-muted); | |
| } | |
| /* Responsiveness overrides */ | |
| @media (max-width: 480px) { | |
| .glass-card { | |
| padding: 20px; | |
| border-radius: 20px; | |
| } | |
| .checkbox-grid { | |
| grid-template-columns: 1fr; | |
| gap: 10px; | |
| } | |
| .password-input { | |
| font-size: 17px; | |
| } | |
| } | |