/* Box sizing reset */ *, *::before, *::after { box-sizing: border-box; } :root { font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; color-scheme: light dark; /* --- Default Dark Theme Variables --- */ --bg-gradient: radial-gradient(circle at center, #444 0%, #000000 100%); --glass-bg: rgba(255, 255, 255, 0.1); --glass-border: rgba(255, 255, 255, 0.2); --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); --text-color: #ffffff; --text-strong: #ffffff; --text-secondary: rgba(255, 255, 255, 0.85); --text-muted: rgba(255, 255, 255, 0.7); --accent-cyan: #00f2fe; --accent-purple: #4facfe; --primary-accent: #00f2fe; --title-glow: rgba(0, 255, 255, 0.2); --toggle-bg: rgba(255, 255, 255, 0.08); --toggle-border: rgba(255, 255, 255, 0.2); --toggle-shadow: 0 0 15px rgba(0, 0, 0, 0.2); --toggle-btn-border: rgba(255, 255, 255, 0.2); --toggle-hover-border: #ffffff; --toggle-active-shadow: 0 0 10px rgba(0, 242, 255, 0.3); --panel-bg: rgba(0, 0, 0, 0.4); --panel-border: rgba(255, 255, 255, 0.1); --panel-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); --button-bg: rgba(255, 255, 255, 0.1); --button-border: rgba(255, 255, 255, 0.2); --button-text: #ffffff; --button-hover-bg: rgba(255, 255, 255, 0.25); --button-hover-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); --button-active-shadow: 0 0 20px rgba(79, 172, 254, 0.4); --title-gradient: linear-gradient(45deg, #00f2fe, #4facfe); --ripple-color: rgba(255, 255, 255, 0.3); --nav-item-weight: 400; --list-hover-bg: rgba(255, 255, 255, 0.05); --header-bg: rgba(0, 0, 0, 0.6); color: var(--text-color); background-color: #242424; /* Fallback */ background: var(--bg-gradient); background-attachment: fixed; font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } :root[data-theme="light"] { --bg-gradient: radial-gradient(circle at center, #ffffff 0%, #e5e7eb 100%); --glass-bg: rgba(255, 255, 255, 0.75); --glass-border: rgba(15, 23, 42, 0.12); --glass-shadow: 0 8px 32px 0 rgba(15, 23, 42, 0.12); --text-color: #000000; --text-strong: #000000; --text-secondary: #000000; --text-muted: rgba(0, 0, 0, 0.7); --accent-cyan: #0ea5e9; --accent-purple: #6366f1; --primary-accent: #0ea5e9; --title-glow: rgba(14, 165, 233, 0.35); --toggle-bg: rgba(255, 255, 255, 0.85); --toggle-border: rgba(15, 23, 42, 0.12); --toggle-shadow: 0 8px 20px rgba(15, 23, 42, 0.12); --toggle-btn-border: rgba(15, 23, 42, 0.18); --toggle-hover-border: rgba(15, 23, 42, 0.5); --toggle-active-shadow: 0 0 12px rgba(14, 165, 233, 0.25); --panel-bg: rgba(255, 255, 255, 0.7); --panel-border: rgba(15, 23, 42, 0.12); --panel-shadow: 0 12px 24px rgba(15, 23, 42, 0.12); --button-bg: rgba(255, 255, 255, 0.85); --button-border: rgba(15, 23, 42, 0.16); --button-text: #0f172a; --button-hover-bg: rgba(0, 0, 0, 0.05); --button-hover-shadow: 0 6px 18px rgba(15, 23, 42, 0.18); --button-active-shadow: 0 0 18px rgba(14, 165, 233, 0.25); --title-gradient: linear-gradient(45deg, #0ea5e9, #6366f1); --ripple-color: rgba(0, 0, 0, 0.1); --list-hover-bg: rgba(0, 0, 0, 0.05); --header-bg: rgba(255, 255, 255, 0.9); } body { margin: 0; display: flex; min-width: 320px; min-height: 100vh; overflow-x: hidden; user-select: none; -webkit-user-select: none; } .selectable { user-select: text; -webkit-user-select: text; cursor: text; } #app { width: 100%; min-height: 100vh; display: flex; flex-direction: column; } @media (min-width: 768px) { body { min-height: 100vh; overflow: auto; } #app { min-height: 100vh; overflow: auto; } } /* Removed global front camera mirror to restore stability */ /* --- Shared styles for all tools (moved from tools.css) --- */ .tool-container { display: flex; justify-content: center; width: 100%; max-width: 800px; margin: 0 auto; height: 100%; padding: 0.5rem; } .tool-panel { width: 100%; padding: 1rem; border-radius: 16px; display: flex; flex-direction: column; gap: 1.5rem; max-height: 100%; overflow-y: auto; background: var(--glass-bg); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid var(--glass-border); box-shadow: var(--glass-shadow); } /* Custom scrollbar for tool panel */ .tool-panel::-webkit-scrollbar { width: 8px; } .tool-panel::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.1); border-radius: 4px; } .tool-panel::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2); border-radius: 4px; } .tool-panel::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.3); } .tool-title { margin: 0; text-align: center; font-size: 1.5rem; font-weight: 600; background: var(--title-gradient); -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; filter: drop-shadow(0 0 10px var(--title-glow)); } :root[data-theme="light"] .tool-title { /* background: none !important; -webkit-background-clip: unset !important; background-clip: unset !important; color: #000000 !important; -webkit-text-fill-color: #000000 !important; filter: none !important; */ } .tool-textarea { width: 100%; height: 100%; padding: 1rem; background-color: rgba(0, 0, 0, 0.2) !important; border: 1px solid var(--toggle-border); border-radius: 12px; color: #ffffff !important; /* Explicit white color for dark mode */ font-family: monospace; font-size: 1rem; line-height: 1.6; resize: none; transition: all 0.3s ease; box-sizing: border-box; } :root[data-theme="light"] .tool-textarea { color: #000000 !important; background-color: rgba(255, 255, 255, 0.5) !important; } .tool-textarea:focus { outline: none; border-color: #00f2fe !important; /* Force cyan accent */ box-shadow: 0 0 0 1px #00f2fe !important; } .result-area { display: flex; flex-direction: column; flex: 1; min-height: 200px; } .result-area label { margin-bottom: 0.5rem; font-weight: 600; color: var(--text-secondary); } /* Common UI Element Styles */ .glass-panel { background: var(--glass-bg); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid var(--glass-border); box-shadow: var(--glass-shadow); } @media (max-width: 640px) { .glass-panel:not(.modal-content) { background: transparent; backdrop-filter: none; -webkit-backdrop-filter: none; border: none; box-shadow: none; } } .btn-neon { background: var(--button-bg); border: 1px solid var(--button-border); color: var(--button-text); padding: 8px 16px; border-radius: 8px; font-weight: 600; cursor: pointer; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); display: flex; align-items: center; justify-content: center; gap: 8px; outline: none; /* Remove focus outline */ } /* Global button styles */ button { user-select: none; -webkit-user-select: none; } /* Remove focus outline for all buttons */ button:focus { outline: none; } .btn-neon:hover { background: var(--button-hover-bg); transform: translateY(-2px); box-shadow: var(--button-hover-shadow); border-color: var(--accent-cyan); } .btn-neon:active { transform: translateY(1px); box-shadow: var(--button-active-shadow); } .btn-neon.danger { background: rgba(239, 68, 68, 0.2); border-color: rgba(239, 68, 68, 0.6); color: #fee2e2; } .btn-neon.danger:hover { background: rgba(239, 68, 68, 0.3); border-color: rgba(239, 68, 68, 0.85); box-shadow: 0 8px 20px rgba(239, 68, 68, 0.2); } :root[data-theme="light"] .btn-neon.danger { color: #7f1d1d; } .icon-only { padding: 8px; border-radius: 50%; width: 40px; height: 40px; } .unselectable { user-select: none; -webkit-user-select: none; } /* Ripple Effect */ span.ripple { position: absolute; border-radius: 50%; transform: scale(0); animation: ripple 600ms linear; background-color: var(--ripple-color); pointer-events: none; } @keyframes ripple { to { transform: scale(4); opacity: 0; } } /* --- Global Input/Select Focus Styles --- */ input:focus, select:focus, textarea:focus, button:focus { outline: none; } /* Custom focus ring for all form elements */ input:focus, select:focus, textarea:focus { border-color: var(--primary-accent); box-shadow: 0 0 0 1px var(--primary-accent); }