:root { /* Catppuccin Mocha */ --rosewater: #f5e0dc; --flamingo: #f2cdcd; --pink: #f5c2e7; --mauve: #cba6f7; --red: #f38ba8; --maroon: #eba0ac; --peach: #fab387; --yellow: #f9e2af; --green: #a6e3a1; --teal: #94e2d5; --sky: #89dceb; --sapphire: #74c7ec; --blue: #89b4fa; --lavender: #b4befe; --text: #cdd6f4; --subtext1: #bac2de; --subtext0: #a6adc8; --overlay2: #9399b2; --overlay1: #7f849c; --overlay0: #6c7086; --surface2: #585b70; --surface1: #45475a; --surface0: #313244; --base: #1e1e2e; --mantle: #181825; --crust: #11111b; } * { box-sizing: border-box; } body { font-family: 'Inter', sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; color: var(--text); background: var(--base); } h1, h2, h3 { color: var(--text); margin-bottom: 1.5rem; } .form-group { margin-bottom: 1.5rem; } input[type="text"], input[type="number"] { width: 100%; padding: 0.75rem; margin-top: 0.5rem; border: 1px solid var(--surface1); border-radius: 8px; font-size: 1rem; background: var(--surface0); color: var(--text); transition: border-color 0.2s; } input[type="text"]:focus, input[type="number"]:focus { outline: none; border-color: var(--blue); } /* Убираем стрелки для input number */ input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; } input[type="number"] { -moz-appearance: textfield; } button { padding: 0.75rem 1.5rem; background-color: var(--blue); color: var(--base); border: none; border-radius: 8px; cursor: pointer; font-size: 1rem; font-weight: 500; transition: all 0.2s; } button:hover { background-color: var(--lavender); } button:disabled { background-color: var(--overlay0); cursor: not-allowed; } .status { margin: 1.5rem 0; padding: 1rem; border: 1px solid var(--surface1); border-radius: 8px; background-color: var(--surface0); } .error { color: var(--red); } .files { margin-top: 2rem; } .files ul { list-style: none; padding: 0; } .files li { margin: 0.75rem 0; display: flex; align-items: center; justify-content: space-between; padding: 1rem; border: 1px solid var(--surface1); border-radius: 8px; transition: all 0.2s; background: var(--surface0); } .files li:hover { background-color: var(--surface1); } .file-info { display: flex; align-items: center; justify-content: flex-end; gap: 1.5rem; width: 100%; } .download-link { color: var(--text); text-decoration: none; position: relative; padding-left: 2rem; margin-right: auto; font-weight: 500; transition: color 0.2s; } .download-link:hover { color: var(--blue); } .download-link::before { content: "📥"; position: absolute; left: 0; top: 50%; transform: translateY(-50%); } .file-date, .file-size { color: var(--subtext0); font-size: 0.9rem; } .delete-btn { background: none; border: none; color: var(--red); cursor: pointer; padding: 0.5rem; font-size: 1.2rem; transition: all 0.2s; } .delete-btn:hover { color: var(--maroon); } /* Стилі для вкладок */ .tabs { margin-bottom: 20px; } .tab-buttons { display: flex; gap: 10px; margin-bottom: 20px; align-items: center; justify-content: flex-start; } .tab-button { height: 44px; padding: 0 24px; background-color: var(--surface0); border: none; border-radius: 8px; cursor: pointer; font-size: 14px; color: var(--subtext0); transition: all 0.2s; } .tab-button:hover { background-color: var(--surface1); color: var(--text); } .tab-button.active { background-color: var(--blue); color: var(--base); } .tab-content { display: none; background: var(--surface0); padding: 20px; border-radius: 8px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .tab-content.active { display: block; } .file-select { width: 100%; padding: 0.75rem; margin-top: 0.5rem; border: 1px solid var(--surface1); border-radius: 8px; font-size: 1rem; background: var(--surface0); color: var(--text); transition: border-color 0.2s; -webkit-appearance: none; -moz-appearance: none; appearance: none; background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23cdd6f4' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 1em; } .file-select:focus { outline: none; border-color: var(--blue); } .items-button-group { display: flex; align-items: center; gap: 0.5rem; margin-left: auto; height: 44px; } .categories-section { margin-bottom: 2rem; background: var(--surface0); border-radius: 8px; } .category-form { display: flex; gap: 1rem; align-items: flex-end; margin-bottom: 1rem; } .category-form .form-group { margin-bottom: 0; } .category-form button { flex: 0 0 auto; } .secondary-button { background-color: var(--surface1); color: var(--text); } .secondary-button:hover { background-color: var(--surface2); } .categories-list ul { list-style: none; padding: 0; } .categories-list li { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem; margin: 0.5rem 0; background: var(--surface1); border-radius: 4px; } .yml-generation-section { margin-bottom: 2rem; background: var(--surface0); border-radius: 8px; } .loading { position: relative; pointer-events: none; opacity: 0.7; } .loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; margin: -10px 0 0 -10px; border: 2px solid var(--blue); border-top-color: transparent; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .error-message { position: fixed; top: 20px; right: 20px; padding: 1rem; background: var(--red); color: var(--base); border-radius: 8px; animation: slideIn 0.3s ease-out; } @keyframes slideIn { from { transform: translateX(100%); } to { transform: translateX(0); } }