Files
mario_scraper/static/css/styles.css
2025-05-27 12:22:52 +03:00

368 lines
6.6 KiB
CSS

: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);
}
}