
/* styles.css / / Базовый сброс */ *, *::before, *::after { box-sizing: border-box; }

:where(h1,h2,h3,h4,h5,h6,p,ul,ol,figure,blockquote,dl,dd) { margin: 0; }

img, svg, video, canvas { display: block; max-width: 100%; height: auto; }

a { color: inherit; text-decoration: none; }

button, input, textarea, select { font: inherit; color: inherit; }

:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {

{ animation: none !important; transition: none !important; scroll-behavior: auto !important; } }
/* Переменные темы и масштабов / :root { / Цвета (светлая тема по умолчанию) */ --color-bg: #ffffff; --color-surface: #ffffff; --color-text: #111827; --color-muted: #6b7280; --color-border: #e5e7eb; --color-primary: #3b82f6; --color-primary-contrast: #ffffff; --color-focus: #93c5fd;

/* Размеры/радиусы/тени */ --radius-sm: 6px; --radius-md: 10px; --radius-lg: 16px; --shadow-sm: 0 1px 2px rgba(0,0,0,0.06); --shadow-md: 0 6px 18px rgba(0,0,0,0.10);

/* Шкала отступов */ --space-0: 0; --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem; --space-5: 1.5rem; --space-6: 2rem; --space-7: 3rem; --space-8: 4rem;

/* Контейнер и брейкпоинты / --container-max: 72rem; / ~1152px / --bp-sm: 30rem; / 480px / --bp-md: 48rem; / 768px / --bp-lg: 64rem; / 1024px / --bp-xl: 80rem; / 1280px */ }

/* Авто-тема по системным настройкам (если не установлен data-theme) */ @media (prefers-color-scheme: dark) { :root:not([data-theme]) { color-scheme: dark; --color-bg: #0b0b0c; --color-surface: #141416; --color-text: #e5e7eb; --color-muted: #9aa2b1; --color-border: #26272b; --color-primary: #60a5fa; --color-primary-contrast: #0b0b0c; --color-focus: #2563eb; } }

/* Принудительная тёмная тема через атрибут [data-theme="dark"] на html/body */ [data-theme="dark"] { color-scheme: dark; --color-bg: #0b0b0c; --color-surface: #141416; --color-text: #e5e7eb; --color-muted: #9aa2b1; --color-border: #26272b; --color-primary: #60a5fa; --color-primary-contrast: #0b0b0c; --color-focus: #2563eb; }

/* Базовая типографика и фон */ html { font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, "Noto Sans", "Helvetica Neue", sans-serif; font-size: 16px; line-height: 1.5; color-scheme: light; hanging-punctuation: first last; }

body { min-height: 100dvh; background: var(--color-bg); color: var(--color-text); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }

/* Контейнер */ .container { max-width: min(var(--container-max), 100% - 2rem); margin-inline: auto; }

/* Типографика */ h1, h2, h3, h4, h5, h6 { font-weight: 700; line-height: 1.2; }

h1 { font-size: clamp(2rem, 1.2rem + 3.5vw, 3rem); letter-spacing: -0.02em; } h2 { font-size: clamp(1.75rem, 1.1rem + 2.2vw, 2.25rem); letter-spacing: -0.01em; } h3 { font-size: clamp(1.375rem, 1rem + 1.2vw, 1.75rem); } h4 { font-size: 1.25rem; } h5 { font-size: 1.125rem; } h6 { font-size: 1rem; }

p + p { margin-top: var(--space-4); } section + section { margin-top: var(--space-7); }

ul, ol { padding-left: 1.25rem; } li + li { margin-top: 0.35em; }

a.link { color: var(--color-primary); text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--color-primary) 55%, transparent); text-underline-offset: 2px; } a.link:hover { text-decoration-color: currentColor; }

/* Код и цитаты */ code, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; font-size: 0.95em; } code { background: color-mix(in srgb, var(--color-surface) 85%, var(--color-text) 15%); padding: 0.15rem 0.35rem; border-radius: var(--radius-sm); } pre { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-4); overflow: auto; } pre code { background: transparent; padding: 0; }

blockquote { border-inline-start: 4px solid var(--color-border); padding-inline-start: var(--space-3); color: var(--color-muted); margin: var(--space-5) 0; }

/* Таблицы */ table { width: 100%; border-collapse: collapse; } th, td { padding: 0.75rem; border-bottom: 1px solid var(--color-border); text-align: left; } thead th { color: var(--color-muted); font-weight: 600; }

/* Карточки, панели */ .card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-5); box-shadow: var(--shadow-sm); }

