/* ========================================= UPDATED CSS for Categorized Options ========================================= */ :root { --bg-color: #1a1a1d; --card-bg: #25252a; --text-color: #e0e0e0; --primary-color: #72ff72; /* Khanware Green */ --secondary-color: #c3073f; /* A contrasting accent */ --input-bg: #333; --input-border: #444; --button-bg: var(--primary-color); --button-text: #000; --button-hover-bg: #62e062; --font-family: 'Poppins', sans-serif; --border-radius: 8px; --box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); --category-bg: rgba(0, 0, 0, 0.15); /* Background for categories */ --category-border: #3a3a3f; /* Border for categories */ } * { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; } body { font-family: var(--font-family); background-color: var(--bg-color); color: var(--text-color); line-height: 1.6; display: flex; justify-content: center; align-items: flex-start; /* Align to top for long content */ min-height: 100vh; padding: 20px; font-size: 16px; } .container { background-color: var(--card-bg); padding: 30px 40px; border-radius: var(--border-radius); box-shadow: var(--box-shadow); width: 100%; max-width: 900px; display: flex; flex-direction: column; gap: 30px; /* Spacing between main sections */ } header { text-align: center; border-bottom: 1px solid var(--input-border); padding-bottom: 20px; margin-bottom: 10px; /* Adjusted spacing */ } header h1 { color: var(--primary-color); margin-bottom: 5px; font-weight: 600; } .subtitle { font-size: 0.9em; color: #aaa; } .subtitle a { color: var(--primary-color); text-decoration: none; transition: color 0.3s ease; } .subtitle a:hover { color: var(--button-hover-bg); } main { display: flex; flex-direction: column; gap: 25px; /* Spacing between sections within main */ } .editor-section label, .output-header label { display: block; margin-bottom: 10px; font-weight: 600; color: var(--text-color); } textarea { width: 100%; min-height: 200px; background-color: var(--input-bg); border: 1px solid var(--input-border); color: var(--text-color); padding: 15px; border-radius: var(--border-radius); font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; font-size: 0.95em; resize: vertical; transition: border-color 0.3s ease, box-shadow 0.3s ease; } textarea:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(114, 255, 114, 0.2); } textarea::placeholder { color: #777; } /* --- Options Section START --- */ .options-section { /* Removed background, padding, direct border here */ /* It's now just a container */ } .options-main-title { /* Style for the main "Obfuscation Options" H2 */ text-align: center; margin-bottom: 25px; font-weight: 600; font-size: 1.4em; /* Slightly larger title */ color: var(--primary-color); padding-bottom: 10px; border-bottom: 1px solid var(--input-border); } /* Styles for Preset/Target Group */ .basic-options { display: flex; gap: 25px; /* Increased gap */ margin-bottom: 30px; /* Space before checkbox categories */ flex-wrap: wrap; /* Allow wrapping */ background-color: var(--category-bg); padding: 20px; /* More padding */ border-radius: var(--border-radius); border: 1px solid var(--category-border); } .basic-options > div { /* Target each select+label pair */ flex: 1; /* Allow them to grow */ min-width: 220px; /* Adjusted minimum width */ display: flex; flex-direction: column; /* Stack label above select */ } .basic-options label { margin-bottom: 8px; /* Space between label and select */ font-weight: 600; font-size: 0.9em; color: var(--text-color); } .basic-options select { width: 100%; /* Make selects fill their container */ padding: 10px 12px; /* Slightly larger padding */ background-color: var(--input-bg); border: 1px solid var(--input-border); color: var(--text-color); border-radius: calc(var(--border-radius) - 2px); /* Slightly smaller radius for inner element */ font-family: var(--font-family); cursor: pointer; font-size: 0.95em; transition: border-color 0.3s ease, box-shadow 0.3s ease; /* Add transition */ } .basic-options select:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(114, 255, 114, 0.2); } /* Wrapper for all checkbox categories */ .option-categories { display: flex; flex-direction: column; gap: 25px; /* Space between categories */ } /* Individual category block */ .option-category { background-color: var(--category-bg); padding: 20px; border-radius: var(--border-radius); border: 1px solid var(--category-border); box-shadow: 0 3px 8px rgba(0,0,0, 0.25); /* Slightly more prominent shadow */ } .option-category h3 { margin: -20px -20px 20px -20px; /* Pull header to edges, add bottom margin */ padding: 12px 20px; /* Adjust padding */ font-size: 1.1em; font-weight: 600; color: var(--text-color); background-color: rgba(255, 255, 255, 0.06); /* Slightly different header background */ border-bottom: 1px solid var(--category-border); border-radius: var(--border-radius) var(--border-radius) 0 0; /* Top corners rounded */ } /* Grid for checkboxes within a category */ .option-category-grid { display: grid; /* More robust auto-fit */ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px 15px; /* Row and column gap */ } /* Checkbox Label Styles */ .checkbox-label { display: flex; align-items: center; cursor: pointer; font-size: 0.9em; background-color: var(--input-bg); /* Use input background */ padding: 8px 12px; /* Adjusted padding */ border-radius: 5px; /* Smaller radius */ transition: background-color 0.2s ease, border-color 0.2s ease; border: 1px solid transparent; /* Start with transparent border */ color: var(--text-color); /* Ensure text color is set */ } .checkbox-label:hover { background-color: #3f3f44; /* Hover background */ border-color: #555; /* Show border on hover */ } .checkbox-label input[type="checkbox"] { margin-right: 10px; /* More space next to checkbox */ accent-color: var(--primary-color); /* Checkbox color */ width: 16px; height: 16px; cursor: pointer; flex-shrink: 0; /* Prevent shrinking if label text is long */ } /* --- Options Section END --- */ .action-section { display: flex; justify-content: center; align-items: center; gap: 20px; margin: 15px 0; /* Slightly more vertical margin */ } button { background-color: var(--button-bg); color: var(--button-text); border: none; padding: 12px 25px; font-size: 1.05em; /* Slightly larger button text */ font-weight: 600; border-radius: var(--border-radius); cursor: pointer; transition: background-color 0.3s ease, transform 0.1s ease, box-shadow 0.2s ease; /* Added shadow transition */ box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2); } button:hover { background-color: var(--button-hover-bg); transform: translateY(-2px); /* More lift on hover */ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); /* Enhanced shadow on hover */ } button:active { transform: translateY(0px); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); /* Active state shadow */ } button:disabled { background-color: #555; cursor: not-allowed; transform: none; box-shadow: none; color: #999; } #copyBtn { background-color: var(--secondary-color); color: white; padding: 5px 15px; font-size: 0.8em; box-shadow: none; } #copyBtn:hover { background-color: #a30630; transform: translateY(-1px); /* Add slight lift */ } #copyBtn:active { transform: translateY(0px); } .output-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; } .output-section textarea { min-height: 250px; background-color: #111; /* Keep darker for output */ border-color: #333; /* Slightly lighter border for output area */ } .status-message { margin-top: 15px; /* More space for status */ min-height: 1.2em; /* Reserve space to prevent layout shifts */ font-size: 0.9em; text-align: center; transition: color 0.3s ease; /* Smooth color change */ } .status-message.error { color: #ff6b6b; /* Error red */ font-weight: 600; } .status-message.success { color: var(--primary-color); font-weight: 600; } /* Loading Indicator */ .loading { display: flex; /* Kept flex, already aligned by action-section */ /* height: 20px; Remove fixed height if it causes issues */ } .loading span { display: inline-block; width: 8px; height: 8px; margin: 0 3px; background-color: var(--primary-color); border-radius: 50%; animation: loadingBounce 1.4s infinite ease-in-out both; } .loading span:nth-child(1) { animation-delay: -0.32s; } .loading span:nth-child(2) { animation-delay: -0.16s; } @keyframes loadingBounce { 0%, 80%, 100% { transform: scale(0); opacity: 0; } /* Fade out too */ 40% { transform: scale(1.0); opacity: 1; } } footer { text-align: center; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--input-border); font-size: 0.8em; color: #888; } /* --- Responsive Adjustments --- */ @media (max-width: 768px) { body { padding: 15px; /* Adjust padding */ } .container { padding: 20px 25px; /* Adjust padding */ } .basic-options { flex-direction: column; /* Stack preset/target */ gap: 15px; margin-bottom: 25px; } .basic-options > div { min-width: 0; /* Reset min-width */ } .option-category-grid { /* Ensure they fit */ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); } .option-category { padding: 15px; } .option-category h3 { margin: -15px -15px 15px -15px; /* Adjust negative margin */ padding: 10px 15px; /* Adjust padding */ font-size: 1.05em; } textarea { min-height: 180px; /* Adjust height */ } .output-section textarea { min-height: 220px; /* Adjust height */ } } @media (max-width: 480px) { header h1 { font-size: 1.8em; } .container { padding: 15px; } .option-category-grid { /* Stack checkboxes */ grid-template-columns: 1fr; gap: 10px; } .checkbox-label { font-size: 0.9em; /* Keep readable */ padding: 10px 12px; /* Slightly larger tap target */ } .options-main-title { font-size: 1.2em; margin-bottom: 20px; } .basic-options { padding: 15px; } .basic-options label { font-size: 0.85em; } .basic-options select { font-size: 0.9em; padding: 8px 10px; } button { padding: 10px 20px; font-size: 1em; } #copyBtn { padding: 4px 12px; font-size: 0.75em; } .action-section { flex-direction: column; /* Stack button and loader */ gap: 15px; } }