Fresh Roasted Coffee
\nOur beans are sourced from small farms in Colombia and Ethiopia.
\nEach batch is roasted weekly to ensure peak freshness.
\n{
"$schema": "../../schemas/code-crispies-module-schema.json",
"id": "css-basic-selectors",
"title": "Основи CSS",
"description": "Вивчіть основні будівельні блоки CSS: властивості, значення та селектори. Цей модуль навчає правилам синтаксису, яких дотримується кожна декларація CSS.",
"difficulty": "beginner",
"lessons": [
{
"id": "css-properties",
"title": "Властивості CSS",
"description": "CSS стилізує елементи за допомогою декларацій - пар властивостей і значень. Кожна декларація має той самий шаблон:
property: value;
This text should turn coral.
", "previewBaseCSS": "body { font-family: system-ui; padding: 20px; } .text { font-size: 1.25rem; }", "sandboxCSS": "", "codePrefix": ".text {\n ", "initialCode": "", "codeSuffix": "\n}", "previewContainer": "preview-area", "solution": "color: coral;", "validations": [ { "type": "property_value", "value": { "property": "color", "expected": "coral" }, "message": "Додайте color: coral;" } ] }, { "id": "multiple-properties", "title": "Кілька властивостей", "description": "Правило може мати кілька декларацій. Кожна йде в окремому рядку, і кожна потребує крапки з комою в кінці:.box {
background: gold;
color: navy;
padding: 1rem;
}p {
color: steelblue;
}Our beans are sourced from small farms in Colombia and Ethiopia.
\nEach batch is roasted weekly to ensure peak freshness.
\n.badge {
background: coral;
}You have new notifications waiting.
", "previewBaseCSS": "body { font-family: system-ui; padding: 1rem; } header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; } h1 { margin: 0; font-size: 1.5rem; } .badge { color: white; padding: 0.25rem 0.5rem; border-radius: 999px; font-size: 0.875rem; } p { color: #555; margin: 0; }", "sandboxCSS": "", "codePrefix": "", "initialCode": "", "codeSuffix": "", "previewContainer": "preview-area", "solution": ".badge {\n background: tomato;\n}", "validations": [ { "type": "regex", "value": "\\.badge\\s*\\{", "message": "Почніть з .badge { (не забудьте крапку!)" }, { "type": "property_value", "value": { "property": "background", "expected": "tomato" }, "message": "Встановіть background: tomato" } ] }, { "id": "button-variants", "title": "Варіанти кнопок", "description": "Елементи можуть мати кілька класів. Коли ви з'єднуєте селектори класів без пробілів, ви націлюєтесь на елементи, які мають усі ці класи:.btn.primary {
background: steelblue;
}a.btn {
text-decoration: none;
}h1, h2, h3 {
color: steelblue;
}Introduction paragraph with some text.
More content here.
Final paragraph.
.nav a {
color: white;
}Read more in our documentation.
", "previewBaseCSS": "body { font-family: system-ui, sans-serif; padding: 1rem; margin: 0; } .nav { background: steelblue; padding: 1rem; display: flex; gap: 1rem; border-radius: 8px; margin-bottom: 1rem; } .nav a { text-decoration: none; } p a { color: steelblue; }", "sandboxCSS": "", "codePrefix": "", "initialCode": "", "codeSuffix": "", "previewContainer": "preview-area", "solution": ".nav a {\n color: white;\n}", "validations": [ { "type": "regex", "value": "\\.nav\\s+a\\s*\\{", "message": "Використовуйте .nav a { (пробіл між .nav і a)" }, { "type": "property_value", "value": { "property": "color", "expected": "white" }, "message": "Встановіть color: white" } ] }, { "id": "nested-styling", "title": "Вкладені стилі", "description": "Селектори нащадків дозволяють створювати контекстні стилі. Один і той самий елемент може виглядати по-різному залежно від того, де він з'являється.This is a regular article paragraph with normal-sized text for comfortable reading.
Card paragraphs should be slightly smaller to fit the compact design.
Back to regular article text here.