/* Кнопки */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.6rem 1rem; border-radius: var(--radius-md); border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text); cursor: pointer; user-select: none; text-align: center; transition: background .2s ease, color .2s ease, border-color .2s ease, transform .05s ease; } .btn:hover { background: color-mix(in srgb, var(--color-surface) 92%, var(--color-text) 8%); } .btn:active { transform: translateY(1px); }

.btn--primary { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-primary-contrast); } .btn--primary:hover { filter: brightness(1.05); }

.btn--outline { background: transparent; border-color: var(--color-border); color: var(--color-text); }

.btn--ghost { background: transparent; border-color: transparent; color: var(--color-primary); }

/* Формы */ label { display: inline-block; font-weight: 600; margin-bottom: 0.4rem; }

input, select, textarea { width: 100%; padding: 0.6rem 0.75rem; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); color: var(--color-text); transition: border-color .2s ease, background .2s ease, color .2s ease; } input::placeholder, textarea::placeholder { color: var(--color-muted); } input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; border-color: var(--color-focus); }

.form-row { display: grid; gap: var(--space-3); } @media (min-width: 48rem) { .form-row--2 { grid-template-columns: 1fr 1fr; } .form-row--3 { grid-template-columns: 1fr 1fr 1fr; } }

/* Сетка и лэйаут */ .grid { display: grid; gap: var(--space-4); } .cols-2 { grid-template-columns: repeat(2, 1fr); } .cols-3 { grid-template-columns: repeat(3, 1fr); } .cols-4 { grid-template-columns: repeat(4, 1fr); }

@media (min-width: 48rem) { .cols-2-md { grid-template-columns: repeat(2, 1fr); } .cols-3-md { grid-template-columns: repeat(3, 1fr); } .cols-4-md { grid-template-columns: repeat(4, 1fr); } } @media (min-width: 64rem) { .cols-2-lg { grid-template-columns: repeat(2, 1fr); } .cols-3-lg { grid-template-columns: repeat(3, 1fr); } .cols-4-lg { grid-template-columns: repeat(4, 1fr); } }

.flex { display: flex; } .inline-flex { display: inline-flex; } .items-center { align-items: center; } .items-start { align-items: flex-start; } .items-end { align-items: flex-end; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .justify-end { justify-content: flex-end; } .wrap { flex-wrap: wrap; } .gap-1 { gap: var(--space-1); } .gap-2 { gap: var(--space-2); } .gap-3 { gap: var(--space-3); } .gap-4 { gap: var(--space-4); }

/* Отступы (субсет) */ .m-0 { margin: 0; } .mt-1 { margin-top: var(--space-1); } .mb-1 { margin-bottom: var(--space-1); } .mt-2 { margin-top: var(--space-2); } .mb-2 { margin-bottom: var(--space-2); } .mt-3 { margin-top: var(--space-3); } .mb-3 { margin-bottom: var(--space-3); } .mt-4 { margin-top: var(--space-4); } .mb-4 { margin-bottom: var(--space-4); } .mt-5 { margin-top: var(--space-5); } .mb-5 { margin-bottom: var(--space-5); } .mt-6 { margin-top: var(--space-6); } .mb-6 { margin-bottom: var(--space-6); }

.p-0 { padding: 0; } .p-1 { padding: var(--space-1); } .p-2 { padding: var(--space-2); } .p-3 { padding: var(--space-3); } .p-4 { padding: var(--space-4); } .p-5 { padding: var(--space-5); }

.pt-4 { padding-top: var(--space-4); } .pb-4 { padding-bottom: var(--space-4); } .pl-4 { padding-left: var(--space-4); } .pr-4 { padding-right: var(--space-4); }

/* Прочие утилиты */ .hidden { display: none !important; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } .w-full { width: 100%; } .max-w-prose { max-width: 65ch; } .shadow-sm { box-shadow: var(--shadow-sm); } .shadow-md { box-shadow: var(--shadow-md); } .rounded { border-radius: var(--radius-md); } .rounded-lg { border-radius: var(--radius-lg); } .border { border: 1px solid var(--color-border); } .surface { background: var(--color-surface); }

/* Плавности и поведение */ :root { scroll-behavior: smooth; } a, button, .btn { transition: filter .2s ease, opacity .2s ease, background .2s ease, color .2s ease, border-color .2s ease; }

/* Печать */ @media print { .btn, nav, .no-print { display: none !important; } body { background: #fff; color: #000; } a { text-decoration: underline; } }

Нужно адаптировать под конкретный проект (палитра, размеры, компоненты)? Скажите, для какого интерфейса это, и я подгоню файл.